日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

判断无向图是否有回路有四种方法

發(fā)布時(shí)間:2025/3/15 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 判断无向图是否有回路有四种方法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.


一、無(wú)向圖回路的判斷

? ? 對(duì)于無(wú)向圖,判斷其是否有回路有四種方法,如下所示:

? ? 1、利用深度優(yōu)先搜索DFS,在搜索過(guò)程中判斷是否會(huì)出現(xiàn)后向邊(DFS中,連接頂點(diǎn)u到它的某一祖先頂點(diǎn)v的邊),即在DFS對(duì)頂點(diǎn)進(jìn)行著色過(guò)程中,若出現(xiàn)所指向的頂點(diǎn)為黑色,則此頂點(diǎn)是一個(gè)已經(jīng)遍歷過(guò)的頂點(diǎn)(祖先),出現(xiàn)了后向邊,若完成DFS后,則圖中有回路;

? ? 2、在圖的鄰接表表示中,首先統(tǒng)計(jì)每個(gè)頂點(diǎn)的度,然后重復(fù)尋找一個(gè)度為1的頂點(diǎn),將度為1和0的頂點(diǎn)從圖中刪除,并將與該頂點(diǎn)相關(guān)聯(lián)的頂點(diǎn)的度減1,然后繼續(xù)反復(fù)尋找度為1的,在尋找過(guò)程中若出現(xiàn)若干頂點(diǎn)的度都為2 sanzhangpai,則這些頂點(diǎn)組成了一個(gè)回路;否則,圖中不存在回路。

? ? 3、利用BFS,在遍歷過(guò)程中,為每個(gè)節(jié)點(diǎn)標(biāo)記一個(gè)深度deep,如果存在某個(gè)節(jié)點(diǎn)為v,除了其父節(jié)點(diǎn)u外,還存在與v相鄰的節(jié)點(diǎn)w使得deep[v]<=deep[w]的,那么該圖一定存在回路;
? ? 4、用BFS或DFS遍歷,最后判斷對(duì)于每一個(gè)連通分量當(dāng)中,如果邊數(shù)m>=節(jié)點(diǎn)個(gè)數(shù)n,那么改圖一定存在回路。因此在DFS或BFS中,我們可以統(tǒng)計(jì)每一個(gè)連通分量的頂點(diǎn)數(shù)目n和邊數(shù)m,如果m>=n則return false;直到訪問(wèn)完所有的節(jié)點(diǎn),return true。

二、有向圖回路的判斷

? ? 對(duì)于有向圖,判斷其是否有回路的方法也有兩種,如下所示:

? ? 1、與無(wú)向圖類似,若在DFS中出現(xiàn)后向邊,即存在某一頂點(diǎn)被第二次訪問(wèn)到,則有回路出現(xiàn);

? ? 2、同樣,利用拓?fù)渑判虻乃枷?#xff0c;通過(guò)這一步驟來(lái)執(zhí)行拓?fù)渑判?#xff0c;即重復(fù)尋找一個(gè)入度為0的頂點(diǎn),將該頂點(diǎn)從圖中刪除,并將該頂點(diǎn)及其所有的出邊從圖中刪除(即與該點(diǎn)相應(yīng)的頂點(diǎn)的入度減1),最終若途中全為入度為1的點(diǎn),則這些點(diǎn)至少組成一個(gè)回路。

? ? 對(duì)于有向圖,具體點(diǎn)就可得到如下分析:

? ? 問(wèn)題分析:如果圖中存在回路,則必包含一個(gè)子圖為回路。即該子圖中所有頂點(diǎn)入度不為0且至少有邊指向另外的頂點(diǎn)。
? ? 算法:
? ? 步驟1:按鄰接表方式存儲(chǔ)圖。遍歷與每個(gè)節(jié)點(diǎn)關(guān)聯(lián)的邊并統(tǒng)計(jì)每個(gè)節(jié)點(diǎn)的入度。需要O(n+m)次的運(yùn)算。
? ? 步驟2:刪除所有入度為零的頂點(diǎn)及其相發(fā)出的邊。并將被刪除邊所指向的頂點(diǎn)的入度減1。
? ? 重復(fù)步驟2直到:
? ? (1)所有頂點(diǎn)被刪除(則沒(méi)有回路)或;
? ? (2)還有頂頂點(diǎn)但沒(méi)有入度為零的頂點(diǎn)可刪除(則存在回路)。
? ? 算法復(fù)雜度分析:
? ? 由于步驟二中的刪除邊的操作運(yùn)算復(fù)雜度為O(m),刪除節(jié)點(diǎn)的操作為O(n) 判斷節(jié)點(diǎn)入度是否為0需要O(n+m)次運(yùn)算。其中O(n)次為初始入度為零的節(jié)點(diǎn),O(m)次為刪除邊后導(dǎo)致的入度為零的節(jié)點(diǎn)。于是整個(gè)算法復(fù)雜度為O(m+n)。

WZ132 手機(jī)愛(ài)好者

  • Android
  • Symbian
  • BlackBerry
  • Palm
  • iPhone IOS
  • Linux

總結(jié)

以上是生活随笔為你收集整理的判断无向图是否有回路有四种方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。