主题:动态规划
daisyang
[专家分:0] 发布于 2006-12-28 22:19:00
如果要在旅行商问题的最小周游路线求出?要怎么做呢?是不是一定要用到递归呢?要怎么样递归?
回复列表 (共7个回复)
沙发
雪光风剑 [专家分:27190] 发布于 2006-12-29 04:40:00
递归是最典型的做法
也是一种变相的穷举过程
我原来用taboo search为够想写了一个算法,用来解决tsp,最后算法没完全实现,因为真的太复杂了,当时又用的是完全不熟的java
tsp里你的路线图是二维数组表示邻接矩阵吗?
如果是的话考虑如下函数
int travel(route *now,int this,int next)
读入顺序表当前走过的城市,now是本站出发点,next是本站目的地
route可以如下定义:
typedef struct{
int path[N+1];//N是城市数
int nowpast;//当前走过的城市数
int distance;//当前走过的距离
}
travel的过程本来想帮你写出来的,可是想了半天思路乱的。总之travel要么返回下一个目的地的坐标,要么返回一个标志值
板凳
daisyang [专家分:0] 发布于 2006-12-29 12:47:00
就说在TSP函数里还得在调用一个求路径的函数?
3 楼
zhulf753 [专家分:30] 发布于 2006-12-29 21:30:00
递归也可以转化成循环吧
4 楼
雪光风剑 [专家分:27190] 发布于 2006-12-29 22:17:00
不能用循环吧
否则的话城市数变化你就不能解决了
5 楼
daisyang [专家分:0] 发布于 2006-12-30 20:49:00
还是不太明白。。
6 楼
雪光风剑 [专家分:27190] 发布于 2006-12-31 08:25:00
我说的travel本身就是tsp函数
靠递归实现
7 楼
daisyang [专家分:0] 发布于 2006-12-31 20:40:00
哦。。谢谢~!!
我来回复