- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
TSP问题的解决方案讲述
《算法设计与分析》实验报告一
学 号: 姓 名: 日 期: 得 分:
一、实验内容:
TSP问题
二、所用算法的基本思想及复杂度分析:
蛮力法
基本思想
借助矩阵把问题转换为矩阵中点的求解。首先构造距离矩阵,任意节点到自身节点的距离为无穷大。在第一行找到最小项a[1][j],从而跳转到第j行,再找到最小值a[j][k],再到第k行进行查找。。。然后构造各行允许数组row[n]={1,1…1},各列允许数组colable[n]={0,1,1….1},其中1表示允许访问,即该节点未被访问;0表示不允许访问,即该节点已经被访问。如果改行或该列不允许访问,跳过该点访问下一节点。程序再发问最后一个节点前,所访问的行中至少有1个允许访问的节点,依次访问这些节点找到最小的即可;在访问最后一个节点后,再次访问,会返回k=0,即实现访问源节点,得出一条简单回路。
复杂度分析
基本语句是访问下一个行列中最小的点,主要操作是求平方,假设有n个点,则计算的次数为n^2-n。T(n)=n*(n-1)=O(n^2)。
动态规划法
基本思想
假设从顶点s出发,令d(i, V’)表示从顶点i出发经过V’(是一个点的集合)中各个顶点一次且仅一次,最后回到出发点s的最短路径长度。
??????? 推导:(分情况来讨论)
当V’为空集,那么d(i, V’),表示从i不经过任何点就回到s了,如上图的 城市3-城市0(0为起点城市)。此时d(i, V’)=Cis(就是 城市i 到 城市s 的距离)、
如果V’不为空,那么就是对子问题的最优求解。你必须在V’这个城市集合中,尝试每一个,并求出最优解。
?????????? d(i, V’)=min{Cik +? d(k, V’-{k})}
?????????? 注:Cik表示你选择的城市和城市i的距离,d(k, V’-{k})是一个子问题。
??????? 综上所述,TSP问题的动态规划方程就出来了:
?????????
int main()
{
int i,j,s=0;
int **a;
printf(输入节点个数:\n);
scanf(%d,n);
printf(输入%d维对称矩阵:\n,n);
colable=(int*)malloc((sizeof(int))*n);
colable[0]=0;
//对各列允许矩阵进行赋值
for(i=1;in;i++)
{
colable[i]=1;
}
row=(int *)malloc((sizeof(int))*n);
for(i=0;in;i++)
{
row[i]=1;
}
a=(int **)malloc((sizeof(int*))*n);
for(i=0;in;i++)
{
a[i]=(int *)malloc((sizeof(int*))*n);
}
for(i=0;in;i++)
{
for(j=0;jn;j++)
{
scanf(%d,a[i][j])
}
}
i=0;
while(row[i]==1)
{
j=min(a[i]);
row[i]=0;
colable[j]=0;
printf(访问路径:\n);
printf(\t%d--%d\n,i,j);
s=s+a[i][j];
i=j;
}
printf(最短总距离为:%d\n,s);
}
int min(int *a)
{
int j=0,m=a[0],k=0;
while(colable[j]==0||row[j]==0)
{
j++;
m=a[j];
}//求最短距离
for(;jn;j++)
{
if(colable[j]==1row[j]==1)//节点没有被访问
{
if(m=a[j])
{
m=a[j];//m始终保持最短距离
k=j;
您可能关注的文档
- 凯森视频嵌入式方案3500概要.docx
- 出入口阀样本概要.doc
- TPM系统培训讲述.ppt
- 凸轮机构1概要.ppt
- 2.1冷热不均引起大气运动第一课时(周云开).ppt
- 出国常用语-英语短句概要.doc
- 2.1各级安全生产责任制.doc
- 2.1客户服务代表的服务意识培养.doc
- 凯美瑞(Body Electrical)概要.ppt
- TPS与精益革新活动讲述.ppt
- 人教版九年级英语全一册单元速记•巧练Unit13【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit9【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit11【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit14【单元测试·提升卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit8【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit4【单元测试·提升卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit13【单元测试·基础卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit7【速记清单】(原卷版+解析).docx
- 苏教版五年级上册数学分层作业设计 2.2 三角形的面积(附答案).docx
- 人教版九年级英语全一册单元速记•巧练Unit12【单元测试·基础卷】(原卷版+解析).docx
文档评论(0)