Правила и секреты судоку. Как решать судоку — алгоритмы и стратегии

Итак, сегодня я научу вас решать судоку .

Для наглядности возьмем конкретный пример и рассмотрим основные правила:

Правила решения судоку:

Желтым я выделил строку и столбец. Первое правило в каждой строке и каждом столбце могут быть цифры от 1 до 9, причем они не могут повторяться. Короче говоря – 9 клеток, 9 цифр – поэтому в 1-м и том же столбце не может быть 2-х пятерок, восьмерок и т.д. Аналогично для строк.

Теперь я выделил квадраты – это второе правило . В каждом квадрате могут быть цифры от 1-го до 9 причем они не повторяются. (Так же как и в строках и столбцах). Квадраты выделены жирными линиями.

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

Ну что ж, давайте теперь попробуем его решить:

Я выделил единицы зеленым и показал направление, куда мы смотрим. А именно – нас интересует последний верхний квадрат. Можно заметить, что во 2-м и 3-м ряду этого квадрата не могут быть единицы иначе будет повторение. Значит – единица вверху:

Легко находится и двойка:

Теперь воспользуемся найденной только что двойкой:

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

Смотрим на 1-й квадрат 3-й строки (внизу):

Т.к. у нас там осталось 2 свободных клетки, то в каждой из них может быть одна из двух цифр: (1 или 6):

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

За неимением времени на этом и остановлюсь. Очень надеюсь, что логику вы уловили. Кстати, я взял не самый простой пример, в котором скорее всего не будут сразу видны все решения однозначно, а поэтому лучше пользоваться карандашом. Мы пока не знаем насчет 1 и 6 в нижнем квадрате, поэтому их рисуем карандашом – аналогично в верхнем квадрате будут карандашом нарисованы 3 и 4.

Если ещё немного порассуждать, используя правила - избавимся от вопроса где 3, а где 4:

Да, кстати, если вам какой-то момент показался непонятным – напишите, я поясню подробнее. Удачи с разгадыванием судоку.


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

Вот какие сведения я нашел об этом сверхсложном варианте в интернете:

Профессор Хельсинского университета Арто Инкала (Arto Inkala) утверждает (2011г.), что он создал самый сложный в мире кроссворд судоку. Эту сложнейшую головоломку он создавал три месяца.

По его словам, созданный им кроссворд невозможно решить с помощью одной лишь только логики. Арто Инкала утверждает, что даже самые опытные игроки на решение потратят не меньше нескольких дней. Изобретение профессора получило название AI Escargot (AI – инициалы ученого, Escargot – от англ. «улитка»).

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

Ну, "последовательности переборов" – это все же отдает машинным вариантом решения проблем, а те, кто решал задачу Арто Инкала посредством собственных мозгов, говорят об этом по-разному. Кто-то решал ее пару месяцев, кто-то объявил о том, что на это потребовалось лишь 15 минут. Ну что ж, чемпион мира по шахматам возможно и справился бы с задачей за такое время, а экстрасенс, если таковые обитают на нашей плане, возможно и еще быстрее. А еще мог быстро решить задачу тот, кто случайно с первого разу подобрал несколько удачных цифр для заполнения пустых ячеек. Скажем, одному из тысячи решателей задачи могло бы подобным образом и повезти.

Так вот, о переборе: если удачно выбрать две три правильных цифры, то перебирать восемь последовательностей (а это десятки вариантов) может и не потребоваться. Такое у меня было соображение, когда я решил приступить к решению указанной задачи. Для начала я, будучи уже подготовленным в рамках методик предыдущих статей, решил забыть о том, что знал до сих пор. Есть такой прием, заключающийся в том, что поиск решения должен протекать свободно, без навязанных ему схем и идей. А ситуация для меня была новой, так что требовалось на нее и по-новому взглянуть. Я расположил (в Эксель) исходную таблицу (справа) и рабочую таблицу, о смысле которой я уже имел случай рассказать в первой о судоку моей статье :

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

После обычной почти рутинной обработки таблиц ситуации немного упростилась:

Эту ситуацию я и начал изучать. Ну а поскольку я уже подзабыл, как именно я решал эту задачу несколькими днями раньше, то начинаю осмысливать ее по новой. Прежде всего, я обратил внимание на два числа 67 в ячейках четвертого блока и совместил их с механизмом вращения (перемещения) ячеек, о котором рассказывал в предыдущей статье. Перебрав все варианты вращения трех первых столбцов таблицы, я пришел к выводу, что цифры 6 и 7 не могут находиться в одном столбце и не могут вращаться асинхронно, они, в процессе вращения, могут лишь следовать одна за другой. Также, если присмотреться, семерка с четверкой как бы передвигаются синхронно по всем трем столбцам. Поэтому я делаю правдоподобное предположение, что в нижней левой ячейке блока 4 должна разместиться цифра 7, а в правой верхней – соответственно 6.

Но этот результат я пока принимаю лишь как возможный ориентир в опробовании других вариантов. А основное внимание я обращаю на число 59 в ячейке 4-го блока. Здесь может быть либо цифра 5, либо 9. Девятка обещает уничтожить очень много лишних цифр, т.е. упростить дальнейший ход решения задачи, и я начинаю с этого варианта. Но довольно быстро захожу в "тупик", т.е. далее надо снова делать какой-то выбор и как знать, как долго мой выбор будет проверяться. Я предполагаю, что если бы девятка действительно была когда-то правильным выбором, то Инкала вряд ли бы оставил такой очевидный вариант на виду, хотя механизм его программы мог и допустить подобный ляпсус. В общем, так или иначе, я решил сначала досконально проверить вариант с цифрой 5 в ячейке с числом 59.

Но уже позже, когда решил задачу, я, так сказать для очистки совести, все же вернулся к варианту с цифрой 9, чтобы определить как долго пришлось бы его проверять. Проверять пришлось не очень долго. Когда у меня в правой верхней ячейке блока 4 оказалась цифра 6, как и полагалось по предварительно выбранному ориентиру, то в правой средней ячейке возникло число 19 (убралась 6 из 169). Я выбрал для дальнейшего опробование цифру 9 в этой ячейке и быстро пришел к противоречивому результату, т.е. выбор девятки не верен. Тогда выбираю цифру 1 и снова проверяю, что из этого выйдет.

На каком-то шаге прихожу к ситуации:

где снова приходится делать выбор – цифру 2 или 8 в верхней средней ячейке блока 4. Проверяю оба варианта (2 и 8) и в обоих случаях заканчиваю противоречивым (не отвечающим условию судоку) результатом. Так что мог бы проверить вариант с цифрой 9 в средней нижней ячейке блока 4 с самого начала и много времени на это не потребовалось бы. Но я все же, как уже говорил, остановился на цифре 5 в упомянутой ячейке. Это привело меня к следующему результату:

Расположение цифр 4 и 7 в первых трех столбцах (колонках) свидетельствует о том, что они вращаются синхронно, что собственно и предполагалось при выборе цифры 7 для нижней левой ячейки 4-го блока. При этом двойка или девятка, будь любая из них требуемой цифрой в средней левой ячейке этого блока, должны соответственно двигаться асинхронно паре 4 и 7. Предпочтение в данном случае я отдал цифре 2, так как она "обещала" устранить много лишних цифр из чисел ячеек и, соответственно, быструю проверку допустимости данного варианта. А девятка быстро заводила в тупик – требовала подбора новых цифр. Таким образом, в левой средней ячейке блока с числом 29 я проставил не мой взгляд более предпочтительную из цифр – 2. Результат вышел следующим:

Далее мне пришлось еще раз сделать так сказать полупроизвольный выбор: выбрал двойку в ячейке с числом 26 в девятом блоке. Для этого достаточно было заметить, что 5 и 2 в трех нижних строках вращаются синхронно, так как 5 не вращалась синхронно ни с 1, ни с 6. Правда, синхронно могли вращаться еще 2 и 1, но из каких-то соображений – точно не помню – я выбрал 2 вместо числа 26, возможно потому, что этот вариант, по моей оценке, быстро проверялся. Впрочем, уже оставалось немного вариантов, и можно было достаточно быстро проверить любой из них. Можно было также вместо варианта с двойкой предположить, что цифры 7 и 8 вращаются синхронно в последних трех столбцах (колонках), а отсюда следовало, что в левой верхней ячейке 9-го блока могла быть только цифра 8, что также приводит к быстрой развязке задачи.

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

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

А в остальном – желаю вам успехов в решении всех проблем.

ВКонтакте Facebook Одноклассники

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

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

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

Исследователи комплексных сетей Золтан Торожкай и Мария Эркси-Раваз из Университета Нотр-Дама также смогли объяснить, почему некоторые загадки судоку более сложные, чем другие. Единственный недостаток в том, что для того, чтобы понять, что они предлагают, нужна степень доктора математики.


Вы можете решить эту головоломку? Она создана математиком Арто Инкалой, и, как утверждают, это самая сложная судоку в мире. Фото с сайта nature.com

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

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


Исследователи использовали «детерминированный аналоговый решатель», чтобы заполнить эту судоку. Фото с сайта nature.com

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

Они создали шкалу от 1 до 4, где 1 - «легко», 2 - «средняя степень сложности», 3 - «сложно», 4 - «очень сложно». Для решения головоломки с рейтингом 2 требуется в среднем в 10 раз больше времени, чем для задачки с рейтингом 1. Согласно этой системе, самая сложная загадка из известных до сих пор имеет рейтинг 3.6; более сложные задачи судоку пока неизвестны.


Теория начинается с картографии вероятностей для каждого отдельного квадрата. Фото с сайта nature.com

«Я не интересовался судоку, пока мы не начали работать над более общим классом выполнимости Булевых проблем, - говорит Торожкай. - Так как судоку - часть этого класса, латинский квадрат 9-го порядка оказался для нас хорошим полем для испытаний, так я с ними и познакомился. Меня и многих исследователей, изучающих такие проблемы, захватывает вопрос, как далеко мы, люди, способны зайти в решении судоку, детерминировано, без перебора, который является выбором наугад, и, если догадка не верна, нужно вернуться на шаг или на несколько шагов назад и начать сначала. Наша аналоговая модель решения детерминирована: в динамике нет никакого случайного выбора или возвращения».


Теория хаоса: степень сложности загадок показывается здесь как хаотическая динамика. Фото с сайта nature.com

Торожкай и Эркси-Раваз полагают, что их аналоговый алгоритм потенциально подходит для применения к решению большого количества разнообразных задач и проблем в промышленности, информатике и вычислительной биологии.

Опыт исследования также сделал Торожкая большим любителем судоку.

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

Методология Торожкая и Эркси-Раваз была впервые опубликована в журнале Nature Physics, а затем - в журнале Nature Scientific Reports.

История игры

Числовую структуру придумали в Швейцарии еще в XVIII веке, на ее основе в XX веке был разработан числовой кроссворд. Однако в США, где непосредственно была придумана игра, она не получила большого распространения, в отличие от Японии, где головоломка не только прижилась, но и получила большую популярность. Именно в Японии она и приобрела привычное название «Судоку», и затем распространилась по миру.

Правила игры

Кроссворд имеет простую структуру: задается матрица из 9 квадратов, называемых секторами. Эти квадраты располагаются по три в ряду и имеют размер 3х3 клетки. Матрица Судоку выглядит как квадрат, состоящий из 3 строк и 3 столбцов, которые делят его на 9 секторов, содержащих по 9 клеток каждый. Часть клеток заполнена цифрами – чем больше цифр известно, тем проще головоломка.

Цель игры

Нужно заполнить все пустые клетки, при этом есть всего 1 правило: цифры не должны повторяться. Каждый сектор, строка и столбец должны содержать цифры от 1 до 9 без повторений. Лучше заполнять пустые клетки карандашом: так будет проще внести изменения в случае ошибки или начать заново.

Методы решения

Рассмотрим простой вариант судоку. Например, в секторе или строке осталась всего 1 пустая клетка, – логично, что в нее надо вписать то число, которого нет в числовом ряду.

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

Таким образом, часть поля кроссворда заполнится. Затем можно приступать к изучению строк. Допустим, в строке есть 3 свободных клетки, вам понятно, какие цифры должны быть туда вписаны, но неизвестно, куда конкретно. Нужно попробовать подстановку. Часто бывают варианты, когда в 2 других клетках цифра не может располагаться, потому что либо она есть в соответствующем столбце, либо в секторе.

Сложные судоку

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

Маленький секрет

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

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

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

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

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

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

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

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