Я пытаюсь понять, как алгоритм Expectiminimax можно применить к игре в кости Свиньи.Основная проблема в том, что я не знаю, как оценивать каждый узел в дереве решений игры.Согласно разделу Оптимальная игра в Википедии для игры в кости свиньи «соответствующая информация о решении включает в себя счет игрока, счет противника и общее количество ходов».
Как преобразовать эту информацию в heuristic value of node
в псевдокоде, как рассчитать это числовое значение?Какие минимальные / максимальные значения следует использовать?
Псевдокод Википедии:
function expectiminimax(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
// Return value of minimum-valued child node
let α := +∞
foreach child of node
α := min(α, expectiminimax(child, depth-1))
else if we are to play at node
// Return value of maximum-valued child node
let α := -∞
foreach child of node
α := max(α, expectiminimax(child, depth-1))
else if random event at node
// Return weighted average of all child nodes' values
let α := 0
foreach child of node
α := α + (Probability[child] * expectiminimax(child, depth-1))
return α
Правила игры:
«Каждый ход игрок несколько раз бросает кубик долибо бросается 1, либо игрок решает «удержать»: • Если игрок бросает 1, он ничего не выигрывает, и это становится следующим ходом игрока.• Если игрок выбрасывает любое другое число, оно добавляется к общему количеству хода, и ход игрока продолжается.• Если игрок выбирает «держать», его общий ход добавляется к его счету, и он становится следующим ходом игрока.Побеждает первый игрок, набравший 100 или более очков ».
https://en.wikipedia.org/wiki/Pig_(dice_game)