給定一個有向圖,我可以使用什麼算法來找到它的邊的一個隨機子集,以便每個節點只有一個入口和一個出口邊?匹配節點的圖形化算法
例如,這可能是我給出的圖表:
,這將是一個有效的輸出曲線:
這是有效的,因爲:
- 它包含inp上的所有節點ut圖
- 它的所有邊也都在輸入圖上
- 每個節點都有一條邊離開它並且一條邊接近它(並且不能是相同邊,不允許循環,每個節點都有連接至少一個其他節點)。
如果沒有可能的解決方案應該被檢測到。
有沒有一種有效的算法來解決這個問題?
謝謝!
給定一個有向圖,我可以使用什麼算法來找到它的邊的一個隨機子集,以便每個節點只有一個入口和一個出口邊?匹配節點的圖形化算法
例如,這可能是我給出的圖表:
,這將是一個有效的輸出曲線:
這是有效的,因爲:
如果沒有可能的解決方案應該被檢測到。
有沒有一種有效的算法來解決這個問題?
謝謝!
這是一個節點週期覆蓋問題。它可以解決爲Maximum matchings in bipartite graphs。
簡而言之:
您試圖將圖分解爲一組循環。
This link指向Tarjan的算法,用於在圖中查找循環。然後,您需要一些搜索策略(根據您的限制,某些循環選擇可能不會導致解決方案)。
存在哪些算法? – Adam 2010-12-14 22:07:40
@亞當:http://en.wikipedia.org/wiki/Hopcroft-Karp_algorithm – 2010-12-14 22:15:59
我相信,維基百科文章鏈接到一些,請參閱「最大流量問題」的鏈接。 「在二分圖中完美匹配」是最大流量問題的一個特例,如果您將源節點添加到P1並沉到P2,並且所有邊的權重都是1,那麼我推薦使用Ford-Fulkerson算法,實現起來非常簡單。 – 2010-12-14 22:18:47