tarjan求强连通分量的思考
我是按照這里的思路來(lái)的。這個(gè)博文只是感性理解。
遞歸樹(shù)
關(guān)于遞歸樹(shù),這篇博文講的很好,我只是給自己總結(jié)一下。
定義vis數(shù)組,在dfs連通圖時(shí)賦予它們不同的含義:
一個(gè)連通圖,一定可以表示成一個(gè)遞歸樹(shù),加上一些邊。這些邊的種類有:
一個(gè)強(qiáng)連通的東西,必定在一棵遞歸樹(shù)上,不會(huì)分散到多個(gè)上。不然那東西就不連通了,想要強(qiáng)連通更是不可能。
對(duì)了,如果將dfs訪問(wèn)到的時(shí)間,給遞歸樹(shù)上的點(diǎn)編號(hào),一個(gè)點(diǎn)的祖先的編號(hào)一定比這個(gè)點(diǎn)小。
tarjan搞一次出棧的一定是一個(gè)強(qiáng)連通的東西
還記得tarjan里,判斷一個(gè)點(diǎn)是否出棧的依據(jù)嗎?就是\(dfn[u]=low[u]\)。這意味著在u的子結(jié)點(diǎn)中,沒(méi)有回往u以上的邊,不然\(low[u]<dfn[u]\)。所以根據(jù)tarjan算法,如果u出棧,出棧的東西中編號(hào)最小的就是u。出棧的東西應(yīng)該類似于這樣(沒(méi)畫(huà)有向邊,所以腦補(bǔ)吧):
也就是說(shuō),一個(gè)節(jié)點(diǎn)只有間接連向u,才能和u組成一個(gè)強(qiáng)連通的東西。這導(dǎo)致強(qiáng)連通分量在遞歸樹(shù)上,其實(shí)就是一堆鏈的集合體,也就是樹(shù)。
重點(diǎn)來(lái)了。如果tarjan搞出來(lái)的東西中,有一些點(diǎn)不和其它點(diǎn)強(qiáng)連通,說(shuō)明它不能間接連向u,而是會(huì)間接連向u的一個(gè)兒子v。如果\(low[v]<dfn[v]\),這個(gè)點(diǎn)又可以間接連向\(low[v]\)...,以此類推,最終連向一個(gè)可以出棧的點(diǎn),那個(gè)點(diǎn)u的是兒子。這就證明了,一次出棧搞出來(lái)的東西,和u都是強(qiáng)連通的。
tajan一次搞出來(lái)的,一定是一個(gè)強(qiáng)連通分量
這個(gè)標(biāo)題和前面哪一個(gè)的區(qū)別是什么呢?就是一個(gè)是“東西”,一個(gè)是“分量”。分量意味著它大的不能再大了。所以這里要證明(彌天大霧,其實(shí)我這個(gè)根本不算證明)的,就是一次tarjan搞出來(lái)的,最小結(jié)點(diǎn)為u的強(qiáng)連通分量中,不會(huì)有其它點(diǎn)被遺漏。至于這個(gè)證明,我貼一個(gè)引用過(guò)來(lái):
假設(shè)出棧的部分不完整,則本應(yīng)該在這次出棧的點(diǎn)可能存在于棧的哪些部分呢?
1.之前出棧的部分
2.還沒(méi)有入棧的部分
3.還沒(méi)有出棧的部分
首先看2,不可能。因?yàn)榧偃鐩](méi)有入棧,說(shuō)明這些點(diǎn)沒(méi)有在這棵深度優(yōu)先搜索樹(shù)中,假如這些點(diǎn)在本該在該強(qiáng)連通分量中,則和定理1相違背,所以情況2中不可能包含本應(yīng)該出棧的強(qiáng)連通分量中的點(diǎn)。再看3,也不可能。3中的點(diǎn)的dfn 和 low都分別小于本次出棧的點(diǎn)的dfn和low,也就說(shuō)明本次出棧的點(diǎn)都無(wú)法訪問(wèn)到還沒(méi)有出棧的點(diǎn),所以情況3中不可能包含本應(yīng)該出棧的強(qiáng)連通分量中的點(diǎn)。最后看情況1,其實(shí)情況1和情況3是類似的,之前出棧的部分A如果和本次出棧的強(qiáng)連通分量B可以組成更大的強(qiáng)連通分量,這就等價(jià)于,以之前出棧的強(qiáng)連通分量A為視角,亦是說(shuō)A是不完整的,A中缺少的部分在還未出棧的節(jié)點(diǎn)和還沒(méi)有訪問(wèn)的節(jié)點(diǎn)之中。這和之前的情況2,情況3推導(dǎo)矛盾,所以,情況1也不可能。
轉(zhuǎn)載于:https://www.cnblogs.com/MyNameIsPc/p/7966152.html
總結(jié)
以上是生活随笔為你收集整理的tarjan求强连通分量的思考的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: #161: 给定n*n由0和1组成的矩
- 下一篇: webpack打包后的文件