我只是想學的算法名..謝謝目前已知的計算機象棋最佳算法?
回答
如果您需要在深入瞭解AI算法,我想"artificial intelligence modern approach"書是最好的來源。
這將是一個*棋*算法的一部分。但是,minimax本身不是一個象棋算法。 – Tarydon 2010-01-08 08:22:58
遊戲算法中的一般策略是minimax策略,增加了alpha-beta pruning。 minimax算法找到最好的移動,alpha-beta修剪可以防止它進入遊戲樹的分支,不會產生比以前的分支更好的結果。
但是,象棋遊戲樹太大,無法完全檢查。這就是爲什麼電腦國際象棋引擎只檢查一定深度的樹,然後使用各種方法來評估位置。這些方法中的很多都是基於啓發式的。此外,一個嚴肅的國際象棋程序將有一個開放的圖書館,以便它可以在開始時參考圖書館而不必檢查遊戲樹。最後,許多終極遊戲已經完全解決,並且這些遊戲也被編程爲圖書館。
一個等價的極大極小稱爲negamax。不同之處在於樹的每次深度變化都會抵消分數。通過這種方式,兩個玩家都試圖最大限度地提高分數(在minimax中試圖使其最小化)。我不確定這對alpha/beta窗口會有什麼影響。它變成了一個單一的價值嗎? – phkahler 2010-01-08 19:07:07
應該注意的是,位置評估函數在確定其強度時可能是國際象棋引擎最重要的一個方面。事實上,它可能是目前大多數國際象棋引擎中新穎性唯一的領域。 例如,Rybka職位評估功能被設計超過5年(如果irc)非常強大的玩家。 從某種意義上說,評價函數是計算機對棋盤位置的直覺,這是任何棋類遊戲的基本重要部分,並與遊戲中的其他問題(如戰術)正交。 – ldog 2010-01-09 21:05:08
@gmatt - 只有部分真實......積極的修剪是Rybka如此強大的一部分,而且這方面的研究不算太舊。擴展的無用修剪,有限的修剪和自適應零移動修剪是不到十年前的現狀 – tbischel 2010-06-22 21:31:58
看看一些免費的國際象棋代碼,比如Crafty或者更好的水果怎麼樣?它幾乎與Rybka的強度幾乎相同。但是那裏有很多新的算法。人類國際象棋棋手將必須說我不是在玩這個引擎,而這篇文章幾乎總結了這一點 - >http://www.mychessblog.com/man-versus-machine-when-a-computer-will-become-world-chess-champion/
在國際象棋程序中使用的很多算法都在http://chessprogramming.wikispaces.com/網站上有描述。有幾個可用的開源程序正在實現這些算法。
- 1. 計算跳棋的最佳舉動
- 2. 最佳算法
- 3. 最佳格言計算機科學
- 4. React.js - 計算值的最佳做法
- 5. 最佳spritesheet算法
- 6. 最佳算法2.0
- 7. 通過算法的計算機運算
- 8. 目標計算機
- 9. 從本地計算機瀏覽mdf文件的最佳方法?
- 10. 將文件複製到SQL Server計算機的最佳方法
- 11. 計算網格中目標的距離的最佳方法
- 12. 結算訂單的最佳算法
- 13. 算法來計算物品的最佳數量
- 14. 用於計算鄰居列表的最佳GPU算法
- 15. 計算移動目標偏移量的最佳方法
- 16. 國際象棋將死算法複雜
- 17. 國際象棋算法概述
- 18. 算法C#統一象棋遊戲
- 19. 計算基於已知的寬度和高度最佳嵌入大小?
- 20. 最佳算法從範圍計算輪值
- 21. 算法計算機n元樹的最優佈局?
- 22. 確定遠程計算機的最佳方式已啓動並正在運行
- 23. 計算最佳計時器間隔(timer_settime)
- 24. 年齡最佳算法?
- 25. '最佳'差異算法
- 26. 最佳三重鎮算法
- 27. 最佳分配算法
- 28. 最快的算法來計算數量
- 29. 什麼是計算直線最小斯坦納樹的最佳算法?
- 30. 動態最大流量計算的最佳圖形算法/實現
在進入他們的「算法」模式之前,大多數(但不是全部)國際象棋程序依賴於啓發式算法,即一個廣泛的國際象棋開放庫。 – mjv 2010-01-08 08:24:50