1.问题描述所谓TSP问题是指旅行家要旅行n个城市,要求各个城市经历且仅经历一次,并且要求所走的路程最短。该问题又称为货郎担问题、邮递员问题、售货员问题,是图问题中最广为人知的问题。2.基本要求(1)上网查找TSP问题的应用实例;(2)分析求TSP问题的全局最优解的时间复杂度;(3)设计一个求近似解的算法;(4)分析算法的时间复杂度。3.提交报告课程设计报告提交内容包括:(1)问题描述;(2)需求分析;(3)概要设计;(4)详细设计;(5)调试分析;(6)使用说明;(7)测试结果;(8)附录(带注释的源程序)。参见“数据结构课程设计概述.pdf”和“数据结构课程设计示例.pdf”。指导教师(签字):系主任(签字):批准日期:2014年月日1.问题描述(1)题目要求旅行家要旅行n个城市,要求各个城市经历且仅经历一次,最终要回到出发的城市,求出最短路径。用图论的术语来说,假如有一个图G=(V,E),其中V是顶点集,E是边集,设D=(d)是由ij顶点i和顶点j之间的距离所组成的距离矩阵。TSP问题就是求出一条通过每个顶点且每个顶点只通过一次的具有最短距离的回路。.)基本要求(2上网查找TSP问题的应用实例;a.分析求TSP问题的全局最优解的时间复杂度;b.c.设计一个求近似解的算法;d.分析算法的时间复杂度。3)测试数据(TSP问题:5个城市的注:由于矩阵所表示的是两个城市之间的距离,所以该矩阵为对称矩阵路程矩阵如图所示:02314282532∞41025∞18312614118∞712∞113231732826111∞4最短路径为vvvvv341202.需求分析(1)本程序用于求解n个结点的最短哈密尔顿回路问题。(2)程序运行后显示提示信息—“”,例如用户输入5,则表示结Pleaseinsertthenumberofcities:点n的值为5;接下来程序输出提示信息—“Pleaseinsertthedistancebetweenonecityand”,例如用户输入测试数据中给出的路程矩阵,表示任意两个城市之间的距离,比another:如第一个城市到第0个城市之间的距离为25。(3)用户输入数据完毕,程序将输出运算结果。(4)测试数据均为正数,其中用999来表示两个城市之间距离为∞。3.概要设计为了实现上述程序功能,使用优先队列来维护结点表,因此需要图和队列两个抽象数据类型。.(1)图的抽象数据类型定义ADTGraph{Data:具有相同类型的数据元素的集合,称为顶点集。:Relation顶点偶对的有穷集合。:OperationCreateGraph(G,V,VR)初始条件:是图中顶点集合,是图中顶点偶对集合。VRV操作条件:按照和的定义构造图。VGVRDestroyGraph(G)初始条件:图已经存在。G操作结果:销毁。GLocateVex(G,u)初始条件:图已经存在,和中顶点有相同类型。uGG操作结果:如果中存在则返回在中的位置;否则返回相应信息。Guu,GGetVex(G,v)初始条件:图已经存在,是中某个顶点。vGG操作结果:返回的值。vPutVex(G,v,value)初始条件:图已经存在,是中顶点。GGv操作结果:对赋值。vvalueFirstAdjvex(G,v)初始条件:图已经存在,是中顶点。vGG操作结果:返回的第一个邻接顶点。如果在中没有邻接顶点,则返回相应信息。vvGNextAdjvex(G,v,w)初始条件:图已经存在,是中顶点是的邻接顶点。GvG,wv操作结果:返回的下一个邻接顶点。如果是的最后一个邻接点,则返回相应信息。vwvInsertVex(G,v,w)初始条件:图已经存在,和是中顶点。GwvG操作结果:在中添加。vGDeleteVex(G,v)初始条件:图已经存在,是中顶点。GGv操作结果:删除中顶点及其相关的边。Gv,v,w)InsertEdge(G.初始条件:图已经存在,和是中顶点。wGGv操作结果:在中添加;如果是无向图,则还增添。GG<w,v><v,w>DeleteEdge(G,v,w)初始条件:图已经存在,和是中顶点。GwvG操作结果:在中删除如果是无向图,则还删除。GG<v,w>;<w,v>DFSTraverse(G,v)初始条件:图已经存在,是中顶点。GGv操作结果:从起深度访问。GvBFSTraverse(G,v)初始条件:图已经存在,是中顶点。GGv操作结果:从起广度访问。vG}ADTGraph(2)队列的抽象数据类型ADTQueue{Data:具有相同数据类型的及先进先出特性的数据元素集合。:Relation相邻数据元素具有前驱和后继的关系。:OperationInitQueue(Q)初始条件:无操作结果:创造一个空队列。QDestroyQueue(Q)初始条件:队列已经存...