第五章上機實驗報告
阿新 • • 發佈:2018-12-22
1. 實踐題目及問題描述
工作分配問題;n件工作分配給n個人,為每一個人都分配1 件不同的工作,工作i分配給第j個人所需的費用為cij,設計一個演算法,使總費用最小。
2. 演算法描述
(1) 解空間
{<x11,x12…x1n>,<x21,x22…x2n>……<xn1,xn2…xnn>}
其中 <x11,x12…x1n>!=<x21,x22…x2n>!=…!= <xn1,xn2…xnn>
(2) 解空間樹(n=3為例)
(3) 剪枝方法描述
限界函式:當給所有人分配完工作後就返回
if(t == n+1){
if(cost < best){
best = cost;
return;
}
}
約束函式:當前總費用大於記錄的最少費用時回溯,不再往下遍歷
if(cost < best){
distribution(t+1);
}
swap(x[t],x[i]);
cost -=c[t][x[i]];
3. 心得體會
覺得這章的回溯法程式碼比較難理解,不怎麼會打,但通過上機課多打對回溯法有了進一步的瞭解。然而還是存在疑惑,有些程式碼不知道是怎麼回溯的,可能是之前學的呼叫方法還沒學透。有待多練習。