Готов играть?

Играть в судоку!

Принуждающие сети

ЭкстремальныеКлассика + КиллерШаг 37 из 384 минуты чтения

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

В чем суть шаблона

Цепочка идет по одной линии следствий. Сеть ведет такую линию для каждого варианта начальной ячейки или области, и в общем случае линия может снова расщепиться: вывод может требовать сразу двух прежних выводов, например «эта ячейка равна 4 и та ячейка равна 9, значит в блоке остается только одно место для 7». Проверка всех вариантов делает сети сильнее цепочек и медленнее в проверке.

Начать можно двумя способами и закончить тоже двумя:

Начинаем сТы ведешьЭто доказывает
Ячейки с k кандидатамипо ветви на кандидатавсе, что общее для всех ветвей
Цифры с k местами в одной областипо ветви на местовсе, что общее для всех ветвей

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

Когда его искать

Только когда все более дешевое не сработало: одиночки, заблокированные множества, рыбы, крылья, цепочки и Almost Locked Sets. Сети дорого прослеживать, и в них легко ошибиться, поэтому это осознанный последний логический шаг, а не привычка. Выбирай начальную ячейку с двумя кандидатами и множеством соседей с двумя кандидатами: ветви остаются короткими, и все можно проверить.

Как применять, шаг за шагом

  1. Обнови все заметки. Сеть, построенная на устаревшем кандидате, ничего не доказывает.
  2. Выбери ячейку с двумя кандидатами или цифру с двумя местами в области.
  3. Предположи первый вариант и выпиши только те постановки, которые действительно вынуждены.
  4. Полностью отмени его и сделай то же для второго варианта.
  5. Сравни ветви. Оставь любую общую постановку или исключение.
  6. Если ветвь противоречит сама себе, сразу отбрось этого кандидата.

Разбор примера

Старт с ячейки

  1. Более простые приемы исчерпаны. Посмотри на H1: там может быть только 1, 5 или 7.

  2. В H1 должно быть 1, 5 или 7. Проверь каждое значение по очереди и следи за 7 в C1.

  3. Ветка 1: H1 = 7. C1 делит столбец 1 с H1, поэтому не может быть 7.

  4. Ветка 2: H1 = 1. Тогда A1 не может быть 1, значит A1 равна 7, а C1 не может быть 7 (снова столбец 1).

  5. Ветка 3: H1 = 5. E1 теряет 5 (столбец 1), поэтому F3 единственное место для 5 в блоке 4.

    При F3 = 5 F8 единственное место для 8 в строке F. Тогда C8 не может быть 8, и C1 единственная 8 в строке C.

    C1 = 8, значит C1 не 7.

  6. Пробные значения сняты. Все три ветки заканчиваются тем, что C1 не равна 7.

    7 исключается из C1, потому что каждое значение H1 ее запрещает.

Более простые приемы исчерпаны. Посмотри на H1: там может быть только 1, 5 или 7.

В H1 стоят , цель это 7 в C1. Каждое значение H1 прослеживается по очереди:

  • H1 = 7: C1 делит столбец 1 с H1, поэтому не равна 7.
  • H1 = 1: A1 не может быть 1, поэтому A1 равна 7, и C1 не равна 7 по той же причине, что и в столбце.
  • H1 = 5: E1 теряет свою 5, поэтому F3 это единственная 5 в блоке 4. Тогда F8 это единственная 8 в строке F, C8 не может быть 8, и C1 это последняя 8 в строке C. C1 = 8, значит C1 не равна 7.

Все три ветви заканчиваются тем, что C1 не равна 7, поэтому C1 теряет свою 7. Чему равна H1, ты так и не узнаешь: ветви сделали свое дело и были выброшены.

Старт с цифры в области

  1. Более простые приемы исчерпаны. Посмотри на семерки в блоке 7.

  2. Блоку 7 нужна 7, и она может стоять только в G2, H2 или J3. Проверь каждое место и следи за 7 в A2.

  3. Ветки 1 и 2: если 7 стоит в G2 или в H2, то A2 не может быть 7, ведь все три ячейки в столбце 2.

  4. Ветка 3: J3 = 7. Тогда J3 не 5, и A3 становится единственным местом для 5 в столбце 3.

    При A3 = 5 A2 единственное место для 1 в строке A. A2 = 1, значит она не 7.

  5. Пробные значения сняты. Куда бы блок 7 ни поставил свою 7, A2 остается без 7.

    7 исключается из A2.

Более простые приемы исчерпаны. Посмотри на семерки в блоке 7.

Блоку 7 нужна 7, и она может встать только в G2, H2 или J3. Цель это 7 в A2:

  • 7 в G2 или H2: A2 делит столбец 2 с обеими ячейками, поэтому не равна 7.
  • 7 в J3: тогда J3 не равна 5, поэтому A3 это единственная 5 в столбце 3. При A3 = 5 ячейка A2 это единственная 1 в строке A, значит A2 = 1 и не равна 7.

Куда бы блок 7 ни поставил свою 7, в A2 нет 7, поэтому A2 теряет ее.

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

Частые ошибки

  • Оставлять на поле отметки одной ветви, когда начинаешь следующую. Каждая ветвь должна начинаться с одной и той же нетронутой позиции.
  • Идти по «наверное» вместо вынужденной постановки. Записывать можно только одиночки и заблокированные исключения.
  • Пропустить кандидата начальной ячейки. Пропусти одну ветвь, и согласие ничего не стоит.
  • Считать противоречие в одной ветви доказательством выводов остальных ветвей.

Где это встречается

Принуждающие сети это то, чего требуют наши самые трудные сетки. Жди их в головоломках уровня Легенда и только после того, как попробованы цепочечные методы вроде 3D Medusa. Все, что решает сеть, в принципе мог бы решить и более короткий метод. Сеть нужна, когда ты не можешь найти этот более короткий метод.