如何使用最小最大值算法設計高效的十六進制遊戲算法,因爲它的分支因子太高。 使用簡單的最小最大算法,但在這種情況下,對於一個11 * 11棋盤遊戲,我們有121個組合,所以對於這個如何減少組合數量什麼是最小化這種組合方法如何將最小最大值算法應用於十六進制遊戲
回答
遊戲中的動作樹只能完全適用於井字遊戲等簡單的東西。其他遊戲,如國際象棋,將會過於深刻,並且在每次移動時都會有太多選項(較大的分支因素)。
在您的問題的非常一般的層面上,有些措施可以對付這種限制。
最重要的是,您需要啓發式爲中間遊戲位置分配一個值。這使您可以應用極小極小,即使對遊戲結束的所有移動的分析都不可能。這些啓發式可能非常簡單。例如,在國際象棋中,你可以給棋子一個值(棋子1,騎士3等等)並簡單地加起來。考慮到電路板上的位置等,您可能會稍微複雜一些,但這裏的性能會有所折衷。這是許多AI系統的基礎。
一個經典的改進叫做alpha-beta pruning。這是基於以有序的方式評估運動樹的節點,以便可以省略已經保證比其他分支更差的分支,從而提高效率。 (例如,考慮一個分支,其中一個玩家可以強制獲勝運動:該分支內的這種運動的替代物並不重要,因爲如果遊戲以這種方式進行,該玩家將總是強制獲勝運動)。
其他算法改變了我們探索運動樹的方式。 Monte-Carlo tree search就是一個例子。這裏的核心思想是評估節點並以協調的方式探索樹(與之前相反,我們首先儘可能深入地探索樹,然後評估樹葉)。在這裏,我們有一個探索 - 開發平衡(你必須決定是否想要開發更有前途的職位,或者如果你想贊成探索新的,可能令人失望的運動)。
好吧,我有想法,我會嘗試做像最短的路徑,因爲我在互聯網上探索。順便說一句,謝謝很好的解釋:) –
- 1. 最小值最大值和四捨五入的十六進制在JavaScript
- 2. C++數學遊戲十六進制到十進制問題
- 3. 十六進制和算法
- 4. 如何計算十六進制乘法?
- 5. 需要幫助如何計算十六進制地址大小
- 6. 對應於十六進制的ASCII值
- 7. 如何計算SQL Server中的十進制(x,y)最大值
- 8. 如何將最小和最大值應用於textarea?
- 9. 驗證NSTextField中的十進制最大/最小值
- 10. 十六進制字符串上的Mysql最大值
- 11. 選擇具有最大十六進制值的行
- 12. 用於將十六進制解析爲彩色族的算法
- 13. 用於大數字的十進制到十六進制的Python
- 14. 將十六進制拆分爲2個十六進制值
- 15. 使用大於最大十進制值的數字
- 16. 將十進制轉換爲十六進制和十六進制
- 17. long.TryParse失敗的十六進制值,最高最低限度內
- 18. 遞歸「超過最大調用堆棧大小」 - 十進制爲十六進制數轉換器
- 19. 十六進制值
- 20. 如何將十進制小數轉換爲十六進制小數?
- 21. 最短編碼,十六進制
- 22. 十六進制值等於負值
- 23. 如何使用十六進制表示法將值賦給char *?
- 24. 用於計算相對於最小值和最大值的值的方法
- 25. 驗證十進制值最大爲x數字大於零
- 26. 使用遞歸將十六進制轉換爲十進制值
- 27. 如何按字節將SHA-1應用於較大的十六進制數字?
- 28. 將十六進制轉換爲二進制到十六進制?
- 29. 在VB6中將十六進制值轉換爲十進制值
- 30. 遺傳/進化算法和局部最小/最大值
這是最受研究的遊戲之一(即使是納什本人)也有很多材料,包括研究論文。你想告訴我們,你錯過了尋找這些的步驟嗎? – sascha
雅我嘗試過,但我沒有想法如何繼續製作它。這就是爲什麼我問這裏得到它的基本想法 –