高教版《数学建模与数学实验(第3版)》第8讲-最短路问题

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

数学建模与数学实验最短路问题实验目的实验内容2.会用MATLAB软件求最短路1.了解最短路的算法及其应用1.图论的基本概念2.最短路问题及其算法3.最短路的应用4.建模案例:最优截断切割问题5.实验作业图论的基本概念一、图的概念1.图的定义2.顶点的次数3.子图二、图的矩阵表示1.关联矩阵2.邻接矩阵返回定义有序三元组G=(V,E,)称为一个图,如果:[1]V=},,,{21nvvv是有限非空集,V称为顶点集,其中的元素叫图G的顶点.[2]E称为边集,其中的元素叫图G的边.[3]是从边集E到顶点集V中的有序或无序的元素偶对构成集合的映射,称为关联函数.例1设G=(V,E,),其中V={v1,v2,v3,v4},E={e1,e2,e3,e4,e5},112213314414544(),(),(),(),()evvevvevvevvevv.G的图解如图图的定义定义在图G中,与V中的有序偶(vi,vj)对应的边e,称为图的有向边(或弧),而与V中顶点的无序偶vivj相对应的边e,称为图的无向边.每一条边都是无向边的图,叫无向图;每一条边都是有向边的图,称为有向图;既有无向边又有有向边的图称为混合图.定义若将图G的每一条边e都对应一个实数w(e),则称w(e)为边的权,并称图G为赋权图.规定用记号和分别表示图的顶点数和边数.常用术语:(1)端点相同的边称为环.(2)若一对顶点之间有两条以上的边联结,则这些边称为重边.(3)有边联结的两个顶点称为相邻的顶点,有一个公共端点的边称为相邻的边.(4)边和它的端点称为互相关联的.(5)既没有环也没有平行边的图,称为简单图.(6)任意两顶点都相邻的简单图,称为完备图,记为Kn,其中n为顶点的数目.(7)若V=XY,XY=,且X中任两顶点不相邻,Y中任两顶点不相邻,则称G为二元图;若X中每一顶点皆与Y中一切顶点相邻,则G称为完备二元图,记为Km,n,其中m,n分别为X与Y的顶点数目.返回顶点的次数定义(1)在无向图中,与顶点v关联的边的数目(环算两次)称为v的次数,记为()dv.(2)在有向图中,从顶点v引出的边的数目称为v的出度,记为()dv+,从顶点v引入的边的数目称为v的入度,记为()dv-,()dv=()dv++()dv-称为v的次数.4()4dv5)(3)(2)(444vdvdvd定理1 )(2)()(GvdGVv推论1 任何图中奇次顶点的总数必为偶数.例在一次聚会中,认识奇数个人的人数一定是偶数.返回子图定义设图G=(V,E,),G1=(V1,E1,1)(1)若V1V,E1E,且当eE1时,1(e)=(e),则称G1是G的子图.特别的,若V1=V,则G1称为G的生成子图.(2)设V1V,且V1,以V1为顶点集、两个端点都在V1中的图G的边为边集的图G的子图,称为G的由V1导出的子图,记为G[V1].(3)设E1E,且E1,以E1为边集,E1的端点集为顶点集的图G的子图,称为G的由E1导出的子图,记为G[E1].GG[{v1,v4,v5}]G[{e1,e2,e3}]返回关联矩阵对无向图G,其关联矩阵M=)(ijm,其中:10ijijijvemve若与相关联若与不关联M=43215432110110011000101110001vvvveeeee对有向图G,其关联矩阵M=)(ijm,其中:不关联与若的终点是若的起点是若jijijiijevevevm011注:假设图为简单图返回邻接矩阵对无向图G,其邻接矩阵)(ijaA,其中:不相邻与若相邻与若jijiijvvvva01注:假设图为简单图A=432143210111101011011010vvvvvvvv对有向图G=(V,E),其邻接矩阵)(ijaA,其中:EvvEvvajijiij),若(),若(01对有向赋权图G,其邻接矩阵)(ijaA,其中:EvvjiwEvvwajiijjiijij),(0,),(若若为其权且若无向赋权图的邻接矩阵可类似定义.A=4321432105375083802720vvvvvvvv返回最短路问题及其算法一、基本概念二、固定起点的最短路三、每对顶点之间的最短路返回基本概念通路44112544141vevevevevWvv道路4332264521141vevevevevevTvv路径4521141vevevPvv定义1在无向图G=(V,E,)中:(1)顶点与边相互交错且iiivve1)((i=1,2,…,k)的有限非空序列)(12110kkkvevevevw称为一条从0v到kv的通路,记为kvvW0(2)边不重复但顶点可重复的通路称为道路,记为kvvT0(3)边与顶点均不重复的通路称为路径,记为kvvP0定义2 (1)任意两点均有路径的图称为连通图.    (2)起点与终点重合的路径称为圈.    (3)连通而无圈的图称为树.定义3(1)设(,)Puv是赋权图G中从u到v的路径,则称)()()(PEeewPw为路径P的权.(2)在赋权图G中,从顶点u到顶点v的具有最小权的路(,)Puv,称为u到v的最短路.返回固定起点的最短路最短路是一条路径,且最短路的任一段也是最短路.假设在u0-v0的最短路中只取一条,则从u0到其余顶点的最短路将构成一棵以u0为根的树.因此,可采用树生长的过程来求指定顶点到其余顶点的最短路.Dijkstra算法:求G中从顶点0u到其余顶点的最短路.设G为赋权有向图或无向图,G边上的权均非负.对每个顶点,定义两个标记(lv(),zv()),其中:lv():表从顶点0u到v的一条路的权.zv():v的父亲点,用以确定最短路的路线算法的过程就是在每一步改进这两个标记,使最终lv()为从顶点0u到v的最短路的权.S:具有永久标号的顶点集输入:G的带权邻接矩阵),(vuw算法步骤:(1)赋初值:令S={u0},lu()0=0vSVS\,令lv()=Wuv(,)0,zv()=u0uu0(3)设v*是使lv()取最小值的S中的顶点,则令S=S∪{v*},uv*(4)若Sφ,转2,否则,停止.用上述算法求出的lv()就是u0到v的最短路的权,从v的父亲标记)(vz追溯到u0,就得到u0到v的最短路的路线.(2)更新lv()、zv():vSVS\,若lv()luWuv()(,)则令lv()=luWuv()(,),zv()=u例求下图从顶点u1到其余顶点的最短路.先写出带权邻接矩阵:03064093021509701608120W因G是无向图,故W是对称矩阵.TOMATLAB(road1))(iul迭代次数1u2u3u4u5u6u7u8u1234567800218281083108610127101291212最后标记:)(vl)(vz0217369121u1u1u6u2u5u4u5u)(iul1u2u3u4u5u6u7u8u最后标记:)(vl)(vz0217369121u1u1u6u2u5u4u5u12345678返回uuuuuuuu每对顶点之间的最短路(二)算法原理1.求距离矩阵的方法2.求路径矩阵的方法3.查找最短路路径的方法(一)算法的基本思想(三)算法步骤返回算法的基本思想直接在图的带权邻接矩阵中用插入顶点的方法依次构造出个矩阵D(1)、D(2)、…、D(),使最后得到的矩阵D()成为图的距离矩阵,同时也求出插入点矩阵以便得到两点间的最短路径.返回算法原理——求距离矩阵的方法把带权邻接矩阵W作为距离矩阵的初值,即D(0)=)()0(ijd=W(1)D(1)=)()1(ijd,其中)0(1)0()1(,min{iijijddd})0(1jd)1(ijd是从vi到vj的只允许以v1作为中间点的路径中最短路的长度.(2)D(2)=)()2(ijd,其中)1(2)1()2(,min{iijijddd})1(2jd)2(ijd是从vi到vj的只允许以v1、v2作为中间点的路径中最短路的长度.…()D(ν)=)()(ijd,其中)1()1()(,min{iijijddd})1(jd)(ijd是从vi到vj的只允许以v1、v2、…、v作为中间点的路径中最短路的长度.即是从vi到vj中间可插入任何顶点的路径中最短路的长,因此D(ν)即是距离矩阵.返回算法原理——求路径矩阵的方法R=)(ijr,rij的含义是从vi到vj的最短路要经过点号为rij的点.)()0()0(ijrR,jrij)0(每求得一个D(k)时,按下列方式产生相应的新的R(k)否则若)1()1()1()1()(kkjkikkijkijkijdddrkr在建立距离矩阵的同时可建立路径矩阵R.即当k被插入任何两点间的最短路径时,被记录在R(k)中,依次求时求得,可由来查找任何点对之间最短路的路径.)(D)(R返回)(Rvij算法原理——查找最短路路径的方法若1)(prij,则点p1是点i到点j的最短路的中间点.然后用同样的方法再分头查找.若:(1)向点i追溯得:2)(1prip,3)(2prip,…,kipprk)((2)向点j追溯得:1)(1qrjp,2)(1qrjq,…,jrjqm)(pkp2p1p3q1q2qm则由点i到j的最短路的路径为:jqqqpppimk,,,,,,,,21,12返回算法步骤Floyd算法:求任意两点间的最短路.D(i,j):i到j的距离.R(i,j):i到j之间的插入点.输入:带权邻接矩阵w(i,j)(1)赋初值:对所有i,j,d(i,j)w(i,j),r(i,j)j,k1(2)更新d(i,j),r(i,j)对所有i,j,若d(i,k)+d(k,j)d(i,j),则d(i,j)d(i,k)+d(k,j),r(i,j)k(3)若k=,停止.否则kk+1,转(2).例求下图中加权图的任意两点间的距离与路径.TOMATLAB(road2(floyd))5333434331543243332344441,0646960243420256420793570RD951d,故从v5到v1的最短路为9.51r=4.由v4向v5追溯:3,35354rr;由v4向v1追溯:141r所以从v5到v1的最短路径为:1435.返回最短路的应用一、可化为最短路问题的多阶段决策问题二、选址问题1.中心问题2.重心问题返回可化为最短路问题的多阶段决策问题例1设备更新问题:企业使用一台设备,每年年初,企业领导就要确定是购置新的,还是继续使用旧的.若购置新设备,就要支付一定的购置费用;若继续使用,则需支付一定的维修费用.现要制定一个五年之内的设备更新计划,使得五年内总的支付费用最少.已知该种设备在每年年初的价格为:第一年第二年第三年第四年第五年1111121213使用不同时间设备所需维修费为:使用年限0-11-22-33-44-5维修费5681118构造加权有向图G1(V,E)(1)顶点集V={Xib,i=1,2,3,4,5}∪{Xirk(),i=2,3,4,5,6;k=1,2,…,i-1},每个顶点代表年初的一种决策,其中顶点Xib代表第i年初购置新设备的决策,顶点Xirk()代表第i年初修理用过k年的旧设备的决策(2)弧集E={(,),(,),,(),XXXXibibirkib11i=1,2,3,4;k=1,2,…,i-1}∪{(,),()XXibir11,i=1,2,3,4,5}∪{(

1 / 38
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功