理论教育 无向图Dijkstra算法优化策略

无向图Dijkstra算法优化策略

时间:2023-06-01 理论教育 版权反馈
【摘要】:如果vi与vj之间存在一条无方向的边相关联,说明vi与vj两点之间可以互达。对于无向图最短路的求解,Dijkstra算法同样有效。已知城市与城市间的路可以互达,网络边上的数据表示城市间公路的距离,用Dijkstra算法求解城市1到其他城市间图7-8公路的最小距离。

无向图Dijkstra算法优化策略

如果vivj之间存在一条无方向的边相关联,说明vivj两点之间可以互达。当vivj之间至少有两条边相关联时,留下一条最短边,去掉其他关联边。对于无向图最短路的求解,Dijkstra算法同样有效。

无向图的标号方法与有向图相同,路线的起点标号978-7-111-46552-2-Chapter07-39.jpg,将标号的第一步改为:找出所有一端vi已标号、另一端vj未标号的边,集合为B={[ij]vi已标号,vj未标号},如果这样的边不存在或vt已标号,则计算结束。点标号和边标号的计算公式相同。

【例7.4】 要在8个城市间建立如图7-9所示的公路交通网。已知城市与城市间的路可以互达,网络边上的数据表示城市间公路的距离,用Dijkstra算法求解城市1到其他城市间

978-7-111-46552-2-Chapter07-40.jpg

图7-8

公路的最小距离。

解 起点v1标号。

第一轮,一端已标号另一端未标号的边集合B={[1,2],[1,3],[1,4]},k(1,2)=b(1)+c12=0+4=4,k(1,3)=0+5=5,k(1,4)=0+2=2,将边的标号用圆括号填在边上。min{k(1,2),k(1,3),k(1,4)}=min{4,5,2}=2(www.daowen.com)

k(1,4)=2最小,点v4标号2,见图7-10a。

978-7-111-46552-2-Chapter07-41.jpg

图7-9

第二轮,图7-10a中,B={[1,2],[1,3],[4,3],[4,7]},k(4,3)=2+1=3,k(4,7)=2+8=10,min{k(1,2),k(1,3),k(4,3),k(4,7)}=min{4,5,3,10}=3,k(4,3)=3最小,点v3标号3,见图7-10b。

继续标号,第三轮得到点v2的标号,见图7-10c。第四轮得到两个点v5与v7的标号,见图7-10d。第五轮得到点v6的标号,见图7-10e。第六轮得到点v8的标号,见图7-10f。所有点得到标号,计算结束。

根据图7-10f所示,v1v2,v3,…,v8的最短路分别是:p12={v1v2},p13={v1v4v3},p14={v1v4},p15={v1v4v3v5},p16={v1v4v3v5v6},p17={v1v4v3v7},p18={v1v4v3v5v8}。最短路长分别是:L12=4,L13=3,L14=2,L15=6,L16=8,L17=6,L18=18。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈