2016-12-12 9 views
1

この変更された擬似コードを書き換えて、移動とスコアを返す方法はありますか? Found hereこれはTic-Tac-Toeのような完全な情報ゲームで最適な動きを見つけるために使用されるMinimaxアルゴリズムの最適化バージョンであるAlpha-Betaアルゴリズムです。この擬似コードを変更しても移動を返します

function alphabeta(node, α, β, maximizingPlayer) 
     if node is a terminal node 
      return the value of node 
     if maximizingPlayer 
      v = -∞ 
      for each child of node 
       v = max(v, alphabeta(child, α, β, FALSE)) 
       α = max(α, v) 
       if β ≤ α 
        break 
      return v 
     else 
      v = ∞ 
      for each child of node 
      v = min(v, alphabeta(child, α, β, TRUE)) 
       β = min(β, v) 
       if β ≤ α 
        break 
      return v 
+0

似ています! –

答えて

0

だけで最大化パートは、B/Cの両方あなたのギリシャ文字+1の場合

function alphabeta(node, a, b, maximizingPlayer) 
    if node is a terminal node 
     return valueOfNode, None 
    if maximizingPlayer 
     v = -∞ 
     for each move in node.possible_moves() 
      child = play(move, TRUE) #True/False respresents if it should make an "x" or an "o" on the board 
      temp_max, _ = alphabeta(child, a, b, FALSE) # "_" means disregard the value 
      if temp_max > v: 
       v = temp_max 
       best_move = move 
      a = max(a, v) 
      if b <= a: 
       break 
     return v, best_move 
0

最小限に抑えるには、最大限のは本当に似ているので、ちょうど1つの部分を行います。

function alphabeta(node, α, β, maximizingPlayer) 
     if node is a terminal node 
      return { value: value of node, node : node} 
     if maximizingPlayer 
      v = -∞ 
      bestNode = None 
      for each child of node 
       localMax = alphabeta(child, α, β, FALSE) 
       if localMax.value > v 
        v = localMax.value 
        bestNode = localMax.node 

       α = max(α, v) 
       if β ≤ α 
        break 
      return {value : v, node: bestNode} 
+1

コードを擬似コードに変更できますか? – PAS

+0

@PAS確実!私は通常、擬似コードをしないので、ヌルと返すタプルの正しいsintaxを確認できませんでした – juvian

+0

これを修正しようとしましたが、同じかどうかわからない – PAS

関連する問題