0
我聽說8-puzzle問題可以通過BFS解決,但我不明白。我想知道,我需要從董事會得到這樣的中間步驟:通過BFS解決8個難題
3 1 2
6 4 5
0 7 8
到
1 2 3
4 5 6
7 8 0
是在BFS搜索中間步驟「的水平」?
順便說一下,這是基本的功課,我不關心最優性。
我聽說8-puzzle問題可以通過BFS解決,但我不明白。我想知道,我需要從董事會得到這樣的中間步驟:通過BFS解決8個難題
3 1 2
6 4 5
0 7 8
到
1 2 3
4 5 6
7 8 0
是在BFS搜索中間步驟「的水平」?
順便說一下,這是基本的功課,我不關心最優性。
這是相當多的任何BFS搜索
function next_boards(board)
yields a set of reachable in one move from the current board
queue = [start_board]
while true:
current = queue.pop()
if current = goal: break
queue.push for all next_boards(current)
注意,我們沒有做任何幻想比如檢查週期或任何一個模板。如果我們是,將隊列更改爲堆棧,並獲得DFS。
是的,基本上使用一個FIFO隊列,並擴展到每個可能的下一個節點的每個節點。如果我沒有弄錯,在最糟糕的情況下,8-puzzle可能會擴展近百萬個節點,因此請確保您的狀態對象很小或允許虛擬內存增長以避免內存錯誤。平均情況應該是> 100K節點擴展。 – 2009-12-10 18:59:55