文档详情

TSP问题的解决与实现概要.doc

发布:2017-03-03约2万字共26页下载文档
文本预览下载声明
1. 问题描述 所谓TSP问题是指旅行家要旅行n个城市,要求各个城市经历且仅经历一次,并且要求所走的路程最短。该问题又称为货郎担问题、邮递员问题、售货员问题,是图问题中最广为人知的问题。 2. 基本要求 (1) 上网查找TSP问题的应用实例; (2) 分析求TSP问题的全局最优解的时间复杂度; (3) 设计一个求近似解的算法; (4) 分析算法的时间复杂度。 . 提交报告 课程设计报告提交内容包括: (1) 问题描述;(2) 需求分析;(3) 概要设计;(4) 详细设计;(5) 调试分析;(6) 使用说明;(7) 测试结果;(8) 附录(带注释的源程序)。 参见数据结构课程设计概述.pdf和数据结构课程设计示例.pdf。 指导教师(签字): 系主任(签字): 批准日期:2014年 月 日 问题描述 ()题目要求 旅行家要旅行n个城市,要求各个城市经历且仅经历一次,最终要回到出发的城市,求出最短路径。 用图论的术语来说,假如有一个图G=(V,E),其中V是顶点集,E是边集,设D=(dij)是由顶点i和顶点j之间的距离所组成的距离矩阵。TSP问题就是求出一条通过每个顶点且每个顶点只通过一次的具有最短距离的回路。a. 上网查找TSP问题的应用实例; b. 分析求TSP问题的全局最优解的时间复杂度; c. 设计一个求近似解的算法; d. 分析算法的时间复杂度。 ()测试数据 5个城市的TSP问题: 路程矩阵如图所示: ∞ 25 41 32 28 25 ∞ 18 31 26 41 18 ∞ 7 1 32 31 7 ∞ 11 28 26 1 11 ∞ 最短路径为v0v1v4v2v3 (1)本程序用于求解n个结点的最短哈密尔顿回路问题。 ()程序运行后显示提示信息—“Please insert the number of cities:”,例如用户输入—“Please insert the distance between one city and another:”,例如用户输入测试数据中给出的路程矩阵,表示任意两个城市之间的距离,比如第一个城市到第0个城市之间的距离为25。 (3) 用户输入数据完毕,程序将输出运算结果。 ()测试数据均为正数,其中用。 概要设计 为了实现上述程序功能,,因此需要图和队列两个抽象数据类型。()图的抽象数据类型定义 Graph{ Data: 具有相同类型的数据元素的集合,称为顶点集。 顶点偶对的有穷集合。 Operation: CreateGraph(G,V,VR) 初始条件:V是图中顶点集合,VR是图中顶点 操作条件:按照V和VR的定义构造图G。 G) 初始条件:图G已经存在。 。 (G,u) 初始条件:图G已经存在,u和G中顶点有相同类型。 操作结果:如果G中存在u,则返回u在G中的位置;否则返回相应信息。 Vex(G,v) 初始条件:图G已经存在,v是G中某个顶点。 操作结果:返回v的值。 Vex(G,v,value) 初始条件:图G已经存在,v是G中顶点。 操作结果:对v赋值value。FirstAdjvex(G,v) 初始条件:图G已经存在,v是G中顶点。 操作结果:。如果v在G中没有邻接顶点,则返回相应信息。NextAdjvex(G,v,w) 初始条件:图G已经存在,v是G中顶点。 操作结果:。如果w,则返回相应信息。 InsertVex(G,v,w) 初始条件:图G已经存在,v和w是G中顶点。 操作结果:。 DeleteVex(G,v) 初始条件:图G已经存在,v是G中顶点。 操作结果:。 InsertEdge(G,v,w) 初始条件:图G已经存在,v和w是G中顶点。 操作结果:v,w;如果G是无向图,则还增添w,v。 DeleteEdge(G,v,w) 初始条件:图G已经存在,v和w是G中顶点。 操作结果:v,w;如果G是无向图,则还删除w,v。DFSTraverse(G,v) 初始条件
显示全部
相似文档