起点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到各点的最短距离谁能帮我把上面的算法写成程序呢?最好能优化的,因为点可能非常多,要考虑效率

解决方案 »

  1.   

    你也有点太懒了吧!
    自己写吧,给你个思路。
    把相关信息存放在一个数组里面,根据最短路径算法在数组中查询并把每一步的路径保存起来,最终选择最短路径。
    注意:这样只能是有限条通路的最短选择。!
    即你计算出有5条通路。然后在这5条通路中选择最短的路径。
    当然你也可以计算更多的选择。这个就需要消耗你的CPU和时间了!
      

  2.   

    TO  master_jt(master) :
    能否留下e-mail?我发给你,会更详细点,这上面不能画示意图,看图很清楚
      

  3.   

    Dijkstra)提出的按路径长度递增的次序产生最短路径的算法高程的书上有,先用邻接矩阵表示图,然后调用书中子程序,返回的参数tree即为A到各点的最短距离,再从小到大排序一下就行了。