Как «подправить» неправильные судоку. Алгоритм решения судоку, использующий систему ограничений

от автора

Разобран алгоритм, ориентированный главным образом на решение неправильных судоку (9×9), и на примерах показано, как можно их «подправить».
Правильное судоку имеет единственное решение, которое печатается, например, в газетах в виде одной заполненной цифрами таблицы. Но многие генераторы судоку из интернета, да и газеты (см. далее ссылку на архив газет) часто приводят головоломки судоку с одним (но вовсе не единственным) ответом на судоку. Получить нетривиальное правильное судоку непросто. Поэтому уместно, взяв за основу опубликованные неправильные судоку, «подправить» их, дополнив некоторыми условиями, и получить подправленные судоку с одним решением, которое можно представить (и напечатать) в виде одной таблицы как ответ на судоку.

Предыстория

  Как-то мне на глаза попалась распространяемая у нас в Код рекурсивной процедуры Perebor

Код рекурсивной процедуры Perebor

Анализ решенного судоку

Оказалось, что рассмотренное выше судоку имеет не одно, а 101 отличающееся друг от друга решение. Приведу для сравнения полученный Ответ номер 61 и Ответ на судоку из газетного номера № 36(513). Цифры разнятся в 38 ячейках — они в Ответе номер 61 закрашены розовым цветом.

Судоку из номера №36(513) с вариантами ответов

Судоку из номера №36(513) с вариантами ответов

Конечно, можно привести (и напечатать) как вариант решения Ответ на судоку и ещё одну таблицу с решением, максимально отличающимся от Ответа на судоку. Но вообще таких решений тоже может оказаться несколько. Так что лучше иметь судоку с единственным решением и печатать одну заполненную таблицу с ответом на него. Кроме того, единственность решения может существенно влиять на способ и время решения судоку.

Примеры «подправленных» судоку

Пример от sudoku.bestcrosswords.ru/generator

 Рассмотрим на примерах то, как можно «подправлять» неправильные головоломки для получения судоку с единственным решением. Следующий пример под номером № 149 сгенерирован на sudoku.bestcrosswords.ru/generator как «самый сложный судоку».

Исходное и «подправленное» судоку №149

Исходное и «подправленное» судоку №149

Генератор выдал таблицу с цифрами‑подсказками (они проставлены на рисунке на жёлтом фоне) и по запросу ОТВЕТ мгновенно выдал цифры решения. Программное решение этого действительно сложного судоку показало, что у него есть 26 918 отличающихся друг от друга ответов. Также как и в предыдущем примере, среди них найдётся решение с наибольшим числом клеток с цифрами, отличающимися от выданных генератором в качестве «ответа» на судоку. Это будет единственное решение, у которого 58 цифр в ячейках не совпадают со сгенерированным «ответом».

Но можно программно проанализировать таблицы с полученными решениями и выбрать дополнительные условия, выделяющие отдельные из них. Оказалось, что если потребовать, чтобы на главной и побочной диагоналях матрицы судоку располагались все различные цифры множества {1,..,9}, составляющие Полный Набор Цифр («Подправленные» судоку №36 (слева) и №37 (справа)

«Подправленные» судоку №36 (слева) и №37 (справа)

Судоку № 37(514) имеет 1553 отличающихся друг от друга решения. Дополнительное требование — обеспечить «Подправленные» судоку №38 (слева) и №39 (справа)

«Подправленные» судоку №38 (слева) и №39 (справа)

Судоку из номера № 39(516) имеет 615 решений. Требование обеспечить «Подправленные» судоку №40 (слева) и №41 (справа)

«Подправленные» судоку №40 (слева) и №41 (справа)

Судоку № 41(518) имеет изначально 65 решений. Дополнительное условие — иметь «Подправленные» судоку №42 (слева) и №43 (справа)

«Подправленные» судоку №42 (слева) и №43 (справа)

Судоку из № 43(520) имеет 21 не совпадающее друг с другом решение. Для него не удалось подобрать условие с требованием иметь дополнительное «Подправленные» судоку №44 (слева), №45 (в центре) и №46 (справа)

«Подправленные» судоку №44 (слева), №45 (в центре) и №46 (справа)

Судоку из номера № 45(522) имеет 26 153 не совпадающих друг с другом решений. Дополнительное условие с


ссылка на оригинал статьи https://habr.com/ru/articles/787496/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *