Gomoku или 5 в ряд
От: Аноним  
Дата: 24.06.05 18:58
Оценка:
Хочется написать программу, которая играет в gomoku. (как крестики-нолики только 5 в ряд и роле не огранниченное)
В тот вариант игры
Тема уже обсуждалась в форуме.
Недостатки большенства реализаций в том, что они не учаться на своих ошибках.
Целевая функция в них статическая.

Есть две возможности обойти это ограничение.
Первая — анализировать игру с начала.
Вторая — анализировать с конца.

С первым всё просто. Строим дерево по всем с играным играм.
В узлах ход и количество выигранных, количество проигранных партий.
Пока партия развивается по известным ходам, эта даёт возможность довольно точно
определить вероятность выиграша.

Со вторым сложнее.
Предположим изначально у нас нет никакой целевой функции, есть только правила.
По мере своего развития прога должна отбирать выиграшные варианты.
Будем аналищировать только эндшпиь в районе развития гарантированного выиграша,
чтобы отсеить случайные проиграшы.
Гарантированый выиграш легко определить — если с какого-то момента противник может проиграть только за меньшее
число ходов.
Таким образом цену хода всегда можно определить как количество ходов, необходимых для победы.

Вопрос.
Как можно определить зависимые от ситуции клетки?
Я думал определять это как клетки на которые сделаны последнии ходы.
Например.
  ???????
  ?XXXX ? 
  ???????

Но это не всегда так.
Например, когда ставиться вилка. Часть вилки может существовать за долго до эндшпиля.

Есть какие-то идеи?

Второй вопрос, как потом эффективно искать по множеству готовых решений?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.