我想實現騎士遊,並使用不同的搜索算法運行它,如bfs,dfs,a *等。用戶在棋盤上選擇一個位置,然後事情會完成。問題是在選擇之後,我應該創建整個圖,就像從第一個位置到第二個位置等所有可能的移動,或者我應該一步一步地進行,然後根據其算法,在第一級搜索,然後是下一級兒童的孩子?我希望我的問題對我的英語很清楚並且很抱歉。實現騎士的遊覽圖,並將其與不同的搜索算法一起使用
0
A
回答
0
在每次迭代中,從隊列中彈出一個節點,直到到達目的地。通過使用列表記錄先前的歷史移動來放棄重複移動。爲了簡化實現,每次都將當前的移動歷史數組推入隊列。這顯然是一個BFS(廣度優先搜索)算法,它將保證找到的第一條路線是最短路線。
你不搜索棋盤;搜索展示位置的空間:
初始狀態:沒有騎士被放置
有效舉措:發生在任何空閒的瓷磚騎士
目標狀態:所有的瓦片被佔據或攻擊
基本算法(狀態空間的BFS):
將初始狀態推送到BFS隊列。 當隊列中有東西時: 從隊列中移除一個狀態。 對於每個未佔用的圖塊: 創建當前狀態的副本。 將一個騎士添加到該瓷磚。 如果新狀態不存在於隊列中: 如果新狀態是目標狀態,則結束。 否則將其添加到隊列中。
0
如果我正確地理解了這個問題,一個可行的方法不是根據生成後繼狀態來明確地表示遊戲樹,而是通過使用用於生成所有可能的函數的函數來遞歸地保留板的實例並實現搜索移動,執行移動並撤消移動;通過這樣做,遊戲樹的被檢查部分將通過使用調用堆棧來隱含地表示,而回溯步驟通過撤銷最後的移動並從當前的遞歸調用返回來實現。
+1
我開始懷疑:是否有可能使用bfs實現騎士之旅? –
相關問題
- 1. 騎士的遊覽回溯
- 2. 騎士的遊覽深度優先搜索無限循環
- 3. 快速算法找到封閉騎士的遊覽
- 4. 在smlnj中打開騎士的遊覽(回溯)算法
- 5. 騎士之旅發現路徑算法
- 6. 我的騎士的遊覽算法可能在無限循環上運行
- 7. IE9不支持globalCompositeOperation,圓的騎士遊
- 8. 騎士旅遊問題
- 9. 廣度優先搜索:騎士覆蓋
- 10. JetBrains的騎士與手錶
- 11. 實現A *搜索算法
- 12. 騎士之旅算法幫助
- 13. 騎士的最短路徑圖的數據結構和算法
- 14. 實現一個搜索算法android
- 15. Rails 3的搜索算法的實現
- 16. 使用Prolog實現八(非攻擊)騎士
- 17. C++遞歸回溯騎士遊
- 18. 試圖實現二進制搜索算法,似乎無法使其工作
- 19. 統一調試與騎士-EAP在Windows
- 20. 如何實現搜索算法
- 21. 二進制搜索Java實現算法
- 22. 深度優先搜索算法實現
- 23. 實時搜索不能與apostrophies一起使用php/javascript
- 24. 比較不同的搜索算法
- 25. 這位騎士的巡迴算法如何解決?
- 26. 騎士之旅深度優先搜索回溯
- 27. 騎士之旅的Java
- 28. 騎士的MOVe最短
- 29. 搜索不同的詞放在一起
- 30. Floyd-Warshall算法實現不起作用
你可以使用遞歸的方式。並維持一個訪問矩陣來跟蹤訪問的位置。 – BufBills