有沒有限制,你必須越過每個邊緣只有一次,或每個頂點。如何確定有向圖是否具有從某個節點開始消耗所有邊的路徑?
對於這種路徑的存在(如歐拉路徑存在的節點度數),還是某種已知算法證明存在或不存在該圖的某些屬性是必要和充分的? t一個(也許找到從開始的所有邊的最小路徑)?
我已經考慮了幾種可能性,其中最強的是將強連通的組件摺疊成單個超節點,然後檢查得到的圖形是否僅僅是一個「鏈接列表」的圖形 - 覆蓋所有邊緣(這很簡單,只是從起始節點/超節點總是從當前節點講話一個單獨的邊緣,計算出訪問邊緣(以及任何內部邊緣,如果它是超級節點),當你到達一個葉節點時,看看是否所有的邊都被計算在內)。在這個解決方案中,重要的是保留所有原始邊緣,即使它們變得冗餘(例如,如果在將連接的組件A,B,C摺疊成超級節點S之後,從F到A,F到B,F到C的邊緣必須即使它們在簡化圖中指向相同的超級節點S也都被保留)。很抱歉,如果表達不正確,我會在等待答案時嘗試實施此解決方案。
有沒有更簡單的方法?或者一些更好的算法來處理循環/連接組件?因爲當圖形是非循環的時候,它似乎很容易解決。
這不僅僅是檢查圖形是否強連接? – nbrooks 2013-03-20 03:58:13
你能否澄清一下:消耗所有邊緣 – smk 2013-03-20 03:58:42
至少將它們交叉一次。 – 2013-03-20 04:21:12