我們用一個(gè)帶權(quán)圖 G(V, E) 來(lái)表示,頂點(diǎn)代表城市,邊表示城市之間的道路。圖中各邊所帶的權(quán)即是城市間的距離(或城市間的旅費(fèi))。則旅行商問(wèn)題即是:在帶權(quán)圖 G 中找到一條路程最短的周游路線(xiàn),即權(quán)值之和最小的 Hamilton 圈。
如果假定城市 A 是駐地。則推銷(xiāo)員從 A 地出發(fā),第一站有 3 種選擇:城市 B 、 C 或城市 D ;第一站選定后,第二站有兩種選擇:如第一站選定 B ,則第二站只能選 C 、 D 兩者之一。當(dāng)?shù)谝弧⒌诙䞍烧径歼x定時(shí),第三站只有一種選擇:比如,當(dāng)?shù)谝弧⒌诙䞍烧鞠群筮x擇了 B 和 C 時(shí),第三站只能選擇 D 。最后推銷(xiāo)員由城市 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){