Аруцев Александр Артемьевич, Ермолаев Борис Валерьевич, Кутателадзе Ираклий Отарович, Слуцкий Михаил Семенович
Отличительное свойство мышления заключено, наверное, в способности достигать определенной цели, то есть находить нужный вариант среди других, в принципе допустимых, но не приводящих к требуемому результату. Например, если у обезьяны в клетке есть куча различных предметов, но достать банан она может, лишь выбрав из кучи ящик, чтобы встать на него, и палку, чтобы сбить банан, то мы судим об интеллекте обезьяны по тому, как она справляется с выбором.
Допустимые варианты - это комбинации некоторых элементов: действий в практических вопросах, умозаключений в доказательствах, красок и звуков в искусстве. Может быть, чтобы получить искомое сочетание, надо просто перебирать варианты один за другим и отбрасывать все негодные?
Бесплодность такого подхода следует из простого факта, называемого в кибернетике комбинаторным взрывом. Дело в том, что если элементы могут свободно группироваться друг с другом, то общий набор сочетаний растет (с увеличением числа элементов в наборе) крайне быстро, экспоненциально. Так, при алфавите всего из десяти символов можно составить 10100 текстов длиной по сто букв!
Машине, просматривающей даже миллиард миллиардов таких стобуквенных слов в секунду (конечно, это фантастическая скорость), для полного обозрения их понадобится около 1074 лет. Для сравнения, время, прошедшее после космологического Большого взрыва - "всего лишь" 1010. Поэтому испытать все варианты не под силу ни "медлительному" человеческому уму, ни сколь угодно совершенному компьютеру.
И все же каким-то образом возникают уникальные тексты из многих сотен и тысяч знаков (в музыке Моцарта нельзя тронуть ни одну ноту). В поиске таких новых и незаменимых комбинаций состоит суть творчества. "Но ведь где-то есть он в конце концов, тот - единственный, необъяснимый, тот - гениальный порядок звучащих нот, гениальный порядок обычных слов!" (Р. Рождественский).
Значит, должны существовать способы отыскания "иголки" нужного без полного перебора "стога сена" возможного. Концепция Л.И.Верховского позволяет определить подходы для формализации такого процесса.
1. Пирамида языков
Ясно, что построение искомой комбинации было бы невозможно, если б оно сразу начиналось на уровне тех элементов, на котором оно окончательно должно быть выражено - назовем этот уровень языком реализации. Ведь для сочинения романа недостаточно знания букв, а для того, чтобы добраться до нужного адреса, - правил уличного движения.
Поэтому мы всегда используем не один язык, а целый их набор. С помощью этого набора пытаемся решить проблему в общем, то есть свести ее к ряду подпроблем, те - к еще более мелким, и так до тех пор, пока каждая из них не будет настолько проста, что сможет быть выражена на языке реализации. Фактически мы одну сложную задачу последовательно разбиваем на все большее число все более легких. Как если бы при прокладке маршрута пользовались бы комплектом карт разного масштаба.
В самом деле, определяя путь, мы начинаем с самой грубой карты, охватывающей весь маршрут. От нее переходим к небольшому набору более подробных, от каждой из них - к нескольким еще более детальным. И всякий раз мы без труда находим нужное, так как каждая более общая карта уже по смыслу резко ограничивает дальнейший перебор. Таким образом, в иерархии языков заключено противоядие против комбинаторного взрыва.
Понятно, что успех всей многоступенчатой процедуры будет зависеть от того, насколько полон имеющийся набор "карт", нет ли там пропусков целых ярусов или отдельных экземпляров. Но такая завершенность возможна только в хорошо изученной области. Наиболее характерна именно нехватка знаний, требующая усилий для расширения и реорганизации языковых средств.
Чтобы разобраться в развитии таких средств, удобно обратиться к языкам программирования.
2. Программистские аналогии
В схеме обычной современной ЭВМ воплощен язык машинных команд, состоящий из простейших арифметических и логических операций. Примитивность этого языка - плата за универсальность: предполагается, что машина будет использована для разных целей, а из маленьких кирпичей как раз и можно строить дома самой витиеватой формы, чего не скажешь о крупных блоках.
Однако каждый конкретный пользователь решает только свой узкий круг задач, и универсальность ему не нужна. Напротив, он хотел бы ворочать большими блоками, что позволило бы ему уменьшить перебор. Иными словами, он желал бы иметь язык, ориентированный именно на его проблемы. Как же его получить?
При составлении нескольких самых простых программ некоторые сочетания команд все время повторяются, они как бы слипаются между собой. Такой комбинации можно присвоить имя, ввести ее в память, и оператор языка более высокого уровня готов. (Это аналогично выработке условного рефлекса - повторяющиеся стимулы и реакции становятся единым целым.) Такой вариант действий можно назвать путем "снизу".
Но есть и другой путь - "сверху". Анализируют все множество решаемых задач и ищут набор как можно более крупных частей, из которых складывался бы любой нужный алгоритм. Проводя опять-таки параллель со строительством, можно сказать, что определяют комплект блоков, из которых удастся возвести все здания оговоренного типа.
Здесь человек использует свое преимущество перед машиной в разноплановости своих представлений о мире. Для компьютера этот крупноблочный язык совершенно непонятен, и ему надо перевести каждый блок в набор кирпичей - машинных команд. Для этого сочиняется программа-транслятор (опять же путем иерархического разбиения). В разных случаях будут свои наборы блоков; так возникают сотни алгоритмических языков - каждый из них по-своему членит мир.
В этих соотношениях проявляется общий принцип мышления - работать на верхних этажах языковой иерархии. Если в нашем распоряжении нет языка высокого уровня - то его надо создать. Главная цель при этом - избежать больших переборов вариантов.
Окончательный результат, например, обоснование какого-то утверждения, должен быть приведен к чему-то хорошо понятному: аксиомам в формальной теории, атомно-молекулярным представлениям в химии (это - язык реализации). Значит, задача состоит в том, чтобы спуститься до этого уровня, а затем идти в обратную сторону (снизу вверх), осуществляя логический вывод, строгую дедукцию.
3. Две логики
Еще в школе на уроках геометрии мы хорошо усваиваем сущность строгой логической системы: если удалось протянуть цепочку умозаключений от исходных постулатов до требуемого утверждения, то не остается никаких сомнений в его истинности (пока кто-нибудь, подобно Лобачевскому, не усомнится в самих основах). Но если цепочка вывода достаточно длинна, то, зная одни аксиомы, построить доказательство без большого перебора нельзя.
Поэтому здесь тоже нужны целые блоки умозаключений. Для этого решаем сначала совсем простые задачи (цепочки коротки), а каждую уже решенную запоминаем - они и становятся понятиями более высокого уровня (это то, что мы называем путем "снизу"). Наиболее важные, то есть отражающие общие свойства всего круга задач утверждения, именуют теоремами - их-то нужно помнить обязательно.
Теперь, столкнувшись с более трудной задачей, уже не придется сводить ее к постулатам, а лишь представить как комбинацию уже известных задач и доказанных теорем (от них путь вниз уже проделан). Решить задачу - значит, "выложить, как пол комнаты паркетом, задачу - аксиомами". Нахождение такой укладки отражает построение доказательства, то есть состава и порядка умозаключений. Понятно, что если задача достаточно велика, то сразу с нею не справиться (все тот же большой перебор). Поэтому следует для начала расширить набор правильных утверждении. Возьмемся за более простые задачи. Легко заполняем их аксиомами. Теперь, держа в уме эти блоки, можно снова вернуться к трудной задаче. Понятно, что она сводится к уже решенным.
Именно так строятся занятия по учебнику или с хорошим учителем, когда специально подобранный ряд все усложняющихся задач позволяет постепенно наращивать знания ученика. А что делать в новой, неисследованной области?
Если там есть сколько-то установленных фактов, то с них все и начинается. Внимательно изучаем их строение, стараемся обнаружить скрытую закономерность, некоторый общий принцип. Выявляем сходные контуры и мотивы - определяем для себя эвристики, которые позволят резко сузить число приемлемых гипотез. Дальше просеиваем правдоподобные варианты.
Наконец, после долгих размышлений и неудачных проб, находим - эврика! - что все факты представимы как сочетания нескольких гипотез. Переживаем то редкое и надолго запоминающееся мгновение, которое называют озарением, инсайтом.
Понятно, что введение элементов-гипотез - это уже знакомый нам путь "сверху". Загвоздка в том, что сами эти элементы могут оказаться слишком большими, слишком далекими от обыденных представлений, чтобы сразу быть выраженными на языке общеизвестного. Часто это просто смутные ощущения, когда сам автор догадки уже уверен в ее правильности, но еще не может убедить других. Как говорил Карл Гаусс: "... я знаю свои результаты, я только не знаю, как я к ним приду".
И все же, несмотря на образовавшуюся логическую пропасть, возникновение таких неясных образов - ключевой этап. Он соответствует интуитивному решению, постановке новых задач, определяющих все дальнейшее: формулировку и обоснование гипотезы, а затем превращение ее в теорию. Каждый интуитивный образ - "замок в облаках" - должен быть закреплен (дальнейшим подразбиением) на твердой почве аксиом и теорем. Ясно, что интуиция - это не что-то мистическое, а итог движения мысли "вширь", вынашивания своего особого взгляда, упрощающего всю картину.
Итак, получаются две основные стадии создания теории: сначала угадывание языка максимально высокого уровня для описания имеющихся фактов, а потом - строгое обоснование.