簡體   English   中英

刪除無向圖中的一個節點,該節點破壞了其他兩個節點之間的路徑

[英]Removing a node in an undirected graph that destroys a path between two other nodes

我需要解決當前正在解決的問題,這涉及到在無向圖中找到節點v,將其刪除后將破壞其他兩個節點s和t之間的所有路徑。

假設一個n節點無向圖G =(V,E)包含兩個節點s和t,使得s和t之間的距離嚴格大於n / 2。 證明必須存在某個節點v,該節點不等於s或t,以便從G中刪除v會破壞所有st路徑。 (換句話說,通過刪除v從G獲得的圖不包含從s到t的路徑。)

給出一個運行時間為O(m + n)的算法來找到這樣的節點v。
(對於解決方案,您可以使用純英語或偽代碼。)

我對此的理解是,該解決方案將涉及創建廣度優先搜索以找到節點v並將其刪除,但是我不確定如何證明刪除該節點首先存在,從而刪除該節點會破壞所有的聖路。

首先證明部分:

假設v節點不存在,這意味着至少有兩條路徑使用從s到t完全不同的節點,並且距離大於n /2。這是不可能的,因為您甚至沒有足夠的節點數來滿足這兩個條件路徑。 因此,這與我們關於v節點存在的假設相矛盾。

第二部分算法:

使用雙向BFS。 如果從s和t開始搜索,則存在v節點,因此它們肯定會在v節點相遇。 在最壞的情況下,您會遍歷所有V和E,因此它就是O(V + E)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM