我們用一個帶權圖 G(V, E) 來表示,頂點代表城市,邊表示城市之間的道路。圖中各邊所帶的權即是城市間的距離(或城市間的旅費)。則旅行商問題即是:在帶權圖 G 中找到一條路程最短的周游路線,即權值之和最小的 Hamilton 圈。
如果假定城市 A 是駐地。則推銷員從 A 地出發,第一站有 3 種選擇:城市 B 、 C 或城市 D ;第一站選定后,第二站有兩種選擇:如第一站選定 B ,則第二站只能選 C 、 D 兩者之一。當第一、第二兩站都選定時,第三站只有一種選擇:比如,當第一、第二兩站先后選擇了 B 和 C 時,第三站只能選擇 D 。最后推銷員由城市 D 返回駐地 A 。
用JAVA解決,代碼如下:
public class Traveling {
public static int NUM = 4;
public static int n = NUM;
public static int NoEdge=1000;
public static int x[] = new int [NUM+1];
public static int bestx[] = new int [NUM+1];
public static int a[][] ={{},
{0,0 , 30 , 6 , 4 } ,
{0,30 , 0 , 5 , 10 } ,
{0,6 , 5 , 0 , 20 } ,
{0,4 , 10 , 20, 0} ,
};
public static int cc =0;
public static int bestc=1000;
public static int TSP(int a[][],int v[],int n,int NoEdge){