问题描述
求解下图所示的TSP问题,计算出所经过的城市编号以及最短路径值,城市代价矩阵如图所示:
基本思想
最近邻点策略:从任意城市出发,每次在没有到过的城市中选择最近的一个,直到经过了所有的城市,最后回到出发城市。
用最近邻点贪心策略求解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, 5, 3,<