用动态规划方法旅行商问题(TSP问题)

本文通过动态规划方法展示了如何解决旅行商问题,虽然这种方法因空间和时间复杂度较高而不理想。通过示例,详细解释了动态规划模型的构造过程,并给出了一个五城市的实例解题步骤。
摘要由CSDN通过智能技术生成
某推销员要从城市v1 出发,访问其它城市v2,v3,…,v6 各一次且仅一次,最后返回v1。D
为各城市间的距离矩阵。
问:该推销员应如何选择路线,才能使总的行程最短?

   以下是用动态规划方法,Linux下g++编译通过
#include  < iostream >
#include 
< set >
#include 
< vector >

#define  MAX 6

using   namespace  std;

int  dis[MAX][MAX] = {
        
01020304050,
        
120 ,18302521,
        
231905,  1015,
        
343240,  8,  16,
        
452711,100,  18,
        
562216,2012,  0
}
;

typedef 
struct
{
    
int curcity;//当前所在的城市
    vector<int> unvisited;//当前未访问的城市
    set<int> type;//由于set自动排序,相同状态的vector可能不同,但set必然相同
    int distance;//从当前城市到终点回到起点的距离
}
status;

/*测试用*/
void  printVec( vector < status >  vec)
{
    vector
<status>::iterator iter;
    vector
<int>::iterator it;
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值