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

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

Сообщение Anonymous »

Я работаю над алгоритмом, который оценивает шахматные позиции на C#. К сожалению, реализация идет слишком медленно. Я ждал час, но метод все еще не достиг конца, даже когда значение константы DEPTH равно 5. Он работает с глубиной 1, 2 и 3, но не с 4 или 5.
Это мой рекурсивный метод:

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

public double AlfaBeta(int depth, double alpha, double beta, bool maximize, Move move)
{
Chessboard game = (Chessboard)Clone();

if (move != null)
if (move.IsLegal(game))
game.Move(move, false);

try
{
if (depth > DEPTH)
return game.Evaluate();
}
catch
{
return maximize ? double.MinValue : 0;
}

double bestMove;
double value;
List moves;

if (maximize)
{
moves = game.GetTotalLegalMoves('w');

if (moves.Count == 0)
return game.Evaluate();

bestMove = double.MinValue;

foreach (Move cMove in moves)
{
value = game.AlfaBeta(depth + 1, alpha, beta, false, cMove);
bestMove = Math.Max(bestMove, value);
alpha = Math.Max(alpha, bestMove);

if (beta 

Подробнее здесь: [url]https://stackoverflow.com/questions/79149309/my-alpha-beta-pruning-implementation-is-too-slow[/url]
Ответить

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

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

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

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

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