高手展现您的实力,让在下一睹您的风采吧~~~~~
我要重申的是:
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
同上