《MATLAB数学实验》PPT 第十二章.PPT

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第一章 Matlab入门 MATLAB数学实验 第十二章 图与网络优化 * * 第十二章 图与网络优化 12.1 预备知识: 图与网络 12.2 最小生成树和最短路径: 算法和程序 12.3 建模与计算实验 例12.1 在五个居民点之间设置通信线路网。每条边代表两居民点的道路,数字代表路长。问如何建立该通信网,使联网代价最小。 预备知识: 图与网络 图:由若干个不同的点(顶点或节点)与其中某些顶点的连线所组成的图形 权:图中的每条边都有一个具体的数与之对应,这些数为权,带权的图为赋权图或网络。 边与弧:两点之间不带箭头的连线称为边,带箭头的连线称为弧。 无向图:一个图G是由顶点和边构成的。 有向图:一个图G是由顶点和弧构成的。 V和E分别是图的顶点的集合和边的集合,V={v1,v2,…,vn},E={e1,e2,…,em} 链:在无向图中,点与边的交错序列(vi1, ei1,vi2,…,vik-1,eik-1,vik)称为连结vi1和vik的链。(eit为连结vit和vit+1的边) 路径:(vi1,ai1,vi2,…,vik-1,aik-1,vik)是有向图中一条链(ait为从vit指向vit+1的弧),称之为从vi1到vik的路径。 弧的集合,A={a1,a2,…,am} 回路:闭合的路径称为回路。 圈:闭合的链称为圈。 连通图:图G中任何两个点之间至少有一条链,称G为连通图。 树:一个无圈的连通图称为树 生成树:若G1=(V1,E1)是连通图G2=(V2,E2)的生成子图(即V1=V2,E1?E2),且G1本身是树,则称G1为G2的生成树。 邻接矩阵:bij表示图G中从顶点vi到vj的弧或边的数目,则矩阵B = (bij)称为图G的邻接矩阵。 带权邻接矩阵:以wij表示网络G中从顶点vi到vj的弧的权(无向网只考虑vi与vj间的边的权),当vi到vj无弧或边时 ,wij=∞,则矩阵W = (wij)称为图G的带权邻接矩阵。 12.2 算法和程序 最小生成树:在赋权图G中,求一棵生成树,使其总权最小。 Kruskal算法: 把赋权图G中的所有边按照权的非减次序排列。 检查G中的每一条边,如果这条边与已得到的边不产生圈,则取这一条边为解的一部分。 若已取到n-1条边,算法终止。此时以V为顶点集,以取到的n-1条边为边集的图即为最小生成树。 * * Kruskal算法 [Wt,Pp]= minTreeKr(W) W为图的带权邻接矩阵, Wt为最小生成树的权; Pp(:,1:2)为最小生成树边的两顶点,Pp(:,3) 为最小生成树的边权,Pp(:,4)为最小生成树边的序号 * * 例的求解 clear;w=inf*ones(5); w(1,[2,3,4])=[1,7,3];w(2,[3,5])=[6,4]; w(3,[4,5])=[8,5];w(4,5)=2; %w取上三角部分,不影响计算结果 [a,b]=minTreeKr(w) %注意字母大小写 * * 12.2 算法和程序 最短路径问题:在赋权有向图G中,求一条总权最小的vi至vj的路径。 Floyd算法: P为矩阵,P(i, j)表示顶点vi到vj当前最短路径经过的顶点号码。初始如W(i, j)=∞, P(i, j)=0,否则 P(i, j)=j; D为矩阵,D(i,j)是顶点vi到vj最短路径值,初始D=W。按照下面方式不断迭代D(i,j)=min(D(i,k)+D(k,j),D(i,j)),与之对应记录P(i,j)=P(i,j)或P(i,k),直至k=n。 * * Floyd算法 [D,P]=minPathFl(W) W为图的带权邻接矩阵. D记录了所有定点间的最短路径值;D的i行记录了顶点i到各顶点最短路径值,即D(i,j)是顶点i到顶点j最短路径值。 P记录了最短路径的顶号码;P的i行记录了顶点i到各顶点最短路径经过的顶点号码,即P(i,j)是顶点i到顶点j最短路径要经过的顶点号码。 * * 最短路径的Dijkstra算法(适合单起点) (1) S为已求出的从已知始点vi出发的最短路径的终点的集合,它的初始状态为空集。则从vi出发到图上其余各顶点vk可能达到的最短路径长度的初值为:D(k)=min{W(i,k) | vk ∈ V-{i}}; (2) 选择vj,使得:D(j)=min{D(k) | vk ∈ V-S},vj就是当前求得的一条从始点vi出发的最短路径的终点。令S = S∪{j}; (3) 修改从vi出发到集合V-S上任一顶点vk可达的最短路径长度。如果D(j) + W(j, k) < D(k),则修改D(k)为:D(k) = D(j) + W(j, k); (4) 重复操作(2)、(3)共n-1次,并记录各最短路径

文档评论(0)

实用电子文档 + 关注
实名认证
内容提供者

教师资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2023年04月18日上传了教师资格证

1亿VIP精品文档

相关文档