Как решить судоку если зашел в тупик
Перейти к содержимому

Как решить судоку если зашел в тупик

  • автор:

Решение судоку Разрешение концептуальных моделей

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

Рассмотрим на примере простого судоку:

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

Разрешение вспомогательной модели возможно только в том случае, если в данном конкретном элементе (в нашем случае это квадрат с левым верхним углом A4) отсутствует только одна цифра. В данном случае это верно, поэтому после нажатия данной кнопки мы получим результат:

В случае нажатия на кнопку «Разрешить все вспомогательные модели» программа в бесконечном цикле будет проходить по всем возможным вспомогательным моделям до тех пор, пока они имеют решение. Принципиально это выглядит следующим образом:

Метод полного перебора

Метод полного перебора действует следующим образом:

  1. Ведётся поиск первого вхождения 0 (то есть пустой клетки)
  2. Если вхождений нет, значит мы получили решение
  3. Определяются цифры, которые могут входить в данную клетку (с учётом столбца, строки и малого квадрата). Определение осуществляется функцией:

c = [s[j] for j in range(81) if not ((i-j)%9 * (i//9^j//9) * (i//27^j//27 | (i%9//3^j%9//3)))]

  1. (i-j)%9 – вхождение в столбец
  2. (i//9^j//9) – вхождение в строку
  3. (i//27^j//27 | (i%9//3^j%9//3)) – блок из трёх строк
  4. В случае вхождения получается 0
  1. Для всех чисел, которые могут стоять в данной строке рекурсивно вызывается функция перебора, где на месте пустой клетке стоит некоторое число
  2. Если нет чисел, которые мы можем вставить в данную клетку, значит метод зашёл в тупик и следует выход из рекурсии на шаг выше.

Несмотря на то, что существует порядка финальных вариантов судоку (то есть всех возможных расположений), метод брутфорса может быть полезен для решения задачи судоку на компьютере. Действительно, для указанного простого судоку подобный метод перебора получил решения за 0.0163с. Но существуют задачи, которые алгоритм полного перебора будет решать очень долго. Возьмём для примера судоку под названием «Star Burst Leo» Было оценено, что для решения данного судоку потребуется 641 580 331 итерация, причём в данном случае в итерации не входит процесс поиска цифр, которые можно внести в данную клетку. На рисунке 16 показано распределение числа заполненных клеток (ось ординат) от уровня рекурсии (ось абсцисс). Таким образом можно оценить, что процесс перебора доходит до 72 заполненных клеток, а затем встречает несоответствие и ему приходится возвращаться, причём мы видим чёткие полосы в районе 33, 43 и 60 заполненных клеток.

Логические методы решения

Очевидно, что предложенный выше метод хорош для компьютерного моделирования. Но очевидно, что человек на практике никогда не будет пользоваться таким методом. Для этого существуют другие методы. Обычно решение судоку начинают с расставления чисел, которые могут стоять в данной клетке. Первая часть метода аналогична методу полного перебора, но в отличие от него, сначала мы просто оцениваем элементы, которые могут стоять в клетках, а затем минимизируем количество вариантов. Пример подобного анализа представлен на рисунке ниже: Все методы рассматриваются в статье [2], но здесь я опишу несколько из них. Первый метод – Х-крыло. «X-крыло» — позиция, когда один из кандидатов дважды (и только дважды) встречается в двух строчках головоломки. Эти кандидаты должны входить в две колонки, что обеспечивает формирование прямоугольного Х-крыла. Также две колонки с двумя (и только с двумя) клетками, которые содержат одинаковых кандидатов (входящие в две строки) также формируют X-крыло. Эти четыре клетки — единственные возможные места расположения для «настоящих» кандидатов в этих строках или колонках. Другие подобные кандидаты, расположенные по периметру прямоугольника, образованного «настоящими» кандидатами, должны быть удалены. Возможно эта комбинация была названа X-крылом потому, что Рассмотрим пример решения Х-крыла (рисунок вверху). Как видим, для легкости восприятия из кандидатов отображены только шестерки (был применен фильтр кандидатов — программа Simple Sudoku это умеет делать). Синие и ярко-зеленые ячейки формируют классическое «X-крыло» — первая и девятая строчки имеют только по две ячейки с кандидатом 6, их разделяют две колонки (седьмая и восьмая), кандидаты образуют прямоугольник. «Настоящих» кандидатов представляют синие, или ярко-зеленые ячейки. Потому другие кандидаты в шестой и девятой колонках нужно удалить (они выделены желтым контуром). Slicind and dacing Рассмотрим метод slicing and dacing на примере: На первом шаге рассматриваются пересечения столбца и строки для цифры 1 в рамках квадрата G1-I3. Получается, что 1 может стоять либо на позиции H1 либо на позиции I1. На основе полученного результата на первом шаге просматривается полученная строка. В квадрате D1-F3 с учётом стоящей на позиции E8 единицы и полученной на первом шаге строки остаётся только одна позиция – D2. Таким образом, после работы алгоритма получаем судоку: Аналогичным образом можно получить единицы во всех остальных малых клетках. Метод предположений похож на метод полного перебора. Но применяется он после применения вышеуказанных методов. Рассмотри на примере: При решении стандартными логическими методами (скрытые пары, скрытые квадраты и т. п.) решение не найдено: Но мы видим, что в клетках B3 и C3 может стоять только пара 46. Алгоритм делает предположение, что стоит в B3 стоит 4, доходит до несоответствия, ставит 6 и получает результат: Таким образом исходное судоку разрешено. Блок-схема алгоритма выглядит следующим образом:

Что такое судоку и как в нее играть?

Судоку — это популярная логическая головоломка с цифрами. Ее правила довольно просты. Со схемами начального уровня справится даже новичок.

Итак, каковы же основные правила судоку?

  • Игровое поле представляет собой квадрат размером 9×9 ячеек.
  • Вписывать в них можно только цифры от 1 до 9.
  • Каждый блок 3×3 содержит 9 цифр — от 1 до 9.
  • Каждый вертикальный столбец тоже содержит 9 цифр — и тоже от 1 до 9.
  • Каждая горизонтальная строка тоже содержит 9 цифр от 1 до 9.
  • Каждая цифра может встречаться в квадрате 3×3, в столбце и в строке только один раз.
  • Как только вы заполните верными цифрами все поле — игра окончена.

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

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

О студии Easybrain

Easybrain является разработчиком мобильных игр, среди которых и Sudoku.com — одно из самых популярных приложений в App Store и Google Play. С августа 2018 года Easybrain является владельцем сайта Sudoku.com.

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

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

1.1 «Последний герой»

Рассмотрим седьмой квадрат. Всего четыре свободных клетки, значит что-то можно быстро заполнить.
«8» на D3 блокирует заполнение H3 и J3; точно также «8» на G5 закрывает G1 и G2
С чистой совестью ставим «8» на H1

1.2 «Последний герой» в строке

После просмотра квадратов на очевидные решения, переходим к столбцам и строкам.
Рассмотрим «4» на поле. Понятно, что она будет где-то в строке A.
У нас есть «4» на G3, что зыкрывает A3, есть «4» на F7, убирающая A7. И ещё одна «4» во втором квадрате запрещает её повтор на A4 и A6.
«Последний герой» для нашей «4» это A2

1.3 «Выбора нет»

Иногда есть несколько причин для конкретного расположения. «4» в J8 будет отличным примером.
Синие стрелки показывают, что это последнее возможное число в квадрате. Красные и синие стрелки дают нам последнее число в столбце 8. Зеленые стрелки дают последнее возможное число в строке J.
Как видим, выбора у нас нет, кроме как поставить эту «4» на место.

1.4 «А кто, как не я?»

Заполнение чисел проще проводить вышеописанными методами. Однако проверка числа, как последнего возможного значения, тоже даёт результаты. Метод стоит применять, когда кажется, что все числа есть, но чего-то не хватает.
«5» в B1 ставится исходя из того, что все числа от «1» до «9«, кроме «5» есть в строке, столбце и квадрате (отмечено зеленым).

На жаргоне это «Голая одиночка«. Если заполнять поле возможными значениями (кандидатами), то в ячейке такое число будет единственным возможным. Развивая эту методику, можно искать «Скрытые одиночки» — числа, уникальные для конкретной строки, столбца или квадрата.

2. «Голая миля»
2.1 «Голые» пары

««Голая» пара» — набор из двух кандидатов, расположенных в двух ячейках, принадлежащих одному общему блоку: строке, столбцу, квадрату.
Понятно, что правильные решения головоломки будут только в этих ячейках и только с этими значениями, в то время как все другие кандидаты из общего блока могут быть убраны.

В этом примере несколько «голых пар».
Красным в строке А выделены ячейки А2 и А3, обе содержащие «1» и «6«. Я пока не знаю, как именно они расположены здесь, но я спокойно могу убрать все другие «1» и «6» из строки A (отмечено желтым). Также А2 и А3 принадлежат общему квадрату, поэтому убираем «1» из C1.

2.2 «Threesome»

«Голые тройки» — усложненный вариант «голых пар».
Любая группа из трех ячеек в одном блоке содержащая в общем три кандидата является «голой тройкой». Когда такая группа нашлась, эти три кандидата могут быть убраны из других ячеек блока.

Комбинации кандидатов для «голой тройки» могуть быть такими:

[abc] [abc] [abc] // три числа в трех ячейках.
[abc] [abc] [ab] // любые комбинации.
[abc] [ab] [ab] // любые комбинации.
[ab] [aс] [bc]

В этом примере все довольно очевидно. В пятом квадрате ячейки E4, E5, E6 содержат [5,8,9], [5,8], [5,9] соответственно. Получается, что в общем у этих трех ячеек есть [5,8,9], и только эти числа там могут быть. Это позволяет нам убрать их из других кандидатов блока. Этот трюк даёт нам решение «3» для ячейки E7.

2.3 «Великолепная четверка»

««Голая» четверка» весьма редкое явление, особенно в полной форме, и все же дает результаты при обнаружении. Логика решения такая же как и у «голых троек».

В указанном примере в первом квадрате ячейки A1, B1, B2 и C1 в общем содержат [1,5,6,8], поэтому эти числа займут только эти ячейки и никакие другие. Убираем подсвеченных желтым кандидатов.

3. «Все тайное становится явным»
3.1 Скрытые пары

Отличным способом раскрыть поле будет поиск скрытых пар. Этот метод позволяет убрать лишних кандидатов из ячейки и дать развитие более интересным стратегиям.

В этой головоломке мы видим, что 6 и 7 есть в первом и втором квадратах. Кроме этого 6 и 7 есть в столбце 7. Комбинируя эти условия, мы можем утверждать, что в ячейках A8 и A9 будут только эти значения и все другие кандидаты мы убираем.

Более интересный и сложный пример скрытых пар. Синим выделена пара [2,4] в D3 и E3, убирающая 3, 5, 6, 7 из этих ячеек. Красным выделены две скрытые пары, состоящие из [3,7]. C одной стороны, они уникальны для для двух ячеек в 7 столбце, с другой стороны — для строки E. Выделеные желтым кандидаты убираются.

3.1 Скрытые тройки

Мы можем развить скрытые пары до скрытых троек или даже скрытых четверок. Скрытая тройка состоит из трех пар чисел, расположенных в одном блоке. Такие как [a,b,c], [a,b,c] и[a,b,c]. Однако, как и в случае с «голыми тройками», в каждой из трех ячеек не обязательно должно быть по три числа. Сработают всего три числа в трех ячейках. Например [ab], [aс], [bc]. Скрытые тройки будут замаскированы другими кандидатами в ячейках, поэтому сначала надо убедиться, что тройка применима к конкретному блоку.

В этом сложном примере есть две скрытые тройки. Первая, отмеченная красным, в столбце А. Ячейка А4 содержит [2,5,6], A7 — [2,6] и ячейка A9 -[2,5]. Эти три ячейки единственные, где могут быть 2 ,5 или 6, поэтому только они там и будут. Следовательно убираем лишних кандидатов.

Вторая, в столбце 9. [4,7,8] уникальны для ячеек B9, C9 и F9. Используя ту же логику, убираем кандидатов.

3.1 Скрытые четверки

Прекрасный пример скрытых четверок. [1,4,6,9] в пятом квадрате могут быть только в четырех ячейках D4, D6, F4, F6. Следуя нашей логике, убираем всеъ других кандидатов (отмеченых желтым).

4. «Нерезиновая»
  1. Пара или Тройка в квадрате — если они расположены в одной строке, то можно убрать все другие такие же значения из соответствующей строки.
  2. Пара или Тройка в квадрате — если они расположены в одном столбце, то можно убрать все другие такие же значения из соответствующего столбца.
  3. Пара или Тройка в строке — если они расположены в одном квадрате, то можно убрать все другие такие же значения из соответствующего квадрата.
  4. Пара или Тройка в столбце — если они расположены в одном квадрате, то можно убрать все другие такие же значения из соответствующего квадрата.
4.1 Указавыющие пары, тройки

В качестве примера покажу эту головоломку. В третьем квадрате «3» находится только в B7 и B9. Следуя утверждению №1, мы убираем кандидатов из B1, B2, B3. Аналогично, «2» из восьмого квадрата убирает возможное значение из G2.

Особенная головоломка. Очень сложная в решении, но, если присмотреться, можно заметить несколько указывающих пар. Понятно, что не всегда обязательно находить их все, чтобы продвинуться в решении, однако каждая такая находка облегчает нам задачу.

4.2 Сокращаем несокращаемое

Эта стратегия включает в себя аккуратный анализ и сравнение строк и столбцов с содержимым квадратов (правила №3, №4).
Рассмотрим строку А. «2» возможны только в А4 и А5. Следуя правилу №3, убираем «2» их B5, C4, C5.

Продолжим решать головоломку. Имеем единственное расположение «4» в пределах одного квадрата в 8 столбце. Согласно правилу №4, убираем лишних кандитатов и, в добавок, получаем решение «2» для C7.

Послесловие

Существуют сотни алгоритмов и программ для решения судоку. Иногда для получения результата достаточно навести вебкамеру. Однако для тренировки мозга и прокручивания алгоритмов в голове будет полезно посидеть с ручкой и бумагой, решая судоку.
В статье привел базовые алгоритмы решения. Да-да, именно базовые. Следующим шагом будет разбор продвинутых и сложных методик. Спасибо за внимание.

Как решить судоку если зашел в тупик

5 способов, как решать сложные судоку

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

Терминология судоку

  • Клетка. Основной элемент судоку. Все клетки должны быть заполнены цифрами от 1 до 9. Каждая из клеток входит одновременно в ряд, колонку и область.
  • Группа. Групп несколько: ряд — 9 горизонтальных клеток; колонка — 9 вертикальных клеток; область — малый квадрат размером 3×3 клетки. В каждом судоку 9 областей.
  • Сегмент. Часть области — 3 горизонтальных или вертикальных клетки. В каждой области 6 сегментов — частей большого ряда или колонки.
  • Кандидаты. Цифры, которые могут быть вписаны в клетку (на рисунке — мелким шрифтом). Когда все кандидаты, кроме одного, вычеркнуты, цифру можно вносить «на постоянной основе». Два кандидата — пара, три — трио, четыре — квартет.

Способы решения судоку

За годы существования судоку было разработано множество подходов к решению. Мы предлагаем несколько методов, от простого — к сложному.

1. Синглы (единственные варианты)

Синглы определяются после исключения цифр, которые уже вписаны в ряды, колонки или области. Таким способом решают простые судоку.

1.1. Очевидные синглы

Если путем исключения можно выявить единственно возможное число, сингл называют очевидным.

  • Цифры 1, 5, 6, 9 исключены — они есть в ряду.
  • 2, 3, 8 — расположены в колонке.
  • 6, 7, 8 — могут присутствовать в области.
  • Единственным кандидатом в клетке E6 остается 4.
1.2. Скрытые синглы

Число можно вписать в клетку, если другое расположение в группе невозможно. Определить такую вероятность можно после расстановки кандидатов и выявления цифры, которая больше нигде не повторяется.

  • В седьмом и девятом ряду 8 вписана изначально.
  • 8 есть в колонке А.
  • В нижней левой области вписать 8 можно только в одну клетку — B8, поэтому остальных кандидатов нужно исключить.

2. Исключение кандидатов

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

2.1. Сегмент 1

Если удалось определить, что число может быть вписано в единственную клетку, его исключают из кандидатов в ряду, колонке и области.

  • В правой верхней области 6 должно находиться в сегментах G1 или H1 (других вариантов нет — второй ряд и третья колонка заняты), поэтому цифру можно исключит из кандидатов для клетки С1.
2.2. Сегмент 2

Если число может находиться только в одной области, его нужно исключить из кандидатов в других клетках.

  • Число 2 можно вписать в третий ряд второй области — D3 или E3. Поэтому 2 можно исключить из кандидатов в клетки первого и второго ряда этой области.
  • С учетом уже назначенных чисел третьего ряда, а также колонок B и H, число 2 может находиться только во второй области в третьем ряду и его можно исключить из D1, E1, E2 и F2.

3. Группы кандидатов

3.1. Очевидные группы кандидатов

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

  • Пара 1/4 (второй ряд) повторяется в клетках G2 и H2. Один из кандидатов обязательно расположится в G2, другой — в H2. Это значит, что 1 и 4 можно исключить из остальных клеток ряда.
  • Также пару 1/4 можно исключить из других клеток области.
  • В трех клетках группы не содержатся другие кандидаты, кроме трех, значит эти числа могут быть исключены из остальных клеток группы.

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

Во втором ряду в клетках A, С и G имеется трио 1, 4, 6, значит, данные клетки обязательно разместят одну из этих цифр. Следовательно, 1, 4, 6 не могут занимать другое место в ряду, их присутствие можно исключить.

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

Это правило распространяется на любой по численности набор кандидатов — вероятность расположения цифр в других клетках можно исключить.

Очевидные группы кандидатов позволяют исключить кандидатов из других клеток группы.

3.2. Скрытые группы кандидатов

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

В клетках A и C встречается пара 4/6. Таким образом, остальных кандидатов из этих двух клеток можно исключить — в одной из клеток обязательно разместится 4, в другой 6.

Правило относится и к очевидным трио и квартетам, при этом клетки могут не содержать все числа из трио или квартета. Рассмотреть скрытые трио и, тем более, квартеты сложно, но встречаются они нечасто.

4. Сложные методы

Сложность этих методов относится не к пониманию их сути, а к применению в решении судоку.

4.1. Связанные пары (бабочка)

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

В переносе на колонки метод формулируется аналогично, но тогда нужно исключить кандидатов в рядах.

Например, цифра 9 для колонок B и H может находиться только во втором и восьмом рядах (фиолетовые клетки). Из остальных клеток этих рядов 9 можно исключить.

Рассмотрим колонку B. Если 9 не в B2, она может быть только в B8, для колонки H — наоборот. То есть, варианты расположения 9: B2 и H8 или B8 и H2, из остальных клеток этих рядов девятку можно исключить. Метод применим и к областям.

Этот метод может применяться к областям:

  • В колонках B и C цифра 9 может находиться в ячейках B3, B9, C2 и C8.
  • Поскольку B3 и C2, B9 и C8 находятся внутри одной области, 9 может быть исключена из остальных клеток этих двух областей.
4.2. Сложносвязанные пары (рыба)

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

Из остальных рядов этих трех колонок кандидата можно исключить. Аналогично метод применяется к трем колонкам, тогда кандидаты исключаются из рядов:

2 встречается только в двух клетках колонок C, F и H. Эти клетки находятся в трех рядах — втором, четвертом и восьмом:

  • Второй ряд. 2 может быть только в F2 или в H2,
  • Четвертый ряд: C4 или H4.
  • Восьмой ряд: C8 или F8.

Из остальных клеток этих рядов 2 можно исключить.

4.3. Связанные кандидаты

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

Когда несколько пар связанных кандидатов соединены, число можно исключить из других клеток — число в них не появится в любом случае.

  • В колонке B число 7 может находиться B2 или B4.
  • Аналогично в первом ряду C1 и H1 — если один кандидат верен, то другой нет.
  • Эти связи кандидатов объединены в первой области.
  • Если 7 находится в B4, ее можно исключить из H1. Если она не в B4, тогда в B2. Если не находится в C1, тогда в H1, но не в H7.
  • В любом случае 7 не может находиться в H1.
4.4. Цепочки

Метод используется, когда во многих клетках только два кандидата. Выбирая одного в начальной клетке, вы формируете цепочку выборов, которая приводит к удалению кандидата из какой-либо клетки.

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

Например, если 3 верно в клетке B2, то выполняется цепочка заключений (красная линия):

  • B2 — 3, D2 — 5, E3 — 7, E5 — 8, A5 — 5, таким образом 5 не находится в A4.

Если же в B2 находится 2, тогда мы имеем (зеленая линия):

  • B2 — 2, B4 — 5 и опять 5 не находится в A4.

В любом случае кандидат 5 может быть исключен из клетки A4.

5. Предположения

Иногда вышеперечисленные методы не помогают продвинуться в решении. Тогда можно выбрать кандидата в клетке и посмотреть, к чему приведет такой выбор. Если рассуждения заканчиваются тупиком, тогда придется вернуться в начало и попробовать другой вариант.

Этот метод ближе к гаданию на кофейной гуще и обычно не используется при решении судоку.

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

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