我有一個定向循環圖,由節點a,b,c,d,e,f g組成,其中節點連接到每個其他節點。邊緣可以是單向的或雙向的。我需要打印出這樣的有效命令,例如。 f-> a-> c-> b-> e-> d-> g,這樣我就可以從起始節點到達末端節點。請注意,所有節點必須出現在輸出列表中。 另請注意,圖中可能有周期。我該如何做這個圖遍歷?
我想出了: 基本上首先我們可以嘗試找到一個開始節點。如果有一個節點使得它沒有傳入邊緣(最多可能有一個這樣的節點)。我可能會找到一個開始節點或者可能不會。另外我會做一些預處理來找到節點的總數(讓我們稱它爲n)。現在,我將從啓動節點標記節點開始創建一個DFS,並在訪問它們時計算我訪問的節點數量。如果我可以通過這種方法到達n個節點。我做完。如果我擊中了一個節點,而這個節點沒有到任何未訪問節點的傳出邊緣,那麼我已經遇到了一個死路,我只會將該節點再次標記爲未訪問,減少指針並轉到其前一節點以嘗試不同的路由。
這是我找到起始節點的情況。如果我沒有找到一個起始節點,我只需要在各個節點上嘗試。
我不知道我是否接近解決方案。任何人都可以在這方面幫助我嗎?
你的解決方案與DFS似乎是合法的,最新的問題是什麼?什麼是問題?我不明白什麼意思是「找到開始節點」?如果你有圖表,你應該有關於所有節點的信息。 – libik