最近邻点策略:从任意城市出发,每次在没有到过的城市中选择最近的一个,直到经过了所有的城市,最后回到出发城市。
用最近邻点贪心策略求解TSP问题所得的结果不一定是最优解,图 (a)中从城市1出发的最优解是1→2→5→4→3→1,总代价只有13。当图中顶点个数较多并且各边的代价值分布比较均匀时,最近邻点策略可以给出较好的近似解,不过,这个近似解以何种程度近似于最优解,却难以保证。例如,在图(f)中,如果增大边(2, 1)的代价,则总代价只好随之增加,没有选择的余地。
#include<iostream>
#define MAXLENGTH 10
int TSPLength;
int value[5][5] =
999, 3, 3, 2, 6 },
3, 999, 7, 3, 3 },
3, 7, 999, 2, 5 },
2, 3, 2, 999, 3 },
6, 2
本文总体内容为介绍用最
邻
近方
法
(Nearest Neighbor Algorithm) 和最
邻
近插入
法
求解
旅行商
问题
(Traveling Saleman Problem,
TSP
)。同时使用python实现算
法
,并调用networkx库实现可视化。此文为本人图论课下作业的成品,含金量:无。
旅行商
问题
,即
TSP
问题
(Travelling Salesman Problem)又译为旅行推销员
问题
、货郎担
问题
,是数学领域中著名
问题
之一。假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的路径路程为所有路径之中的最小值。
一、
贪心
算
法
贪心
法
求解
TSP
问题
有两种
贪心
策略
。
1)
最近
邻
点
策略
:从任意城市出发,每次在没有到过的城市中选择
最近
的一个,直到经过了所有的城市,最后回到出发城市。
给定初始的城市a,寻找与
TSP
是一个经典的组合优化
问题
,其目标是找到访问一组城市并返回起点的最短可能路线。在给定城市间距离的情况下,这个
问题
可以表述为找到一个排列,使得按照该排列顺序访问所有城市并返回起点的总距离最短。
TSP
问题
是NP完全
问题
,这意味着在多项式时间内寻找全局最优解非常困难,除非P=NP
问题
得到解决。然而,存在多种近似算
法
和启发式方
法
来求得高质量的解,如
最近
邻
算
法
、2-opt算
法
、模拟退火算
法
、遗传算
法
、分支定界
法
以及蚁群算
法
等。2.NN(
最近
邻
)算
法
原理
最近
邻
优化算
法
是一种
贪心
算
法
,用于
求解
TSP
问题
的近似解。
贪心
法
求解
TSP
问题
有两种
贪心
策略
。
1)
最近
邻
点
策略
:从任意城市出发,每次在没有到过的城市中选择
最近
的一个,直到经过了所有的城市,最后回到出发城市。
给定初始的城市a,寻找与其
邻
接的最短距离的城市b,记录二者之间...
1, 旅行商
问题
(Traveling Salesman Problem,
TSP
) 这个
问题
字面上的理解是:有一个推销员,要到n个城市推销商品,他要找出一个包含所有n个城市的具有最短路程的环路。
TSP
的历史很久,最早的描述是1759年欧拉研究的骑士周游
问题
,即对于国际象棋棋盘中的64个方格,走访64个方格一次且仅一次,并且最终返回到起始点。
TSP
由美国RAND公司于1948年引入,该公司的声誉