回溯法解决旅行商问题

这段代码展示了如何生成一个包含5个顶点的随机无向图,并使用邻接矩阵表示。接着,通过深度优先搜索寻找哈密顿回路,并在过程中应用限界剪枝来优化搜索效率。程序还计算了找到的哈密顿回路的最小总成本。最后,输出了搜索过程所用的时间。

#include<bits/stdc++.h>

using namespace std;

const int N=5; //顶点数 

int E[N+1][N+1]; //邻接矩阵 

int Q[N+1][N+1]; //加权邻接矩阵 

int randnum[]={1,1,1,1,1,1,1,0,0,0};//设置随机数种子 

int tot1=0,tot2=0; //用来记录找到的哈密顿回路数 

 

 

int arr[N+1]; //用来储存通路经过的顶点,称之为盒子 

int book[N+1]; //用来表示此数字有没有被用过,初始化为0表示没用过

int min_cost=21*N,min_cost2=21*N; //最小开支

 

 

int ti=0;

 

void f(int step,int now,int cost);

void t(int step,int now,int cost);

 

int main()

{

 //展示该图的基本信息 

 srand((unsigned)time(NULL));

 cout<<"该地图上有"<<N<<"个城市。"<<endl; 

 for(int i=1;i<=N;i++)

 {

  for(int j=i+1;j<=N;j++)

  {

   E[i][j]=E[j][i]=randnum[rand()

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值