Неэффективная универсальность и инвариантность – возможна. Например, рекомендация «Если не получилось решить задачу одним способом, попробуй другим» может считаться универсальной, поскольку относится к решению задач в самых разных областях. Но вряд ли она достаточно эффективна, поскольку указывает лишь на возможность смены способа, но не на сам способ.
Возникает вопрос: как же люди решают конкретные задачи, относящиеся к классу алгоритмически неразрешимых? А ведь они их решают – и задачи на доказательства тождеств, и задачи на конструирование автоматов из имеющегося набора, и многие другие.
Решения алгоритмически неразрешимых задач и доказательства их правильности возможны и осуществляются очень часто. Но для каждого такого решения приходится каждый раз особым образом комбинировать различные элементы знания. С одной стороны, это элементы декларативного знания: аксиомы, постулаты, теоремы, описывающие некоторые свойства и связи изучаемой области. С другой стороны, это элементы процедурного знания: знания методов, стратегий, приемов. Сюда входят и общелогические, и предметно-специфические (domainspecific) методы, стратегии, приемы, которые «привязаны» к особенностям конкретной области. Все эти элементы вполне надежны в качестве «кирпичиков», из которых конструируется «здание» решения. Их можно и необходимо использовать, без них поиск решения станет значительно менее эффективным или вообще невозможным. Но проблема алгоритмической неразрешимости состоит в том, что нет общих универсальных правил, точных предписаний, как выбрать «кирпичики», нужные для конкретной задачи, и как сложить из них решение этой задачи. Построение «здания» решения задачи, относящейся к классу алгоритмически неразрешимых, с неизбежностью требует эвристических приемов и творчества: способ решения не выводится из более общего известного типового метода, а изобретается. А. Н. Кричевец пишет, что эти эвристические приемы невозможно описать точно, а можно только сказать, что тот, кто владеет ими, каждый раз вновь или даже впервые самостоятельно конструирует новый прием, нужный для конкретной ситуации – «вспомним, что всякий прием когда-то был создан впервые» [Кричевец, 1999(а), с. 39].
При этом достижимость решения не может быть гарантирована на 100 % никакими методами – в отличие от ситуации с алгоритмически разрешимыми задачами. Здесь неизбежно начинают играть роль индивидуальные творческие возможности решающего. Инвариантный подход оставляет за бортом проблемы конструирования таких решений и проблему алгоритмической неразрешимости вообще.
Для наглядности мы использовали в этом описании решения сложных задач метафору «строительства из кирпичиков», но возможны и другие. Например, Д. Дернер использует компьютерную метафору: «можно сказать, что у нас в голове хранится множество фрагментов отдельных программ, которые в конкретной ситуации комбинируются для решения той или иной проблемы» [Дернер, 1997, с. 215]. Системное мышление – это умение настроить комплекс своих способностей на условия конкретной ситуации, которые всегда различны (там же, с. 236).
При этом было бы бессмысленным отрицать возможность и необходимость построения тех или иных относительно общих и достаточно эффективных методов в определенных областях. Эти методы уже оказали огромное влияние на развитие цивилизации. Общие алгоритмические методы лежат в основе современного автоматизированного промышленного производства и бурно развивающихся информационных компьютерных технологий. И, скорее всего, еще будут открыты такие гениальные методы обобщенного инвариантного типа и гениальные алгоритмы, которые приведут к новым технологическим переворотам. Однако необходимо задуматься о том, что в ряде важных отношений границы применимости инвариантных методов ощущаются уже сейчас.
Мы утверждаем, что фундаментальное значение имеет ранее упомянутая проблема распознавания, остановится или нет (не попадет ли в бесконечный цикл) произвольно выбранная программа, являющаяся предписанием алгоритмического типа. Алгоритмическая неразрешимость этой проблемы является примером того, что для работы со многими алгоритмами не существует алгоритмов (нет алгоритмов использования алгоритмов). Принципиальное следствие этой проблемы таково. Ни один алгоритм, ни один план действий не может быть проверен каким-либо общим, универсальным, инвариантным способом на предмет того, закончится ли когда-либо выполнение данного плана или же это выполнение будет продолжаться бесконечно. (Еще раз заметим, что тот или иной конкретный план, алгоритм может быть совершенно «прозрачным» в отношении того, завершится ли его выполнение. Но нет общего метода проверки любого плана на это принципиально важное свойство – выполнимость. Необходимо искать, создавать, изобретать конкретные методы, пригодные для проверки именно анализируемых планов, а не некоего плана вообще). Таким образом, эффективный универсальный метод планирования, построенный на инвариантной, обобщенной и неизменной основе, невозможен.
Читать дальше