Hoodlum1980 (fafa)'s Technological Blog

Languages mainly using and digging: C / CPP, ASM, C#, Python. Other languages:Java.

博客园 首页 新随笔 联系 订阅 管理

  因为没有原创内容,相当于看书笔记,因此本打算发在QQZone,但因为QQ空间日志忽然服务器繁忙,大骂腾讯无奈还是把此日志临时发布在自己的博客上。

  参考资料:《计算机算法设计与分析》(第三版)。
  条件:
  (1)带权有向图 G = (V, E); 任意边的权 >= 0;

  算法:
  贪心法。体现在从源节点开始,每次从集合S外“选一个最近的节点”添加到S中,然后对dist数组做更新。

     

  参数说明:

  T:模板参数,权值类型。(计量长度的数据类型)

  int n; 图的节点数;  

  int v; 出发节点(源节点)的索引。

  T dist[];  dist[i]表示当前条件下 v 到 i 节点之间的最短距离。求解过程中这个数组随着集合S的扩充而动态变化。

  int prev[]; prev[i]表示从 v 到 i 节点之间的最短距离路径上的前一个节点。可以通过这个数组反塑获取到完整路径。

  T *c; 图的矩阵表示。c[i][j]表示边(i,j)的权。当无通路时为一个大数。 

 =========================  

      代码:

========================= 

 Code_Dijkstra

=========================
      输出:
=========================
sizeof(bool) = 1 bytes.
dist: 0,10,50,30,60,
prev: 0,0,3,0,2,
0->4 Path: 0 - 3 - 2 - 4 

 

posted on 2009-10-22 21:49  hoodlum1980  阅读(908)  评论(0编辑  收藏  举报