Skip to content

Метод решения судоку Forcing Net

Во многих источниках этом метод упоминается как "Последний шанс".

По моему мнению, есть методы которые можно применять Человеку, а некоторые из-за сложности и большого количества вариантов лучше доверить компьютеру. Так вот, этот метод для Людей и может помочь Вам в решении судоку уровня Эксперт.

Суть метода:

  1. Выбрать точку начала. Обычно это ячейка с двумя кандидатами, нужно выбрать один Узел и сделать предположение, что это правильное решение. Т.е. Вы принимаете, что это Узел-Истина.

  2. Начинаете раскрашивать всех остальных соседей кандидатов в красный по секторам, ячейкам.

  3. В ходе раскрашивания, могут появиться новые Узлы-Истина.

  • Если все кандидаты в секторе или ячейке кроме одного - красные, тогда последний Узел будет Истиной.
  • Можно использовать Линки/Связи. Для сильных линков, если любой конец окрасился, то другой конец окрашивается в противоположный цвет.
  1. Вы столкнулись с ошибочной ситуацией. То первоначальное предположение неверно.
  • Если в секторе два и более Узла-Истина для одной цифры
  • Если в секторе все Узлы-Ложь для одной цифры
  • Если в ячейке два Узла-Истина
  • Если в ячейке все Узлы-Ложь
  • (для Человека тяжело) Если у Вас получилась Deadly Pattern
  1. У Вас нет дальнейших ходов, тогда нужно попробовать метод с другим предположением, т.е. начать все сначала.

  2. У Вас получилось открыть все цифры, значит первое предположение было верным.


Пример

txt
098634000067821090002795000650248010024907600870306040906582400745163009280479000
{15}@A1;{1257}@A7;{257}@A8;{1257}@A9;{345}@B1;{35}@B7;{345}@B9;{134}@C1;{13}@C2;{138}@C7;{368}@C8;{13468}@C9;{39}@D3;{379}@D7;{37}@D9;{13}@E1;{15}@E5;{358}@E8;{358}@E9;{19}@F3;{15}@F5;{259}@F7;{25}@F9;{13}@G2;{37}@G8;{137}@G9;{28}@H7;{28}@H8;{13}@K3;{135}@K7;{356}@K8;{1356}@K9

1. Предположение

Сделаем предположение, что {1}@A1 - Истина

2. Импликация 1.

  • Если {1}@A1 => {!1}@A7, {!1}@A9 (соседи 1 по Строке A)
  • Если {1}@A1 => {!1}@C1, {!1}@E1 (соседи 1 по Столбцу 1)
  • Если {1}@A1 => {!1}@C1, {!1}@C2 (соседи 1 по Блоку 1)
  • Если {1}@A1 => {!5}@A1 (Сосед по клетке)
    Закрашиваем их красным.

forcing-net-010-x300Рис. 1. Forcing Net. Step 1

3. Импликация 2.

  • Если {!1}@C2 => {3}@C3 (Последний кандидат в клетке)
  • Если {!1}@E1 => {3}@E1 (Последний кандидат в клетке)
  • Если {!5}@A1 => {5}@B1 (Последний кандидат 5 в Блоке 1)

forcing-net-011-x300Рис. 2. Forcing Net. Step 2

4. Импликация 3.

  • Если {5}@B1 => {!3}@B1, {!4}@B1, {!5}@B7, {!5}@B9
  • Если {3}@C2 => {!3}@C7, {!3}@C8, {!3}@C9, {!3}@G2
  • Если {3}@E1 => {!3}@D3, {!3}@E8, {!3}@E9

forcing-net-012-x300Рис. 3. Forcing Net. Step 3

N. Импликация N (Последняя)

После выполнения всего раскрашивания, получится следующее.

forcing-net-014-x300Рис. 4. Forcing Net. Step N

Открытая судоку в примере

forcing-net-019-x300Рис. 5. Forcing Net. Открытая судоку

  • В приложении "Sudoku by Peter" этот метод реализован, использовался. Но был отключен, в связи со сложностью описания и восприятия решения по этому методу.