是编程高手的进来看看~~~~~

时间:2022-09-30 00:49:37
本人愿以千金(1000)征集该题之解!!!!!!
  高手展现您的实力,让在下一睹您的风采吧~~~~~

 我要重申的是:
 1,从v1开始需遍历每一个节点一次且仅一次最后回到v1,但并非欧拉图问题,应为
任意两点间vi,vj有条弧Dij,故不需考虑欧拉回路问题。
 2,在计算机上实现难点有二:(1),循环递归调用过程中节点数目及其次序是不断变化的。(2)要输出你求出的路径。
 3,该题不同于数据结构中的图问题,若用树的方法解,将使问题更加复杂,应为
(1),树要动态增长。(2)各层树中节点的孩子数目是不同的。

问题如下:
  以知一个由n个城市(节点)组成的网络,任意两个城市vi到vj距离为Dij(一般Dij不等于Dji),一个推销员从v1开始访问每一个城市一次且仅一次,最后返回v1。
这个推销员应该如何选择线路,才使行程最短。

理论上的算法为:令f(vi;V)表示从vi点出发,遍历V中的点一次且仅一次,最后返回v1的最短距离,其中V是某些顶点构成的集合,且v1不属于V。
其递推公式为:f(vi;V)=min{ Dij+f(vj;V\{vj} )  }
                        V\{vj}表示从V中除去vj    

如一个由四个节点构成的图
     v1 0  2  1  3
     v2 1  0  4  4
 D=  v3 1  4  0  2
     v4 2  2  1  0
        v1 v2 v3 v4

f(v1;v2,v3,v4)=min{D12+f(v2;v3,v4); D13+f(v3;v2,v4); D14+f(v4;v2,v3)}

f(v2;v3,v4)=min{D23+f(v3;v4); D24+f(v4;v2)}

f(v3;v4)=D34+f(v4;)

f(v4;)=D41

其他分支同理。

哪为大虾能将此提算法编成程序(有几点要求:
             1、输入:图的邻接矩阵(至少能处理9个节点的图)。
             2、可动态输入图的节点数目。
             3、输出:最小路径的节点顺序及其值)
能在计算机上实现。
                                             hzhaoxi@hotmail.com

3 个解决方案

#1


up!本棵生的作业题,呵呵。

#2


只好给自己了

#3


同上

#1


up!本棵生的作业题,呵呵。

#2


只好给自己了

#3


同上