第五章上機實踐報告
阿新 • • 發佈:2018-12-19
1.實踐問題:
工作分配問題
2.問題描述:
設有n件工作分配給n個人。將工作i分配給第j個人所需的費用為cij 。 設計一個演算法,對於給定的工作費用,為每一個人都分配1 件不同的工作,並使總費用達到最小。
3.演算法描述:
1)解空間:排列樹
2)測試樣例的解空間樹:
3)剪枝方法:
void Backtrack(int t){ for(int k=1;k<=n;++k){ if(!b[k]){ b[k]=1; sum+=p[k][t]; if(t==n){if(sum<best) best=sum; } else if (sum<best) Backtrack(t+1); sum-=p[k][t]; b[k]=0; } } }
4.心得體會:
和同伴想了好久才想出一個標記防止重複選擇,回溯法的應用還不夠熟練,怕剪枝方法遺漏導致演算法執行時間過久。