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