便宜算法实验报告.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验报告 一、 实验目的: 掌握图论算法的设计与实现 二、 实验内容: 用便宜算法求解旅行商问题 实验环境 实验环境 VC++ 四、实验过程与结果: 1、 便宜算法与旅行商问题简介: ①、旅行商问题简介: 在哈密顿回路中(每条边都有它的权)挑选一条总长最短(或总花费最省,旅途时间最少)的 一条哈密顿回路 ②、便宜算法描述: A、 置点的集合S={2, 3,、、、n}, w( V序列 T= (1, 1), w(i,k)=w(i,l)3eSo B、 在 S 中,令 w(j4)=min w(i,k) iWS,kWT 对回路T中的边,(t,t2), 若 w(j ,tl)-w(t ,tl)=w(j ,t2)-w(t ,t2), 则j插入到T的t, 11之间,否则j插入到T的t, t2之间, SGSGj,若S=0,结束。否则转C。 C、 对全部 iwS, fi w( i ,k) -min(w( i ,k), w( i, j)), 转到Bo 2、 算法框图: 3、数据结构: ADT List{ 数据对象:D= (ai |aiwElemSet,i=l,2,、、、,n,n=0) 数据关系:Rl={ai-l,ai|ai-l,ai^D, i=l,2, , n} } 4、运彳丁结果: *D:Microsoft Visual Studio\lyProjects\travelproble has pass\Debug\n... 3 3 2 5 4 5 2 4 14 3 2 :4??离离离离离离 rnlrTTI-n 一-n 一一 n =n 一-n =n 一 数数 香个个个个个个 城个一一一 一一一 JA一JAJAJAJAJAJA 青沟主冃主星星星星后 ▼ nk -Tk V Tk V Tk Tk V Tk Tk 璽鑼鬆严将数组埴满 0 23 43 45 23 0 12 34 43 12 0 25 45 34 25 0 打印城市路线:12341 盯印城市距离:105Press any key to continue 3、 分析与总结: 本程序主要用循环链表实现,路线的矩阵数据存储在二维数组中,然后将找到的最短路线所对应得城 市放在循环链表中,程序中总共定义了两个-样的数组,-个用于操作(将用过的路线全部置为0) 一个用于调用其中的路程距离用于最后的总路程的计算,最后输出最短路线中的城市和总路程长度。 此程序共用了 5个多小时,因为之前老师讲解得比较清楚,所以程序编起来思路比较清楚,主要就是 把算法实现,及调试程序,没有遇到太麻烦的问题。 五、源程序: #include niostream.hH #include ”stdlib.h” #include uiomanip.hn typedef struct LNode{ int data; struct LNode *next; } LNode,*LinkList; void Creatroute(int Citynum,int Route[100][100])〃创建路线 { for(int j=O;jCitynum;j++) { for(int i=0;ij;i++) { cout?n请输入一个城市距离:”; cin?Route[i][j]; Route[i][j]=0; cout?endl; cout?输入完毕,下面将数组填满”; for(j=0;jCitynum;j++) { for(int i=O;iCitynum;i++) { Route[i][j]=Route|j][i];} } cout?endl; cout?n全部设定好M?endl; for( j=O;jCitynum;j++) { for( int i=O;iCitynum;i ++) { cout?setw(5)?Route[i][j]; cout?endl; } } } void Copy(int Route[100][ 100],int RRoute[ 100][ 100],int Citynum) { for(int i二0;ivCitynum;i++) { for(int j=O;jCitynum;j++) { RRoute[i]U]=Route[i][j];} } } void VisitList(LinkList L)〃遍历 { LNode *p; p=L ? next; while(p-next!=L-next) { cout?p-data; p=p-next;} cout?p-data; cout?endl; } void creast(LinkList Lc)〃创建一个空的循环链表 { Lc=new LNode; Lc?nex匸NULL; } LNode* findlast(LinkList L)〃找出最后一个结点 {

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档