ImageVerifierCode 换一换
格式:DOCX , 页数:39 ,大小:24.91KB ,
资源ID:22534571      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22534571.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

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

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

1、if(a(s(t),t)0)dvtt=C(s(t),t)-f(s(t),t); %前向弧调整量elseif(a(s(t),t)dvtt)dvt=dvtt;if(s(t)=1)break;end %当t 的标号为vs 时, 终止计算调整量t=s(t);end %继续调整前一段弧上的流fif(wf+dvt=wf0)dvt=wf0-wf;pd=1;end%如果最大流量大于或等于预定的流量值while(1) %调整过程0)f(s(t),t)=f(s(t),t)+dvt; %前向弧调整0)f(t,s(t)=f(t,s(t)-dvt;end %后向弧调整end %当t 的标号为vs 时, 终止调整过程en

2、d%如果最大流量达到预定的流量值 for(j=1:n)wf=wf+f(1,j);end %计算最大流量zwf=0;n)zwf=zwf+b(i,j)*f(i,j);end%计算最小费用f %显示最小费用最大流图 6-22wf %显示最小费用最大流量zwf %显示最小费用, 程序结束_Kruskal 避圈法:Kruskal 避圈法的MATLAB 程序代码如下:n=8;A=0 2 8 1 0 0 0 02 0 6 0 1 0 0 08 6 0 7 5 1 2 01 0 7 0 0 0 9 00 1 5 0 0 3 0 80 0 1 0 3 0 4 60 0 2 9 0 4 0 30 0 0 0 8

3、6 3 0;k=1; %记录A中不同正数的个数n-1)for(j=i+1:n) %此循环是查找A中所有不同的正数if(A(i,j)0)x(k)=A(i,j); %数组x 记录A中不同的正数kk=1; %临时变量for(s=1:k-1)if(x(k)=x(s)kk=0;break;end %排除相同的正数k=k+kk;k=k-1 %显示A中所有不同正数的个数k-1)for(j=i+1:k) %将x 中不同的正数从小到大排序if(x(j)0)kk=kk+1;zz=z;end %寻找TT 中的树枝if(kk=1)TT(y,zz)=0;TT(zz,y)=0;end %砍掉TT 中的树枝end %已砍掉

4、了TT 中所有的树枝 %判断TT 中是否有圈n-1)for(z=y+1:0)pd=1;if(pd)T(i,j)=0;T(j,i)=0; %假如TT 中有圈else q=q+1;T %显示近似最小生成树T, 程序结束用Warshall-Floyd 算法求任意两点间的最短路.A=0 2 8 1 Inf Inf Inf Inf2 0 6 Inf 1 Inf Inf Inf8 6 0 7 5 1 2 Inf1 Inf 7 0 Inf Inf 9 InfInf 1 5 Inf 0 3 Inf 8Inf Inf 1 Inf 3 0 4 6Inf Inf 2 9 Inf 4 0 3Inf Inf Inf I

5、nf 8 6 3 0; % MATLAB 中, Inf 表示D=A; %赋初值n)R(i,j)=j;end %赋路径初值n)for(i=1:n)if(D(i,k)+D(k,j)D(i,j)D(i,j)=D(i,k)+D(k,j); %更新dijR(i,j)=k;end %更新rijk %显示迭代步数D %显示每步迭代后的路长R %显示每步迭代后的路径for i=1:n %含有负权时if(D(i,i)end %存在一条含有顶点vi 的负回路end %存在一条负回路, 终止程序end %程序结束利用 Ford-Fulkerson 标号法求最大流算法的MATLAB 程序代码如下:C=0 5 4 3

6、0 0 0 00 0 0 0 5 3 0 00 0 0 0 0 3 2 00 0 0 0 0 0 2 00 0 0 0 0 0 0 40 0 0 0 0 0 0 30 0 0 0 0 0 0 50 0 0 0 0 0 0 0;n)No(i)=0;d(i)=0;end %No,d 记录标号图 6-19No(1)=n+1;d(1)=Inf; %给发点vs 标号 %标号过程n)if(No(i) %选择一个已标号的点vifor(j=1:n)if(No(j)=0&f(i,j)d(i)d(j)=d(i);elseif(No(j)=0&f(j,i)0) %对于未给标号的点vj, 当vjvi 为非零流弧时No

7、(j)=-i;d(j)=f(j,i);if(No(n)|pd)break;end%若收点vt 得到标号或者无法标号, 终止标号过程end %vt 未得到标号, f 已是最大流, 算法终止dvt=d(n);if(No(t)0)f(No(t),t)=f(No(t),t)+dvt;elseif(No(t)0)f(No(t),t)=f(No(t),t)-dvt;if(No(t)=1)for(i=1: end;t=No(t); %继续调整前一段弧上的流ff %显示最大流wf %显示最大流量No %显示标号, 由此可得最小割, 程序结束图论程序大全程序一:关联矩阵和邻接矩阵互换算法function W=i

8、ncandadf(F,f)if f=0 m=sum(sum(F)/2; n=size(F,1); W=zeros(n,m); k=1; for i=1:n for j=i: if F(i,j)=0 W(i,k)=1; W(j,k)=1; k=k+1; endelseif f=1 m=size(F,2); W=zeros(n,n);m a=find(F(:,i)=0); W(a(1),a(2)=1; W(a(2),a(1)=1;else fprint(Please imput the right value of f);W;程序二:可达矩阵算法function P=dgraf(A)n=size(

9、A,1);P=A;for i=2: P=P+Ai;P(P=0)=1;P;程序三:有向图关联矩阵和邻接矩阵互换算法function W=mattransf(F,f) m=sum(sum(F); W(j,k)=-1; if F(a(1),i)=1 else 第二讲:最短路问题Dijkstra算法(计算两点间的最短路)function l,z=Dijkstra(W)n = size (W,1);for i = 1 :n l(i)=W(1,i); z(i)=0;end i=1;while il(j)+W(j,i) l(i)=l(j)+W(j,i); z(i)=j-1; if ji i=j-1; i=i

10、+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); 计算指定两点间的最短距离function P u=n2short(W,k1,k2)n=length(W);U=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);P1(k)=

11、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);程序四、(计算某点到其它所有点的最短距离)functionPm D=n1short(W,k)n=size(W,1);D=zeros(1,n); P d=n2short(W,k,i); Pmi=P; D(i)=d;程序五:(计算经过某两点的最短距离)function P d=pass2short(

12、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 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算

13、法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); 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); t

14、max=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);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(

15、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 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

16、);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)=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=

17、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(:,flag);index(find(index=v2)=v1;data(:,flag)=;index(:第四讲:Euler图和Hamilton图Fleury算法(在一个Euler图中找出Euler环游)注:包括三个文件;, , function

18、 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),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(i

19、i); 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(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;edd=find(matr(vexs(1,i),:dvex=0;dvex1=;ded=;if length(edd)=1 dvex=edd; dd=1;dd1=0;kkk=0; for k

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

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