《算法设计与》第6章.贪心法4-8详解.pptVIP

  • 89
  • 0
  • 约9.6千字
  • 约 56页
  • 2016-04-24 发布于湖北
  • 举报
0 1 2 3 4 5 0 ∞ 50 10 ∞ 70 ∞ 1 ∞ ∞ 15 ∞ 10 ∞ 2 20 ∞ ∞ 15 ∞ ∞ 3 ∞ 20 ∞ ∞ 35 ∞ 4 ∞ ∞ ∞ 30 ∞ ∞ 5 ∞ ∞ ∞ 3 ∞ ∞ 图的邻接矩阵表示 6.6.2 贪心法求解 迪杰斯特拉(Dijkstra) 算法 首先求得长度最短的一条最短路径,再求得长度次短的一条最短路径,依此类推,直到从源点到其它所有结点之间的最短路径都已求得为止。 设集合S存放已求得最短路径的终点,则V-S为尚未求得最短路径的终点集合。 首先将源点s加入S中,然后按照最短路径的递增次序,产生下一条最短路径t,将t加入S,直到S=V 几点说明: 将图以邻接矩阵存放。邻接矩阵用二维数组a[i][j]表示, a[i][j]=结点i到结点j间的路径长度,如果i,j间无连接,记为最大值。 定义数组d[i],存放从源点s到结点i的当前最短路径长度 数组path[i],存放从源点s到结点i的当前最短路径长度上,结点i的前一个结点。从源点到结点i的路径可以根据path反向排列得到。 数组inS[i],值为true,表示结点i已经加入S。 迪杰斯特拉计算过程 1)求第一条最短路径 2)将结点k加入S后,更新数组 d[i]和path[i] s到j的距离 s到k的距离 k到j的距离 3)求加入结点k之后的下一条最短路径,重复,直到所有结点

文档评论(0)

1亿VIP精品文档

相关文档