Как «думают» шахматные движки?


28

Я хочу знать, как запрограммированы двигатели для поиска движений. Я уверен, что они сначала вычисляют самые сильные линии, такие как захваты и проверки. Но как насчет тонких, глубоких позиционных ходов? Кажется, они тоже очень быстро их находят (вообще говоря. Конечно, они пропускают такие движения время от времени). Как, например, они запрограммированы на поиск тихих ходов / позиционных идей? Они не могут просто грубо насиловать каждый ход, так как это займет слишком много времени, поэтому у них должен быть какой-то умный способ действительно быстро достичь лучших ходов. Мне интересно это знать, потому что я думаю, что это помогло бы игрокам продумывать доску и в реальном мире.


Шахматные движки просматривают несколько миллионов позиций в секунду, поэтому они могут просматривать все их, пока не получат несколько глубоких ходов.
RemcoGerlich

2
Это потрясающий вопрос, мне очень понравились ответы.
Трэвис Дж

В основном они ищут вперед с помощью алгоритма поиска (например, минимакс) и оценивают позиции, используя предварительно запрограммированную эвристику. Хотя некоторые последние движки (например, AlphaZero) разрабатывают свои собственные методы оценки посредством игры сами.
Инерционное невежество

Ответы:


22

Обычно шахматные движки используют дерево решений. Корень дерева является текущей позицией и имеет дочерний узел для каждой позиции, которая может быть сделана путем легального перемещения. Каждый из этих узлов, в свою очередь, имеет дочерний узел для позиций, которые могут быть достигнуты путем легального перемещения из них. Движок выталкивает дерево на глубину, определяемую его возможностями и временем, которое ему позволено «подумать». Позиции, которые могут быть достигнуты более чем одним способом, просто имеют перекрестные ссылки, поэтому их не нужно рассматривать более одного раза. Как только дерево создано, компьютер использует набор взвешенных правил для анализа конечных позиций в дереве и начинает удалять те, которые нежелательны или которые противник может помешать ему достичь. Дерево вырубается таким образом, пока не останется только одно движение, и компьютер сделает это движение.

На http://www.chess.com/blog/zaifrun есть серии или статьи о создании шахматного движка, если вы хотите более подробно рассмотреть, как они работают.


Хороший ответ, поэтому, когда вы видите глубину 30, значит ли это, что двигатель искал 30 узлов? Кроме того, что это означает под Ply?
xaisoft

Я не уверен, за что выступает Ply, не проводя дополнительных исследований, я никогда не разбирался в аббревиатурах. Скорее глубина относится к тому, сколько узлов в глубину, каждый узел будет на половину хода, или на глубину может зависеть от программиста. Тем не менее, я думаю, что соглашение будет иметь количество шагов глубоко.
Эдвард Гудсон

5
Сгиб - это половина хода. Ход в шахматах - это один полный «набор», если хотите, белым + черным. Слой - это половина этого, поэтому только один цвет.
ErebusBat

21

Вы задаете довольно сложный вопрос, но хорошо бы вернуться к основам. Есть несколько концепций для рассмотрения:

оценка

Если (настоящему) игроку показывают позицию и спрашивают «кто выигрывает в этой игре?», Как они решают? Скорее всего, они будут проверять несколько основных вещей, таких как: материальные различия, степень, в которой фигуры были разработаны или позиционированы «хорошо», удвоенные / изолированные / соединенные / пройденные пешки, (контролируемые) открытые файлы, как далеко вверх доска пешки.

Теперь, если вам нужно, вы можете придумать систематический способ подсчета баллов позиции на основе вышеизложенного. Например, вы можете решить, что пешка стоит 1 очко, а пройденная пешка - на 0,3 балла больше. Отдельные или сдвоенные пешки могут стоить немного меньше и т. Д. Если вы сложите все, вы получите оценочное значение для ближайшей позиции под рукой.

Это известно как оценка , и в основном все шахматные программы имеют способ оценивать позиции (игнорируя новаторские AI-шахматные движки, которые обычно очень слабы).

Но как насчет тонких, глубоких позиционных ходов?

Ну, мы только немного поцарапали поверхность оценки позиции. Реальная реализация функции оценки может быть упрощенной, чтобы позволить оценивать больше позиций в секунду (хотя и грубым образом), или более сложной, что приведет к меньшему количеству оцениваемых позиций, но с более высокой степенью достоверности. Функция оценки нередко учитывает сотни или даже тысячи отдельных частей информации.

Поиск

Я специально упустил что-то из вышеперечисленного, о чем сразу подумает большинство реальных игроков - есть ли способ немедленно выиграть игру для любой из сторон? Любые товарищи или "висящие" кусочки видны? Хотя это легко можно сделать тривиально, это совсем не тривиально.

Что означает для игрока полное доверие к комбинации? В конце концов, все сводится к тому, чтобы рассчитать все варианты. Реальные игроки, как правило, этого не делают (за исключением тривиальных или очень вынужденных товарищей), большую часть времени мы рассматриваем лишь несколько вариантов и исключаем другие, которые кажутся «неконструктивными» или явно приводят к проигрышу. , Мы часто допускаем ошибки во время этого расчета, например, мы можем понять, что изменение в порядке перемещения заставляет угрозы испаряться и т. Д. Дело в том, что, чтобы быть полностью уверенным в комбинации, вам действительно нужно рассчитать весь путь до ее завершения, предполагая, что каждый игрок сделает только лучший возможный ход, доступный для них (это называется «мин / макс»).

Теперь, учитывая, что у шахмат гораздо больше пространства для поиска (это то, что называется «всеми возможными ходами в будущем»), чем то, что компьютер способен вычислить, нужно идти на компромиссы. Как и люди, компьютеры могут принять решение игнорировать целые линии мышления на основе определенных критериев. Это известно как эвристика . Стоит отметить, что хотя вы можете быть действительно уверены в комбинации, только если ее перебор, сложная функция оценки часто может обнаруживать наличие угроз (например, мы могли бы подсчитывать вилки, возможности шампуров и т. Д., Чтобы вести поиск в этом направлении). ).

В конце концов, хотя компьютеры чрезвычайно быстры, именно эвристика позволяет им так глубоко рассчитывать. Тем не менее, вы можете быть удивлены, насколько глубоко современные движки рассчитывают полностью, как правило, это за 3 хода, даже в быстрых играх.

Заключение / объединение всего этого

Итак, подведем итог: в функции оценки встроен большой интеллект (т. Е. Они учитывают больше вещей, чем ваш обычный человек-игрок), эвристика позволяет компьютеру отбросить мысли, которые, по его мнению, вряд ли удастся завершить, и компьютеры очень, очень быстро. Сложите их, и их довольно сложно победить.


6

Я согласен с ответами.

Я помню, как гроссмейстер Роман Дзиндзичашвили говорил об этом в одном из видеороликов Романа , я не помню, какое это было видео (если кто-то знает детали, отредактируйте мой ответ).

Роман сказал, что разработчик движка Fritz - его друг. Таким образом, Роман проверил Fritz, чтобы увидеть, насколько он хорош, и разработчик сказал Роману, что для того, чтобы Fritz мог принимать сложные решения (например, жертвуя материалами в обмен на позиционное преимущество), они должны были изменить ценность кусков, например, сказать программе что плохой слон стоит 1 очко, слон на открытой диагонали стоит 7 очков, рыцари стоят 5 очков в близких позициях ...

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

РЕДАКТИРОВАТЬ

Смотрите также Вики по программированию шахмат .


4

Для компьютеров просто невозможно заглянуть достаточно глубоко (25 слоев и более) и проверить каждый возможный ход.

То, что делает возможным, - это метод альфа-бета-обрезки, который означает, что компьютеры, похожие на людей (но гораздо лучше), следуют только многообещающим продолжениям.

Они постоянно оценивают позиции (основываясь на некоторых предварительно закодированных правилах, оценивая материал, безопасность короля, активность, структуры пешек и т. Д.) И изучают варианты, которые, кажется, ведут их к лучшей позиции.

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

Итак, подведем итог - вы правы, они не могут смотреть на все ходы, если играют в стратегические шахматы, но они могут очень быстро посмотреть на приличные ходы. Проблема все еще в очень долгосрочных планах и горизонте, который они видят, но над этим работают (Рыбка анализирует гораздо медленнее, но играет в более позиционные шахматы, в то время как Гудини романтичен в своем «механическом сердце», рассчитывая больше ходов). и играть более агрессивно). Даже у компьютеров есть свои стили!


3

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

Большинство двигателей ищут первые несколько ходов на полную глубину, изучая все возможности. Если ни один ход не дает большого результата (т.е. кажется явно хуже, чем ход, который вы уже рассматривали), вы расширяете поиск немного больше. В общем, вы продолжаете исследовать каждую строку до тех пор, пока не достигнете спокойной позиции (без проверок, захватов, угроз спаривания и т. Д.), А затем проводите оценку. Тихие ходы могут не учитываться, когда они находятся глубоко в дереве поиска, но как только вы доберетесь до этой реальной позиции в игре, движок будет смотреть на все ходы, как тихие, так и острые. Иногда это можно увидеть на выходе двигателя, когда двигатель внезапно отдает предпочтение ходу, который он не рассматривал несколько шагов назад.

Двигатели рассчитывают так быстро, что для них не так важно думать, какой шаг посмотреть в первую очередь, но для людей это ключевой вопрос. Джонатан Тисдалл пытается ответить на этот вопрос в своей книге «Улучшите свои шахматы сейчас». Когда вы атакуете, он предлагает вам сначала посмотреть на самые жестокие движения. Когда вы защищаетесь, вы сначала смотрите на самые сложные линии. Он также цитирует позиционные эмпирические правила (например, централизация, координация) при принятии решения о том, что движется смотреть в первую очередь.

Другие книги, которые могут быть уместны, это «Невидимые шахматные ходы» Эммануэля Неймана и «Шахматные ходы» Чарльза Хертана, обе из которых доказывают важность рассмотрения маловероятных или неожиданных ходов на острых позициях. Хертан даже говорит о развитии «компьютерных глаз» для такой тактики.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.