Выбор модели решения проблем – таблица судоку

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

 

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

 

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

 

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

 

Итак, первая проблема – выбрать подходящую модель задачи или проблемы. За тавтологию простите – она вызвана неточностью и узостью нашего обычного языка. Так вот, совершая первую необходимую операцию (необходимое действие в решении проблем), я просто бездумно (пока) смотрю на фрагмент решаемой задачи:

 

 

Здесь и далее используются задачи, взятые из списка экстремальных судоку http://www.graycell.ru/sudoku.html. Некоторые клетки заполнены, т.е. имеют исходные цифры, другие – пусты. Пустые клетки, как подсказывает ассоциация подсознания по поводу пустых клеток, полагается заполнить. Это первая возникающая в сознании идея. Дальше мысль развивается в направлении заполнения пустых клеток. Здесь в распоряжении все девять не противоречащих условию задачи цифр – от 1 до 9. То есть, пустые клетки в качестве первого шага решения можно заполнить числами 123456789.

 

Делаю я это в Эксель следующим образом: выделяю все клетки фрагмента, нажимаю F5, на запрос "Выделить" выбираю флажок "Пустые ячейки" и жму OK. Далее, не снимая выделения пустых клеток, выбираю для них шрифт Arial Narrow, размер 10 и синий цвет букв, завершая операцию нажатием OK. Для исходных, заполненных, ячеек установки остаются прежние: шрифт Times New Roman, размер 12 и цвет по умолчанию. Далее, ставлю индикатор курсора на ячейку с набранным числом 123456789, нажимаю F2, выделяю и копирую (нажатием Ctrl+C) это число, затем вставляю это число (нажатием Ctrl+V) индивидуально в каждую пустую ячейку. В результате получилась следующая модель нашей задачи:

 

 

Теперь мы можем поразмышлять над тем, что мы можем делать с этой моделью. Очевидно, что цифры, которые есть в исходно заполненных ячейках, не должны повторяться в исходно пустых ячейках. Для первого "квадратика", т.е. блока из девяти ячеек, это цифры 1,7,2,6 , кроме того, в первой строке блока надо убрать из чисел цифру 5, а в третьей строке блока – цифру 4. В первом столбце блока убираем также цифру 4, а в третьем столбце – цифры 6 и 8. Аналогичным образом поступаем с остальными блоками модели.

 

Я это делаю в Экселе следующим образом: выделяю курсором исходно пустые ячейки – сначала первые три в верхней строке первого блока, затем, нажимая клавишу Ctrl, выделяю оставшиеся две ячейки. После этого нажимаю Ctrl+H, в верхней строке запроса ставлю цифру 1, а в нижней – ничего. Затем щелкаю по опции "Заменить все" – в результате из первоначально пустых ячеек блока убирается цифра 1. Далее, не снимая выделения ячеек, убираю аналогичным образом лишние цифры 7, 2 и 6. После этого проделываю подобную операцию со всеми остальными блоками модели и возвращаюсь к первому блоку, а точнее – к первой строке модели.

 

В первой строке модели убираю из первоначально пустых ячеек этой строки цифру 5, во второй строке – цифры 1, 7 и 2 и т.д. – т.е. аналогично для оставшихся строк. Затем в первом столбце модели убираю из первоначально пустых ячеек цифры 1, 7, 4 и проделываю аналогичную операцию для остальных столбцов.

 

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

 

Так вот, собственно задача теперь начинается с ее решения на предварительно обработанной модели. Она, после рутинной обработки, имеет следующий вид:

 

 

Наша модель, как мы ее назвали, является в то же время некоторой системой чисел. А о системах надо знать, что они обладают особенностями и/или свойствами. Особенности – это то, что определяет или может определить наши допустимые и рациональные действия над системой или в рамках системы. Это надо знать и понимать на уровне сознания и подсознания. Если мы этого достигнем в нынешнем умственном упражнении, то эти знания и навык сыграют полезную роль в решении всех прочих по жизни проблем.

 

Чтобы далее обсуждать нашу проблему, надо, как и применительно к любой системе знаний, договориться о терминах используемого для этой системы языка. Слово "блок" мы уже употребили в контекстно понятном для нас смысле. Далее, верхнюю тройку блоков мы будем именовать в порядке слева-направо: блок первый, блок второй, блок третий. Затем идут блоки четвертый, пятый и шестой, а самые нижние – седьмой, восьмой и девятый. Теперь, глядя на систему и расположенные в ней блоки, мы можем о чем-то конкретном говорить.

 

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

 

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

 

Один из полезных алгоритмов нашего мышления, который следует осознавать и внедрять во все уровни понимания (в сознание и подсознание) заключается в том, чтобы стремится видеть частный случай, как частный случай в некоторой системе ему подобных случаев. Систему таких случаев в нашей системе таблицы судоку образуют: эксклюзивная цифра внутри блока, эксклюзивная цифра внутри строки и эксклюзивная цифра внутри столбца. Строкой и столбцом мы называем, если не делаем оговорок применительно к конкретному блоку, строку или столбец всех девяти ячеек модели (таблицы), а эксклюзивной цифрой называем ту единственную в блоке, строке или столбце, которая относится к исходно пустым ячейкам... Я понимаю, что изъясняюсь здесь нудновато, но научный подход, которому следует учиться, требует точных определений и слов.

 

У-ух! И я вместе с вами перевел дух. Наконец-то мы можем приступить и к решению задачи по собственно судоку. Итак, мы можем последовательно обойти все блоки, затем строки и столбцы проставить в эксклюзивных ячейках их эксклюзивные цифры, затем вычеркнуть (удалить) из прочих не эксклюзивных ячеек все содержащиеся в них эксклюзивные цифры, как это мы делали при первоначальной рутинной обработке чисел. Такой, вот, несложный алгоритм, который, в общем-то, не трудно написать и для автоматической обработки чисел, например в Эксель. Но мы пройдемся с этой идеей по задаче "вживую" и посмотрим к чему она нас приведет.

 

Дойдя до блока 5, мы обнаруживаем в ней эксклюзивную цифру 4. По объявленному выше алгоритму решения судоку мы должны проставить эту эксклюзивную цифру в эксклюзивной ячейке, затем удалить эту цифру из всех ячеек блока, строки и столбца, в которых находится эксклюзивная ячейка, и затем перейти к следующему по шагу алгоритма блоку. Однако стоп! Мы с вами не учимся решать судоку, а пытаемся научиться чему-то полезному, решая судоку. Так вот, всегда надо помнить – сознательно и подсознательно – что наши действия совершаются в системе, а действия приводят к изменениям в системе. Наши действия должны быть, конечно, правильными. Но и правильные действия бывают эффективными и не эффективными – ускоряющими и не ускоряющими успех. Если мы не выбираем эффективные действия, то задача, будь она бытовой или научной, решается медленно, а в конкуренции нас быстро обойдут.

 

Итак, мы должны обдумать: какие наши действия могут быть эффективными в рамках нашей системы. Вполне очевидно, что если очередное действие вызывает изменение в системе, то следующее действие должно учитывать изменения в системе. Учитывать до и после совершения действия. Это общее правило или абстрактный (то бишь, общий) алгоритм, которому мы должны научиться.

 

Какие же изменения производит вводимая эксклюзивная цифра 4? Безусловно, что в эксклюзивной ячейке исчезают из числа 2457 цифры 2, 5 и 7, поэтому уменьшается количество этих цифр в блоке, строке и в столбце, включающих эксклюзивную ячейку. А это означает, что одна или несколько из этих цифр может, в свою очередь оказаться в каких-то ячейках эксклюзивной, что мы можем заметить сразу, без рутинного перебора вариантов. И действительно, направив подобным образом наше внимание, мы легко обнаруживаем, что после проставления в эксклюзивной ячейке цифры 4 в блоке 5 возникает другая эксклюзивная цифра 4, чем мы можем воспользоваться сразу же, незамедлительно, эффективно сокращая наш объем последующих действий.

 

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

 

А конкретно получается так. В центральной ячейке блока 5 ставим цифру 4. В средней строке четвертого блока удаляем эту цифру в двух ячейках, но она (цифра 4) остается в нижней строке четвертого блока и не становится здесь – в четвертом блоке – эксклюзивной, так как находится в двух ячейках блока. Зато возникшая в блоке 6 другая эксклюзивная цифра 5 приводит к более заметным последствиям: в шестом блоке после удаления цифры 5 автоматически возникает в одной из ячеек цифра 7.

 

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

 

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

 

 

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

 

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

 

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

 

Ранее я уже обращал ваше внимание на то, что какие-то цифры могут находиться только в одном столбце или в одной строке некоторого блока. Сейчас я предлагаю обратить ваше внимание на девятый блок. В его третьем столбце есть в двух ячейках цифра 5 (в числах 25 и 256). Только в этих ячейках одного столбца! Можно ли как-то использовать эту особенность? Проделав в уме небольшой мысленный эксперимент, мы обнаружим, что цифра 5 и в этом случае оказывается экслюзивной – ее не должно быть нигде в столбце таблицы, где находятся две эксклюзивные ячейки. Теперь из крайнего правого столбца таблицы мы можем исключить в числах цифру 5, в результате в третьем блоке число 56 заменится на цифру 6, а в девятом блоке останутся прежние числа в его ячейках. Аналогичным образом мы можем последовательно обойти все строки и столбцы, исключая из чисел эксклюзивные цифры. Описанная ранее идея эффективных и менее эффективных действий остается в силе, но вы сами с ней разберитесь, чтобы прочувствовать ее без посторонней подсказки.

 

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

 

Но прочие средства тоже существуют. Обратим наше внимание на блок 4. В среднем его столбце в ячейках три числа 259, 259 и 59, в которых содержатся только три цифры 2, 5 и 9, что означает что эти цифры должны занимать только эти три ячейки и что их не должно быть нигде в остальных ячейках четвертого блока и пятой строки таблицы. Правда, в пятой строки это условие уже выполнилось ранее. Но в целом, я думаю, понятно о чем идет речь – не буду далее досаждать однотипными пояснениями.

 

Итак, применив последнее средство, исключаем цифры 2, 5 и 9 в неисклюзивных ячейках блока 4. В результате, в данном случае, мы достигли не многого: два числа 238 и 1238 в верхнем столбце блока 4 заменились на числа 38 и 138.

 

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

 

 

В шестом блоке мы видим три числа, содержащих только три цифры в трех ячейках – эти числа: 57, 567 и 56. Исключаем цифры 5, 6 и 7 из остальных ячеек этого блока и 7-го столбца таблицы. В результате в средней ячейке шестого блока осталась единственная цифра 1, а в других ячейках ситуация заметно упростилась.

 

Более сложный пример: обратим наше внимание на восьмой блок. В нем пять цифр 1, 2, 3, 7 и 9 занимают пять ячеек. Исключая эти цифры из числа в оставшейся ячейке, мы получим в ней единственную цифру 8. Правда, эту эксклюзивную цифру можно было бы и просто заметить при просмотре блока, но здесь важно понять как работает последнее указанное средство.

 

Ячейки с эксклюзивными цифрами вовсе не обязательно должны находиться в пределах одного блока, как в приведенных примерах. Они могут находить в разных блоках, но в пределах одного столбца или одной строки. Некоторые задачи судоки строятся именно с использованием такого приема, чтобы труднее было заметить подобные эксклюзивные ячейки. Если эксклюзивные ячейки находятся в пределах одного столбца, то удаляются эксклюзивные цифры в оставшихся ячейках столбца. Для строки – совершенно аналогично, потому как если повернуть таблицу на 90 градусов, то столбец станет строкой и способ, ранее примененный к столбцу, останется без изменений применительно к строке.

 

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

 

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

 

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

 

Список и краткий обзор статей, касающихся судоку

Copyright © 2009 - 2024 Алгоритмист | Правовая информация
Карта сайта
Яндекс.Метрика