Читать «Вычислительное мышление: Метод решения сложных задач» онлайн - страница 34

Питер Макоуэн

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

Правило угла

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

Единицу нужно поставить в позицию a, b, c или d (рис. 24). Однако в соответствии со вторым правилом головоломки рядом не должна находится ячейка с 1. Значит, позиции b и с исключаются. Остается только позиция d, и только туда получается поставить 1. Мы можем изобразить этот этап в виде схемы для правила замены (рис. 25).

Конечно, в любых пустых шестиугольниках уже могут стоять числа, но правило остается справедливым — это еще один способ наше новое правило. Кроме того, число, которое мы используем при сопоставлении с образцом, необязательно должно быть 1. Это может быть любое другое число в рамках достаточно большой области. Если мы опять поставим на место любого возможного числа, то наше правило становится обобщенным вариантом (рис. 26).

Мы даже можем продолжить обобщение нашего правила. Область, которую мы заполняем, не должна иметь заданную форму. Следующий шестиугольник может стоять в любой позиции у дальнего края более крупной области — везде, где он связан с угловым шестиугольником, но не касается его. В варианте правила угла на рис. 27 мы использовали вопросительные знаки, которые показывают возможные положения этого шестиугольника.

Получаем обобщенное правило:

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

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

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

Записываем правила

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