起点A到B、C、D、E四点的距离和方法依次如下:
A到B点有直接的通路,为10米
A到C点没有直接通路,(1)、从B转为:A到B为10米,B到C为50米,共60米
(2)、从D转为:A到D为30米,D到C为20米,共50米
A到D点有直接的通路,为30米
A到E点有直接的通路,为100米,也可以通过D转,A到D为30米,D到E为60米,共90米根据迪杰斯特拉(Dijkstra)提出的按路径长度递增的次序产生最短路径的算法,可
得到下表:
A到各点最短距离的推导过程如下:(每轮比较得到的最短可做为下轮通路)B 10(A,B)
C 无直通 60(A,B,C) 50(A,D,C)
D 30(A,D) 30(A,D)
E 100(A,E) 100(A,E) 90(A,D,E) 90(A,D,E)
最短 B D C E这样就求出了从A到各点的最短距离谁能帮我把上面的算法写成程序呢?最好能优化的,因为点可能非常多,要考虑效率
A到B点有直接的通路,为10米
A到C点没有直接通路,(1)、从B转为:A到B为10米,B到C为50米,共60米
(2)、从D转为:A到D为30米,D到C为20米,共50米
A到D点有直接的通路,为30米
A到E点有直接的通路,为100米,也可以通过D转,A到D为30米,D到E为60米,共90米根据迪杰斯特拉(Dijkstra)提出的按路径长度递增的次序产生最短路径的算法,可
得到下表:
A到各点最短距离的推导过程如下:(每轮比较得到的最短可做为下轮通路)B 10(A,B)
C 无直通 60(A,B,C) 50(A,D,C)
D 30(A,D) 30(A,D)
E 100(A,E) 100(A,E) 90(A,D,E) 90(A,D,E)
最短 B D C E这样就求出了从A到各点的最短距离谁能帮我把上面的算法写成程序呢?最好能优化的,因为点可能非常多,要考虑效率
自己写吧,给你个思路。
把相关信息存放在一个数组里面,根据最短路径算法在数组中查询并把每一步的路径保存起来,最终选择最短路径。
注意:这样只能是有限条通路的最短选择。!
即你计算出有5条通路。然后在这5条通路中选择最短的路径。
当然你也可以计算更多的选择。这个就需要消耗你的CPU和时间了!
能否留下e-mail?我发给你,会更详细点,这上面不能画示意图,看图很清楚