1. 程式人生 > >第五章上機實驗報告

第五章上機實驗報告

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.     心得體會

覺得這章的回溯法程式碼比較難理解,不怎麼會打,但通過上機課多打對回溯法有了進一步的瞭解。然而還是存在疑惑,有些程式碼不知道是怎麼回溯的,可能是之前學的呼叫方法還沒學透。有待多練習。