Я относительный новичок в Go и больше интересуюсь программными аспектами разработки Go Engine.
Используют ли движки го систематический список позиций в эндшпиле с известными выигрышами, как это делают шахматные движки? И заучивают ли профессиональные игроки в го список позиций в эндшпиле в процессе обучения?
Некоторое онлайн-копание обнаружило эту статью в Википедии и статью по информатике , в которой говорится , что решение эндшпиля в го с помощью компьютера - действительно сложная задача, которая гарантированно займет много времени. Возможно, это причина, по которой эндгеймовые базы Go не существуют/не используются широко?
Я знаю о го гораздо больше, чем о шахматах, поэтому я не знаю, насколько точны будут мои предположения об эндшпилях, но... я думаю, что шахматы имеют тенденцию быть в самом простом эндшпиле (как го), и здесь мало информация в эндшпиле о том, как развивалась остальная часть игры (в отличие от го). И есть алгоритмы выигрыша (в некоторых случаях), которые обобщаются на большое количество позиций. Например, если у белых есть ферзь и король, а у черных только король, если Q не будет взята, белые выиграют, независимо от позиции.
В го эндшпиль также является самой простой частью игры, поскольку это единственная часть игры, в которой можно очень точно рассчитать счет и ценность каждого хода, однако позиция решает все, и вы никогда не увидите две игры заканчиваются с одной и той же позицией на доске. В шахматах вы можете обобщить многие позиции до того, какие фигуры остались, но в го единственным обобщением является подсчет очков и количество очков, которые еще предстоит набрать.
Было бы совершенно непрактично полагаться на таблицы уровня всей доски в Го, однако многие небольшие области доски будут соответствовать общим шаблонам, которые игроки в Го запоминают и программируют в компьютерах. Примером среднего уровня будет согнутая четверка в углу мертва , но вы увидите, что эта относительно распространенная позиция вовсе не очевидна для новичка и имеет несколько предостережений (никаких неустранимых ко-угроз, окружающая группа должна быть живым с двумя глазами), и хотя это относительно распространено, это своего рода особый случай.
Что-то вроде знания, где играть, чтобы убить (или спасти!) громоздкую пятерку (и много-много других фигур), должно быть автоматическим для человека или компьютера.
Программирование компьютера для хорошей игры в ёсэ - очень сложная проблема, но это один из немногих аспектов го, в котором компьютеры могут победить профессиональных игроков в го, поскольку все это расчеты, и, хотя это сложно, теория хорошо понятна. Чтобы сделать это эффективно, программа должна уметь оценивать текущий счет, идентифицировать оставшиеся на доске ходы, которые приносят очки, и сортировать их в порядке значимости — это не тривиально. Эта статья может быть хорошей отправной точкой.
Резюме: в программах на го есть место для систематических списков позиций, но они не будут полезны для позиций всей доски. Программа должна иметь возможность оценивать статус жизни/смерти каждой группы на доске, и именно в этих одной или двух групповых позициях списки будут наиболее полезными --- и они будут ценны на протяжении всей игры. При попытке атаковать группы противника целью вашей программы будет не просто распознавание форм из списка, а скорее принуждение противника к формам, которые, как он знает, мертвы , при сохранении самой живой формы . См. также Общие формы углов .
При написании программы на Go я бы дал вам тот же совет, что и человеку, изучающему Go: начните с маленькой доски, пусть даже размером 5x5, пока не выучите правила. Перейдите на 7x7, а затем долгое время оставайтесь на 9x9, прежде чем вы даже подумаете о том, чтобы попробовать 13x13.
Удачи!
Нет баз данных эндшпиля для всей доски, потому что в конце слишком много возможных перестановок. Такой подход не может быть реализован с помощью современных компьютерных систем.
Хорошей новостью является то, что базы данных эндшпиля для ограниченных, локальных ситуаций действительно имеют смысл и могут применяться действительно хорошо, чем дальше продвинулся эндшпиль. После того, как вы проанализировали, к чему приводит каждая ограниченная локальная ситуация, вы можете вычислить лучший способ справиться с ними, найдя правильный порядок ходов. Конечно, найти идеальное решение не так просто, потому что вам нужно рассчитывать время на «бесплатные» ходы сэнтэ, которые действительно уничтожают ваши собственные ко-угрозы и так далее, но эндгейм ИИ в Го довольно хорош по сравнению с мидгеймом.
Чтобы понять концепцию эндшпиля, общие паттерны, важность сэнтэ/готэ и так далее, могу порекомендовать книгу «Эндшпиль », если они вам интересны.
Существует теория эндшпиля для го с использованием сюрреалистических чисел . Теория изложена в книге Берлекэмпа и Вулфа «Математический ход: охлаждение получает последнюю точку».
ИИ, использующий эту теорию, играет оптимально и обычно побеждает профессионального игрока-человека в эндшпиле. Среднестатистическому игроку в го чтение книги по-прежнему доставляет удовольствие и многому учит о стратегии эндшпиля.
DJClayworth
Ксавьер Комбель
PJTrail