《数学建模最短路问题.pptx》由会员分享,可在线阅读,更多相关《数学建模最短路问题.pptx(54页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、图 论 的 基 本 概 念一、图 的 概 念1图的定义2顶点的次数 3子图二、图 的 矩 阵 表 示1 关联矩阵2 邻接矩阵返回第1页/共54页定义有序三元组G=(V,E,)称为一个图,如果:图的定义第2页/共54页定义定义第3页/共54页第4页/共54页返回第5页/共54页顶点的次数第6页/共54页例2 在一次聚会中,史密斯先生和他太太邀请四对夫妻参加晚会。每个人到的时候,房间里的一些人都要与别的一些人握手。当然,每个人都不会与自己的配偶握手,也不会跟同一个人握手两次。之后,史密斯先生问每个人和别人握了几次手,他们的答案都不一样。那么史密斯太太和别人握了几次手呢?返回例1 在一次聚会中,认识
2、奇数个人的人数一定是偶数。第7页/共54页由图可知,8号的配偶是0号。7号的配偶是1号。6号的配偶是2号。5号的配偶是3号。史密斯太太是4号,所以史密斯太太和别人握了4次手。返回第8页/共54页邻接矩阵注:假设图为简单图第9页/共54页返回第10页/共54页最 短 路 问 题 及 其 算 法一、基 本 概 念二、固 定 起 点 的 最 短 路三、每 对 顶 点 之 间 的 最 短 路返回第11页/共54页基 本 概 念第12页/共54页返回第13页/共54页返回求图的最小生成树最常用的两种算法:(1)Prim算法(2)Kruskal算法注意:在一个加权连通图G中,权最小的那棵生成树称为图G的最
3、小生成树。第14页/共54页返回Prim算法思想:输入加权图的带权邻接矩阵(1)建立初始候选边集B,;(2)从候选边中选取最短边(u,v),;(3)调整候选边集B;(4)重复(2)、(3)直到T含有n-1条边。第15页/共54页Prim算法的实现过程算法的实现过程45231 1 1 12 3 4 58 inf 1 5439453527236第16页/共54页实现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代表白点集。
4、for j=2:n%构造初始候选边的集合 b(1,j-1)=1;b(2,j-1)=j;b(3,j-1)=a(1,j);end第17页/共54页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表示新涂的红点。temp=find(sb=b(2,i);sb(temp)=;b(:,i)=;for j=1:length(sb)%调整候选边 d=a(v,b(2,j);if db(3,j)b(1,j)=v;b(3,j)=d;end endend第18页/共54页Kruska
5、l算法思想:假设给定了一个加权连通图G,G的边集合为E,顶点个数n,则假设最小生成树T中的边和顶点均涂为红色,其余为白色。初始时G中的边均为白色。(1)将所有的顶点涂成红色;(2)在白色边中,挑选一条权最小的边,使其与红色边不形成圈,将该白色边涂红。(3)重复(2)直到n-1条红色边,这n-1条红色边就构成了最小生成树T的边集合。注意:在用Kruskal算法求最小生成树时,在第(2)步判断是否形成圈在程序实现时比较麻烦。第19页/共54页实现Kruskal算法的MATLAB程序:%加权图的存储结构采用边权矩阵b(i,j)m3b=1 1 1 2 2 3 3 4 2 4 5 3 5 4 5 5 8
6、 1 5 6 7 9 10 3;B,I=sortrows(b,3);B=B;m=size(b,2);n=5;t=1:n;k=0;T=;c=0;第20页/共54页for i=1:m if t(B(1,i)=t(B(2,i)%判断第i条边是否与树中的边形成圈。k=k+1;T(k,1:2)=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);for j=1:n if t(j)=tmax t(j)=tmin;end end end if k=n-1 break;endendT,c第21页/共54页Krusk
7、al实现过程:初始化后排序:B=1 4 1 2 2 1 3 3 4 5 5 3 5 2 4 5 1 3 5 6 7 8 9 10;第一轮:tmin=1;tmax=4;t=1 2 3 1 5;第二轮:tmin=4;tmax=5;t=1 2 3 1 1;第三轮:t(1)=t(5)直接进入下一轮第四轮:tmin=2;tmax=3;t=1 2 2 1 1;第五轮:tmin=1;tmax=2;t=1 1 1 1 1;第22页/共54页求最短路径的最常用的两种算法:(1)Dijkstra算法(2)Floyd算法注意:普通路径长度定义为该路径所包含的全体边的长度之和。最短路径是指在图中,从顶点u到顶点v的路
8、径中普通路径长度最短的路径称为u到v的最短路径。第23页/共54页固 定 起 点 的 最 短 路最短路是一条路径,且最短路的任一段也是最短路 假设在u0-v0的最短路中只取一条,则从u0到其余顶点的最短路将构成一棵以u0为根的树 因此,可采用树生长的过程来求指定顶点到其余顶点的最短路第24页/共54页第25页/共54页算法步骤:第26页/共54页 TO MATLAB(road1)第27页/共54页第28页/共54页 1 2 34 5 6 7 8返回第29页/共54页Dijkstra算法的MATLAB实现:w=0 2 1 8 inf inf inf inf;2 0 inf 6 1 inf inf
9、 inf;1 inf 0 7 inf inf 9 inf;.8 6 7 0 5 1 2 inf;inf 1 inf 5 0 3 inf 9;inf inf inf 1 3 0 4 6;.inf inf 9 2 inf 4 0 3;inf inf inf inf 9 6 3 0 n=size(w,1);w1=w(1,:);%赋初值 for i=1:n l(i)=w1(i);z(i)=1;end s=;s(1)=1;u=s(1);k=1;第30页/共54页while kl(u)+w(u,i)l(i)=l(u)+w(u,i);z(i)=u;end end end end l,z 第31页/共54页%
10、求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第32页/共54页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)endl,z第33页/共54页每 对 顶 点 之 间 的 最 短 路1求距离矩阵的方法2求路径矩阵的方法3查找最短路路径的方法(一)算法的基本思想(三)算法步骤返回(二)算法原理第34页/共54页算法的基本思想返回第35页/共54页算法原理 求距离矩阵的方法返回第36页/共54页算
11、法原理 求路径矩阵的方法在建立距离矩阵的同时可建立路径矩阵R 即当k被插入任何两点间的最短路径时,被记录在R(k)中,依次求 时求得 ,可由 来查找任何点对之间最短路的路径返回)(nR第37页/共54页i j算法原理 查找最短路路径的方法pkp2p1p3q1q2qm则由点i到j的最短路的路径为:返回第38页/共54页算法步骤第39页/共54页 TOMATLAB(road2(floyd)返回第40页/共54页Folyd算法的MATLAB实现:functionD,R=floyd(a)n=size(a,1);D=afor i=1:n for j=1:n R(i,j)=j;endend第41页/共54
12、页for k=1:n for i=1:n for j=1:n 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);end end end k,D,Rend 第42页/共54页在命令窗口中输入:a=0 9 inf 3 inf;9 0 2 inf 7;inf 2 0 2 4;3 inf 2 0 inf;inf 7 4 inf 0;floyd(a)第43页/共54页一、可化为最短路问题的多阶段决策问题二、选 址 问 题1 中心问题2 重心问题返回第44页/共54页可化为最短路问题的多阶段决策问题第45页/共54页第46页/共54页第47页
13、/共54页返回第48页/共54页 选址问题-中心问题 TO MATLAB(road3(floyd)第49页/共54页S(v1)=10,S(v2)=7,S(v3)=6,S(v4)=8.5,S(v5)=7,S(v6)=7,S(v7)=8.5S(v3)=6,故应将消防站设在v3处.返回第50页/共54页 选址问题-重心问题返回第51页/共54页实验作业 生产策略问题:现代化生产过程中,生产部门面临的突出问题之一,便是如何选取合理的生产率.生产率过高,导致产品大量积压,使流动资金不能及时回笼;生产率过低,产品不能满足市场需要,使生产部门失去获利的机会.可见,生产部门在生产过程中必须时刻注意市场需求的变化,以便适时调整生产率,获取最大收益.某生产厂家年初要制定生产策略,已预知其产品在年初的需求量为a=6万单位,并以b=1万单位/月速度递增.若生产产品过剩,则需付单位产品单位时间(月)的库存保管费C2=0.2元;若产品短缺,则单位产品单位时间的短期损失费C3=0.4元.假定生产率每调整一次带有固定的调整费C1=1万元,问:工厂应如何制定当年的生产策略,使工厂的总损失最小?返回第52页/共54页第53页/共54页感谢您的观看!第54页/共54页
限制150内