У меня возникли проблемы с пониманием того, как применять правило ко. Например, в описании в Википедии есть пример, где потенциально может применяться правило ко. Но предположим, что на доске было два, или три, или четыре таких сценария. Действительно ли нужно отслеживать все прошлые состояния доски? Будете ли вы просто продолжать круг за кругом, и тот, кто создал последнюю исходную конфигурацию доски, получит эти очки?
Ко только мешает игроку сделать ход, который приведет к возвращению доски в положение, в котором она находилась непосредственно перед последним ходом его противника. Так что единственное, что вам когда-либо нужно отслеживать, — это то, на что была похожа доска непосредственно перед тем, как ваш противник сделал свой последний ход; вы не можете двигаться так, чтобы воссоздать это положение.
Все дальнейшее описание в вики объясняет, что сделает игрок, если ход, который он хочет сделать, будет предотвращен ко. Они делают ход где-то еще на доске, что вынуждает черных ответить на него; тем самым освобождая их для игры, которую они не могли сыграть на предыдущем ходу из-за ко.
Теоретический ответ зависит от того , чьи правила вы используете, потому что разные страны используют разные правила и имеют разные способы решения описанной вами ситуации с несколькими ко 1 .
На практике это почти никогда не происходит, и обычно легко отследить, поскольку происходит что-то еще, чтобы изменить состояние всей доски, например, ход на ранее незанятую точку - обратите внимание, что правило применяется к состоянию всей доски. Поэтому также обычно не имеет значения, какие правила вы используете. Кроме того, хотя игра обычно заканчивается с большим количеством кос 2 на пол-очка , нет никакого преимущества в том, чтобы сражаться более чем с одним из них: правильная игра состоит в том, чтобы оставить их всех до тех пор, пока не останется других очков, а затем соединиться, если можно, бери если не можешь и дерись только с самым последним.
Все органы запрещают немедленный повторный захват. Основные подходы к сложным повторяющимся позициям:
(По состоянию на 08.04.2020) Википедия дает больше подробностей в статье Rules of Go , чем по ссылке, которую вы дали , но для всестороннего обсуждения вам лучше подойдет статья Superko in Sensei's Library. Правильный порядок игры в полуочковых косах в конце игры смотрите в статье. Полточка Ко (также Библиотека Сэнсэя).
Жаль, что вы не могли поделиться с нами игрой с вашим сыном, где это возникло, что было бы интересно.
1 « Ко » здесь относится к единственной позиции, где захват-повторный захват был бы возможен, если не запрещен.
2 Половинчатое ко — это такое, когда все, что поставлено на карту, — это само взятие. Это исключает kos для жизни группы или просто для того, чтобы решить, нужно ли заполнить точку территории.
3 «Посылая два, возвращая один» — ситуация (обычно часть сэки ), при которой одна сторона может пожертвовать двумя камнями, а затем отбить, воссоздав предыдущую позицию. Это можно использовать для продления игры на неопределенный срок, хотя каждый цикл стоит одно очко, если используется подсчет территории .
Super Ko можно эффективно обнаружить с помощью хеширования Зобриста.
https://en.wikipedia.org/wiki/Zobrist_hashing
https://www.gnu.org/software/gnugo/gnugo_11.html#SEC144
Идея состоит в том, чтобы выбрать случайное 64-битное целое число для представления каждой 2x19x19 = 722
позиции на доске. Пустая доска имеет хеш-значение 0. Когда вы добавляете камень на доску, вы получаете XOR
текущий хэш доски по хэш-значению, которое представляет камень в этой позиции. Вы делаете то же самое для удаления ( XOR
будучи самообратным). Теперь вы сжали состояние игры в одно 64-битное целое число и просто проверяете, видели ли вы это целое число раньше.
Предполагается, что коллизий хешей нет. Это явно не так, потому что есть 3^361
состояния доски (хотя многие из них будут незаконными), а ваш хэш равен < 64^2
. Однако предполагается, что в вашей игре из нескольких сотен ходов шансы получить столкновение настолько малы, что об этом не стоит беспокоиться. Если вы получите коллизию, вы можете проверить ее, если сохраните полное состояние, но маловероятно, что вы найдете что-то кроме идеального совпадения, так что можете и не беспокоиться.
Для этого вам понадобится что-то вроде трех кос.
Но допустим, что есть два игрока, X и Y. Игрок X берет первое ко. Игрок Y принимает второе ко как «угрозу ко». Игрок X берет в ответ третье ко. Игрок Y повторно берет первое ко. И т.п.
Правило ко служит для предотвращения повторения между одним или двумя косами. Но если кос будет достаточно, чтобы можно было брать их по «круговой системе», то игра может продолжаться бесконечно.
мафу
PJTrail