Минимакс работает нормально, но обрезка альфа-бета - нет.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Минимакс работает нормально, но обрезка альфа-бета - нет.

Сообщение Anonymous »

Я пытаюсь заставить работать альфа-бета-отсечение, но оно дает мне совершенно неправильные действия по сравнению с моей минимаксной функцией. Вот моя минимакс-функция, которая сейчас работает отлично.

Код: Выделить всё

float Minimax(char[,] _board, int depth, bool isMax) {
if (depth == 0 || isFull(_board)) {
EvaluateBoard(_board);
}

if (isMax) {
float bestScore = -Mathf.Infinity;
float score = -Mathf.Infinity;

for (int i = 0; i < 7; i++) {
char[,] board = (char[, ]) _board.Clone();
if (Play(board, i, false)) {
score = Minimax(board, depth - 1, false);
bestScore = Mathf.Max(score, bestScore);
}
}
return bestScore;
} else {
float bestScore = Mathf.Infinity;
float score = Mathf.Infinity;

for (int i = 0; i < 7; i++) {
char[,] board = (char[, ]) _board.Clone();
if (Play(board, i, true)) {
score = Minimax(board, depth - 1, true);
bestScore = Mathf.Min(score, bestScore);
}
}
return bestScore;
}
}
а вот моя альфа-бета-функция обрезки

Код: Выделить всё

float ABPruning(char[,] _board, int depth, float alpha, float beta, bool isMax) {
if (depth == 0 || isFull(_board)) {
return EvaluateBoard(_board);
}
if (isMax) {
float bestScore = -Mathf.Infinity;

for (int i = 0; i < 7; i++) {
char[, ] board = (char[,]) _board.Clone();
if (Play(board, i, false)) {
bestScore = ABPruning(board, depth - 1, alpha, beta, false);
alpha = Mathf.Max(alpha, bestScore);
if (beta

Подробнее здесь: [url]https://stackoverflow.com/questions/67952011/minimax-works-fine-but-alpha-beta-pruning-doesnt[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Кэширование с помощью минимаксного алгоритма с альфа/бета-обрезкой
    Anonymous » » в форуме C++
    0 Ответы
    35 Просмотры
    Последнее сообщение Anonymous
  • Почему мой алгоритм альфа-бета-отсечения принимает неправильные решения?
    Anonymous » » в форуме C++
    0 Ответы
    35 Просмотры
    Последнее сообщение Anonymous
  • Negamax с обрезкой альфа-бета в Python
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Моя реализация обрезки альфа-бета работает слишком медленно.
    Anonymous » » в форуме C#
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Моя реализация обрезки альфа-бета работает слишком медленно.
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»