1、数据结构课程设计报告数据结构课程设计设计说明书TSP 问题起止日期: 2016 年 6 月 27 日 至 2016 年 7 月 1 日学 生 姓 名班 级学 号成 绩指 导 教 师 ( 签 字 )2016 年 7 月 1 日第 1 章需求分析 .11.1简介 .11.2系统的开发背景 .11.3研究现状 .1第 2 章概要设计 .22.1系统开发环境和技术介绍 .22.2系统需求分析 .22.2.1总体功能分析 .22.2.2核心功能分析 .3第 3 章 详细设计 .43.1系统开发流程 .43.2系统模块设计 .43.3系统结构 .63.2系统流程图 .6第 4 章 调试分析 .74.1程序
2、逻辑调试 .74.2系统界面调试 .8第 5 章 测试结果 .95.1测试环境 .95.2输入输出测试项目 .95.3测试结果 .10结 论.11参考文献.11附录 .12第 1 章 需求分析1.1 简介旅行商问题,即 TSP问题( Travelling Salesman Problem )又译为旅行推销员问题、货郎担问题, 是数学领域中著名问题之一。 假设有一个旅行商人要拜访 n 个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。 路径的选择目标是要求得的路径路程为所有路径之中的最小值。1.2 系统的开发背景TSP的历史很久,最早的描述是 175
3、9 年欧拉研究的骑士周游问题,即对于国际象棋棋盘中的 64 个方格,走访 64 个方格一次且仅一次, 并且最终返回到起始点。TSP由美国 RAND公司于 1948 年引入,该公司的声誉以及线形规划这一新方法的出现使得 TSP成为一个知名且流行的问题。1.3 研究现状TSP问题是一个组合优化问题。该问题可以被证明具有 NP计算复杂性。因此,任何能使该问题的求解得以简化的方法,都将受到高度的评价和关注。旅行推销员问题是图论中最著名的问题之一,即“已给一个 n 个点的完全图,每条边都有一个长度, 求总长度最短的经过每个顶点正好一次的封闭回路”。Edmonds,Cook和 Karp 等人发现,这批难题
4、有一个值得注意的性质,对其中一个问题存在有效算法时,每个问题都会有有效算法。迄今为止,这类问题中没有一个找到有效算法。倾向于接受 NP完全问题( NP-Complete 或 NPC)和 NP难题(NP-Hard 或 NPH)不存在有效算法这一猜想,认为这类问题的大型实例不能用精确算法求解, 必须寻求这类问题的有效的近似算法。第 2 章 概要设计2.1 系统开发环境和技术介绍Microsoft Visual C+ 6.0 不仅是一个 C+ 编译器,而且是一个基于Windows操作系统的可视化集成开发环境( IDE)。 Visual C+6.0 由许多组件组成,包括编辑器、调试器以及程序向导 Ap
5、pWizard、类向导 Class Wizard 等开发工具。 这些组件通过一个名为 Developer Studio 的组件集成为和谐的开发环境。2.2 系统需求分析2.2.1 总体功能分析TSP问题最容易想到的也肯定能得到最佳解的算法是穷举法,即考虑所有可能的旅行路线, 从中选择最佳的一条。 但是用穷举法求解 TSP问题的时间复杂度为 (n!) ,当 n 大到一定程度后是不可解的。于 TSP问题,一个旅行家要穿过多个城市,已知城市个数,以及城市间距,每个城市经历且只经历一次,求出最短路径解和最短路径长度。本实验只要求近似解,可以采用贪心法求解:任意选择某个城市作为出发点,然后前往最近的未访
6、问的城市, 直到所有的城市都被访问并且仅被访问一次,最后返回到出发点。 输入城市数目 N 为正整数,城市间距离按邻接矩阵方式排列输入,最小值为 0,共有 N*N个数值;输出最优解和最优值。2.2.2 核心功能分析以下是核心功能代码分析:贪心算法排序: 为了解决问题, 需要寻找一个构成解的候选对象集合, 它可以优化目标函数,贪婪算法一步一步的进行。 起初,算法选出的候选对象的集合为空。接下来的每一步中, 根据选择函数, 算法从剩余候选对象中选出最有希望构成解的对象。如果集合中加上该对象后不可行, 那么该对象就被丢弃并不再考虑; 否则就加到集合里。 每一次都扩充集合, 并检查该集合是否构成解。 如果贪婪算法正确工作,那么找到的第一个解通常是最优的。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1