2016-12-12 3 views
1

Есть ли способ переписать этот измененный псевдокод так, чтобы он возвращал ход, а также оценку? Найдено here. Это алгоритм Alpha-Beta, который является оптимизированной версией алгоритма Minimax, оба из которых используются для поиска оптимального движения в идеальных информационных играх, таких как Tic-Tac-Toe.Возвратитесь также, изменив этот псевдокод

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

Для ваших греческих букв +1! –

ответ

0

Просто Максимизация Часть б/с и похожи

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

Минимизация действительно похоже, чтобы максимизировать так просто сделать одну часть:

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

Смежные вопросы