五子棋AI演算法簡易實現(七)

2021-08-16 09:28:39 字數 871 閱讀 9818

###(4)alphabeta剪枝演算法

alphabeta剪枝演算法的根據說白了其實就是棋手不會選擇不利於自己的走法,當乙個節點的估值明顯不利於自己的時候,就會選擇丟棄這個節點。

該演算法保持兩個值,alpha和beta,它們分別表示max層的玩家可以確保的最小分數和min層的玩家可以得到的最大分數。最初,alpha是負無窮,而beta是正無窮,即兩個棋手都以最差的分數開始。每當min層的玩家確定的最大分數變得小於等於max層的玩家確定的最小分數(即β<=α)時,max層的玩家不需要考慮該節點的後代,因為它們將永遠不會被選擇。

這是我從維基百科上摘抄下來的**

更加詳細的解釋可參考這篇部落格

**實現:

var alpha = number.

negative_infinity

, beta = number.

positive_infinity

;var alphamultiple =1,

//使得best的值足夠小(無用)

betamultiple =1;

//使得best的值足夠大(無用)

//max函式

varmax

=function

(board, color, alpha, beta, deep)

return best;};

//min函式

varmin

=function

(board, color, alpha, beta, deep)

return best;

};

五子棋AI演算法簡易實現(五)

這個部分我把它分成了兩個函式 1.找出雙方所有可能下子的位置 generateallnextpossiblemove函式 2.在這些位置中進行挑選,選出能夠產生更大優勢的下子位置,減少博弈樹搜尋節點的次數 pointsfilter函式 2.2 落子位置的篩選這一部分主要參考了 這篇部落格上的寫法,這...

五子棋AI演算法簡易實現(四)

這個部分我把它分成了兩個函式 1.找出雙方所有可能下子的位置 generateallnextpossiblemove函式 2.在這些位置中進行挑選,選出能夠產生更大優勢的下子位置,減少博弈樹搜尋節點的次數 pointsfilter函式 2.1 找出雙方所有可能下子的位置 這個函式用於找出相鄰兩格以內...

Python實現AI五子棋

開發工具 python版本 3.6.4 graphics模組。環境搭建 安裝python並新增到環境變數即可。注 graphics模組在相關檔案中已經提供,就是乙個py檔案,直接放在當前路徑或者放到python安裝資料夾下的site packages資料夾內均可。原理簡介 對於五子棋這樣的博弈類ai...