图论的几种算法ppt课件.ppt
“雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。Email: 图 论 算 法“雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。v数值计算搜索法、最速下降v规划方法单纯型法、匈牙利算法v非数值运算搜索法、图论算法、组合优化v现代优化方法遗传算法、蚁群算法、神经网络算法分析算法分析“雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。v哥尼斯堡七桥问题从某点出发通过每座桥且每桥只通过一次回到起点D DA AB BC C一、图的一般理论一、图的一般理论1、起源、起源A AB BC CD Dv建模:点陆地 岛屿 边桥“雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。v一个图G由一个顶点集V和一个边的集E组成。vE中每个元素e是连接顶点集 V中两个顶点u和v的边。n例:图G=: 点集 V = v1,v2, .,vn 边集 E = e1,e2, .,em 其中 ek=vivj图G=:其中 V = v1,v2,v3,v4,v5 E = e1,e2,e3 ,e4 e1=v1v2,e2=v2v4,e3=v1v4,e4=v5v2e1v1v2v3v4v5e2e3e42、定义、定义“雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。图的图形表示图的图形表示v例 联接点的位置, 边的长度v1v2v3v4v5e1e2e3e4n比较: 同构 G1G2G3123434213412v1v2v3v4v5e2e3e4“雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。v例1()0ijnijijAaa与 点相邻否则0101110101010111010111110A(1)邻接矩阵)邻接矩阵(点点点点)3、矩阵表示、矩阵表示v1v2v3v4v5e1e2e3e4e5e6e7e8“雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。v例(2)关联矩阵)关联矩阵(点边点边)1()0ijn mijijRrr点为 边端点否则v1v2v3v4v5e1e2e3e4e5e6e7e81001100011000100011000100011000100001111R“雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。v例4、连通性、连通性231,nAAAA邻接长2通路:长3长n-1221nPAAAA连通矩阵v1v2v3v4v5e1e2e3e4e5e6e7e8l01.m“雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。二、最短路问题二、最短路问题1、单源最短路问题、单源最短路问题Dijkstra v赋权图G 从点v0到其余结点的通路权和最小vDijkstra算法思想按路径长度递增顺序求最短路径算法 两个集合:S已求得最短路径的结点、V-S未确定 每一步:将S 与V-S之间最短路经终点加入S存储G:带权邻接矩阵每点标记 (dj, pj):至j点最短路径的长度、前一点 “雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。vDijkstra算法流程v赋初值:w,各点与源点之间:已求Sv0,最短长度d=w(v0,:)、前一点p= v0u= v0v更新d、p:若d(i)d(u) +w(u,i),则d(i)=d(u) +w(u,i),p(i)=uv寻找v:V-S中使d(i)最小的v: SSv, u= vv若V-S,重复2,否则:结束v0vud(v)d(u)w(u,v)“雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。vdistance,path,pathway= dijkstra(v0,w)最短路的长度、前点、路径 源点 带权邻接矩阵v说明:vMatlab 程序: dijkstra.mwhile kdistance(u)+w(u,i) distance(i)=distance(u)+w(u,i); path(i)=u; end end (求v*:V-S中最小距离点) k=k+1; s(k)=v; u=s(k);end%赋初值s=v0; %已求得最短路径的结点distance=w(v0,:);path=v0*ones(1,n);u=s(1);k=1; %s长dijkstra.m“雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。v求v*:V-S中最小距离点v %求路径%V-S中距离d=distance; for i=1:n for j=1:k if i=s(j) d(i)=inf; break end end end %V-S中最小距离 dmin,v=min(d); pathway=zeros(n);pathway(1:n,1:2)=v0*ones(n,1),(1:n);for i=1:n q=i; while path(q)=v0 pathway(i,2:n)=path(q),pathway(i,2:(n-1); q=path(q); endend“雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。v例v1v2v3v4v5869157103vOKl02.mv带权邻接矩阵08inf15806inf7inf609101inf903571030w“雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。vFloyd 算法思想带权邻接矩阵两点之间插入顶点缩短距离:构造出个矩阵D(1)、 D(2)、 、D(n-1)最后得到距离矩阵最短路径递推公式(1)(1)(0)(0)()1(10)1() :min,ijnijijijdddddD(2)(2)(1)(1)()2(21)2() :min,ijnijijijdddddD( )( )(1)(1)(1)(1)(1( )() :min,nnnnnijnijijinjnndddddD2、每对顶点之间的最短路、每对顶点之间的最短路Floyd “雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。v带权 邻接 矩阵v例: 1 2 3 4 5 6 7 8 9 10 1 14 1 3 6 2 72 3 5 4 11 32 201Inf41InfInfInfInfInf101Inf36InfInfInfInfInf10InfInf27InfInfInf4InfInf01InfInf2InfInf13Inf103InfInf35Inf62Inf30InfInfInf4InfInf7InfInfInf0InfInf1InfInfInf2InfInfInf02InfInfInfInfInf3InfInf202InfInfAInfInf541Inf20“雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。v矩阵v两点之间:插入顶点 1 2 3 4 5 6 7 8 9 10 1 14 1 3 6 2 72 3 5 4 11 32 20 1 inf41 .1 01inf3 .Av15通过1点(0)0 1 inf4 1 .12 inf52 .Uv于是(1)0 1 inf4 1 .1 0152 .D(1)2 12 63 .10 152 .Uv15通过2点(2)0 124 1 .1 0 152 .Dv于是v按1、2v会不会错过一些点?“雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。vMatlab 程序: floyd.m%设初值D=w;path=zeros(n);for i=1:n for j=1:n if D(i,j)=inf path(i,j)=j; end endendfloyd.m%迭代,更新D pathfor 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); path(i,j)=path(i,k); end end endendvD,path=floyd(w)v最短路的长度、后点 带权邻接矩阵“雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。v例vOKl03.mv得到:最短路、后点v路径? 1 2 3 4 5 6 7 8 9 10 1 14 1 3 6 2 72 3 5 4 11 32 2“雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。v求路径function pathway=road(path,v1,v2)%求路径:floyd的后续指令pathway=v1;q=v1;k=1;while path(q,v2)=v2 k=k+1; pathway(k)=path(q,v2); q=path(q,v2);endpathway(k+1)=v2;road.ml03.m函数v1与v2之间路径起点 辅助点 循环变量起点循环: q至v2后点不是v2 循环变量增加为纪录 路径增加点 辅助点为新点到终点v2结束路径终点v2“雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。三、树三、树v 无回路的连通图: 树根, 树叶, 树枝v例:方法:避圈法最小生成树12486223v1v2v3v4v5v612622v1v2v3v4v5v612862v v1 1v2v3v4v5v6最短路径生成树“雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。vKruskal 算法避圈法开始: G中的边均为白色在白色边中,挑选一条权最小的边,使其与红色边不形成圈,将该白色边涂红;重复:直到有n-1条红色边,这n-1条红色边便构成最小生成树T的边集合v注:如何加边判断不形成圈?判断两端点是否属于同一子树子树:用最小标号点纪录最小生成树最小生成树“雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。v纪录两端点与边权vMatlab 程序: Kruskal.mn=size(w,1);%求点边矩阵k=1;for i=1:(n-1) for j=(i+1):n if w(i,j)=inf b(:,k)=i;j;w(i,j); k=k+1; end endendm=size(b,2);b,I=sortrows(b,3),b=bv排序kruskal.m“雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。v树v权和v所在子树的 最小标号点v进入最小树 的边数for i=1:m if t(b(1,i)=t(b(2,i) T(1:2,k)=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 k=k+1; end if k=n break; end endT=;c=0;t=1:n;k=1;v更新子树 的最小标号点v赋初值v不在同一子树“雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。v例v1v2v3v4v5869157103vOK08inf15806inf7inf609101inf903571030Al04.mv带权邻接矩阵v结果T =1 4 2 2 4 5 3 5c =17“雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。vEuler图存在一条通过所有边一次的路线的图:遍历边Th 若图 G 为欧拉图 G 连通,且所有结点度数(以此点为端点的边的个数)均为偶数v中国邮路问题遍历边路最短带权图权和最小算法:FleuryvHamilton图存在通过每结点一次的路线的图:遍历点国际难题v旅行商问题遍历点路最短 权和最小的回路算法:改良圈算法四、其他四、其他“雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。v二分图匹配问题算法:匈牙利算法v网络流最大流算法:Ford-Fulkerson标号算法v着色图点、边、面算法:“雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。v著名算法:dijkstra floydv应用:建模竞赛 98B 灾情巡视路线07B 公交线路 说明说明 “雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。练习练习v洪水排险求区域间的邻接矩阵区域1至区域20长度不超过5的路径有多少条是否任两区域通过长度不超过5的路径均可达到“雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。练习练习v某街道如图v画出A点到各顶点的最短道路(最短路经生成树) A 1 3 42 1 6 1 2 3 14 2 5 6 3 2 1“雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。练习练习v某街道如图v求任两顶的最短道路A 1 3 42 1 6 1 2 3 14 2 5 6 3 2 1“雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。练习练习v某街道如图v欲建立有线网络连接画出此街道各顶点均相联的最短道路(最优生成树) A 1 3 42 1 6 1 2 3 14 2 5 6 3 2 1“雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。