全排列回溯
#include using namespace std;
const int max_ = 0x3f3f3f; //定義乙個最大值
const int noedge = -1; //兩個點之間沒有邊
int citynum; //城市數
int edgenum; //邊數
int currentcost; //記錄當前的路程
int bestcost; //記錄最小的路程(最優)
int graph[100][100]; //圖的邊距記錄
int x[100]; //記錄行走順序
int bestx[100]; //記錄最優行走順序
void input()
}//初始化
void initilize()
}void swap(int &a, int &b)
void backtrack(int i) //這裡的i代表第i步去的城市而不是代號為i的城市
}else}}
}void output()
int main()
旅行售貨員問題 回溯法
某售貨員要到若干城市去推銷商品,已知各城市之間的路程,他要選定一條從駐地出發,經過每個城市一遍,最後回到住地的路線,使總的路程最短。結果為 1 3 2 4 1 回溯法,序列樹,假設起點為 1。演算法開始時 x 1,2,3,n x 1 n 有兩重含義 x 1 i 代表前 i 步按順序走過的城市,x i...
回溯法之旅行售貨員問題
問題描述 某售貨員要到若干城市去推銷商品,已知各城市之間的路程,他要選定一條從駐地出發,經過每個城市一遍,最後回到住地的路線,使總的路程最短。演算法描述 回溯法,序列樹,假設起點為 1。演算法開始時 x 1,2,3,n x 1 n 有兩重含義 x 1 i 代表前 i 步按順序走過的城市,x i 1 ...
分支限界法 旅行售貨員問題
一 問題描述 某售貨員要到若干城市去推銷商品,已知各城市之間的路程 或旅費 他要選定一條從駐地出發,經過每個城市一次,最後回到駐地的路線,使總的路程 或總旅費 最小。如下圖 1,2,3,4 四個城市及其路線費用圖,任意兩個城市之間不一定都有路可達。二 問題理解 1.分支限界法利用的是廣度優先搜尋和最...