matlab匈牙利算法_第1頁
matlab匈牙利算法_第2頁
matlab匈牙利算法_第3頁
matlab匈牙利算法_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、程序文件 fenpei.m function z,ans=fenpei(marix) %/%輸入效率矩陣marix 為方陣 ;%若效率矩陣中有M, 則用一充分大的數(shù)代替 ;%輸出 z 為最優(yōu)解, ans 為 最優(yōu)分配矩陣;%/a=marix;b=a;%確定矩陣維數(shù)s=length(a);%確定矩陣行最小值,進行行減ml=min(a');for i=1:sa(i,:)=a(i,:)-ml(i);end%確定矩陣列最小值,進行列減mr=min(a);for j=1:sa(:,j)=a(:,j)-mr(j);end% start workingnum=0;while(num=s)% 終止條件

2、是“ ( 0)”的個數(shù)與矩陣的維數(shù)相同%index 用以標記矩陣中的零元素,若 a(i,j)=0 ,則 index(i,j)=1, 否則 index(i,j)=0 index=ones(s);index=a&index;index=index;%flag 用以標記劃線位, flag=0 表示未被劃線,%flag=1 表示有劃線過, flag=2 表示為兩直線交點%ans 用以記錄 a 中“(0)”的位置%循環(huán)后重新初始化flag,ansflag = zeros(s);ans = zeros(s);%一次循環(huán)劃線全過程,終止條件是所有的零元素均被直線覆蓋,%即在 flag>0 位

3、,index=0while(sum(sum(index)%按行找出“(0)”所在位置,并對“ ( 0)”所在列劃線,%即設(shè)置flag,同時修改index,將結(jié)果填入ansfor i=1:st=0;l=0;for j=1:sif(flag(i,j)=0&&index(i,j)=1)l=l+1;t=j;endendif(l=1) flag(:,t)=flag(:,t)+1; index(:,t)=0; ans(i,t)=1;endend %按列找出“(0)”所在位置,并對“ ( 0)”所在行劃線,%即設(shè)置flag,同時修改index,將結(jié)果填入ansfor j=1:st=0;r=0

4、;for i=1:s if(flag(i,j)=0&&index(i,j)=1) r=r+1; t=i;endendif(r=1) flag(t,:)=flag(t,:)+1; index(t,:)=0; ans(t,j)=1;endendend %對 while(sum(sum(index)%處理過程%計數(shù)器:計算ans中1的個數(shù),用num表示 num=sum(sum(ans);% 判斷是否可以終止,若可以則跳出循環(huán)if(s=num)break;end%否則,進行下一步處理 %確定未被劃線的最小元素,用 m 表示m=max(max(a);for i=1:sfor j=1:si

5、f(flag(i,j)=0) if(a(i,j)<m)m=a(i,j);endendendend%未被劃線,即flag=0處減去m;線交點,即flag=2處加上m for i=1:sfor j=1:sif(flag(i,j)=0)a(i,j)=a(i,j)-m;endif(flag(i,j)=2)a(i,j)=a(i,j)+m;endendendend %對 while(num=s)%計算最優(yōu)( min )值 zm=ans.*b;z=0;z=sum(sum(zm);/ /運行實例:>> a=37.732.938.83735.443.433.142.234.741.833.32

6、8.538.930.433.629.226.429.628.531.10 0000;>> z,ans=fenpei(a)z =127.8000 ans =100000 0 0 00 0 0 10 1 0 01 0 0 00 變成 10。以此0 0 1 0注:求的 ans 是最小值!下題中要求的是最大喜好值,應(yīng)把數(shù)值變成負數(shù), 求最小值。禮物【問題描述】G.Sha 想到了該買些新年禮物送給朋友們。朋友們有各種各樣的喜好。比如 J.W.Zhang是RTS達人,應(yīng)該送SC的戰(zhàn)術(shù)雜志;而Y.Guan是超級小宅男”,一本正 經(jīng)的禮物對他一律沒用 所以,G.Sha為禮物的事情傷透了腦筋 商店有

7、n件禮物出售,G.Sha有m位朋友。G.Sha列出了每位朋友i對每件禮物j的喜好度aij (0 <aij <100)請注意,喜好度aij可能等于0,這代表著給某人買某件禮物是白花錢。 所以選取禮物的方法有如下的約定:1 寧可不送某位朋友禮物,也絕不購買喜好度等于 0 的禮物。2每位朋友只收 1 件禮物。3禮物是不能復(fù)選的,即 n 件禮物中,每件禮物只有 1 份,只能送給 1 個朋友。 在以上約定之下,請選擇 m 件禮物,使所有朋友的喜好度總和盡可能大?!据斎霐?shù)據(jù)】輸入文件 gift.in 包含 m+1 行。第1行,給出整數(shù)n, m,代表禮物和朋友的數(shù)量,滿足 n<n。第2行第

8、m+1行,每行n個整數(shù),代表每位朋友i對禮物j的喜好度aij?!据敵鰯?shù)據(jù)】輸出文件 gift.out 包含 m 行。第1行第m行,每行一個整數(shù),代表送給朋友i的禮物編號j。如果決定不給這位朋友買禮物,請輸出 0。 總喜好度由評測機計算,不必輸出?!緲永龜?shù)據(jù)】gift.in4 38 1 9 112 2 27 15 0 5 0gift.out130說明:禮物 1 給朋友 1,禮物 3給朋友 2,總喜好度 8+27=35 。為了獲得整體最優(yōu)解,不給第 3 位朋友買禮物?!驹u分方法】如果你的程序的輸出中存在不合法的情況 (不是合法的 m 行整數(shù)、同一件禮物選多次、購買喜好度小于或等于 0 的禮物), 則該測試點得 0分。否則設(shè)你的程序輸出的方案能得到總喜好度 S ,得分按照以下

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論