Есть ли какой-нибудь шахматный движок с режимом анализа, который может показать, является ли позиция принудительной ничьей с любой стороны?
Обычно двигатели выдают оценки 0,0, когда обнаруживают ничью. Но оценка 0,0 может означать много вещей. Например, если предположить, что это белый ход, оценка 0.0 может означать:
- Игра, безусловно, ничья, независимо от того, как играет один из игроков (например, недостаточно материала).
- Оба игрока могут форсировать ничью. Ни один из игроков не может надеяться на победу, если их противник играет идеально.
- Независимо от того, какие ходы играют белые, компьютер на 100% уверен, что черные могут форсировать ничью, если захотят. Белые не могут надеяться на победу, если черные играют идеально. Ничья - наиболее вероятный результат, но более глубокий поиск может показать, что черные могут добиться победы.
- Компьютер на 100% уверен, что белые могут форсировать ничью, если захотят. Черные не могут надеяться на победу, если белые играют идеально. Ничья - наиболее вероятный результат, но более глубокий поиск может показать, что белые могут добиться победы.
- Компьютер не обнаружил принудительного розыгрыша ни для одной из сторон, но оценка пока точно ровная. Ничья - наиболее вероятный результат, но более глубокий поиск может позже показать преимущество для одной стороны.
Просто для примера, когда это может быть полезно, если белым не нужно побеждать и они просто хотят быть как можно более уверенными в получении ничьей, тогда они могут предпочесть сыграть ход с оценкой +0,0 и известной принудительной ничьей. хотя возможен еще один ход с более высокой оценкой.
Другой пример: если вам нужен выигрыш (т. Е. Ничья столь же плоха, как проигрыш), вы можете захотеть сыграть ход с небольшой отрицательной оценкой, чтобы не дать противнику возможность форсировать ничью. Даже если это увеличивает ваши шансы на проигрыш, оно также увеличивает ваши шансы на выигрыш.
Очевидно, есть позиции, где трудно или невозможно быть уверенным в том, доступна ли принудительная ничья или нет. Но если двигатель объявляет принудительную ничью, то должна быть возможность усилить ничью. Ложные негативы допустимы, но не должно быть ложных срабатываний.
Итак, в заключение, я хотел бы знать для конкретной позиции, если один (или оба игрока) имеют принудительную ничью для них. Вычислять числовую оценку позиции не нужно, но если она также обеспечивает это одновременно, это бонус.
Ответы:
Короткий ответ на ваш вопрос - нет , нет шахматного движка, который мог бы достоверно показать, если у одной из сторон есть принудительная ничья. Например, эта запертая позиция довольно явно привлекает человеческий глаз:
Однако обратите внимание, что оценка составляет 0,17 , а не 0,00 . Гудини также дает 0,05 - очень хорошо для белых. Это очень важно. Это говорит о том, что оценка 0,00 зарезервирована этими программами по определенной причине, и это действительно так. В принципе, даже в «равной» позиции компьютер никогда не скажет, что счет равен 0,00 , вместо этого он даст минутный перевес одной или другой стороне.
Так что с этим фоном, к конкретике! Во-первых, если игра является ничьей из-за позиции (то есть патовая ситуация, недостаток материала и т. Д.), В большинстве графических интерфейсов появится сообщение «Game Drawn» или что-то в этом роде. Это оставляет более сложные случаи, которые вы упомянули в своем вопросе. Чтобы охватить большинство из них, я представлю другую позицию. Это взято из Morphy-NN 1-0, New Orleans Blindfold Simul:
Обратите внимание, что у Морфи в настоящее время есть помощник в 6, начиная с
18.b4+!
. Однако, если Морфи как-то упустил, что это был приятель, у него все равно бытело повторение, которое компьютер быстро видит. Увеличивая количество вариантов, которые отображает компьютер, можно увидеть, что после того, как белые разыгрывают ход, подобный тому18.Qxc3+?
, белый все еще может форсировать ничью, несмотря на то, что у него нет ладьи и фигуры. Оценка 0,00 снова наводит нас на мысль, что это особая позиция, в которой компьютер может вычислить вечный чек. Если18.Qxc3+? Kxd5
на доске сделаны ходы , то оценка будет равна 0,00 , что указывает на то, что лучшим продолжением для белых является форсирование ничьей. Невыполнение этого приведет к потере игры с лучшей игрой.Подводя итог, ни один из существующих движков не может с полной уверенностью сказать, что позиция - ничья. Тем не менее, оценка 0,00 является особенной, и если она отображается либо в качестве основного балла, либо в балле за вариацию, это означает, что в этой конкретной линии возможно форсирование ничьей. Самый простой способ проверить это игриво называется «анализ пробела» - когда пользователь снова и снова нажимает клавишу пробела, чтобы заставить компьютер сыграть верхний рекомендуемый ход. В конце концов вы попадете на позицию, которая очевидна как для человека, так и для машины.
И наконец, чтобы ответить на ваш вопрос о «презрении»
Это просто называется презрением среди шахматных программистов. Большинство движков позволят вам установить уровень презрения в настройках. Положительная настройка презрения (обычно 100 - приемлемый уровень для анализа) скажет движку довольно стараться (ценность пешки), чтобы избежать ничьей. Отрицательная настройка приведет к тому, что двигатель будет вынужден тянуть (например, нехватка материала, тупик или вечность).
источник
Точно так же, как двигатели в определенные моменты видят, что вынужденный помощник находится на некотором расстоянии от него, потому что имеется достаточно силовых линий, чтобы двигатель мог все прекрасно видеть на оставшейся глубине, пока мате не было, в шахматных играх также есть моменты, которые могли двигатель, чтобы увидеть принудительную ничью по той же причине, что и возможность полностью изучить ограниченные возможности в игре.
Более того, было бы легко настроить функцию оценки движка, чтобы заставить его искать и отдавать предпочтение ходам, которые приводят к таким вынужденным ничьям: точно так же, как достижению сопряжения обычно дают какое-то огромное значение, которое затмевает все другие числовые факторы, что алгоритм оценки движка Рассматривая для того, чтобы направить игру двигателя к конечной цели, можно вместо этого придать такую огромную численную ценность достижению одного из видов ничьих, которые я имею в виду.
Например, автоматически оценивать любую позицию, в которой у противника недостаточно материала для спаривания, как +1000000. Затем, если двигатель когда-либо окажется с возможностью откачивать столько материала противника, он сообщит вам. Кроме того, настройте алгоритм оценки для оценки любого трехкратного повторения как +1000000 вместо обычного 0. Затем, если есть принудительное повторение (как в сценарии вечной проверки), движок полюбит его и сообщит вам об этом , Точно так же, дайте +1000000, если можно принудительно достичь ничьей на основе таблицы.
Вы также можете убедиться, что движок будет давать эти оценки только тогда, когда есть полная уверенность в том, что ничьи действительно являются принудительными (потому что дерево между здесь и там было в состоянии быть полностью проверенным), так же как с двигателем, не объявляющим мат, если только он уверен. Таким образом, вы не получите ложных срабатываний, хотя, конечно, будет много ложных отрицаний, которые вы разумно / обязательно допустите в своем вопросе.
источник