- 5
- 0
- 约7.89千字
- 约 37页
- 2019-05-10 发布于广东
- 举报
Kruskal算法的时间复杂度为O(elge)(e为网中边的数目),因此它适于求边稀疏的网的最小生成树。 * * * * * * * * * * * * * * * * Dijkstra算法描述如下。 ①假设用带权的邻接矩阵arcs来表示带权有向图,arcs[i][j]表示弧vi, vj上的权值。若vi, vj不存在,则置arcs[i][j]为∞(在计算机上可用允许的最大值代替)。S为已找到从v出发的最短路径的终点集合,它的初始状态为空集。那么从v出发到图上其余各顶点(终点)vi可能达到的最短路径长度的初值为D[i] = arcs[LocateVex(G, v)][i], vi∈V。 ②选择vj,使得D[j] = Min{D[i] | vi∈V?S},vj就是当前求得的一条从v出发的最短路径的终点,令S = S∪{j}。 ③修改从v出发到集合V?S上任一顶点vk可达的最短路径长度。如果D[j] + arcs[j][k] D[k],则修改为D[k] = D[j] + arcs[j][k]。 ④重复操作②、③共n?1次,由此求得从v到图上其余各顶点的最短路径是依路径长度递增的序列。 求有向图的最短路径,数据存储类型使用邻接矩阵,故算法设置为GraphMatrix类的成员函数。 应用 最短路径算法见以下程序。 应用 例11-6 假设要在n个城市之间建立通信网络,而连通n个城
原创力文档

文档评论(0)