C++ QT开发人机象棋(剪枝算法)
生活随笔
收集整理的這篇文章主要介紹了
C++ QT开发人机象棋(剪枝算法)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
改變singleGame()里面的_level的值為5的話,程序就會崩潰,很顯然由于最大值最小值算法遍歷整個棋盤幾層的話時間復雜度十分的高,為了優化程序我們就應該減少程序的運行量,那么也就有了剪枝算法。
?極大值極小值搜索算法遍歷棋盤的所有情況,有得判斷是多余的,剪枝算法就是去除這一部分多余的計算
?
?
按照極大值極小值算法的思想,我們子計算4的這一層的時候選擇的應該是最小值,在計算2那一層的時候選擇的應該是最大值,由于整個程序是按照遞歸的思想運行的,那么我們的判斷順序應該是10/20/30/5,那么2這個位置應該是10,在計算后面的3的時候又要重新遍歷一遍后面的所有情況,我們發現5是5<10,這個時候就算是判斷6.7是多余的了,因為3這里選擇的數字肯定小于等于5。
總結
以上是生活随笔為你收集整理的C++ QT开发人机象棋(剪枝算法)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 频谱分析仪原理结构图
- 下一篇: C++程序控制本身重新启动功能