極小化極大アルゴリズム及びAlpha-beta剪定


初心者の方のメモですが、足りないところはご指摘ください.
極小化極大アルゴリズム(minimax)L'algorithm minimax
極小化極大アルゴリズムは深さ優先の探索アルゴリズムであり,ツリー構造が再帰し,tic-tac-toeのような棋類などの双方が対決するゲームやプログラムに多く用いられる.
それはゼロの総和ゲームを満たす必要があります.例えば、碁の試合で、当方の得点、相手の失点、総得点値は永遠に0またはある定数です.
そのため、私たちは勝つために、味方の利益(Max)を最大化し、相手の利益(Min)を最小化する必要があります.
疑似コードは次のとおりです(Wikipediaより):
function minimax(node, depth)
    if node is a terminal node or depth = 0
        return the heuristic value of node
    if the adversary is to play at node
        let α := +foreach child of node
            α := min(α, minimax(child, depth-1))
    else {we are to play at node}
        let α := -foreach child of node
            α := max(α, minimax(child, depth-1))
    return α

最初のif擬似コードブロックは、depth=0がレイヤ数の頂点に達し、ゲームが終了し、あるノードに再帰され、プログラムが再実行できないか、またはすでに一方が勝っているかの2つの出口を指摘している.
2番目のifダミーブロックは、相手ノードにある場合に最小値をとることを示す
そうでなければelseが味方のノードにある場合、最大値をとります
minimaxアルゴリズムは木構造であるため,nのx次方程式の結果を計算する必要があり,碁盤の比較的大きなゲームでは計算量が幾何学的倍数に増加するため,Alpha‐beta剪定を用いてこのアルゴリズムを最適化する必要がある.
Alpha-beta剪定L'algorithme Alpha-beta
前述したように、alpha-beta剪定は実際にminimaxのアップグレードバージョンです.
minimaxの検索ツリーを、意味のない検索不要な幹を切り取って検索効率を向上させ、ワークロードを削減
疑似コードは次のとおりです(Wikipediaより):
01 function alphabeta(node, depth, α, β, maximizingPlayer) // node =   ,depth =   ,maximizingPlayer =     
02      if depth = 0 or node     
03          return       
04      if maximizingPlayer
05          v := -∞
06          for      
07              v := max(v, alphabeta(child, depth - 1, α, β, FALSE)) // child =    
08              α := max(α, v)
09              if β ≤ α
10                  break // β  
11          return v
12      else
13          v := ∞
14          for each      
15              v := min(v, alphabeta(child, depth - 1, α, β, TRUE))
16              β := min(β, v)
17              if β ≤ α
18                  break // α  
19          return v

私たちの一歩一歩は上の層の行方を予測するためであるため、各層は自分で(max)である.α ,相手は(min)β
ツリー構造が到着するとα >= β の場合、次のサブノードが何であるかにかかわらず、等しい以下になります.β,サブノードが相手の最小値minをとるため
自分が取るのはmaxなので、次に現れるのは何でも重要ではありません.
これで、右側の枝を減らすことができ、計算に時間を費やす必要はありません.
その後pythonコードと手画の導出を補充します