Как оценить узлы, используя алгоритм Expectiminimax в игре Pig Dice - PullRequest
0 голосов
/ 03 марта 2019

Я пытаюсь понять, как алгоритм 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)

...