欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    图论matlab程序大全Word文档下载推荐.docx

    • 资源ID:18619713       资源大小:25.05KB        全文页数:33页
    • 资源格式: DOCX        下载积分:12金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要12金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    图论matlab程序大全Word文档下载推荐.docx

    1、=n for j =1 : if l(i)l(j)+W(j,i) l(i)=l(j)+W(j,i); z(i)=j-1; if ji i=j-1; i=i+1;floyd算法(计算任意两点间的最短距离)function d,r=floyd(a) n=size(a,1); d=a; for j=1: r(i,j)=j; end r; for k=1: if d(i,k)+d(k,j)d(i,j) d(i,j)=d(i,k)+d(k,j); r(i,j)=r(i,k);n2short.m 计算指定两点间的最短距离function P u=n2short(W,k1,k2)n=length(W);U=

    2、W;m=1;while mU(i,m)+U(m,j) U(i,j)=U(i,m)+U(m,j); m=m+1;u=U(k1,k2);P1=zeros(1,n);k=1;P1(k)=k2;V=ones(1,n)*inf;kk=k2;while kk=k1 V(1,i)=U(k1,kk)-W(i,kk); if V(1,i)=U(k1,i) P1(k+1)=i; kk=i;wrow=find(P1=0);for j=length(wrow):-1:1 P(k)=P1(wrow(j);程序四、n1short.m(计算某点到其它所有点的最短距离)functionPm D=n1short(W,k)n=s

    3、ize(W,1);D=zeros(1,n);for i=1: P d=n2short(W,k,i); Pmi=P; D(i)=d;程序五:pass2short.m(计算经过某两点的最短距离)function P d=pass2short(W,k1,k2,t1,t2) p1 d1=n2short(W,k1,t1);p2 d2=n2short(W,t1,t2);p3 d3=n2short(W,t2,k2);dt1=d1+d2+d3;p4 d4=n2short(W,k1,t2);p5 d5=n2short(W,t2,t1);p6 d6=n2short(W,t1,k2);dt2=d4+d5+d6;if

    4、 dt1dt2 d=dt1; P=p1 p2(2:length(p2) p3(2:length(p3);else p=p4 p5(2:length(p5) p6(2:length(p6);d;第三讲:最小生成树最小生成树的Kruskal算法function T c=krusf(d,flag)if nargin=1 n=size(d,2); m=sum(sum(d=0)/2; b=zeros(3,m); for j=(i+1): if d(i,j)=0 b(1,k)=i;b(2,k)=j; b(3,k)=d(i,j); b=d; n=max(max(b(1:2,:); m=size(b,2);

    5、B,i=sortrows(b,3); B=B; c=0;T=;t=1:n; if t(B(1,i)=t(B(2,i) T(1:2,k)=B(1:2,i); c=c+B(3,i); tmin=min(t(B(1,i),t(B(2,i); tmax=max(t(B(1,i),t(B(2,i); if t(j)=tmax t(j)=tmin; if k=n break;T;c;最小生成树的Prim算法function T c=Primf(a)l=length(a);a(a=0)=inf;k=1:l;listV(k)=0;listV(1)=1;e=1;while (ea(i,j) min=a(i,j)

    6、;b=a(i,j); s=i;d=j; listV(d)=1; distance(e)=b; source(e)=s; destination(e)=d; e=e+1;T=source;destination;for g=1:e-1 c(g)=a(T(1,g),T(2,g);另外两种程序 最小生成树程序1(prim 算法构造最小生成树)a=inf 50 60 inf inf inf inf;50 inf inf 65 40 inf inf;60 inf inf 52 inf inf 45;. inf 65 52 inf 50 30 42;inf 40 inf 50 inf 70 inf;inf

    7、 inf inf 30 70 inf inf; inf inf 45 42 inf inf inf;result=;p=1;tb=2:length(a);while length(result)=length(a)-1temp=a(p,tb);temp=temp(:d=min(temp);jb,kb=find(a(p,tb)=d);j=p(jb(1);k=tb(kb(1);result=result,j;k;d;p=p,k;tb(find(tb=k)=;result 最小生成树程序2(Kruskal 算法构造最小生成树)clc;clear;a(1,2)=50; a(1,3)=60; a(2,4

    8、)=65; a(2,5)=40;a(3,4)=52;a(3,7)=45; a(4,5)=50; a(4,6)=30;a(4,7)=42; a(5,6)=70;i,j,b=find(a);data=ijb;index=data(1:loop=max(size(a)-1;while length(result)looptemp=min(data(3,:);flag=find(data(3,:)=temp);flag=flag(1);v1=data(1,flag);v2=data(2,flag);if index(1,flag)=index(2,flag)result=result,data(:,f

    9、lag);index(find(index=v2)=v1;data(:,flag)=;index(:第四讲:Euler图和Hamilton图Fleury算法(在一个Euler图中找出Euler环游)注:包括三个文件;fleuf1.m, edf.m, flecvexf.mfunction T c=fleuf1(d)%注:必须保证是Euler环游,否则输出T=0,c=0n=length(d);b=d;b(b=inf)=0;b(b=0)=1;m=0;a=sum(b);eds=sum(a)/2;ed=zeros(2,eds);vexs=zeros(1,eds+1);matr=b; if mod(a(i

    10、),2)=1if m=0 fprintf(there is not exit Euler path.n) T=0;c=0;if m=0 vet=1; flag=0; t1=find(matr(vet,:)=1); for ii=1:length(t1) ed(:,1)=vet,t1(ii); vexs(1,1)=vet;vexs(1,2)=t1(ii); matr(vexs(1,2),vexs(1,1)=0; flagg=1;tem=1; while flagg flagg ed=edf(matr,eds,vexs,ed,tem); tem=tem+1; if ed(1,eds)=0 & ed

    11、(2,eds)=0 T=ed; T(2,eds)=1; for g=1:eds c=c+d(T(1,g),T(2,g); flagg=0;functionflag ed=edf(matr,eds,vexs,ed,tem)flag=1; dvex f=flecvexf(matr,i,vexs,eds,ed,tem); if f=1 if dvex=0,i)=vexs(1,i) dvex; vexs(1,i+1)=dvex; matr(vexs(1,i+1),vexs(1,i)=0; elsefunction dvex f=flecvexf(matr,i,vexs,eds,ed,temp)f=0;

    12、edd=find(matr(vexs(1,i),:dvex=0;dvex1=;ded=;if length(edd)=1 dvex=edd; dd=1;dd1=0;kkk=0; for kk=1:length(edd) m1=find(vexs=edd(kk); if sum(m1)=0 dvex1(dd)=edd(kk); dd=dd+1; dd1=1; kkk=kkk+1; if kkk=length(edd) tem=vexs(1,i)*ones(1,kkk); edd1=tem;edd; for l1=1:kkk lt=0;ddd=1; for l2=1: if edd1(1:2,l1

    13、)=ed(1:2,l2) lt=lt+1; if lt=0 ded(ddd)=edd(l1); ddd=ddd+1; if templength(dvex1) & temp=length(ded) dvex=ded(temp); f=1;Hamilton改良圈算法(找出比较好的Hamilton路)function C d1= hamiltonglf(v)%d表示权值矩阵%C表示算法最终找到的Hamilton圈。%v = 51 67;37 84;41 94;2 99;18 54;4 50;24 42;25 38;13 40;7 64;22 60;25 62;18 40;41 26;n=size(

    14、v,1);subplot(1,2,1)hold on;plot (v(:,1),v(:,2),* %描点 str1=Vstr2=num2str(i); dot=str1,str2; text(v(i,1)-1,v(i,2)-2,dot); %给点命名,2);%连线plot(v(n,1),v(1,1),v(n,2),v(1,2);for i =1: d(i,j)=sqrt(v(i,1)-v(j,1)2+(v(i,2)-v(j,2)2);d2=0; if i3 for m=4:n+1(m-3) for j=(i+2):(m-1) if (d(C(i),C(j)+d(C(i+1),C(j+1)d(C

    15、(i),C(i+1)+d(C(j),C(j+1) C1(1:i)=C(1:i); for k=(i+1):j C1(k)=C(j+i+1-k); C1(j+1):m)=C(j+1):m); elseif n=3 if nfloor(a(1)/n) t2=floor(a(1)/n)+1; t2=floor(a(1)/n); J(t1,t2)=1,J(t2,t1)=1; W(t1,:)=0;W(t2,: W(:,t1)=0;W(:,t2)=0;J;匈牙利算法(完美匹配算法,包括三个文件fc01,fc02,fc03)function e,s=fc01(a,flag)b=a;if flag=0 cma

    16、x=max(max(b) b=cmax-b;m=size(b);m(1) b(i,:)=b(i,:)-min(b(i,:for j=1:m(2) b(:,j)=b(:,j)-min(b(:,j);d=(b=0);e,total=fc02(d);while total=m(1) b=fc03(b,e); d=(b=0); e,total=fc02(d);inx=sub2ind(size(a),e(:,1),e(:e=e,a(inx);s=sum(a(inx);function e,total=fc02(d)total=0;m=size(d);e=zeros(m(1),2);t=sum(sum(d

    17、)nump=sum(dwhile t=0 s,inp=sort(nump); inq=find(s); ep=inp(inq(1); inp=find(d(ep,: numq=sum(d(:,inp); s,inq=sort(numq); eq=inp(inq(1); total=total+1; e(total,:)=ep,eq; inp=find(d(:,eq); nump(inp)=nump(inp)-1; nump(ep)=0; t=t-sum(d(ep,:)-sum(d(:,eq)+1; d(ep,:)=0*d(ep,: d(:,eq)=0*d(:,eq);function b=fc

    18、03(b,e)t=1;p=ones(m(1),1);q=zeros(m(1),1);inp=find(e(:,1)=0);p(e(inp,1)=0; tp=sum(p+q); inp=find(p=1); n=size(inp);n(1) inq=find(b(inp(i),:)=0); q(inq)=1; inp=find(q=1); if all(e(:,2)-inp(i)=0 inq=find(e(:,2)-inp(i)=0); p(e(inq)=1; tq=sum(p+q); t=tq-tp;inp=find(p=1);inq=find(q=0);cmin=min(min(b(inp,

    19、inq)inq=find(q=1);b(inp,:)=b(inp,:)-cmin;b(:,inq)=b(:,inq)+cmin;运行以下程序求其最大解:输入矩阵a,然后输入t,m=fc01(a)运行以下程序求其最小解:输入矩阵a,然后输入t,m=fc01(a,1)匈牙利算法的另一程序匈牙利算法的 MATLAB 程序代码如下:m=5;n=5;A=0 1 1 0 01 1 0 1 10 1 1 0 00 0 0 1 1;M(m,n)=0;for(i=1:m)for(j=1:n)if(A(i,j)M(i,j)=1;break;end;end %求初始匹配Mif(M(i,j)break;end %获得仅含一条边的初始匹配Mwhile(1)m)x(i)=0;end %将记录X中点的标号和标记*n)y(i)=0;end %将记录Y中点的标号和标记*m)pd=1; %寻找X中M的所有非饱和点for(j=1:n)if(M(i,j)pd=0;if(pd)x(i)=-n-1;end %将X中M的所有非饱和点都给以标号0 和标记*, 程序中用n+1 表示0 标号, 标号为负数时表示标记*pd=0;while(1)xi=0;m)if(x(i)0)xi=i;end %假如X 中存在一个既有标号又有标记*的点, 则任取X中一个既有标号又有标记*的点


    注意事项

    本文(图论matlab程序大全Word文档下载推荐.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

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

    收起
    展开