图的连通性-南京大学
- 格式:pdf
- 大小:599.09 KB
- 文档页数:45
图的连通性判断算法的时间复杂度图是数学中一种常见的数据结构,在计算机科学中也有广泛的应用。
图由节点(顶点)和边组成,表示了不同元素之间的关系。
在图中,如果每个节点都可以通过路径相互到达,则该图被称为连通图,否则被称为非连通图。
图的连通性判断算法指的是判断给定的图是否是连通图的问题。
常见的图的连通性判断算法包括深度优先搜索(DFS)和广度优先搜索(BFS)算法。
接下来,将分别介绍这两种算法,并分析它们的时间复杂度。
一、深度优先搜索(DFS)算法深度优先搜索算法是一种递归的算法,通过访问节点的方式来遍历整个图。
DFS算法首先选择一个节点作为起始节点,然后通过递归地访问与该节点相邻的节点,直到没有未访问过的节点。
如果所有的节点都被访问过,则图是连通的;否则,图是非连通的。
DFS算法的时间复杂度取决于图的大小和结构。
假设图有n个节点和m条边,那么DFS算法的时间复杂度为O(n + m)。
在最坏的情况下,每个节点都需要被访问一次,并且每个节点都需要遍历它的所有相邻节点。
二、广度优先搜索(BFS)算法广度优先搜索算法是一种迭代的算法,通过按层级的方式遍历整个图。
BFS算法首先选择一个节点作为起始节点,然后按照从起始节点开始的顺序,依次访问每个节点的所有相邻节点。
通过不断扩展搜索的范围,直到所有节点都被访问过。
如果所有的节点都被访问过,则图是连通的;否则,图是非连通的。
BFS算法的时间复杂度也取决于图的大小和结构。
假设图有n个节点和m条边,那么BFS算法的时间复杂度为O(n + m)。
在最坏的情况下,每个节点都需要被访问一次,并且每次访问时都需要遍历其所有相邻节点。
总结:图的连通性判断算法的时间复杂度分别为O(n + m)的DFS算法和BFS算法。
其中,n表示图的节点数,m表示图的边数。
这两种算法在连通性判断问题上表现良好,并且可以在较短的时间内找到问题的解答。
需要注意的是,虽然DFS和BFS可以用于判断图的连通性,但它们在处理大规模图时可能存在效率问题。
图连通性算法及应用图是计算机科学领域中常见的数据结构,用于表示对象之间的关系。
在图论中,图的连通性是一个重要的概念,指的是在图中任意两个顶点之间是否存在路径。
图连通性算法是为了判断图中的连通性而设计的算法,并且在实际应用中有着广泛的应用。
一、连通性的定义与分类在图论中,连通性有两种常见的定义方式:强连通性和弱连通性。
强连通性是指在有向图中,任意两个顶点之间存在互相可达的路径;弱连通性是指在有向图中,将其所有有向边的方向忽略后,剩下的无向图是连通的。
本文将重点介绍无向图的连通性算法及其应用。
二、连通性算法的原理1. 深度优先搜索(DFS)深度优先搜索是最常用的连通性算法之一。
它从图中的一个顶点开始,沿着一条未访问过的边深入图中的下一个顶点,直到无法深入为止,然后回溯至上一个顶点,继续深入其他未访问过的顶点。
通过深度优先搜索算法,我们可以得到一个图的连通分量,从而判断图是否连通。
2. 广度优先搜索(BFS)广度优先搜索同样是常用的连通性算法之一。
它从图中的一个顶点开始,沿着一条未访问过的边遍历与该顶点直接相邻的所有顶点,然后再以这些相邻顶点为起点,继续遍历它们的相邻顶点,直到遍历完所有连通的顶点。
通过广度优先搜索算法,我们可以得到一个图的层次遍历树,从而判断图是否连通。
三、连通性算法的应用1. 社交网络分析在社交网络分析中,连通性算法可以用来判断一个社交网络中是否存在分割成多个互不相连的社群。
通过判断社交网络的连通性,我们可以发现隐藏在社交网络背后的关系网络,从而更好地理解和分析社会关系。
2. 网络路由优化在计算机网络中,连通性算法可以用来判断网络节点之间的连通性。
通过分析网络的拓扑结构,我们可以选择合适的路由算法,从而实现快速且可靠的数据传输。
3. 图像分割在计算机视觉和图像处理中,连通性算法可以用来判断图像中的连通区域。
通过判断图像的连通性,我们可以对图像进行分割和提取,从而实现目标检测和图像识别等应用。
图的连通性总结boboo目录1.图的遍历及应用1.1.DFS遍历1.2.DFS树的边分类1.3.DFS树的性质1.4.拓补排序1.5.欧拉回路2.无向图相关2.1求割顶2.2求图的桥2.3求图的块3.有向图相关3.1求强连通分量(SCC划分)3.2求传递闭包4.最小环问题一、图的遍历及应用1.1 DFS遍历DFS是求割顶、桥、强连通分量等问题的基础。
DFS对图进行染色,白色:未访问;灰色:访问中(正在访问它的后代);黑色:访问完毕一般在具体实现时不必对图的顶点进行染色,只需进行访问开始时间和访问结束时间的记录即可,这样就可以得出需要的信息了。
-发现时间D[v]:变灰的时间-结束时间f[v]:变黑的时间-1<=d[v]<f[v]<=2|V|伪代码:DFS(G)for every vertex u ∈ V[G] docolor[u] = WHITEπ[u] = NILtime = 0for every vertex u ∈ V[G] doif color[u] = WHITE then DFS_VISIT(u)DFS_VISIT(u)color[u] = GRAYd[u] = time += 1for every vertex v ∈ Adj[u] doif color[v] = WHITE thenπ[v] = uDFS_VISIT(v)color[u] = BLACKf[u] = time += 11.2 DFS树的边分类在深度优先遍历中,我们所关心的另一个问题是对产生的搜索树中的分进行分类,这种分类可以发现图中的很多重要信息。
一般地,我们可以把图G所产生的深度优先搜索树(或森林)的边分为四类:A)树枝:深度优先搜索树G中普通的边,即如果结点v在搜索边(u, v)时第一次被发现,那么边(u, v)就是一个树枝。
B)反向边:深度优先搜索树中连结结点u到它的祖先v的那些边,自环也被认为是反向边。
二部图定义:图),(E V G =称为二部图(bipartite graph),如果V 是两个互不相交的集合21,V V 的开集,且1V 和2V 中的顶点互不相邻. 这样的二部图也常称为),(21V V -二部图.定义:图G 的匹配是由G 中没有公共顶点构成的集合,与匹配M 中的边关联的顶点称为是被M -浸润的(saturated by M),其余的顶点称为未被M -浸润的(M-unsaturated). 图G 的一个完美匹配(perfect matching)是浸润的所有顶点的匹配. 图G 的边数最多的匹配称为一个最大匹配(maximum matching).例如在上图中,粗边给出了一个匹配1M ,显然两条细边给出了一个最大匹配2M . 定义:设M 是图G 的一个匹配. 如果路径P 的边交替出现在M 和不出现在M 中,则称P 是一条M -交错路径(M-alternating path). 两个顶点都未被M -浸润的交错路径称为M -增广路径(M-augmenting path).在上例中存在1M -增广路径,2M 是最大匹配,而不存在2M -增广路径,这不是偶然的. 因为可以让(留作习题):图G 的一个匹配M 是最大匹配⇔G 中无M -增广路径. 定义:图G 的一个顶点覆盖(covering)是一些顶点构成的集合)(G V ⊆κ,使得G 的任何一边都有一个顶点含于κ. 一个顶点覆盖κ称为最小顶点覆盖,是指不存在覆盖'κ,使得κκ<'.设κ是G 的一个顶点覆盖,M 是G 的一个匹配,显然M ≥κ. 我们关心对于最大匹配的最小顶点覆盖来说,等式是否成立. 在图1(a)中,等式成立,而图1(b)中最小顶点覆盖大小为3,而最大匹配大小为2. 注意图1(a)为二部图,图1(b)为有5条边的圈,从而不是二部图(可以一个图G 是二部图⇔G 中不含奇数边的图,证明留作习题).对于二部图,我们有下面一般的结论:定理:设G 是),(Y X -二部图,则G 的最大匹配的大小等于G 的最小顶点覆盖的大小(könig 1931).证明:设M 是G 的最大匹配,而Q 是M 的最小顶点覆盖,要证Q M =. 显然M Q ≥,故只需证明存在G 的M 个顶点的覆盖(则Q M ≥),对于M 中每一条边,如果存在未被M -浸润的X 中顶点出发的交错路径可达这条边,则选择此边在Y 中的顶点;否则选择此边在X 中的顶点,这样就选了M 个顶点,记为U .设E xy ⊂,Y y X x ∈∈,,只需证明x 或U y ∈,或M xy ∈,则由U 的定义得证.下证之:设M xy ∉. 又由M 是最大匹配,故M y x ∈∃11(其中Y y X x ∈∈11,)且1x x =或1y y =. 若1y y =(此时M x ∉),由于xy 是M -交错路径,故U y ∈.下设1x x =,如果U x ∉,则U y ∈1,由U 的定义:某条交错路径可达1y . 则存在交错路径'P 可达y ;或Py (若P x ∈1);或y x Py 11. 这样就出现了M -增广路径,与M 是最大匹配矛盾,故U x ∈.对于),(Y X -二部图,若存在一个浸润X 的匹配,则显然X ⊆∀κ,至少在Y 中存在κ个顶点与κ中的顶点相邻. 我们用)(κN 表示与κ中顶点相邻的顶点构成的集合,下面的定理说明“κκκ≥⊆∀)(,N X ”这个显然的必要条件也是充分的定理(1935):),(Y X -二部图中存在浸润X 的匹配⇔κκκ≥⊆∀)(,N X .证明:“⇐”由könig 定理,只需证明对每个顶点覆盖z ,有X z ≥. 令X z X s ⋂-=,则s 的点都不在X 中,因此)(s N 中的点都在z 中(由顶点覆盖定义),故X s X z s N X z z =+⋂≥+⋂≥)(,证毕.图的连通性因为连通与否与图是否含环无关,故本小节假定所有图都不含环,且1)(>G n .定义1:图G 的一个点割(vertex cut)是一个集合)(G V S ⊆,使得S G -的连通分量多于一个G 的连通度(connectivity),)(G κ是使得S G -不连通或只有一个顶点的顶点集合S 大小的最小值. 如果G 的连通度最少是κ,则称G 是κ-连通的(κ-connected).由定义,显然可知:①连通图都是1-连通的;②G 是不连通的⇔G 的连通度为0;③顶点数大于2的图的连通度为1⇔它是连通的且有一个割点.若图G 的连通度为κ,则κδ≥)(G ,故G 中至少有⎥⎥⎤⎢⎢⎡2n κ条边(见习题1). 我们关心是否可以给出n 个顶点的κ-连通图且有⎥⎥⎤⎢⎢⎡2n κ条边(即下界是否可以取到).习题1给出了肯定的回答.定义2:图G 中的边割(edge cut)是一顶点在S 中,一顶点在S G V -)(中的G 中所有边构成的集合,记为],[S S ()(G V S ⊆). 若使得],[S S G -不连通的],[S S 边数最小值为κ,则称G 是κ-边连通的,κ称为G 的边连通度,记为)('G κ.在下图G 中粗线标出的边割是G 的最小边割,因此2)('=G κ,G 是2-边连通的. 图G 中还标出了一个只含一个顶点的点割,故G 是1-连通的.定理3(Whitney 1932):设G 是简单图,则)()(')(G G G δκκ≤≤.证明:设)}(:)(min{)(G V x x d v d ∈=,即)()(G v d δ=,则与v 关联的所有边构成一个边割,故)()('G G δκ≤,下证)(')(G G κκ≤.显然1)()(-≤G n G κ,设],[S S 为G 的最小边割,若S 中的顶点与S 中的顶点都邻接,则)(1)(],[G G n S S S S κ≥-≥=,命题得证. 下设存在S y S x ∈∈,.则y x ,不相邻,构造集合T :T 包含S 中x 的相邻顶点;T 包含{x}-S 中的所有与S 中顶点有相邻顶点的顶点(或}{{)}(:{x S v E V xv S v T -∈⋃∈∈=:存在S u ∈使得)}(E vu ∀∈). 因为每条y x ,路径都通过T ,因此T 是一个点割,故)(G T κ≥. 在],[S S 中选T 条边:T v ∈∀,若S v ∈,则选边xv ;若}{x S v -∈,则任意选取一条边],[S S vu ∈,这样选取的T 条边都是不同的,因此[])(,)('G T S S G κκ≥≥=下面给出2-连通图的特征.定理4(Whitney 1932):图)3)((≥G n G 是2-连通的⇔)(,G V v u ∈∀,在G 中存在内部不相交的(internally-disjoint)v u ,-路径(即两条路径没有公共的内顶点).证明:“⇐”删除一个顶点不能使一对任意顶点不可达,故G 是2-连通的.“⇒”对),(v u d 用数学归纳法证明.1),(=v u d ,uv G -是连通的(因为2)()('=≥G G κκ).uv G -中的v u ,-路径与边uv 构成了内部不相交的两条v u ,-路径.假设-),(κ≤v u d .令w 是某条最短u ,-路径上的前一顶点,则1. 由归纳假设,G 有内部不相交w u ,路径Q P ,. 若)()(Q V P V v ⋃∈,则在圈Q P ⋃上可以找两条内部不相交路径. 若)()(Q V P V v ⋃∉,由于G 是2-连通的,故w G -连通,所以w G -中含有一条v u ,-路径R . 若R 不含P 或Q 的内部顶点,则完成了证明. 如若不然,不妨设R 与P 的内部顶点相交,设z 是这些交点中在P 上与v 最近的一个顶点,则P 上的z u ,-路径合并R 上的v z .-路径就得到一条与wv Q ⋃内部不相交路径练习中给出2-连通图的其它特征. 定理4可以推广到一般的κ-连通图.证明较繁,我们这里略去,有兴趣的读者可参见D.B. West,Introduction to Graph Theory,2nd 2001.或J.A. Bondy,U.S.R. Murty,Graph Theory with Applications,1976.习题.1.图G 的连通度为κ且n G =,则G 至少有⎥⎥⎤⎢⎢⎡2n κ条边. 2.证明下图中4)(=G κ,从而满足⎥⎥⎤⎢⎢⎡=2)(n G E κ3.设3)(≥G V ,则G 是2-连通的⇔G 是连通的且G 无割点 ⇔)(,G V y x ∈∀,存在经过y x ,的环 ⇔1)(>G δ且G 的每一对边均位于一个公共环上。
第二章图的连通性连通图:任二顶点间有路相连。
例可见在连通图中,连通的程度也是有高有低。
本章的目的就是定义一种参数来度量连通图连通程度的高低。
§ 2.1割边、割点与连通度一、割点:定义2.1.1设v • V(G),如果w(G -v) . w(G),则称v为G的一个割点。
(该定义与某些著作有所不同,主要是在有环边的顶点是否算作割点上有区别) 。
例定理2.1.1如果点v是图G的一个割点,贝U边集E(G)可划分为两个非空子集E1和E2,使得G[ E1]和G[ E2]恰好有一个公共顶点v。
推论2.1.1对连通图G,顶点v是G的割点当且仅当G - V不连通。
以上两个结论的证明留作习题。
定理2.1.2设v是树T的顶点,贝U v是T的割点当且仅当d(v) 1o证明:必要性:设v是T的割点,下面用反证法证明d(v) 1 o若d(v) = 0 ,则T = Q,显然v不是割点。
若d(v)=1,则T -v是有■ (T -v)-1条边的无圈图,故是树。
从而w(T -v) =1 =w(T)。
因此v不是割点。
以上均与条件矛盾。
充分性:设d(v) 1,则v至少有两个邻点u,w o路uvw是T中一条(u,w)路。
因T是树,uvw是T中唯一的(u,w)路,从而w仃-v)・1二w(T)。
故v是割点。
证毕。
推论2.1.2每个非平凡无环连通图至少有两个顶点不是割点。
证明:设T是G的生成树,则T至少有两个叶子u,v,由上一定理知,u,v都不是T的割点,即w(T _u)二w(T) =1。
由于T -u是图G _u的生成树,故w(G —u)二w(T 一u)二w(T) = 1 二w(G),因此u不是G的割点。
同理v也不是G的割点。
证毕。
二、顶点割集:定义2.1.2对图G,若V(G)的子集V使得w(G -V ) . w(G),则称V •为图G的一个顶点割集。
含有k个顶点的顶点割集称为k-顶点割集。
注:(1)割点是1—顶点割集。
(2)完全图没有顶点割集。
稀疏图、稠密8.4 图的连通性判定一个图的连通性是图的一个应用问题,我们可以利用图的遍历算法来求解这一问题。
本节将重点讨论无向图的连通性、有向图的连通性、由图得到其生成树或生成森林以及连通图中是否有关节点等几个有关图的连通性的问题。
8.4.1 无向图的连通性在对无向图进行遍历时,对于连通图,仅需从图中任一顶点出发,进行深度优先搜索或广度优先搜索,便可访问到图中所有顶点。
对非连通图,则需从多个顶点出发进行搜索,而每一次从一个新的起始点出发进行搜索过程中得到的顶点访问序列恰为其各个连通分量中的顶点集。
例如,图8.5 (a)是一个非连通图G3,按照图8.18 所示G3 的邻接表进行深度优先搜索遍历,需由算法8.5调用两次DFS(即分别从顶点A 和D出发),得到的顶点访问序列分别为:A B F E C E这两个顶点集分别加上所有依附于这些顶点的边,便构成了非连通图G3的两个连通分量,如图8.5(b) 所示。
因此,要想判定一个无向图是否为连通图,或有几个连通分量,就可设一个计数变量count,初始时取值为0,在算法8.5的第二个for循环中,每调用一次DFS,就给count增1。
这样,当整个算法结束时,依据count的值,就可确定图的连通性了。
序号图8.18 G3的邻接表8.4.3 生成树和生成森林在这一小节里,我们将给出通过对图的遍历,得到图的生成树或生成森林的算法。
设E(G)为连通图G中所有边的集合,则从图中任一顶点出发遍历图时,必定将E(G)分成两个集合T(G)和B(G),其中T(G)是遍历图过程中历经的边的集合;B(G)是剩余的边的集合。
显然,T(G)和图G 中所有顶点一起构成连通图G 的极小连通子图。
按照8.1.2节的定义,它是连通图的一棵生成树,并且由深度优先搜索得到的为深度优先生成树;由广度优先搜索得到的为广度优先生成树。
例如,图8.17(a)和(b)所示分别为连通图G5的深度优先生成树和广度优先生成树。
图论算法三、图的连通性算法求图的连通性之零:遍历欧拉路求图的连通性之一:判断两点是否连通1.Floyed算法时间复杂度:O(N3 )算法实现:不再赘述。
2.遍历算法时间复杂度:O(N2 )算法实现:从任意一个顶点出发,进行一次遍历,就可以求出此顶点和其它各个顶点的连通状况。
所以只要把每个顶点作为出发点都进行一次遍历,就能知道任意两个顶点之间是否有路存在。
可以使用DFS实现。
3.并查集算法时间复杂度:O(N*小常数)算法实现:只适用于无向图,即判断两点是否有相同的父亲。
例题:寻找满足条件的连通分支。
求图的连通性之二:求无向图的连通分量个数。
只要使用并查集即可,如果两个点的祖先相同,显然属于同一连通分量。
一遍循环,统计一共有多少个祖先即可。
求图的连通性之三:求有向图的强连通分量个数与收缩强连通分量。
主要采用Kosaraju算法,复杂度O(N)。
一个有向图的强连通分量,能够收缩为一个点,统计最后点的个数,即是强连通分量的个数。
(a)(b)Kosaraju 算法的思想讲解:1) 对原图进行深搜(DFS ),得到一个深搜出栈的顺序。
假设出栈顺序 3→5→2→4→1 2)将原图每条边进行反向。
3) 逆序,对反图进行搜索。
出栈顺序 3→5→2→4→1 逆序 1→4→2→5→3并且在每轮搜索中对搜到的点进行染色。
color:=0;for i:= p downto 1 do {得到的出栈顺序的逆序就是拓扑顺序}if col [a [i ]]=0 then {没染色过的点,就是没被搜索到的点} begin inc (color );DFS2(a [i ]); {按照1中生成顺序再进行DFS 染色染成同色的是一个强连通块} end ;显然,每条边都进行反向后,在反图中按出栈的逆序也能搜到的连通块一定是强连通块。
因为如果是强连通子图,那么反向没有任何影响,依然是强连通子图。
但如果是单向的边连通,反向后再按原序就无法访问了(因此反向处理是对非强连通块的过滤)。
图的连通性检测方法图论是数学的一个分支,研究图形结构以及图形之间的关系。
在图论中,连通性是一个重要的概念,用于描述图中的节点或顶点之间是否存在路径相连。
连通性检测方法是用来确定一个图是否是连通图的方法。
本文将介绍几种常用的图的连通性检测方法。
一、深度优先搜索(DFS)深度优先搜索是一种常用的图遍历算法,也可以用来检测图的连通性。
该方法从图中的一个顶点开始,沿着一条路径尽可能深的搜索,直到到达无法继续搜索的节点,然后回溯到上一个节点,继续搜索其他路径。
具体步骤如下:1. 选择一个起始节点作为根节点。
2. 遍历该节点的邻接节点,并标记为已访问。
3. 递归的访问未访问过的邻接节点,直到所有节点都被访问过。
4. 如果所有节点都被访问过,则图是连通的;否则,图是不连通的。
DFS算法的时间复杂度为O(V+E),其中V是节点数,E是边数。
二、广度优先搜索(BFS)广度优先搜索也是一种常用的图遍历算法,同样可以用来检测图的连通性。
该方法从图中的一个顶点开始,先访问其所有邻接节点,然后再依次访问它们的邻接节点。
具体步骤如下:1. 选择一个起始节点作为根节点。
2. 将该节点加入一个队列中。
3. 从队列中取出一个节点,并标记为已访问。
4. 遍历该节点的邻接节点,将未访问过的节点加入队列中。
5. 重复步骤3和步骤4,直到队列为空。
6. 如果所有节点都被访问过,则图是连通的;否则,图是不连通的。
BFS算法的时间复杂度同样为O(V+E)。
三、并查集并查集是一种数据结构,常用于解决图的连通性问题。
它可以高效地合并集合和判断元素是否属于同一个集合。
具体步骤如下:1. 初始化并查集,每个节点都是一个独立的集合。
2. 遍历图中的每条边,将边的两个节点合并到同一个集合中。
3. 判断图是否连通的方法是查找两个节点是否属于同一个集合。
并查集的时间复杂度为O(V+E)。
四、最小生成树最小生成树是指一个连通图的生成树,其所有边的权值之和最小。
三、连通性3.1 连通性和Whitmey定理定义V’真包含于V(G),G[V(G)-V’]不连通,而G是连通图,则称V’是G的顶剖分集。
最小顶剖分集中顶的个数,记成κ(G),叫做G的连通度;规定κ(Kv)=υ-1;κ(不连通图)= κ(平凡图)=0。
由一个顶组成的顶剖分集叫割顶。
没有割顶的图叫做块,G中的成块的极大子图叫做G的块。
定义E’包含于E(G),G为连通图,而G-E’(从G中删除E’中的边)不连通,则称E’为G的边剖分集,若G中已无边剖分集E″,使得|E″|<|E’|,则称|E’|为G的边连通度,记成κ’(G)。
|E’|=1时,E’中的边叫做桥。
规定κ’(不连通图)=0,κ’(Kv)= υ-1。
定义κ(G)>=k时,G叫做k连通图;κ’(G)>=k时,G称为k边连通图。
k连通图,当k>1时,也是k-1连通图。
k边连通图,当k>1时,也是k-1边连通图。
上面就是顶连通与边连通的概念,好象不指明的就是指顶连通了。
定理1 κ(G)=<κ’(G)=<δ(可以复习一下第一章的1.2:δ=min{d(v i)})证:设d(v)=δ,则删除与v边关联的δ条边后,G变不连通图,所以这δ条边形成一个边剖分集,故最小边剖分集边数不超过δ,即κ’(G)=<δ。
下证κ=<κ’。
分情形讨论之。
若G中无桥,则有κ’>=2条边,移去它们之后,G变成不连通图。
于是删除这κ’条中的κ’-1条后,G变成有桥的图。
设此桥为e=uv,我们对于上述κ’-1条删去的每条边上,选取一个端点,删除这些(不超过κ’-1个)端点,若G变得不边能,则κ=<κ’-1;若仍连通,则再删去u或v,即可使G变得不连通,于是κ=<κ’。
证毕。
这个定理很好理解,图论中的一些定理常以这种“友好”的面目出现。
下面就是Whitmey定理定理2(Whitney,1932) υ>=3的图是2连通图的充要条件是任二顶共圈(在一个圈上)。