算法第5章上机实践报告
生活随笔
收集整理的這篇文章主要介紹了
算法第5章上机实践报告
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、實踐題目 (工作分配問題)
7-2 工作分配問題 (20 分)
設有n件工作分配給n個人。將工作i分配給第j個人所需的費用為cij 。 設計一個算法,對于給定的工作費用,為每一個人都分配1 件不同的工作,并使總費用達到最小。
輸入格式:
輸入數據的第一行有1 個正整數n (1≤n≤20)。接下來的n行,每行n個數,表示工作費用。
輸出格式:
將計算出的最小總費用輸出到屏幕。
輸入樣例:
在這里給出一組輸入。例如:
3 10 2 3 2 3 4 3 4 5輸出樣例:
在這里給出相應的輸出。例如:
9二、問題描述 該問題實際上是與旅行售貨員問題一樣的排列數問題,目的是找到一個工作序列,使得總費用最小。
三、算法描述(包括解空間,畫出測試樣例的解空間樹,剪枝(約束函數或限界函數)方法描述) 解空間:解空間可看成是一顆排列樹,第i層為排在第i位的數,找到從根結點到葉子結點的路徑對應工作費用最小的分支。
測試樣例的解空間樹:
剪枝函數:(temp為當前工作費用,best為記錄的最小工作費用,n為工人數,a[t][x[i]]表示第t個人分配第x[i]個工作的費用)
void Backtrack(int t) {if(t>n){if (temp < best) {best = temp;}return ;}else {for (int i = t; i <= n; i++) {if (temp + a[t][x[i]] < best){temp += a[t][x[i]];swap(x[t], x[i]);Backtrack(t+1);swap(x[t], x[i]);temp -= a[t][x[i]];}}} }四、心得體會(對本次實踐收獲及疑惑進行總結)
本題與旅行售貨員問題基本相似,但更為簡單,于是采用了書上介紹的旅行售貨員算法進行解題。最初我是想采用更為暴力,但也更為直觀的解題方法,但最終還是采用了更優的旅行售貨員算法。
轉載于:https://www.cnblogs.com/Lumasaevial/p/10165086.html
總結
以上是生活随笔為你收集整理的算法第5章上机实践报告的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习时代的图模型,清华发文综述图网络
- 下一篇: keepalived lvs