当前位置:编程学习 > C#/ASP.NET >>

急求大神解决,城市旅游算法

求从A出发遍历BCDE的最短路径,距离矩阵如下
( 0, 7, 3,10,15),
( 7, 0, 5,13,12),
( 3, 5, 0, 5,10),
(10,13, 5, 0,11),
(15,12,10,11, 0));

1、 从A点开始依次展开得到AB(7)、AC(3)、AD(10)、AE(15)四个新结点, 
    把第一层结点A标记为已展开,并且每个新结点要记录下其距离(括号中的数字);   

2、 把未展开过的AB、AC、AD、AE四个结点中距离最小的一个展开,即展开AC(3) 
    结点,得到ACB(8)、ACD(16)、ACE(13)三个结点,并把结点AC标记为已展开;

3、 再从未展开的所有结点中找出距离最小的一个展开,即展开AB(7)结点,得到 
    ABC(12)、ABD(20)、ABE(19)三个结点,并把结点AB标记为已展开; 

4、 再次从未展开的所有结点中找出距离最小的一个展开,即展开ACB(8)结点…; 

5、 每次展开所有未展开的结点中距离最小的那个结点,直到展开的新结点中出现
    目标情况(结点含有5个字母)时,即得到了结果。 

求解这种思路的C#源码 遍历 最短路径 --------------------编程问答-------------------- 跟我要解决的问题一样啊,你有解决方法了吗? 邮箱:52rentingting@163.com --------------------编程问答-------------------- baidu 查 dijkstra --------------------编程问答--------------------
引用 楼主 smallby_gyc 的回复:
求从A出发遍历BCDE的最短路径,距离矩阵如下
( 0, 7, 3,10,15),
( 7, 0, 5,13,12),
( 3, 5, 0, 5,10),
(10,13, 5, 0,11),
(15,12,10,11, 0));

1、 从A点开始依次展开得到AB(7)、AC(3)、AD(10)、AE(15)四个新结点, 
    把第一层结点A标记为已展开,并且每个新结点要记录下其距离(括号中的数字);   

2、 把未展开过的AB、AC、AD、AE四个结点中距离最小的一个展开,即展开AC(3) 
    结点,得到ACB(8)、ACD(16)、ACE(13)三个结点,并把结点AC标记为已展开;

3、 再从未展开的所有结点中找出距离最小的一个展开,即展开AB(7)结点,得到 
    ABC(12)、ABD(20)、ABE(19)三个结点,并把结点AB标记为已展开; 

4、 再次从未展开的所有结点中找出距离最小的一个展开,即展开ACB(8)结点…; 

5、 每次展开所有未展开的结点中距离最小的那个结点,直到展开的新结点中出现
    目标情况(结点含有5个字母)时,即得到了结果。 

求解这种思路的C#源码


这不就是图的广度优先遍历算法? --------------------编程问答-------------------- 自己按照我说的去 google 下。 --------------------编程问答-------------------- 深深的研究
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,