Есть ли какой-нибудь шахматный движок, который может показать, если у одной из сторон есть принудительная ничья?

11

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

Обычно двигатели выдают оценки 0,0, когда обнаруживают ничью. Но оценка 0,0 может означать много вещей. Например, если предположить, что это белый ход, оценка 0.0 может означать:

  • Игра, безусловно, ничья, независимо от того, как играет один из игроков (например, недостаточно материала).
  • Оба игрока могут форсировать ничью. Ни один из игроков не может надеяться на победу, если их противник играет идеально.
  • Независимо от того, какие ходы играют белые, компьютер на 100% уверен, что черные могут форсировать ничью, если захотят. Белые не могут надеяться на победу, если черные играют идеально. Ничья - наиболее вероятный результат, но более глубокий поиск может показать, что черные могут добиться победы.
  • Компьютер на 100% уверен, что белые могут форсировать ничью, если захотят. Черные не могут надеяться на победу, если белые играют идеально. Ничья - наиболее вероятный результат, но более глубокий поиск может показать, что белые могут добиться победы.
  • Компьютер не обнаружил принудительного розыгрыша ни для одной из сторон, но оценка пока точно ровная. Ничья - наиболее вероятный результат, но более глубокий поиск может позже показать преимущество для одной стороны.

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

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

Очевидно, есть позиции, где трудно или невозможно быть уверенным в том, доступна ли принудительная ничья или нет. Но если двигатель объявляет принудительную ничью, то должна быть возможность усилить ничью. Ложные негативы допустимы, но не должно быть ложных срабатываний.

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

Марк Байерс
источник
Разве не зная эту часть смысла столов с шестью частями эндшпиля?
Тони Эннис
2
Базы стола помогают, потому что тогда вы знаете, что счет 0.0 - это, безусловно, принудительная ничья с оптимальной игрой. Но я бы хотел, чтобы двигатель сообщал мне, находит ли он принудительную ничью из любой произвольной стартовой позиции, в том числе (особенно), когда более 6 штук. Например, если белые попадают в положение, в котором они могут принудительно проводить постоянную проверку, я бы хотел, чтобы механизм сказал мне об этом, даже если это не обязательно лучший ход белых в соответствии с функцией оценки.
Марк Байерс
Мне любопытно, когда вы на самом деле сможете воспользоваться такими расчетами на практике. Это было бы хорошей особенностью. В аквариуме я использую функцию «множественных вариаций» анализа UCI, которая сортирует ходы в порядке их оценки. Принудительные розыгрыши появляются в листинге довольно очевидно, когда они представляют собой вечные чеки или патовые ситуации, но иногда это менее очевидно, и, как вы говорите, если вы пойдете глубже, это может быть не ничья.
Ева Фриман
1
Но как насильно вынужден? Я думаю, что во многих случаях так называемых принудительных ничьих противник все еще может отклоняться, но за счет явно худшей позиции. Позиция, в которой белые могут форсировать ничью или полную ладью, не будет вынужденной ничьей, ограничивающей полезность.
RemcoGerlich
Если бы белые могли форсировать ничью вместо того, чтобы поднять ладью, я бы хотел это знать.
Марк Байерс

Ответы:

9

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

Закрытая позиция, безнадежная ничья

Однако обратите внимание, что оценка составляет 0,17 , а не 0,00 . Гудини также дает 0,05 - очень хорошо для белых. Это очень важно. Это говорит о том, что оценка 0,00 зарезервирована этими программами по определенной причине, и это действительно так. В принципе, даже в «равной» позиции компьютер никогда не скажет, что счет равен 0,00 , вместо этого он даст минутный перевес одной или другой стороне.

Так что с этим фоном, к конкретике! Во-первых, если игра является ничьей из-за позиции (то есть патовая ситуация, недостаток материала и т. Д.), В большинстве графических интерфейсов появится сообщение «Game Drawn» или что-то в этом роде. Это оставляет более сложные случаи, которые вы упомянули в своем вопросе. Чтобы охватить большинство из них, я представлю другую позицию. Это взято из Morphy-NN 1-0, New Orleans Blindfold Simul:

Морфи - NN 1-0, Новый Орлеан с завязанными глазами Симул

Обратите внимание, что у Морфи в настоящее время есть помощник в 6, начиная с 18.b4+!. Однако, если Морфи как-то упустил, что это был приятель, у него все равно бытело повторение, которое компьютер быстро видит. Увеличивая количество вариантов, которые отображает компьютер, можно увидеть, что после того, как белые разыгрывают ход, подобный тому 18.Qxc3+?, белый все еще может форсировать ничью, несмотря на то, что у него нет ладьи и фигуры. Оценка 0,00 снова наводит нас на мысль, что это особая позиция, в которой компьютер может вычислить вечный чек. Если 18.Qxc3+? Kxd5на доске сделаны ходы , то оценка будет равна 0,00 , что указывает на то, что лучшим продолжением для белых является форсирование ничьей. Невыполнение этого приведет к потере игры с лучшей игрой.


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


И наконец, чтобы ответить на ваш вопрос о «презрении»

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

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

Андрей
источник
Это примерно та же идея, что и в комментарии Уэса Фримена к вопросу, и точно так же, как и то, что он описывает, требует некоторого человеческого вклада: «Принудительные розыгрыши появляются в списке довольно очевидно [иногда], но иногда это менее понятно» - ваш ответ человеческий вклад "анализ пробела". Вот почему я предлагаю настроить функцию оценки в своем ответе; мы делаем это так, чтобы сам движок действительно выявлял принудительные отрисовки и сообщал нам, когда они окончательно присутствуют. Это, кажется, единственное существенное различие между подходами.
ETD
@ Eddean Я согласен. Труднее всего найти те, в которых эндшпиль не может быть выигран, но одна сторона может настаивать на победе вечно. Отдельно, изменение функции eval для двигателей было бы одним из подходов, но, скорее всего, это не то, что можно сделать в разумные сроки. Сейчас можно поиграть с настройками презрения, но это не то же самое, что перепрограммирование движка, как вы предлагаете. Редактируемые человеком настройки довольно ограничены на современных движках.
Андрей
Эта обстановка презрения аккуратна - не заметила этого.
Ева Фриман
2
Кстати, я не думаю, что 0,00 всегда указывает на форсированную ничью, которую вы, похоже, подразумевали. Я вижу это иногда даже в начале дебюта - я предполагаю, что это просто означает, что с учетом текущей позиции и материала, это, вероятно, даже, и оценка оказывается 0,00.
Ева Фриман
3
Интересно. У вяленой рыбы это точно нет. Если проанализировать начальную позицию в течение нескольких секунд, вы получите множество 0,00 баллов.
Ева Фримен
4

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

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

Например, автоматически оценивать любую позицию, в которой у противника недостаточно материала для спаривания, как +1000000. Затем, если двигатель когда-либо окажется с возможностью откачивать столько материала противника, он сообщит вам. Кроме того, настройте алгоритм оценки для оценки любого трехкратного повторения как +1000000 вместо обычного 0. Затем, если есть принудительное повторение (как в сценарии вечной проверки), движок полюбит его и сообщит вам об этом , Точно так же, дайте +1000000, если можно принудительно достичь ничьей на основе таблицы.

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

расчетное время отправления
источник
Я не думаю, что какой-либо двигатель будет работать как этот "из коробки" из-за факторов презрения и способа, которым они сокращают. В основном, если бы ничья была найдена, любая линия, которая выиграла материал, будет исключена. Так, например, проверка короля предпочтительнее, чем захват свободной ладьи. Я планирую опубликовать более длинный ответ, потому что есть способы использовать существующие движки для этого, но я не хочу раскрывать слишком много секретов подготовки. ;)
Андрей
Ни один движок не будет работать так, как я описал «из коробки», это правда, поскольку они предназначены для поиска побед; по той же причине, вам нужно сделать некоторые настройки, чтобы заставить нормальный двигатель играть, скажем, в шахматы-самоубийцы. У меня уже есть изменения в функции оценки; любой фактор презрения можно настроить / отключить вместе с тем, что я предложил, если это необходимо, да? Моя главная мысль заключается в том, что я думаю, что существующие двигатели могут быть переориентированы (достаточно простым способом), чтобы работать так, как хочет Марк. Так что, по крайней мере, на данный момент я все еще вижу в этом способ «использовать современные двигатели». Мой разум всегда может быть изменен, хотя. :)
ETD