簡體   English   中英

在有向無環圖中檢測接收器

[英]Detecting the sink in a directed acyclic graph

假設在DAG中有一個具有以下屬性的頂點:

  1. 所有頂點都連接到它

  2. 沒有連接到任何頂點

這通常稱為接收器頂點

是否有可能在O(n)檢測到這個頂點,其中n是圖中頂點的數量?

由於圖中沒有循環,並且所有頂點都與接收器連接,只需選擇任何起始節點並開始隨機行走。 當你無法繼續行走時,你就在最近的n個台階上。

一旦你走了n步(或更少,你不能繼續),因為問題並不能保證有一個水槽,你應該檢查你是否在一個。 這增加了另一個O(n) 所以問題是O(2 n) = O(n)

我能想到的最好是O(n + m)其是O(n)如果mO(n)

假設存在接收器,請對圖形進行拓撲排序。 排序中的最小節點是接收器。 注意拓撲排序是O(n + m)

我以前提供的實現在這里可以輕松地對這個問題進行修改。

如果您可以在線性時間內計算節點內/外的邊數,則可以。 首先,找到沒有輸出邊的頂點(O(n)掃描所有節點)。 只有在只有一個這樣的頂點時才滿足您的條件。 然后,計算其入射邊緣(O(n)以掃描所有輸入邊緣)。 如果恰好有n-1個入邊,則滿足條件。 如果任一測試失敗,則沒有接收器頂點。

我假設“連接”你的意思是“通過邊緣連接”,而不是“通過路徑可達”。

暫無
暫無

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

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