2009-04-23 43 views
3

給出一個線性時間算法來測試一棵樹是否有完美匹配,即一組觸摸樹中每個垂直文本的邊緣。如何測試樹在線性時間內是否具有完美匹配?

這是從算法由S. Dasgupta,我似乎無法指出這個問題。我知道我需要以某種方式使用貪婪的方法,但我無法弄清楚這一點。幫幫我?

僞代碼很好;一旦我有了這個想法,我可以用任何語言輕鬆地實現。

該算法必須是線性的任何事情。 O(V + E)很好。

+0

你能否澄清一些問題?另外,如果這是家庭作業,您應該這樣標記它。人們仍然會幫助你。 – 2009-04-23 20:30:27

+1

這是一本教科書,但它是我自己對這個問題的後期探索。不是說真的功課。 – 2009-04-23 21:23:01

回答

5

我想我有解決方案。由於我們知道該圖是,因此我們知道葉子節點的存在,具有一個邊緣且沒有子節點的節點。爲了將此節點包含在完美匹配中,該邊必須存在於最終解決方案中。

Ergo,我們可以找到連接到葉節點的所有邊,添加到解決方案,並從圖中刪除觸摸的邊。如果在這個過程結束時,我們留下的任何剩餘的節點都沒有涉及,那麼就不存在完美的匹配。

0

線性什麼?線性中的邊緣的數目,保持邊緣爲有序列表發生率,即每邊(v v Ĵ)在一些總次序。然後你可以比較兩個邊的O(n)。

1

在「圖形」的情況下, 問題的第一步應該是找到連接的組件。

由於最終答案中的每條邊連接兩個頂點,它們最多隻屬於一個連接的組件。

然後,可以找到每個連接組件的完美匹配。

相關問題