2016-06-09 19 views
0

我一直在閱讀this不能讓我的頭周圍的8-N拼圖

如果你去19滑動,它會開始談論一個8-N的難題。

1)所以爲了解決這個問題,必須生成所有可能的狀態,然後遍歷樹?

2)好吧如果是從1),那麼爲什麼要使用樹?我可以使用其他數據結構嗎?

3)爲什麼我需要生成所有的狀態?我不能隨便創造它們嗎?這會讓我有機會更快地達到我的目標嗎?

4)開始和目標狀態應該正確嗎?

感謝

+1

我不確定我喜歡在幻燈片的開頭使用術語樹。我認爲你應該把它看成更像一個圖表,實際的數據結構可以是任何東西。 使用圖形的原因是因爲有遍歷/搜索圖形的明確定義的解決方案(dijkstra,A *)。所以當你把一個問題變成一個圖表時,你可以用數學方法證明你可以在某個有限的時間內解決問題。 –

回答

1

解決8拼圖

1-3)你應該生成所有可能的狀態

原因: 你不知道目標位置。 有很多方法可以達到目標。有些方法可能無法達到目標並需要回溯。

2)樹數據結構

原因: 爲了避免重複的狀態。 圖中出現重複狀態。它增加了搜索時間。

4)開始和目標 只指定開始狀態。

+0

在遞歸中,停止條件是什麼? –

+0

達到目標時。 –

+0

嘿,你可以看看這個問題嗎? http://stackoverflow.com/questions/37810488/why-is-my-recursion-keep-throwing-a-stackoverflow-error我不能生成狀態空間 –

1

你並不真的需要預先生成的所有狀態(您可以生成它們,而你是沿國移動)。您也可以使用圖形並標記您已經嘗試過的狀態(所以不要以後再嘗試)。

是的,你的起始位置會給你(一些隨機的元素排列)。最終位置是贏得比賽的時間。據我記憶 - 爲了你的困惑它是一個有序的位置)。對於其他一些遊戲,你可以擁有可能的位置(如國際象棋)。

+0

「當你沿着各州移動時」,你的意思是在搜索時? –

+1

@TrtTrt是的。假設你現在處於state1狀態。你決定離開它。您生成了可從state1訪問的所有狀態並選擇移動的位置。 –

相關問題