数学建模~最短路问题(课件ppt).pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数学建模~最短路问题(课件ppt)

Prim算法的实现过程 while kn % 更新 l(v) 和 z(v) for i=1:n for j=1:k if i~=s(j) if l(i)l(u)+w(u,i) l(i)=l(u)+w(u,i); z(i)=u; end end end end l,z %求v* ll=l; for i=1:n for j=1:k if i~=s(j) ll(i)=ll(i); else ll(i)=inf; end end end lv=inf; for i=1:n if ll(i)lv lv=ll(i); v=i; end end lv, v s(k+1)=v k=k+1 u=s(k) end l,z 每 对 顶 点 之 间 的 最 短 路 1.求距离矩阵的方法 2.求路径矩阵的方法 3.查找最短路路径的方法 (一)算法的基本思想 (三)算法步骤 返回 (二)算法原理 算法的基本思想 返回 算法原理—— 求距离矩阵的方法 返回 算法原理—— 求路径矩阵的方法 在建立距离矩阵的同时可建立路径矩阵R. 即当 k被插入任何两点间的最短路径时,被记录在R(k)中,依次求 时求得 ,可由 来查找任何点对之间最短路的路径. 返回 ) ( n R i j 算法原理—— 查找最短路路径的方法 pk p2 p1 p3 q1 q2 qm 则由点i到j的最短路的路径为: 返回 算法步骤 * 最短路问题 二、最小生成树问题及其解法 三、最短路问题及其解法 一、图论的基本概念 图 论 的 基 本 概 念 一、 图 的 概 念 1.图的定义 2.顶点的次数 3.子图 二、 图 的 矩 阵 表 示 1. 关联矩阵 2. 邻接矩阵 返回 定义 有序三元组G=(V,E, )称为一个图,如果: 图的定义 定义 定义 返回 顶点的次数 例2 在一次聚会中,史密斯先生和他太太邀请四对夫妻参加晚会。每个人到的时候,房间里的一些人都要与别的一些人握手。当然,每个人都不会与自己的配偶握手,也不会跟同一个人握手两次。 之后,史密斯先生问每个人和别人握了几次手,他们的答案都不一样。那么史密斯太太和别人握了几次手呢? 返回 例1 在一次聚会中,认识奇数个人的人数一定是偶数。 由图可知, 8号的配偶是0号。 7号的配偶是1号。 6号的配偶是2号。 5号的配偶是3号。 史密斯太太是4号,所以史密斯太太和别人握了4次手。 返回 邻接矩阵 注:假设图为简单图 返回 最 短 路 问 题 及 其 算 法 一、 基 本 概 念 二、固 定 起 点 的 最 短 路 三、每 对 顶 点 之 间 的 最 短 路 返回 基 本 概 念 返回 返回 求图的最小生成树最常用的两种算法: (1)Prim算法 (2)Kruskal算法 注意:在一个加权连通图G中,权最小的那棵生成树称为图G的最小生成树。 返回 Prim算法思想: 输入加权图的带权邻接矩阵 (1)建立初始候选边集B, ; (2)从候选边中选取最短边(u,v), ; (3)调整候选边集B; (4)重复(2)、(3)直到T含有n-1条边。 4 5 2 3 1 1 1 1 2 3 4 5 8 inf 1 5 4 3 9 4 5 3 5 2 7 2 3 6 实现Prim算法的MATLAB程序: a=[0 8 inf 1 5;8 0 6 inf 7;inf 6 0 9 10;1 inf 9 0 3;… 5 7 10 3 0]; T=[ ]; e=0; v=1; n=5; sb=2:n; %1代表第一个红点,sb代表白点集。 for j=2:n %构造初始候选边的集合 b(1,j-1)=1; b(2,j-1)=j; b(3,j-1)=a(1,j); end while size(T,2) n-1 [min,i]=min(b(3,:)); %在候选边中找最短边。 T(:,size(T,2)+1)=b(:,i); e = e + b(3,i); v = b(2,i); %v表示新涂的红点。 tem

文档评论(0)

peain + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档