370 likes | 498 Views
离 散 数 学. 计算机科学与工程学院 信息与软件工程学院. 电子科技大学. 2014年8月27日星期三. v 1. v 3. v 1. v 3. v 1. v 3. v 1. v 3. v 2. v 4. v 2. v 4. v 2. v 4. v 2. v 4. G 1. G 2. G 3. G 4. 例 9.3.6. 判断下图中 4 个图的连通性。.
E N D
离 散 数 学 计算机科学与工程学院 信息与软件工程学院 电子科技大学 2014年8月27日星期三
v1 v3 v1 v3 v1 v3 v1 v3 v2 v4 v2 v4 v2 v4 v2 v4 G1 G2 G3 G4 例9.3.6 判断下图中4个图的连通性。 分析 先看略去图中所有有向边的方向得无向图,容易看出G1、G2、G3是连通的有向图,G4是非连通的有向图。再看有向连通图中结点间的可达情况,G1中v1到v4不可达,v4到v1不可达,所以G1是弱连通图;G2中任何一对结点之间至少有一个结点到另一个结点是可达的,所以G2是单向连通图(当然它也是弱连通图);G3中中任何一对结点之间至少有一个结点到另一个结点是可达的,所以G3是强连通图(当然它也是单向连通图和弱连通图)。 解 在上图中,G1是弱连通图,G2是单向连通图(当然它也是弱连通图),G3是强连通图(当然它也是单向连通图和弱连通图),G4是非连通的有向图。
定理9.3.7 有向图G是强连通图的充分必要条件是G中存在一条经过所有结点的回路。 分析 只需要利用回路中的任二点相互可达和强连通的定义即可证明。 证明 充分性:如果G中存在一条经过所有结点的回路C,则G中任意二结点均在回路C上,所以G中任二结点都是相互可达的,因而G是强连通图。 必要性:设G是强连通图,那么G中任二结点均是相互可达的。不妨设G中的结点为v1,v2,…,vn,因为vi到vi+1是可达的,i=1,2,…,n-1,且vn到v1是可达的,所以vi到vi+1存在通路,i=1,2,…,n-1,且vn到v1存在通路。让这些连通首尾相接,则得一回路C。显然所有结点均在该回路中出现。
利用A和P判断有向图的连通性 • 有向线图G是强连通图当且仅当它的可达性矩阵P的所有元素均为1; • 有向线图G是单向连通图当且仅当它的可达性矩阵P及其转置矩阵PT经过布尔并运算后所得的矩阵P’= P∨PT中除主对角元外其余元素均为1; • 有向线图G是弱连通图当且仅当它的邻接矩阵A及其转置矩阵AT经布尔并运算所得的矩阵A’= A∨AT作为邻接矩阵而求得的可达性矩阵P’中所有元素均为1。
定义9.3.6 在有向图G = <V, E>中,设G’是G的子图,如果 (1)G’是强连通的(单向连通的、弱连通的); (2)对任意G“ G,若G’ G",则G"不是强连通的(单向连通的、弱连通的); 那么称G’为G的强连通分支(单向连通分支、弱连通分支)(Strongly/Unilaterally/weakly Connected Component),或称为强分图(单向分图、弱分图)。
注 • 如果不考虑边的方向,弱连通分支对应相应的无向图的连通分支。 • 注意把握(强、单向、弱)连通分支的极大性特点,即任意增加一个结点或一条边就不是(强、单向、弱)连通的了。
v1 v7 v1 v3 v5 v7 v2 v6 v3 v5 v2 v4 v6 v4 G1 G2 例9.3.7 求下面2个图的强、单向和弱连通分支。 分析 由定义从某个结点开始逐渐增加结点,看它们导出的子图是否是强(单向或弱)分图。
解 在图G1中,由{v2},{v6}和{v1, v3, v4, v5, v7}导出的子图都是强连通分支;由{v1, v2, v3, v4, v5, v7}和{v1, v3, v4, v5, v6, v7}导出的子图都是单向连通分支;G1本身为弱连通分支。 在图G2中,由{v1},{v2},{v3},{v4}和{v5, v6, v7}导出的子图都是强连通分支;由{v1, v2, v3},{v1, v3, v4}和{v5, v6, v7}导出的子图都是单向连通分支;由{v1, v2, v3, v4}和{v5, v6, v7}导出的子图都是弱连通分支。
一个关系 若在有向图G = <V, E>的结点集V上定义二元关系R为:<vi,vj>∈R当且仅当vi和vj在同一强(弱)连通分支中,vi,vj∈V。显然,R是一个等价关系。 因为每一个结点vi和自身总在在同一强(弱)连通分支中,所以R是自反的;若结点vi和vj在同一强(弱)连通分支中,显然vj和vi也在同一强(弱)连通分支中,所以R是对称的;又若结点vi和vj在同一强(弱)连通分支中,结点vj和vk在同一强(弱)连通分支中,则vi和vj相互可达,vj和vk相互可达,因而vi和vk相互可达,故vi和vk在同一强(弱)连通分支中,所以R是传递的。 这种等价关系把结点分成等价类,等价类的集合是V上的一个划分,每一个等价类的结点导出一个强(弱)连通分支。
三个定理 定理9.3.8在有向图G = <V, E>中,它的每一个结点位于且仅位于一个强(弱)连通分支中。 定理9.3.9在有向图G = <V, E>中,它的每一个结点至少位于一个单向连通分支中。 定理9.3.10在有向图G = <V, E>中,它的每一条边至多在一个强连通分支中;至少在一个单向连通分支中;在且仅在一个弱连通分支中。
v1 v2 v3 例 对于“两结点在同一单向连通分支中”这一关系,虽然它是自反的,对称的,但它不是传递的。 上图中,v2和v1在同一单向连通分支中,v1和v3在同一单向连通分支中,但v2和v3不在同一单向连通分支中。
9.3.4 通路、回路与连通性的难点 • 要注意区分简单通路与基本通路,简单回路与基本回路; • 图的计算机表示就是它的邻接矩阵,我们可以利用邻接矩阵来计算任意两结点间固定长度的通路数目和距离;利用可达性矩阵来判断图的连通性; • 计算图的连通分支,特别是有向图的单向分图,是比较难的问题,只有凭经验按定义去试。
9.3.5 通路、回路与连通性的应用 1、渡河问题 例9.3.7一个摆渡人要把一只狼、一只羊和一捆菜运过河去。由于船很小,每次摆渡人至多只能带一样东西。另外,如果人不在旁时,狼就要吃羊,羊就要吃菜。问这人怎样才能将它们运过河去? 解 用F表示摆渡人,W表示狼,S表示羊,C表示菜。 若用FWSC表示人和其它三样东西在河的原岸的状态,这样原岸全部可能出现的状态为以下16种:
解(续1) FWSC FWS FWC FSC WSC FW FS FC WS WC SC F W S C Φ 这里Φ表示原岸什么也没有,即人、狼、羊、菜都已运到对岸去了。 根据题意我们知道,这16种情况中有6种是不允许的,它们是:WSC、FW、FC、WS、SC、F。如FC表示人和菜在原岸,而狼和羊在对岸,这当然是不行的。因此,允许出现的情况只有10种。
W FWS FWSC WC FWC S FS Φ C FSC 解(续2) 以这10种状态为结点,以摆渡前原岸的一种状态与摆渡一次后仍在原岸的状态所对应的结点之间的联线为边做有向图G,如图 图中给出了两种方案,方案为图9.3.9中的从FWSC到Φ的不同的基本通路,它们的长度均为7,按图中所指的方案,摆渡人只要摆渡7次就能将它们全部运到对岸,并且羊和菜完好无损。
<0,3> <3,0> <3,3> <5,1> <0,1> <1,0> <1,3> <0,0> <5,3> <5,0> <2,3> <2,0> <0,2> <5,2> <4,3> <4,0> 2、均分问题 例9.3.8有3个没有刻度的桶a、b和c,其容积分别为8升、5升和3升。假定桶a装满了酒,现要把酒均分成两份。除3个桶之外,没有任何其它测量工具,试问怎样均分? 解 用<B,C>表示桶b和桶c装酒的情况,可得下图。
解 由此可得两种均分酒的方法: • a倒满c→c倒入b→a倒满c→c倒满b→b倒入a→ c倒入b→a倒满c→c倒入b; • a倒满b→b倒满c→c倒入a→b倒入c→a倒满b→ b倒满c→c倒入a。
3、无向赋权图的最短通路 在赋权图中,边的权也称为边的长度,一条通路的长度指的就是这条通路上各边的长度之和。从结点vi到vj的长度最小的通路,称为vi到vj的最短通路。
(1)求给定两结点间的最短通路—Dijkstra算法 如何求出简单无向赋权图G = <V, E>中从结点v1到vn的最短通路,目前比较好的算法是由Dijkstra在1959年提出的,称为Dijkstra算法,其基本思想是: 将结点集合V分为两部分:一部分称为具有P(永久性)标号的集合,另一部分称为具有T(暂时性)标号的集合。所谓结点v的P标号是指从v1到v的最短通路的长度;而结点u的T标号是指从v1到u的某条通路的长度。首先将v1取为P标号,其余结点为T标号,然后逐步将具有T标号的结点改为P标号。当结点vn也被改为P标号时,则找到了从v1到vn的一条最短通路。
算法9.3.1 Dijkstra算法 • 初始化:将v1置为P标号,d(v1) = 0,P = {v1},vi∈V,i≠1,置vi为T标号,即T = V-P且 找最小:寻找具有最小值的T标号的结点。若为vk,则将vk的T标号改为P标号,且P = P∪{vk},T = T-{vk}。
算法9.3.1 Dijkstra算法(续) • 修改:修改与vk相邻的结点的T标号值。vi∈V, 重复(II)和(III),直到vn改为P标号为止。
说明 当vn归入P而正好P = V时,不仅求出了从v1到vn的最短通路,而且实际上求出了从v1到所有结点的最短通路。 上述算法的正确性是显然的。因为在每一步,设P中每一结点的标号是从v1到该结点的最短通路的长度(开始时,P = {v1},d(v1) = 0,这个假设是正确的),故只要证明上述d(vi)是从v1到vi的最短通路的长度即可。事实上,任何一条从v1到vi通路,若通过T的第一个结点是vp,而vp≠vi的话,由于所有边的长度非负,则这种通路的长度不会比d(vi)小。
v2 v4 7 1 2 5 v1 v6 2 3 6 4 1 v3 v5 例9.3.9 试求简单无向赋权图中v1到v6的最短通路。
1 (v1) 8(v1,v2) 1(v1) ∞ 0 ∞ 0 ∞ 3(v1,v2) 6(v1,v2) 4(v1) ∞ 解 根据Dijkstra算法,有如下图所示的求解过程。故v1到v6的最短通路为v1v2v3v5v4v6,其长度为9。实际上,也求出了v1到所有结点的最短通路,如v1到v5的最短通路为v1v2v3v5,其长度为4,等等。
1 (v1) 7(v1,v2,v3,v5) 10 (v1,v2,v3,v5) 0 3 (v1,v2) 4 (v1,v2,v3) 1 (v1) 7 (v1,v2,v3,v5) 0 9(v1,v2,v3,v5,v4) 3 (v1,v2) 4 (v1,v2,v3) 1 (v1) 8(v1,v2) 0 ∞ 3 (v1,v2) 4(v1,v2,v3) 解(续)
(2)求任意两结点间的最短通路——Floyd算法 算法9.3.2 Floyd算法: 从矩阵D(0) = (wij)n×n(这里wij = w(vi, vj),称为图的长度矩阵)开始,依次构造出n个矩阵D(1)、D(2)、…、D(n),这里n为图中结点的个数。第k个矩阵D(k) = ( )的元素 表示从结点vi到vj而中间结点仅属于v1到vk的k个结点的所有通路中的最短通路长度。 若已知D(k-1)=( ),则D(k)=( )的元素规定为
Floyd算法 运算过程从k = 1开始,让i和j分别取遍从1到n的所有值,然后k增加1,如此反复进行,直到k = n为止。这时D(n) = ( )的元素就是从vi到vj的最短通路长度。 算法的正确性是显然的。Floyd算法算法求出了任意两个结点间的最短通路的长度,从而很容易得出相应的最短通路。
例9.3.10 试求简单无向赋权图9.3.13中的所有最短通路。 v2 v3 3 1 2 v1 v6 1 4 2 2 2 v4 v5 3
解 根据Floyd算法,有:
解(续2) 故v2到v6的最短通路长度为5,其最短通路为v2v3v6,其余类似。
2 3 1 解题分析和方法 主要知识点汇集 习题类型 9.4 本章总结
1、主要知识点汇集 • 图的概念:图的定义、图的表示、图的操作、邻接点与邻接边、图的分类等。 • 图的基本性质:结点的度数、图的基本定理(握手定理)、图的同构、完全图、补图、子图、真子图、生成子图、导出子图等。 • 通路与回路:通路与回路、简单(基本)通路与简单(基本)回路、通路与回路长度、结点间的短程线和距离、可达与可达性矩阵。 • 图的连通性:无向连通图与连通分支、强(单向、弱)连通图与强(单向、弱)分图、利用邻接矩阵和可达性矩阵判断图的连通性。 • 图的应用:通讯网络、渡河问题、均分问题、最短通路算法。
2、习题类型 • 基本概念题:主要观测点在于图的基本概念、分类与判断; • 判断题:主要观测点在于判定图的连通性; • 计算题:主要观测点在于结点的度数、连通分支、通路数目等; • 证明题:主要观测点在于图的同构、结点的度数等的证明
3、解题分析和方法 • 图的集合、图形、矩阵3种表示方式在同构的意义下是惟一的; • 图的邻接矩阵既描述了图中结点间的邻接关系,还可以利用它来计算结点间的通路数目、判断图的连通性; • 判断两个图同构,只能依据同构的定义,构造两个结点集之间的双射函数,没有简单的方法; • 在计算和证明与结点的度数有关的问题时,经常使用握手定理; • 反证法非常有用,特别是在证明惟一性和不存在的时候。
习 题 第274-276页 14. 19. 21. 23.
http://202.115.21.136:8080/lssx/ Thank You !