Является ли это правильной формальной эвристикой для недопустимых ходов из-за Ко?

В игре Го есть правило ко, которое в основном гласит, что немедленное возвращение одного камня не является допустимым ходом.

Я работаю над компьютерной программой Go и пытаюсь реализовать правило ko. Для эффективности меня устраивает более расслабленное определение, преследующее две цели:

  1. Это всегда предотвращает ходы, которые могли бы нелегально отбить ко.
  2. Он никогда не предотвращает ходы, которые являются законными

В настоящее время я хожу с:

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

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

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

Мой вопрос в том, соответствует ли моя эвристика двум заявленным целям. (Я думаю, что это так.)

Какие у вас есть доказательства того, что существует или может существовать более простое, но правильное определение? Правила игры в го уже достаточно просты, и их использовали и совершенствовали сотни лет.
Возможно, вы могли бы уточнить, какими неправильными решениями вы довольны. Я бы подумал, что кто-то предпочтет программу, которая предотвращает все незаконные и некоторые разрешенные ходы, программе, разрешающей все разрешенные и некоторые незаконные ходы, но мне кажется, что вы стремитесь к последнему.
@ForgetIwaseverhere Это была просто идея, и я не мог придумать непосредственной причины, почему это было бы неправильно, поэтому я и спросил: D
@PJTraill Он должен разрешать только разрешенные ходы и все разрешенные ходы. Этот вопрос касается, в частности, правила ко.

Ответы (2)

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

белый играть

Белые захватывают:

Теперь с вашим определением:

Если в предыдущем полуобороте был захвачен ровно один камень

В этом случае; белые захватили единственный камень.

то не разрешается играть на месте этого камня в следующие пол-оборота (другим игроком).

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

Интересно отметить, что «правила ко» в тибетском го таковы, что вам не разрешается играть на перекрестках, с которых только что был взят камень. Это означает, что для того, чтобы иметь возможность разыгрывать снэпбэки и многие другие тактические трюки, вам нужно иметь хотя бы одну ко-угрозу.

Ваше правило подходит для обнаружения простых kos, но не всех запрещенных повторений. РЕДАКТИРОВАТЬ: он неправильно запрещает Snapbacks, как показано в ответе balpha , и, таким образом, не соответствует вашему условию (2). Из вашего вопроса мне неясно, включают ли «ходы, которые нелегально отбивают ко», которые вы хотите предотвратить, только немедленные отбивания или также более поздние нелегальные отбивания; Поэтому я не могу сказать, выполняется ли ваше условие (1).

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

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

Да я и не стремился к суперко, только к простому ко. Я забыл сказать это. Спасибо за подсказку в ПС!