Гайды / Принудительная цепь Нисио
Принудительная цепь Нисио
> Предварительное условие: [Chain Basics](learning://chains)
Advanced
Принудительная цепь Нисио
Предварительное условие: Chain Basics
Обзор
Цепь принуждения Нисио — это метод исключения доказательств и противоречий.
Когда кандидат выглядит «подозрительно», но убрать его прямым методом не получается, можно сделать так:
- выберите кандидата для тестирования (красный)
- предположим, что это правда
- распространять принудительную истину/ложь (синий = принудительная правда, желтый = принудительная ложь)
- если вы пришли к противоречию (например, в строке нет места для цифры)
⇒ предположение невозможно
⇒ исключить стартового кандидата
Прохождение

На изображении выше красная цель исключения — кандидат 5 в r1c3.
Мы начнем доказательство противоречия с предположения, что r1c3 = 5 истинно.
Затем мы следуем цепочке принуждения:
- синие кандидаты в этом предположении оказываются верными.
- желтые кандидаты в этом предположении оказываются ложными
Вам не нужно сначала проверять каждый переход — сосредоточьтесь на противоречии:
В этом примере цепочка в конечном итоге исключает всех кандидатов 7 в строке 1, что означает, что в строке 1 нет места для цифры 7.
Но каждая строка должна содержать цифры от 1 до 9, поэтому это противоречие.
Следовательно, предположение r1c3 = 5 не может быть верным, и кандидат 5 в r1c3 можно исключить.
Примеры
Вот еще два примера Нисио. Попробуйте следовать такому порядку просмотра: красное начало (предположим, что это правда) → распространение синего/жёлтого → противоречие → устранение красного.


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