第五章上機實驗
阿新 • • 發佈:2018-12-23
lag 設有 一個人 pre ktr 排列樹 cpp wap 不同的
1. 實踐題目 :
工作分配問題
2. 問題描述 :
設有n件工作分配給n個人,將工作i分配給第j個人所需的費用為cij,對於給定的工作費用,為每一個人都分配1 件不同的工作,設計一個算法,並使總費用達到最小。
3. 算法描述 :
1)解空間 : 其解空間為一顆排列樹,類似於旅行售貨員問題的解空間。
2)解空間樹 : 當n = 3時,其解空間樹如下
(A)
| 1
(B)
2 / 3| \ 4
(C) (D) (E)
3 / \ 4 2 / \ 4 2 / \ 3
(F) (G) (H) (I) (J) (K)
4 | | 3 4 | | 2 3 | | 2
(L) (M) (O) (P) (R) (S)
(四)剪枝函數:
for(int i=t; i<=n; i++){ if(bestf > nf){ //剪枝,僅當bestf > nf時才進入搜索,否則跳過 nf += fee[t][flag[i]]; swap(flag[t], flag[i]); Backtrack(t + 1); swap(flag[t], flag[i]); nf -= fee[t][flag[i]]; } }
第五章上機實驗