-1

BFS from my textbook廣度優先搜索僞代碼理解

我有兩個關於上面的pseduo代碼的問題。

  1. SOLUTION(節點)的功能是什麼?如何實現它?
  2. 在第三行,我們檢查孩子是否不在邊境。如何檢查FIFO隊列中的數據?
+0

特別是:(1)對BFS有大量的解釋,這基本上是Dijkstra的算法。要求爲您編寫代碼超出了網站的目的。 (3)要求校對你的實現遠遠超出了規定的目的。運行代碼。測試它。調試它。 – Prune

回答

3
  1. SOLUTION(node)返回完整的解決問題的辦法,而不是隻是一個節點。在一個尋路問題,它可能從一開始就返回一個完整路徑到端節點

實施例:

def SOLUTION(node): 
    result = [] 
    while(node.predecessor is not None): 
     result.append(node.predecessor) 
     node = node.predecessor 
  • 線性查詢的前沿。如果這是不可能的,只要您檢查節點在出隊後是否處於探索狀態,它仍然會工作,但這需要額外的內存。
  • +0

    然後返回相反的結果? –

    +0

    如何驗證您的第二個索賠?爲什麼檢查是不必要的? –

    +0

    是的,你說得對,結果應該顛倒。這個檢查是不必要的,因爲它不會檢查每個節點何時被添加到邊界,而是可以檢查它是否來自邊界的_removed_,並且所有節點仍然會被檢查。這和我上面寫的不太一樣,所以我編輯了 – user3080953