Чачко Алексей Григорьевич
Шрифт:
Начало было скромным. Отобрали группу студентов, незнакомых с математической логикой. Предлагали каждому из них доказать одну или несколько теорем этой отрасли математики. Обращали внимание своих испытуемых: здесь не так важен результат, как ход рассуждений. Просили рассуждать вслух, не замалчивая ничего - ни колебаний, ни сомнений, ни вздорных мыслей, ни полезных идей, ни движений вперед, ни отказов от выбранного пути и возвратов вспять. Разрешали делать любые записи, стремились снять то, что на жаргоне психологов называется "напряженкой", создать непринужденную обстановку.
Потом магнитофонные протоколы решения задач и листочки с выкладками студентов тщательно обрабатывались. Исследователи искали общие для многих студентов приемы доказательства теорем, эвристики в математической логике. Потом место студентов заняла вычислительная машина; опираясь на студенческие эвристики, ученые создали для ЭВМ программу "Логик-теоретик".
Программа А. Ньюэлла, Г. Саймона и К. Шоу оказалась безупречным логиком и энергичным теоретиком: доказала 38 теорем булевой алгебры. Конечно, молодец этот "Логик-теоретик"; жаль, опять однодум, искусник в узком, замкнутом мирке, в математической логике.
Естественно задать вопрос, отчего ученые выбрали именно этот мирок? Ну, понятно, он однообразен - легче делать программу. Ну, естественно, он формализован - еще удобнее для програмхмиста. Удобств много, а польза от него какая? Можно ли заставить "Логика-теоретика" сделать что-то практическое?
Кажется, и пробовать не стоит. Абстрактный и бесцветный, бродит "Логик-теоретик" на дальней окраине математики, никак не касаясь практических дел. Но в его абстрактности и в его бесцветности есть серьезные достоинства.
Абстрактный - значит подчиненный правилам формальной логики, законам исчисления предикатов. Это исчисление, конечно, далеко не исчисление человеческих мыслей, но кое-что, но некоторые черты, но серьезные оттенки человеческого мышления уловлены им верно, формализованы, превращены в алгебру. И потому средствами исчисления предикатов удается описать условия многих практических задач.
Бесцветный - значит не окрашенный в собственные цвета каждой задачи, значит, не однодум. Эвристики, добытые при доказательстве логических теорем, не узкие, как эвристики САИНТа, а общие, широкие, способные браться за разные задачи, описанные языком исчисления предикатов.
Абстрактность и бесцветность "Логика-теоретика" не уход от мышления человека, а приближение к нему настолько, насколько позволяет нынешняя математика. Кроме доказательства 38 теорем булевой алгебры, "Логик-теоретик" принес 39-е доказательство: наметил дорогу, по которой от программ-однодумов можно перейти к программам Искинта, решающим разные задачи. "Логик-теоретик" стал пробным камнем в поисках "Общего Решателя Задач".
Согласитесь, читатель, название новой программы выглядит странно. Что значит "общий" - принадлежащий всем, что ли? Нет, конечно, это ошибка перевода с английского языка на русский, ошибка, прижившаяся, ставшая привычной в специальной литературе. На самом деле А. Ныоэлл, Г. Саймон и К. Шоу назвали свою программу решателем всяких задач, или, если угодно, любых задач.
Итак, "решатель любых задач"! Теперь правильно, но длинно, целых три слова; переставим эти слова и, сократив, получим: ЛЮБОЗАР - ЛЮБой ЗАдачи Решатель. Надеюсь, читатель простит эту вольность; имя ЛЮБОЗАР мне нравится, в нем и любовь, и заря, и мужество.
ЛЮБОЗАР действительно решает непохожие друг на друга задачи. Интегрирует функции, перестраивает "Ханойскую башню", доказывает теоремы булевой алгебры (эту способность он явно унаследовал от "Логика-теоретика"), проводит грамматический разбор английских предложений. ЛЮБОЗАР - свой человек в мире головоломок; задачи о кувшинах с водой, трех монетах, отце и сыновьях, миссионерах и людоедах - он раскусил их все.
Храбро взялся он и за знаменитую задачу о семи кенигсбергских мостах. Откуда ему, рожденному в наши дни, знать, что этими мостами в 1736 году интересовался знаменитый математик Л. Эйлер?
Задача была сугубо практической. Город Кенигсберг пересекает река Прегель, омывающая остров Кнейпхоф; через реку переброшено семь мостов. Может ли пешеход обойти все мосты один за другим, пройдя по каждому только один раз? Жители Кенигсберга, говорят, пытались решить эту задачу и головой и ногами, но тщетно. И обратились за помощью к Л. Эйлеру.
Ученый доказал, что экскурсия по семи мостам невозможна. Но ЛЮБОЗАР ничего не знал про неразрешимость задачи. Он трудился изо всех сил, нашел два маршрута по шести мостам, а по семи, естественно, ни одного. Память ЭВМ переполнилась, ЛЮБОЗАР изнемог и сдался, отпечатав: "Исчерпаны все методы для всех целей. Неуспех". О каких методах он говорит? И о каких целях?
Пора, по нашему обыкновению, проникнуть внутрь программы.
Главными ее шестернями служат четыре эвристики, которые авторы назвали методами. Четыре метода у ЛЮБОЗАРа, и каждый из них достоин отдельного рассказа.