91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 4KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-06-18
  • 語言: Matlab
  • 標(biāo)簽: tag??

資源簡介

匈牙利算法的基本思想是修改效益矩陣的行或列,使得每一行或列中至少有一個(gè)為零的元素,經(jīng)過修正后,直至在不同行、不同列中至少有一個(gè)零元素,從而得到與這些零元素相對應(yīng)的一個(gè)完全分配方案。 當(dāng)它用于效益矩陣時(shí),這個(gè)完全分配方案就是一個(gè)最優(yōu)分配,它使總的效益為最小。這種方法總是在有限步內(nèi)收斂于一個(gè)最優(yōu)解

資源截圖

代碼片段和文件信息

function?[MatchingCost]?=?Hungarian(Perf)
%?[MATCHINGCOST]?=?Hungarian_New(WEIGHTS)
%?匈牙利算法
%?給定一個(gè)n?x?n矩陣的邊權(quán)矩陣,使用匈牙利算法求解最小邊權(quán)值和問題,類似最小樹問題
%?如果矩陣中出現(xiàn)inf,則表示沒有邊與之相連
%?輸出:
%???????Matching?為一個(gè)?n?x?n的矩陣,只有0?和?1
%????????COST?為對應(yīng)Matching處為1所在位置的元素和

?%?初始化變量
?Matching?=?zeros(size(Perf));

??%?移除Inf,加速算法執(zhí)行效率
??%?針對每一列找inf
????num_y?=?sum(~isinf(Perf)1);
??%?針對每一行找inf
????num_x?=?sum(~isinf(Perf)2);
????
??%?Find?the?columns(vertices)?and?rows(vertices)?that?are?isolated
????x_con?=?find(num_x~=0);
????y_con?=?find(num_y~=0);
????
??%?縮減矩陣
????P_size?=?max(length(x_con)length(y_con));
????P_cond?=?zeros(P_size);
????P_cond(1:length(x_con)1:length(y_con))?=?Perf(x_cony_con);
????if?isempty(P_cond)
??????Cost?=?0;
??????return
????end

??????%?計(jì)算邊權(quán)矩陣
??????Edge?=?P_cond;
??????Edge(P_cond~=Inf)?=?0;
??????%?修正權(quán)效矩陣
??????cnum?=?min_line_cover(Edge);
????
??????%?對未標(biāo)記的行和已標(biāo)記的列畫縱、橫線P
??????Pmax?=?max(max(P_cond(P_cond~=Inf)));
??????P_size?=?length(P_cond)+cnum;
??????P_cond?=?ones(P_size)*Pmax;
??????P_cond(1:length(x_con)1:length(y_con))?=?Perf(x_cony_con);
???
%*************************************************
%?主要求解步驟
%*************************************************
??exit_flag?=?1;
??stepnum?=?1;
??while?exit_flag
????switch?stepnum
??????case?1
????????[P_condstepnum]?=?step1(P_cond);
??????case?2
????????[r_covc_covMstepnum]?=?step2(P_cond);
??????case?3
????????[c_covstepnum]?=?step3(MP_size);
??????case?4
????????[Mr_covc_covZ_rZ_cstepnum]?=?step4(P_condr_covc_covM);
??????case?5
????????[Mr_covc_covstepnum]?=?step5(MZ_rZ_cr_covc_cov);
??????case?6
????????[P_condstepnum]?=?step6(P_condr_covc_cov);
??????case?7
????????exit_flag?=?0;
????end
??end

%?移除所有的虛擬節(jié)點(diǎn)
Matching(x_cony_con)?=?M(1:length(x_con)1:length(y_con));
Cost?=?sum(sum(Perf(Matching==1)));

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%???STEP?1:找每行最小元素
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function?[P_condstepnum]?=?step1(P_cond)

??P_size?=?length(P_cond);
??
??%?Loop?throught?each?row
??for?ii?=?1:P_size
????rmin?=?min(P_cond(ii:));
????P_cond(ii:)?=?P_cond(ii:)-rmin;
??end

??stepnum?=?2;
??
%**************************************************************************??
%???STEP?2:?尋找P_cond中的0元素
%**************************************************************************
function?[r_covc_covMstepnum]?=?step2(P_cond)

%?定義變量
??P_size?=?length(P_cond);
??r_cov?=?zeros(P_size1);??%?記錄?元素為0?所在的行
??c_cov?=?zeros(P_size1);??%?記錄?元素為0?所在的列
??M?=?zeros(P_size);????????%?A?mask?that?shows?if?a?position?is?starred?or?primed
??
??for?ii?=?1:P_size
????for?jj?=?1:P_size
??????if?P_cond(iijj)?==?0?&&?r_cov(ii)?==?0?&&?c_cov(jj)?==?0
????????M(iijj)?=?1;
????????r_cov(ii)?=?1;
????????c_cov(jj)?=?1;
??????end
????end
??end
??
%?重新初始化操作
??r_cov?=?zeros(P_size1);??%?A?vector?that?shows?if?a?row?is?covered
??c_cov?=?

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----

?????文件???????7369??2018-06-29?12:59??第26章\Hungarian.m

?????文件???????3798??2018-06-29?12:59??第26章\Hungarian_algorithm.m

?????文件????????147??2018-06-29?12:59??第26章\ysw1.m

?????目錄??????????0??2018-08-20?17:45??第26章

-----------?---------??----------?-----??----

????????????????11314????????????????????4


評論

共有 條評論