簡體   English   中英

如何在有向圖中對節點進行分組,以使組中的兩個節點之間沒有路徑?

[英]How to group nodes in a directed graph so that no two nodes in a group have paths between them?

我有一個帶有循環的大型有向圖(來自大型程序的控制流圖)。 我想對節點進行分組,以便每個組都包含彼此獨立的節點。 如果沒有從節點 A 到節點 B 或節點 B 到節點 A 的路徑,則兩個節點 A 和 B 相互獨立。是否有有效的算法來做到這一點?

這里的簡單算法是首先選擇一個節點 A,從它刪除所有可訪問的節點,然后轉置圖,並刪除從 A 再次可訪問的所有節點。從剩余節點重新開始(具有適當的可達性緩存)。

如果這個問題在這里是題外話,我也很高興被指向正確的 SO 社區。

我發現這個問題相關,但在我的情況下,從 A 到 B 的路徑的存在並不意味着 B 到 A 的路徑存在。 因此,它們不需要強連接。 這個問題也類似,但談論的是沒有邊緣連接而不是路徑連接的節點。

您可能會以大量“組”結束,每個節點都存在於多個組中。

例如,具有三個節點 A、B 和 C 的圖。

鏈接:B -> C 和 C -> B

“組”是 ( A,B ) 和 ( A, C )

這真的是你想要的嗎? 很難想象這會起到什么作用。

在碰巧是二分圖的較大圖的情況下,您將需要一個組用於每個不同的對,其中一個節點位於一個部分,另一個節點位於另一部分。

由於這是一個控制流圖,每個節點都獨立於調用層次結構中更高的每個節點,以及不同調用樹中的每個節點。

暫無
暫無

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

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