2014-05-05 60 views
0

我在回顧深度優先搜索(DFS)和呼吸優先搜索(BFS)的概念,但我總是忘記我是否可以假設一些規則。 (...) 在BFS中,我將開始訪問根及其所有鄰居,(())( );在BFS中,我將開始訪問根及其所有鄰居,( ...)我可以在BFS和DFS中做出假設嗎?

我的問題是,如果我有多個選項,我可以做出假設或「規則」?

即:

  • DSF的圖形,我的節點是信 - 我決定,從根我將開始在字母順序搜索。

  • BFS在樹上 - 我決定我總是從左邊的鄰居開始。

可以定義這個東西還是有一個主要的規則(除了搜索的目的)?

回答

2

不,沒有這樣做的主要規則。根據您使用BFS或DFS的目的,如果您使用的順序很重要,那麼您應該這樣做,否則任何順序(如字母順序,隨機順序等)都可以。唯一重要的是,在BFS中,你應該首先遇見根的直接鄰居,按照你所看到的順序,對所有看到的節點都做同樣的事情。例如,如果R是樹的根,並且[LC,RC]是它的孩子。並且每個人在做BFS時分別有孩子[LC1,LC2][RC1,RC2],訪問R之後,您可以以任意順序訪問LC和RC。但是,如果您第一次遇到LC,則必須先檢查LC1和LC2,然後檢查RC1和RC2。您也可以按任意順序檢查LC1和LC2。並且使用隊列來實現這一點非常簡單。因此,你訪問的第一件事,在下一個層次中,你首先會看到它的鄰居。