匈牙利算法matlab源程序及实例(适合各种矩阵).txt资料文档下载

上传人:b****2 文档编号:14622139 上传时间:2022-10-23 格式:TXT 页数:5 大小:5.83KB
下载 相关 举报
匈牙利算法matlab源程序及实例(适合各种矩阵).txt资料文档下载_第1页
第1页 / 共5页
匈牙利算法matlab源程序及实例(适合各种矩阵).txt资料文档下载_第2页
第2页 / 共5页
匈牙利算法matlab源程序及实例(适合各种矩阵).txt资料文档下载_第3页
第3页 / 共5页
匈牙利算法matlab源程序及实例(适合各种矩阵).txt资料文档下载_第4页
第4页 / 共5页
匈牙利算法matlab源程序及实例(适合各种矩阵).txt资料文档下载_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

匈牙利算法matlab源程序及实例(适合各种矩阵).txt资料文档下载

《匈牙利算法matlab源程序及实例(适合各种矩阵).txt资料文档下载》由会员分享,可在线阅读,更多相关《匈牙利算法matlab源程序及实例(适合各种矩阵).txt资料文档下载(5页珍藏版)》请在冰豆网上搜索。

匈牙利算法matlab源程序及实例(适合各种矩阵).txt资料文档下载

P_size=length(P_cond)+cnum;

P_cond=ones(P_size)*Pmax;

P_cond(1:

exit_flag=1;

stepnum=1;

whileexit_flag

switchstepnum

case1

[P_cond,stepnum]=step1(P_cond);

case2

[r_cov,c_cov,M,stepnum]=step2(P_cond);

case3

[c_cov,stepnum]=step3(M,P_size);

case4

[M,r_cov,c_cov,Z_r,Z_c,stepnum]=step4(P_cond,r_cov,c_cov,M);

case5

[M,r_cov,c_cov,stepnum]=step5(M,Z_r,Z_c,r_cov,c_cov);

case6

[P_cond,stepnum]=step6(P_cond,r_cov,c_cov);

case7

exit_flag=0;

end

Matching(x_con,y_con)=M(1:

length(y_con));

Cost=sum(sum(a(Matching==1)));

function[P_cond,stepnum]=step1(P_cond)

P_size=length(P_cond);

forii=1:

P_size

rmin=min(P_cond(ii,:

));

P_cond(ii,:

)=P_cond(ii,:

)-rmin;

stepnum=2;

function[r_cov,c_cov,M,stepnum]=step2(P_cond)

r_cov=zeros(P_size,1);

c_cov=zeros(P_size,1);

M=zeros(P_size);

forjj=1:

ifP_cond(ii,jj)==0&

&

r_cov(ii)==0&

c_cov(jj)==0

M(ii,jj)=1;

r_cov(ii)=1;

c_cov(jj)=1;

end

%Avectorthatshowsifarowiscovered

%Avectorthatshowsifacolumniscovered

stepnum=3;

function[c_cov,stepnum]=step3(M,P_size)

c_cov=sum(M,1);

ifsum(c_cov)==P_size

stepnum=7;

else

stepnum=4;

function[M,r_cov,c_cov,Z_r,Z_c,stepnum]=step4(P_cond,r_cov,c_cov,M)

P_size=length(P_cond);

zflag=1;

whilezflag

row=0;

col=0;

exit_flag=1;

ii=1;

jj=1;

whileexit_flag

ifP_cond(ii,jj)==0&

row=ii;

col=jj;

exit_flag=0;

end

jj=jj+1;

ifjj>

P_size;

ii=ii+1;

end

ifii>

exit_flag=0;

ifrow==0

stepnum=6;

zflag=0;

Z_r=0;

Z_c=0;

else

M(row,col)=2;

ifsum(find(M(row,:

)==1))~=0

r_cov(row)=1;

zcol=find(M(row,:

)==1);

c_cov(zcol)=0;

else

stepnum=5;

zflag=0;

Z_r=row;

Z_c=col;

end

end

function[M,r_cov,c_cov,stepnum]=step5(M,Z_r,Z_c,r_cov,c_cov)

zflag=1;

ii=1;

whilezflag

rindex=find(M(:

Z_c(ii))==1);

ifrindex>

0

ii=ii+1;

Z_r(ii,1)=rindex;

Z_c(ii,1)=Z_c(ii-1);

else

zflag=0;

ifzflag==1;

cindex=find(M(Z_r(ii),:

)==2);

ii=ii+1;

Z_r(ii,1)=Z_r(ii-1);

Z_c(ii,1)=cindex;

end

forii=1:

length(Z_r)

ifM(Z_r(ii),Z_c(ii))==1

M(Z_r(ii),Z_c(ii))=0;

M(Z_r(ii),Z_c(ii))=1;

end

r_cov=r_cov.*0;

c_cov=c_cov.*0;

M(M==2)=0;

stepnum=3;

function[P_cond,stepnum]=step6(P_cond,r_cov,c_cov)

a=find(r_cov==0);

b=find(c_cov==0);

minval=min(min(P_cond(a,b)));

P_cond(find(r_cov==1),:

)=P_cond(find(r_cov==1),:

)+minval;

P_cond(:

find(c_cov==0))=P_cond(:

find(c_cov==0))-minval;

stepnum=4;

functioncnum=min_line_cover(Edge)

[r_cov,c_cov,M,stepnum]=step2(Edge);

[c_cov,stepnum]=step3(M,length(Edge));

[M,r_cov,c_cov,Z_r,Z_c,stepnum]=step4(Edge,r_cov,c_cov,M);

cnum=length(Edge)-sum(r_cov)-sum(c_cov);

��a=[0.94000.97000.86000.97000.96800.94800.96800.9800

0.86000.93000.92000.93000.96800.96800.98800.9600

0.90000.93000.94000.95000.90800.94800.96800.9600

0.94000.93000.94000.95000.96800.90800.98800.9200

0.86000.89000.92000.95000.98800.94800.96800.9200

0.92000.93000.92000.95000.90800.94800.98800.9200

0.94000.97000.90000.93000.96800.94800.96801.0000

0.92000.97000.92000.93000.98800.98800.94800.9600

0.94000.97000.90000.97000.96800.94800.94800.9600

0.92000.95000.92000.97000.94800.94800.94800.9800

];

��[z,ans]=Edmonds(a)

������

z=

00100000

10000000

00001000

00000100

01000000

00000001

00000000

00010000

00000010

ans=

7.2240

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小学作文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1