C++ QT开发人机象棋(搜索算法)
生活随笔
收集整理的這篇文章主要介紹了
C++ QT开发人机象棋(搜索算法)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
使用極大極小值算法,在滿足電腦下棋的時候自己的局勢能夠獲得最大權值的情況下判斷在當前局勢下的玩家的最小的權值,這樣能夠保證算法最優。
?
先從一個故事說起,比如說現在有有一個小偷偷了一些物品,小明看到后跟小偷說如果小偷給他一部分東西他就不報警,并且小明只取一件物品,圖中的三個箱子里面分別有兩個不同價值的物品,那小偷也說了,你選擇箱子,我給你拿物品,這個時候為了獲得最大的利益,小明應該選擇2號箱子,這樣按照博弈的思想,小明和小偷都能夠讓利益最大化。
?
那么我們可以把這個思想枚舉到我們的象棋上面來:
?
?
現在按照兩步來說,作為電腦,在第一步下棋的時候選擇的肯定是最大分,但是如果說直接用搜索一層的分值來下棋的話,人機象棋的棋力其實是十分十分弱的,那么我們就應該考慮n步人機,按照前面提到的小偷的例子,在電腦下棋的時候,在滿足電腦和玩家都是絕頂聰明的情況下進行判斷,那么在1這一步,電腦選擇的應該是權值最大的,下一步玩家下棋,這時候,電腦應該選擇的是人下期完之后的權值的最小值。
?
總結
以上是生活随笔為你收集整理的C++ QT开发人机象棋(搜索算法)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cesium夜景
- 下一篇: 检测VC++Redistributabl