算法设计与分析实验
实验四:采用贪心法求解 TSP 问题
学 院: 信息工程学院
班 级: 15
级计算机
2
班
学 号: 2015551239
姓 名: 王 维
实验地点: 湘潭大学信息楼
实验时间:2018
年
6
月
指导教师:邹 娟
目 录
一、实验内容........................................................................................3
二、 实验设计分析.................................................................................3
2.1 实验设计思路............................................................................3
2.2 实验算法...................................................................................4
2.3 实验流程...................................................................................4
2.4 实验的基本技术设计方案............................................................6
2.5 数据结构...................................................................................7
2.6 实验输入输出............................................................................7
2.7 实验设计语言..........................................................................11
三、实验主要源代码及分析说明.............................................................12
四、实验结果及分析............................................................................13
一、实验内容
TSP 问题(Travelling Salesman Problem)即旅行商问题,又译为旅行
推销员问题、货郎担问题,是数学领域中著名问题之一。假设有一个旅行商人
要拜访 n 个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访
一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的路径路程
为所有路径之中的最小值。
旅行商问题是图论中最著名的问题之一,即“已给一个 n 个点的完全图,每
条边都有一个长度,求总长度最短的经过每个顶点正好一次的封闭回路”。该问
题通常被认为是一个 NP 完全问题。时间复杂度为 O(n!)
二、 实验设计分析
2.1 实验设计思路
贪心算法,又名贪婪算法,是一种常用的求解最优化问题的简单、迅速的
算法。贪心算法总是做出在当前看来最好的选择,它所做的每一个在当前状态
下某种意义上是最好的选择即贪心选择,并希望通过每次所作的贪心选择导致
最终得到问题最优解。必须注意的是,贪心算法不是对所有问题都能得到整体
最优解,选择的贪心策略必须具备无后效性,即某个状态以后的过程不会影响
以前的状态,只与当前状态有关。贪心算法从问题的某一个初始解触发逐步逼
近给定的目标,以尽可能快地求得更好的解。当达到某算法中的某一步不能再
继续前进时,算法停止。
2.2 实验算法
贪心算法大致步骤如下:
1)建立数学模型来描述问题;
2)把求解的问题分成若干个子问题;
3)对每一个子问题求解,得到子问题的局部最优解;
4)把子问题的局部最优解合成原问题的一个解。
贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择,而贪
心策略适用的前提是:局部最优策略能导致产生全局最优解。
从问题的某一初始解出发;
while (能朝给定总目标前进一步)
{
利用可行的决策,求出可行解的一个解元素;
}
由所有解元素组合成问题的一个可行解;
2.3 实验流程
首先给出流程图符号解释:
流程图:
开始
s[1]=1, sum=0
初始化距离数
组
D[N,N],I=2
- 1
- 2
前往页