Xy wing в судоку что такое шаблон

X-wing (Судоку)

Резюме

Принцип

Этот метод позволяет отсеивать потенциальных кандидатов в нескольких ящиках. Для его применения должно быть выполнено одно из следующих двух условий:

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

Первая ступень

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

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

Xy wing в судоку что такое шаблон. 250px Xwing step1. Xy wing в судоку что такое шаблон фото. Xy wing в судоку что такое шаблон-250px Xwing step1. картинка Xy wing в судоку что такое шаблон. картинка 250px Xwing step1

Второй шаг

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

Xy wing в судоку что такое шаблон. 250px Xwing step2. Xy wing в судоку что такое шаблон фото. Xy wing в судоку что такое шаблон-250px Xwing step2. картинка Xy wing в судоку что такое шаблон. картинка 250px Xwing step2

Мы меняем ситуацию с цифрой 9 справа и наблюдаем тот же результат, но в обратном порядке.

Xy wing в судоку что такое шаблон. 250px Xwing step3. Xy wing в судоку что такое шаблон фото. Xy wing в судоку что такое шаблон-250px Xwing step3. картинка Xy wing в судоку что такое шаблон. картинка 250px Xwing step3

Третий шаг

В обеих возможных ситуациях наличие «9» в строках и столбцах, которые находятся на краях прямоугольника (за исключением четырех прямоугольников, используемых для анализа), несовместимо с правилами судоку. Таким образом, мы можем исключить невозможную «9».

Источник

XY-Wing

An XY-Wing is a solving technique that uses a short chain of 3 cells.
The cell in the center is called the pivot. The other 2 cells are the pincers.
The chain uses only 3 digits, symbolically named X, Y and Z. Any 3 digits can replace these letters. The pivot contains candidates XY, which explains the name of this technique. The pincers have candidates XZ and YZ.
Any cell that can see both pincers can not longer contain a candidate for digit Z, because the pivot forces either of the pincers to contain this digit.

Subtypes

Although the logic behind the XY-Wing is always the same, subtypes have been introduced to help players to recognize these patterns more easily.
Type 1 (box-line)
One of the pincers shares a row or column with the pivot, the other shares a box. Up to 5 eliminations are possible in this formation.

Xy wing в судоку что такое шаблон. . Xy wing в судоку что такое шаблон фото. Xy wing в судоку что такое шаблон-. картинка Xy wing в судоку что такое шаблон. картинка

Type 2 (row-column)
One of the pincers shares a row with the pivot, the other shares a column. Only one elimination can be made.

Xy wing в судоку что такое шаблон. . Xy wing в судоку что такое шаблон фото. Xy wing в судоку что такое шаблон-. картинка Xy wing в судоку что такое шаблон. картинка
Chain Notation
An XY-Wing is a short chain. You can write it like this in Eureka notation:
(Z=Y)r6c1-(Y=X)r4c1-(X=Z)r4c8
In Nice Loop notation, you must include the cell(s) with the eliminated candidates to complete the loop:
[r6c789]-Z-[r6c1]-Y-[r4c1]-X-[r4c8]-Z-[r6c789] => [r6c789]<>Z

Example

You can eliminate candidate «3» (Z) from all cells seen simultaneously by both pincers, in this case R2C1. The other possible cells involved are R3C1, R7C2, R8C2 and R9C2 but none of them have a «3» as candidate.

Источник

Как решать судоку — способы, методы и стратегия

Xy wing в судоку что такое шаблон. 0704. Xy wing в судоку что такое шаблон фото. Xy wing в судоку что такое шаблон-0704. картинка Xy wing в судоку что такое шаблон. картинка 0704

Правила судоку

Данная головоломка занимает мало места, в отличие от сканвордов, кроссвордов и так далее. Игровое поле, состоящее из 81 квадратов, ячейки разбиты на малые блоки, размером 3*3. Его можно легко уместить на листке бумаги. Задание выглядит в виде выборочно заполненных клеток, которые необходимо дополнить значениями и заполнить всю табличку. В судоку правила игры очень просты и позволяют исключить множественные решения. В каждой строке или столбце проставляются цифры от 1 до 9. Также значения не повторяются в рамках одного малого блока.

Xy wing в судоку что такое шаблон. image001. Xy wing в судоку что такое шаблон фото. Xy wing в судоку что такое шаблон-image001. картинка Xy wing в судоку что такое шаблон. картинка image001

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

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

Правила, как разгадывать судоку

Чтобы получить верное решение, необходимо учесть несколько простых правил:

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

Как решать судоку простые?

Рассмотрим на конкретном примере как разгадывать судоку. Игровое поле на картинке представляет собой относительно простой вариант игры. Правила игры судоку для простых сводятся к выявлению зависимостей в горизонтальной и вертикальной плоскости и в отдельных квадратах.

Xy wing в судоку что такое шаблон. image002. Xy wing в судоку что такое шаблон фото. Xy wing в судоку что такое шаблон-image002. картинка Xy wing в судоку что такое шаблон. картинка image002

Например, в центральной вертикали не хватает цифр 3, 4, 5. Четверка не может находиться в нижнем квадрате, так как в нем уже присутствует. Также можно исключить пустую центральную клетку, так как мы видим 4 в горизонтальной линии. Из этого делаем вывод, что она располагается в верхнем квадрате. Аналогично можем проставить 3 и 5 и получить следующий результат.

Xy wing в судоку что такое шаблон. image003. Xy wing в судоку что такое шаблон фото. Xy wing в судоку что такое шаблон-image003. картинка Xy wing в судоку что такое шаблон. картинка image003

Проведя линии в верхнем среднем малом квадрате 3*3 можно исключить ячейки, в которых не может находиться цифра 3.

Xy wing в судоку что такое шаблон. image004. Xy wing в судоку что такое шаблон фото. Xy wing в судоку что такое шаблон-image004. картинка Xy wing в судоку что такое шаблон. картинка image004

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

Xy wing в судоку что такое шаблон. image005. Xy wing в судоку что такое шаблон фото. Xy wing в судоку что такое шаблон-image005. картинка Xy wing в судоку что такое шаблон. картинка image005

Такой метод некоторые называют «Последний герой» или «Одиночка». Он также используется в качестве одного из нескольких на мастерских уровнях. Среднее время, затрачиваемое на простой уровень сложности, колеблется около 20 минут.

Как решать сложные судоку?

Многие задаются вопросом, как решать судоку, есть ли стандартные методы и стратегия. Как и в любой логической головоломке есть. Самый простой из них мы рассмотрели. Чтобы перейти на более высокий уровень, необходимо иметь больший запас времени, усидчивость, терпение. Для решения головоломки придется делать предположения и, возможно, получать неверный результат, возвращающий к месту выбора. По сути судоку сложные – это как решать задачу с помощью алгоритма. Рассмотрим несколько популярных методик, применяемых профессиональными «судокуведами» на следующем примере.

Xy wing в судоку что такое шаблон. image006. Xy wing в судоку что такое шаблон фото. Xy wing в судоку что такое шаблон-image006. картинка Xy wing в судоку что такое шаблон. картинка image006

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

Xy wing в судоку что такое шаблон. image007. Xy wing в судоку что такое шаблон фото. Xy wing в судоку что такое шаблон-image007. картинка Xy wing в судоку что такое шаблон. картинка image007

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

Xy wing в судоку что такое шаблон. image008. Xy wing в судоку что такое шаблон фото. Xy wing в судоку что такое шаблон-image008. картинка Xy wing в судоку что такое шаблон. картинка image008

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

Xy wing в судоку что такое шаблон. image009. Xy wing в судоку что такое шаблон фото. Xy wing в судоку что такое шаблон-image009. картинка Xy wing в судоку что такое шаблон. картинка image009

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

Метод «Открытые пары»

Чтобы очистить поле дальше, необходимо найти открытые пары, которые позволяют исключить имеющиеся в них цифры из других ячеек в блоке и строках. В примере такими парочками являются 4 и 9 из третьей строки. Они наглядно показывают, как разгадывать сложные судоку. Их комбинация говорит о том, что в данных клетках могут быть проставлены исключительно 4 или 9. Этот вывод делается на основании правил судоку.

Xy wing в судоку что такое шаблон. image010. Xy wing в судоку что такое шаблон фото. Xy wing в судоку что такое шаблон-image010. картинка Xy wing в судоку что такое шаблон. картинка image010

Из выделенных зеленым ячеек можно удалить значения синих и тем самым сократить количество вариантов. При этом располагающаяся в первой строке комбинация 1249 называется по аналогии «открытой четверкой». Также можно встретить «открытые тройки». Такие действия влекут за собой появление других открытых пар, например 1 и 2 в верхней строке, которые также дают возможность сузить круг комбинаций. Параллельно проставляем в обведенной ячейке первого квадрата 7, так как пятерка в данной строке в любом случае будет располагаться в нижнем блоке.

Xy wing в судоку что такое шаблон. image011. Xy wing в судоку что такое шаблон фото. Xy wing в судоку что такое шаблон-image011. картинка Xy wing в судоку что такое шаблон. картинка image011

Метод «Скрытые пары/тройки/четверки»

Данный метод является противоположным к открытым комбинациям. Его суть заключается в том, что необходимо найти ячейки, в которых повторяются цифры в рамках квадрата/строки, не встречающиеся в других клеточках. Как это поможет разгадывать судоку? Прием позволяет вычеркнуть остальные цифры, так как они служат фоном и не могут быть проставлены в выбранные клетки. Данная стратегия имеет несколько других названий, например «Ячейка не резиновая», «Тайное становится явным». Сами имена объясняют суть метода и соответствие правилу, говорящему о возможности проставить единственную цифру.

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

Xy wing в судоку что такое шаблон. image012. Xy wing в судоку что такое шаблон фото. Xy wing в судоку что такое шаблон-image012. картинка Xy wing в судоку что такое шаблон. картинка image012

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

Перекрестное исключение

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

Xy wing в судоку что такое шаблон. image013. Xy wing в судоку что такое шаблон фото. Xy wing в судоку что такое шаблон-image013. картинка Xy wing в судоку что такое шаблон. картинка image013

Также можно применять для трех и четырех строк. Сложность метода заключается в трудностях визуализации и выявления связей.

Метод «Сокращение»

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

Xy wing в судоку что такое шаблон. image014. Xy wing в судоку что такое шаблон фото. Xy wing в судоку что такое шаблон-image014. картинка Xy wing в судоку что такое шаблон. картинка image014

Цветовой метод

Данная стратегия мало отличается от описанной, и заключается в цветовой индикации ячеек или цифр. Способ помогает визуализировать весь ход решения, однако, подходит не всем. Некоторых расцветка сбивает и мешает сосредоточиться. Чтобы грамотно использовать гамму, необходимо выбрать два-три цвета и окрашивать в них одинаковые варианты в разных блоках/линиях, а также спорные ячейки.

Чтобы разобраться, как решать судоку, лучше вооружиться ручкой и бумагой. Такой подход позволит натренировать голову, в отличие от использования электронных алгоритмов с наличием подсказок. Команда BrainApps рассмотрела несколько наиболее популярных, понятных и действенных методик, однако, существует множество других алгоритмов. Например, метод «Проб и ошибок», когда выбирается пробный вариант из двух или трех возможных и проверяется вся цепочка. Недостатком данной методики является необходимость использовать компьютер, так как на листке бумаги к исходному варианту вернуться не так просто.

Источник

Как разгадывать классические судоку любой сложности

Xy wing в судоку что такое шаблон. ba199afd217d1541eaaa22217aedb85d. Xy wing в судоку что такое шаблон фото. Xy wing в судоку что такое шаблон-ba199afd217d1541eaaa22217aedb85d. картинка Xy wing в судоку что такое шаблон. картинка ba199afd217d1541eaaa22217aedb85d

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

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

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

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

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

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

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

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

Xy wing в судоку что такое шаблон. ba93042112203b741c58930da069ce9f. Xy wing в судоку что такое шаблон фото. Xy wing в судоку что такое шаблон-ba93042112203b741c58930da069ce9f. картинка Xy wing в судоку что такое шаблон. картинка ba93042112203b741c58930da069ce9f

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

1.2. Скрытые синглы

Xy wing в судоку что такое шаблон. 719551f49a6f46e62e56571c8c7baaa6. Xy wing в судоку что такое шаблон фото. Xy wing в судоку что такое шаблон-719551f49a6f46e62e56571c8c7baaa6. картинка Xy wing в судоку что такое шаблон. картинка 719551f49a6f46e62e56571c8c7baaa6

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

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

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

2.1. Сегмент 1

Xy wing в судоку что такое шаблон. c1d59ebeba1a595525325a8a04ab0248. Xy wing в судоку что такое шаблон фото. Xy wing в судоку что такое шаблон-c1d59ebeba1a595525325a8a04ab0248. картинка Xy wing в судоку что такое шаблон. картинка c1d59ebeba1a595525325a8a04ab0248

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

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

2.2. Сегмент 2

Xy wing в судоку что такое шаблон. f0a888831817a30f7dcd7e2456cb8c4f. Xy wing в судоку что такое шаблон фото. Xy wing в судоку что такое шаблон-f0a888831817a30f7dcd7e2456cb8c4f. картинка Xy wing в судоку что такое шаблон. картинка f0a888831817a30f7dcd7e2456cb8c4f

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

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

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

Xy wing в судоку что такое шаблон. 98506a5fecdce3c02a0950e752a05b23. Xy wing в судоку что такое шаблон фото. Xy wing в судоку что такое шаблон-98506a5fecdce3c02a0950e752a05b23. картинка Xy wing в судоку что такое шаблон. картинка 98506a5fecdce3c02a0950e752a05b23

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

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

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

Xy wing в судоку что такое шаблон. 6d0f4dda039a15970f465d711cda73f9. Xy wing в судоку что такое шаблон фото. Xy wing в судоку что такое шаблон-6d0f4dda039a15970f465d711cda73f9. картинка Xy wing в судоку что такое шаблон. картинка 6d0f4dda039a15970f465d711cda73f9

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

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

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

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

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

Xy wing в судоку что такое шаблон. e8eb3215570263c16d475f84f3953333. Xy wing в судоку что такое шаблон фото. Xy wing в судоку что такое шаблон-e8eb3215570263c16d475f84f3953333. картинка Xy wing в судоку что такое шаблон. картинка e8eb3215570263c16d475f84f3953333

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

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

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

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

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

Xy wing в судоку что такое шаблон. 0fc2218b9d6eff235b328cd7a1e8ac48. Xy wing в судоку что такое шаблон фото. Xy wing в судоку что такое шаблон-0fc2218b9d6eff235b328cd7a1e8ac48. картинка Xy wing в судоку что такое шаблон. картинка 0fc2218b9d6eff235b328cd7a1e8ac48

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

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

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

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

Xy wing в судоку что такое шаблон. c6311edd03c49f2c5ba1be94a3e2501d. Xy wing в судоку что такое шаблон фото. Xy wing в судоку что такое шаблон-c6311edd03c49f2c5ba1be94a3e2501d. картинка Xy wing в судоку что такое шаблон. картинка c6311edd03c49f2c5ba1be94a3e2501d

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

4.2. Сложносвязанные пары (рыба)

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

Xy wing в судоку что такое шаблон. e8009cdca71c51cb60309e3108573f6c. Xy wing в судоку что такое шаблон фото. Xy wing в судоку что такое шаблон-e8009cdca71c51cb60309e3108573f6c. картинка Xy wing в судоку что такое шаблон. картинка e8009cdca71c51cb60309e3108573f6c

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

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

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

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

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

Xy wing в судоку что такое шаблон. cf10028eb44cd022ea124920c8824acc. Xy wing в судоку что такое шаблон фото. Xy wing в судоку что такое шаблон-cf10028eb44cd022ea124920c8824acc. картинка Xy wing в судоку что такое шаблон. картинка cf10028eb44cd022ea124920c8824acc

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

4.4. Цепочки

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

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

Xy wing в судоку что такое шаблон. e64da4280f60b4adb57fdc50e1bae154. Xy wing в судоку что такое шаблон фото. Xy wing в судоку что такое шаблон-e64da4280f60b4adb57fdc50e1bae154. картинка Xy wing в судоку что такое шаблон. картинка e64da4280f60b4adb57fdc50e1bae154

Например, если 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. Предположения

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

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

Источник

Решаем судоку с помощью Алгоритма X

В этой статье рассмотрим «Алгоритм X» Кнута и его применение для решения судоку. Прелесть алгоритма в том, что судоку при этом решается быстро без программирования каких-то продвинутых техник решения.

Началось всё, собственно, с задачки из Project Euler, где, чтобы получить ответ, нужно решить 50 судоку. И вроде ответ на неё получил, написав программку для решения довольно тупым перебором, но как-то осталась неудовлетворённость скоростью решения. Посмотрев, как решают судоку нормальные люди, я обнаружил, что сейчас для этого используется Алгоритм X, придуманный тем самым Дональдом Кнутом.

Алгоритм X

Этот алгоритм решает задачу точного покрытия множества. Или, если хотите, собирает «дискретный паззл», имея в наличии информацию о форме доступных кусочков. Более формально:

Для алгоритма X Кнута множество Y представляется в виде двоичной матрицы, где строки соответствуют элементам Y, и Ai,j = 1, если Sj находится в Yi. Т.е. для примера выше:

Yi \ Sj12345
A11000
B01100
C10001
D10010
E00001

Алгоритм поиска точного покрытия следующий:

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

Тонкость в том, что на практике этот алгоритм применяется для задач, где множества в Y — «маленькие», т.е. матрица весьма разреженная, из-за чего, например, поиск пересечений между столбцами при стандартном хранении в виде матрицы занимает непозволительно много времени.
Поэтому Кнут дополняет этот алгоритм механизмом «пляшущих ссылок». Матрица представляется в виде двумерного двусвязного списка: для каждой строки в списке хранятся только номера столбцов, где в этой строке содержатся единицы. Также в списке хранятся ссылки на следующий и предыдущий элемент в строке и столбце. Такая организация позволяет удалять из разреженной матрицы столбцы и строки за время O(1) по сравнению с O(m * n) при хранении в двумерном массиве.

Интересно, что Ali Assaf предлагает альтернативу механизму пляшущих ссылок с использованием ассоциативных списков, что позволяет на высокоуровневых языках реализовывать алгоритм X буквально в несколько десятков строчек.

Идея в том, чтобы хранить как столбцы, так и строки матрицы в ассоциативных списках. В столбцах храним индексы строк, на пересечении с которыми находятся ненулевые элементы, в строках — соответственно, индексы столбцов. Причём в строках будем индексы хранить упорядоченно, в массиве — заметим, что в алгоритме Кнута модифицировать строки, по существу, не требуется, поэтому оптимизация под быстрое удаление элемента из строки не нужна. А вот столбцы будут задаваться в виде множеств, т.к. при удалении строки из матрицы нужно удалить её идентификатор из всех столбцов (и при удалении его из всех столбцов — строка исчезает «сама собой»).

Рассмотрим реализацию алгоритма на Julia.
Матрица из примера будет выглядеть теперь так:

Для работы алгоритма нужна функция, вынимающая из матрицы строки, пересекающиеся с заданной, и функция, возвращающая эти строки на место.

Теперь сам алгоритм X:

Судоку

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

Сформулируем требования, которым должно удовлетворять решённое судоку:

Каждое из этих требований должно выполняться ровно по 1 разу, т.е. они и формируют множество, которое надо покрыть. В нём ровно 4n 2 элементов (столбцов в матрице).

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

После этого алгоритм решения пишется тривиально.

Проверим на каком-нибудь примере:

Вроде работает, и скорость приемлемая.

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

Источник

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

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