- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第8讲 最短路问题实验
w=[ ]; function [l,z]=Dijkstra(W)n = size (W,1);for i = 1 :n ??? l(i)=W(1,i);??? z(i)=1;end i=1;while i=n??? for j =1 :n??????? if l(i)l(j)+W(j,i)??????????? l(i)=l(j)+W(j,i);??????????? z(i)=j;??????????? if ji??????????????? i=j-1;??????????? end??????? end??? end??? i=i+1;end a=[ ]; n=size(a,1); D=a; path=zeros(n,n); for i=1:n ?? for j=1:n ?????? if D(i,j)~=inf ?????????? path(i,j)=j; %j是i的后续点 ?????? end ?? end end for k=1:n ?? for i=1:n ????? for j=1:n ???????? if D(i,j)D(i,k)+D(k,j) ??????????? D(i,j)=D(i,k)+D(k,j);??????????? path(i,j)=path(i,k); ???????? end ????? end ?? end end p=[sp]; mp=sp; for k=1:n ??? if mp~=ep ??????? d=path(mp,ep); ??????? p=[p,d]; ??????? mp=d; ??? end end d=D(sp,ep); path=p * 数学模型与数学实验 图论模型 实验目的 实验内容 2、会用Matlab软件求最短路 1、了解最短路的算法及其应用 1、图 论 的 基 本 概 念 2、最 短 路 问 题 及 其 算 法 3、最 短 路 的 应 用 4、实验作业 固 定 起 点 的 最 短 路 最短路是一条路径,且最短路的任一段也是最短路. 假设在u0-v0的最短路中只取一条,则从u0到其余顶点的最短路将构成一棵以u0为根的树. 因此, 可采用树生长的过程来求指定顶点到其余顶点的最短路. 算法步骤: u1 u2 u3 u4 u5 u6 u7 u8 floyd算法的基本思想 算法原理—— 求距离矩阵的方法 算法原理—— 求路径矩阵的方法 在建立距离矩阵的同时可建立路径矩阵R. 即当vk被插入任何两点间的最短路径时,被记录在R(k)中,依次求 时求得 ,可由 来查找任何点对之间最短路的路径. i j 算法原理—— 查找最短路路径的方法 pk p2 p1 p3 q1 q2 qm 则由点i到j的最短路的路径为: 算法步骤 一、 可化为最短路问题的多阶段决策问题 二、 选 址 问 题 1、 中心问题 2、 重心问题 例:企业要制定一台重要设备更新的五年计划,目标是使总费用(购置费用和维修费用之和)为最小。此设备在各年初价格及使用期中所需维修数据如下: 解:用点vi表示年初。(i=1,2,…6), v6表示第五年底。弧aij=(vi,vj)表示第i年初购置设备使用到第j年初的过程。对应的权期间发生的购置费用和维修费用之和。原问题转变为从v1到v6的一条最短路。 购置年份 1 2 3 4 5 单位
(万元) 11 11 12 12 13 使用年数 0-1 1-2 2-3 3-4 4-5 维修费用
(万元) 5 6 8 11 18
Dijkstra算法:求G中从顶点u0到其余顶点的最短路
设G为赋权有向图或无向图,G边上的权均非负.
对每个顶点,定义两个标记(,),其中:
:表从顶点u0到v的一条路的权.
:v的父亲点,用以确定最短路的路线
算法的过程就是在每一步改进这两个标记,使最终为从顶点u0到v的最短路的权.
S:具有永久标号的顶点集
输入: G的带权邻接矩阵
(1)赋初值:令 S={}, =0
,令=,=
设是使取最小值的中的顶点,则令S=S∪{},
(4) 若φ,转2,否则,停止.
用上述算法求出的就是到的最短路的权,从的父亲标记追溯到, 就得到到的最短路的路线.
直接在图的带权邻接矩阵中用插入顶点的方法依次构造出个矩阵D(1)、 D(2)、… 、D(),使最后得到的矩阵D()成为图的距离矩阵,同时也求出插入点矩阵以便得到两点间的最短路径.
把带权邻接矩阵W作为距离矩阵的初值,即D(0)==W
(1)D(1)= ,其中
是从vi到vj的只允许以v1作为中间点的路径中最短路的长度.
(2
文档评论(0)