Мальчик жаловался, горько плача:
- В пять вопросов трудная задача!
Мама, я решить ее не в силах,
У меня и пальцы все в чернилах,
И в тетради места больше нету,
И число не сходится с ответом!
Дм. Кедрин
Мэри сейчас уже зрелая женщина, ей 39 лет. Да и Энн не столь молода. Но специалисты познакомились с ними в 1963 году, когда Д. Бобров запустил в дело свою интеллектуальную программу.
(РЕШАЕТСЯ ЗАДАЧА)
(МЭРИ ВДВОЕ БОЛЬШЕ ЛЕТ, ЧЕМ БЫЛО ЭНН, КОГДА МЭРИ БЫЛО СТОЛЬКО ЛЕТ, СКОЛЬКО СЕЙЧАС ЭНН. ЕСЛИ МЭРИ 24 ГОДА, ТО СКОЛЬКО ЛЕТ ЭНН. ВОПР)
Программа отпечатала условия задачи и продолжала:
(ЗАМЕНИМ ПОРЯДКОВЫЕ ЧИСЛИТЕЛЬНЫЕ НА КОЛИЧЕСТВЕННЫЕ)
(МЭРИ В 2 РАЗА БОЛЬШЕ ЛЕТ, ЧЕМ БЫЛО ЭНН, КОГДА МЭРИ БЫЛО СТОЛЬКО ЛЕТ, СКОЛЬКО СЕЙЧАС ЭНН. ЕСЛИ МЭРИ 24 ГОДА, ТО СКОЛЬКО ЛЕТ ЭНН. ВОПР)
(УТОЧНИМ СМЫСЛЫ СЛОВ)
(МЭРИ/ЧЕЛОВЕК) В2(РАЗА/БРВ) БОЛЬШЕ ЛЕТ, ЧЕМ БЫЛО (ЭНН/ЧЕЛОВЕК), КОГДА (МЭРИ/ЧЕЛОВЕК) БЫЛО СТОЛЬКО ЛЕТ, СКОЛЬКО (ЭНН/ ЧЕЛОВЕК) СЕЙЧАС (ПЕРИОД/МЕТКА). ЕСЛИ (МЭРИ/ЧЕЛОВЕК) 24 ГОДА, ТО (СКОЛЬКО/ ВОПР СЛОВО) ЛЕТ (ЭНН/ЧЕЛОВЕК) (ВОПР ЗНАК) (МЕТКА)
(ПЕРЕЙДЕМ К ПРОСТЫМ ПРЕДЛОЖЕНИЯМ)
(ВОЗРАСТ (МЭРИ/ЧЕЛОВЕК) В 2(РАЗА/БРВ) ВОЗРАСТ (ЭНН/ЧЕЛОВЕК) Y ЛЕТ НАЗАД (ПЕРИОД/МЕТКА))
(Y ЛЕТ НАЗАД ВОЗРАСТ (МЭРИ/ЧЕЛОВЕК) РАВЕН ВОЗРАСТУ (ЭНН/ЧЕЛОВЕК) ТЕПЕРЬ (ПЕРИОД/МЕТКА))
(СКОЛЬКО/ВОПР СЛОВО) СЕЙЧАС (ЭНН/ЧЕЛОВЕК) ЛЕТ (ВОПР ЗНАК/МЕТКА)
(СОСТАВИМ УРАВНЕНИЯ) (РАВЕН X (ЭНН/ЧЕЛОВЕК) ВОЗРАСТ) (РАВЕН 24 (МЭРИ/ЧЕЛОВЕК) ВОЗРАСТ) (РАВЕН ((ЭНН/ЧЕЛОВЕК) ВОЗРАСТ) ((МЭРИ/ЧЕЛОВЕК) ВОЗРАСТ) МИНУС Y)
(РАВЕН ((МЭРИ/ЧЕЛОВЕК) ВОЗРАСТ) УМНОЖИТЬ НА 2(( (ЭНН/ЧЕЛОВЕК) ВОЗРАСТ) МИНУС Y))
(РЕЗУЛЬТАТ) (ЭНН 18 ЛЕТ)
Итак, машина нашла возраст Энн. Что же здесь удивительного? Задача, которая стояла перед ней, была несложной, детской задачей, ее без труда решит третьеклассник. А ЭВМ способна разрешить гораздо более серьезные проблемы.
Удивительное здесь в постановке задачи, а не в ее решении. Удивительное в том, что машина разобралась в условиях, а не в том, что вычислила ответ.
Условия задачи про Энн и Мэри изложены непривычно для машины, неформально, свободно, на естественном языке, да еще с примесью загадочности. Каждый из нас, людей, призадумается, прежде чем расставить по местам все эти "сейчас" и "было..., когда", "вдвое больше" и "столько..., сколько", прежде чем уловить суть дела в хороводе имен: Мэри... Энн... Мэри... Энн...
Машина, снабженная программой Д. Боброва, понимает естественный язык и умеет распутать хитросплетения в условиях задачи. Присмотримся к тому, как она это делает.
Прежде всего ЭВМ заменяет порядковые числительные количественными, то есть слова числами. В нашей задаче потребовалась одна такая замена: повествовательное "вдвое" уступило место арифметическому "в 2 раза". Легко понять, как это произошло. В памяти ЭВМ хранится список замен: вдвое -> в 2 раза, втрое -> в 3 раза, пятикратно -> в 5 раз, удвоить -> увеличить в 2 раза и т. д. Машина просто прошлась по списку замен, хранящемуся в ее памяти, и обнаружила подходящую замену.
Второй этап понимания условий задачи много труднее первого. "Уточним смыслы слов" - отважно предложила ЭВМ. А как она их собирается уточнять?
Опираясь на шаблоны. Текст условий разных арифметических задач обязательно содержит одинаковые, стандартные, неизменные от задачки к задачке словосочетания. Вот пример такого словосочетания-шаблона: "в О раза (раз) ▫, чем". Претендентами на место кружка могут быть в шаблоне числа, а на место квадратика - некоторые слова: "больше" или "меньше", "быстрее" или "медленнее", "чаще" или "реже", "легче" или "тяжелее". Мы легко узнаем наш шаблон в словосочетаниях: "встречался с Леной в 3 раза реже, чем хотелось бы" и "поезда ходят в 1,7 раза медленнее, чем в Японии". Он же, этот шаблон, таится в условиях бобровской задачи: "Мэри в 2 раза больше лет, чем было Энн..."
ЭВМ ничего не знает о шаблоне. Она просматривает текст условий задачи слово за словом, слева направо. Все слова ей чужие и непонятные до тех пор, пока не обнаруживается сравнительная конструкция.
Но вот шаблон найден, и забрезжил свет в непроглядной тьме! Машина тут же принимается искать, что с чем сравнивается, выуживает из текста задачи объекты сравнения; первый из них должен находиться в тексте где-то слева от шаблона, а второй - справа от шаблона.
В нашем случае шаблон таков: "в два раза больше лет, чем". Ближайшее к нему левое слово в тексте "Мэри". По списку объектов, помещенному заботливым Д. Бобровым в память машины, ЭВМ устанавливает, что "Мэри" подходящий претендент, что "Мэри" - имя человека.
Теперь ЭВМ прощупывает слова, стоящие в тексте справа от шаблона. Первым ей попадается слово "была". Проверка по списку объектов приводит к неудаче: "была" в нем не значится. Что ж, машина сдвигается на одно слово вправо и испытывает "Энн". С "Энн" все в порядке, она человек и второй объект сравнения. Заметим, кстати, что, если бы проверка, сделанная слева от шаблона, окончилась неуспешно, машина сдвинулась бы еще левее и продолжала свое прощупывание до тех пор, пока первый претендент в объекты сравнения не оказался обнаруженным.
Итак, ЭВМ установила, что Мэри и Энн - люди, и записала эти факты на своем языке: "(МЭРИ/ЧЕЛОВЕК), (ЭНН/ЧЕЛОВЕК).
Шаблон "в О раза (раз) ▫, чем" не единственный в условиях задачи. Цепкая, как вышколенная охотничья собака, машина поднимает из зарослей текста еще одного "зверя": "было О тогда, сколько ▫ сейчас". Она справедливо заключает: речь идет о периоде времени между прошлым и настоящим и помечает свое открытие: (ПЕРИОД/МЕТКА).
Дальше проще. Слово, стоящее в задаче непосредственно после числа, должно быть размеренностью этого числа, например 60 км/ч или 5 см. У нас после числа 2 находится слово "раза". Машина проверяет это "раза", используя список размерностей, который содержит и км/ч, и м3, и амперы, и вольты - весь пантеон физических величин, а для "раз" или "раза" в нем сказано: безразмерная величина (БРВ).
Как видим, программа Д. Боброва содержит списки объектов и размерностей. И еще одним списком обогатил программист память своей машины - списком вопросительных слов: "когда", "сколько", "на сколько", "через сколько". Вот ЭВМ и пометила: (СКОЛЬКО/ВОПР СЛОВО).
Второй этап машинной переработки условий задачи завершился - смыслы слов уточнены. Теперь ЭВМ берется за разрезание текста на куски. Из длинной, петлей свившейся ленты слов она нарезает короткие "сосиски"-предложения. Этих предложений три, и все они предельно просты и четки.
Первое предложение. Используя свои знания о периоде времени, машина обозначила его символом неизвестного: "Y ЛЕТ НАЗАД".
Второе предложение. На ловца и зверь бежит - ЭВМ обнаружила в тексте еще один шаблон. Немного подправив и дополнив, она вычитала в условиях: "было О тогда, сколько ▫ сейчас". И выразила это отношение по-простому: "равно"; возраст Энн теперь и возраст Мэри Y лет назад равны между собой!
Третье предложение. В нем прямо, без уверток сказано, что требуется узнать в задаче.
Разбор задачи окончен. Решение ее не представляет труда. На последнем этапе своей работы машина обозначает искомый возраст через X и составляет два уравнения. В машинном изложении они выглядят несколько старомодно, будто их написал математик XVII века. Позже я скажу о причинах этой старомодности, а пока уравнения в обычной алгебраической записи:
Х=24-Y
24=2(Х-Y).
Машина решает их: Х=18, Y=6, После чего печатает:
(РЕЗУЛЬТАТ) (ЭНН 18 ЛЕТ).
Да, именно так. В 1963 году Энн было 18 лет, Мэри 24 года, а Д. Боброву 27 лет. Все были молоды в 1963 году, когда Д. Бобров защитил докторскую диссертацию в Массачусетском технологическом институте. Исследования по Искинту в США еще только разворачивались.
Теперь они ведутся там широким фронтом, и наиболее удачные программы будут описаны в этой книге. Если внимательно вглядеться в пеструю картину заокеанских исследований, то обнаружатся серьезные противоречия. Прежде всего многие исследовательские задачи ставятся стихийно, по законам спроса - предложения, и оказываются потому случайными, не помогающими прогрессу Искинта, а скорее вредящими ему. Другие работы слишком "приземлены" (за абстрактную теорию не платят), что губительно для направления, родившегося на стыке философии, кибернетики, психологии и лингвистики.
Летом 1977 года в Бостоне проходила международная конференция по Искинту. Из рассказов ее американских участников выяснилось явное стремление капиталистических монополий финансировать только прикладные, дающие быструю прибыль работы, пренебрегая фундаментальными исследованиями. Обозначилась также тенденция милитаризировать эти работы, подчинив их интересам и вкусам Пентагона.
Все это проявления коренного противоречия, свойственного капитализму, противоречия между общественным характером духовного производства и частнособственническим характером присвоения результатов интеллектуального труда. Ученые работают в коллективах, стремятся к добросовестному и широкому обмену мнениями, наука возникает сообща. Цель ученых истина и благо людей, наука бескорыстна и гуманна. А капитализм стремится к частному, рваческому присвоению плодов науки, к наживе на передовых ее достижениях, капитализм корыстен и антигуманен.
Но вернемся к УЧЕНИКу. Запись решения, только что просмотренная нами, - это подлинная распечатка, которую сделала программа Боброва. Точнее, почти подлинная. Ибо подлинник основан на языке ЛИСП, особом языке для программирования задач Искинта. А ЛИСП присвоил себе ряд английских слов, которые мы воспроизвели по-русски. И способы записи уравнения в ЛИСПе чуточку иные, чем у нас, мы кое-где погрешили против свойственной ЛИСПу манеры сначала называть действия (функции), а потом предметы, с которыми производятся эти действия (аргументы функций). Зато изобилие скобок вполне в духе ЛИСПа. И расположение текста тоже.
Слово ЛИСП образовано из двух английских слов: LISt и Processing; оно означает "переработка списков".
Список! В нашем разговоре о программе Боброва это слово уже употреблялось восемь раз. В программу, кстати, кроме знакомых нам списков, входят еще два: список шаблонов и список синонимов, то есть слов и выражений, разных внешне, но одинаковых по существу. Посредством списка синонимов машина выполнила замены вида "Мэри 24 года" на (РАВЕН 24((МЭРИ/ЧЕЛОВЕК) ВОЗРАСТ), замены, интуитивно ясные человеку, но потребовавшие от ЭВМ переработки списка синонимов.
Можно гарантировать, что слово "список" будет самым частым гостем в нашей книге. Потому что многие специалисты считают: Искинт - это переработка списков и ничего, кроме переработки списков.
Найти в списке слово, ничем не отличающееся от проверяемого, переставить слова в списке, слить два списка вместе, выделить из списка подсписок - вот привычная работа ЭВМ в программах Искинта. Или еще: найти в списке слово, обладающее заданными свойствами, положим, из шести букв, кончается на "а"; и машина нашла - "ворона"; поменять во всех словах списка определенные буквы и выбрать те из них, которые после этой замены останутся русскими словами, например, поменять первую букву слова на "к", а предпоследнюю на "в"; наша "ворона" тогда станет "корова", вернуть слову его родную предпоследнюю букву (у нас в результате засияет "кокона"), образовать из новых слов отдельный список ("ворона, корова, корона").
Приводил я случайные примеры переработки списков, изготовил, казалось бы, лишенный всякого смысла новый список и вспомнил историю про коронацию Николая И, последнего и наиболее бездарного российского самодержца. Многие русские газеты поместили отчет о церемонии; среди них была одна (столичная или провинциальная - мнения современников расходятся), в которой официально излагалась вся последовательность коронации, а про кульминационный момент говорилось: "на голову царя возложили ворону". Многочисленные читатели газеты прочли и поразились знаменательной опечатке.
Царская цензура потребовала от газеты немедленного опровержения. Газета подчинилась. В следующем ее номере на первой полосе появилось: "Поправка. Во вчерашнее наше сообщение о торжествах в Москве вкралась опечатка. Вместо слов "на голову царя возложили ворону" следует читать "на голову царя возложили корову". Редакция почтительнейше извиняется перед читателями".
И тут читающая публика рассмеялась. Стало понятно, что это никакая не опечатка, а остроумное издевательство над самодержавием, над помпезностью "священного коронования".
Случай с короной вошел в историю отечественной сатиры. Хлестко и озорно умеет перерабатывать списки естественный интеллект. Что до Искинта, то переработка списков его хлеб насущный, его повседневная работа.
Перерабатывая списки, программа Боброва осиливает разнообразные задачки. Вот еще одна распечатка:
(РЕШАЕТСЯ ЗАДАЧА)
(ВЕС КОРАБЛЯ БРУТТО СОСТАВЛЯЕТ 20 000 ТОНН. ЕСЛИ ЕГО ВЕС НЕТТО РАВЕН 15 000 ТОНН, ТО КАКОВ ВЕС КОРАБЛЯ КАРГО ВОПР)
Когда автор впервые прочел условия задачи, у него возник дополнительный вопрос. Если изъясняться на машинном языке,
(ЧТО ЗНАЧИТ ВЫРАЖЕНИЕ "ВЕС КОРАБЛЯ КАРГО" ВОПР).
Видимо, читатель тоже не знает этого "карго". И машина не знала. Она отпечатала:
ДАННЫХ НЕДОСТАТОЧНО ДЛЯ РЕШЕНИЯ-ПЫТАЮСЬ РАЗОБРАТЬСЯ. (ИЗВЕСТНЫ ЛИ ВАМ ДОПОЛНИТЕЛЬНЫЕ СВЯЗИ МЕЖДУ ТАКИМИ ПЕРЕМЕННЫМИ:) (ВЕС КОРАБЛЯ БРУТТО) (ЕГО ВЕС НЕТТО) (ВЕС КОРАБЛЯ КАРГО)
Внимание, читатель! Вы свидетель знаменательного события. Машина, прервав свою работу, обратилась к человеку за помощью, за разъяснениями. И человек ответил (его ответы печатаются строчными буквами): да
СООБЩИТЕ ИХ МНЕ
(вес корабля карго представляет собой разность между его весом брутто и весом нетто) ДАННЫХ НЕДОСТАТОЧНО ДЛЯ РЕШЕНИЯ Еще раз: внимание! Между ЭВМ и человеком состоялся обмен репликами, возник разговор, диалог. Диалог, правда, недлинный. Далее машина справляется сама:
(ПРЕДПОЛАГАЮ, ЧТО)
((ВЕС НЕТТО) СООТВЕТСТВУЕТ (ЕГО ВЕС НЕТТО))
(ПРЕДПОЛАГАЮ, ЧТО) ((ВЕС БРУТТО) СООТВЕТСТВУЕТ (ВЕСУ КОРАБЛЯ БРУТТО)) (РЕЗУЛЬТАТ)
(ВЕС КОРАБЛЯ КАРГО 5000 ТОНН)
ЭВМ нашла вес корабля карго, попросив и получив в нужный момент содействие человека. С УЧЕНИКа (так окрестил Д. Бобров свою программу) было, вероятно, впервые снято табу вычислительной техники, требовавшее: не вмешиваться! не мешать работающей машине! УЧЕНИК был одной из первых диалоговых программ. Возьмем это себе на заметку потому, что нам еще предстоит обстоятельный разговор о диалоге человека с вычислительной машиной, о слиянии усилий естественного и искусственного интеллектов в решении трудных проблем.
Задача с кораблем
У американской программы есть советский брат. Чтобы различить этих школьников, будем называть американца УЧЕНИК - А, а нашего соотечественника - УЧЕНИК - С Программа УЧЕНИК - С особенно сильна в задачах на движение, в задачах про поезда, самолеты, велосипедистов и пешеходов. УЧЕНИК - С решил такую, например, задачу.
"От Москвы, в которой живет 7 миллионов человек, до Плешкина с населением в 500 человек современный комфортабельный поезд движется 2 часа. Но, к сожалению, из Плешкина идут только старые тесные электрички, переполненные народом, скорость которых примерно на 30 км/ч меньше, чем скорость современного поезда. Житель Плешкина хочет попасть в МГУ на семинар, который должен состояться в 14 часов. Железнодорожное расписание устроено так, что старая электричка отправляется из Плешкина через 3 часа после того, как туда прибывает комфортабельный поезд. Когда выехал из Москвы современный поезд, если известно, что тесная электричка, на которой наш любитель науки проехал все 100 км, прибывает в Москву в 13 часов?"
Программа УЧЕНИК - С так же, как и программа Д. Боброва, работает с шаблонами, ее хлебом не корми, а дай выискать в тексте задачи "расстояние от ▫ до ▫▫", "из ▫ в ▫▫", "между ▫ и ▫▫". Так она устанавливает, что Плешкино и Москва - исходный и конечный пункты движения. Подобным же образом выискивает объекты движения - электричку и поезд, а также характеристики движения.
Что касается жалоб на тесноту и старость электрички, похвал поезду и сравнительных сведений о населении Москвы и Плешкина, то программа оставляет их безо всякого внимания. Она их просто не понимает, не в коня корм. Программа безжалостно отбрасывает всякие тонкости, не входящие в жесткую схему движения. И потому быстро разбирается в условиях задачи.
Мы с вами, читатель, не таковы. Мы, знакомясь а задачной историей, о чем только не подумали. И о том, что Плешкино небольшой поселок с забавным названием. И о том, что герой у задачи необычный - любитель науки, посещающий семинары в МГУ (интересно, какой наукой он там занимается, уж не вычислительной ли?). И о том, что герой не столь уж сладко живет, а старые тесные электрички ему просто надоели.
Мы подумали и об авторе задачи. Не одно ли он лицо с автором программы? Тогда этот программист - молодой человек с хорошо поставленным чувством юмора...
Мысли наши разошлись кругами от центра - уело-вий задачи. Потом мы, конечно, стряхнули с себя рассеянность. И поступили машиноподобно. Где пункты? Где объекты движения? Когда выехали? Когда прибыли? Составим уравнение, решим его; ответ - 20 километров в час. И скова сорвались.
Двадцать километров в час... Значит, бедный парень добирается до Москвы б часов, да еще с вокзала в МГУ едет час - 6 часов он в пути. И в этот же день вернется обратно. Когда кончается его семинар? Часов, наверное, в пять вечера. В 18 он будет на вокзале, а в 11 ночи дома, это самое быстрое. Выехал из дому в 8 часов утра, вернулся в полночь, сильно любит он свою вычислительную науку!
Так думают люди, освещая лучом мысли пространство до задачи, после задачи, вовсе вне задачи. Разбросанный, несобранный ход мыслей приводит к потерям времени, а иногда и того хуже - человек оказывается не способным решить задачу.
Советский психолог Д. Богоявленская исследовала решение различными людьми задачи "О любопытной мухе". Вот условия задачи.
"Из пунктов А и В выезжают навстречу друг другу два велосипедиста. Они движутся с одинаковой скоростью 15 км/ч. Когда между ними остается расстояние в 300 км, с плеча велосипедиста А слетает любопытная муха и летит навстречу велосипедисту В; так как она летит со скоростью 20 км/ч, она встречается с ним раньше, чем велосипедист А. Заинтересованная пробегом муха летает от одного велосипедиста до другого, пока они не встретятся. Спрашивается, какой путь проделала муха?"
Отложите, читатель, на 10-15 минут в сторону эту книгу и попробуйте решить задачу о любопытной мухе. Бумагой желательно не пользоваться, чертежей не делать. Лучше мысленно представить себе, как беспокойная муха летает туда-сюда...
Вам удалось найти решение? Да или нет?
Эту задачу решали многие люди, толковые и грамотные - студенты, инженеры, даже один кандидат химических наук. Почти всем им задача показалась нелегкой, хотя приемы решения у них были разными.
Среди испытуемых Д. Богоявленской были люди, вовсе не решившие задачу, и их оказалось около 40 процентов от общего числа решателей. Четверо из каждого десятка людей не в силах уследить за любопытной мухой, остальные шестеро тратят на эту неблагодарную работу от получаса до полутора часов.
А УЧЕНИК - С решит задачу за считанные секунды. Решит не потому, что знает больше, а потому, что знает меньше, чем наши испытуемые.
Что ему до отблесков солнца на спицах велосипедов что ему до ярких их маек! Его не собьет с толку эта непоседливая муха; ничегошеньки он не ведает ни про спираль Архимеда, ни про черепаху и Ахилла, ни про бесконечно малые. Его дело - пункты А и В; объекты - 1-й велосипедист, 2-й велосипедист, муха; расстояние - 300 километров, скорость 1-го равна скорости 2-го и равна 15 километрам в час, скорость мухи 20 километров в час; время выезда у всех одинаковое, время прибытия тоже; движение равномерное, навстречу друг другу; найти путь мухи. Решение: 300/(15+15)=10 часов; 20 км/ч Х 10 ч=200 км; ответ - 200 километров.
Двести километров - и никаких проблем!
Итак, меньше знать - лучше решать. Если, конечно, тебе достаются именно те задачки, которые ты в своем малосознании способен решать. А если ты живешь в реальном мире с его бурями и страстями, если проблемы, как фурии, выскакивают с разных сторон, непохожие друг на друга, неарифметические... Тогда человеческое воображение, образное представление, звуки, запахи и краски входят в ткань наших решений, оказываются жизненно необходимыми. Чтобы жить в реальном мире, нужно знать гораздо больше, чем УЧЕНИК - А и УЧЕНИК - С, даже если сложить их лингвоариф-метические знания и умения.
Задача с велосипедистами и мухой
Искинт должен работать в мире природы, людей и машин. УЧЕНИКи еще не способны к этому, они приготовишки, не. более. А все же они понимают задачи в их естественной, человеческой постановке, умеют восстановить пропущенное и однозначно истолковать по-разному сказанное. Они способны совершить прыжок от неформального к формальному, смонтировать арматуру из неизвестных и известных, а потом залить конструкцию бетоном уравнений.
Ученики работают с простенькими задачками, но это не беда. Были бы способности, а задачи легко усложнить. И действительно, в конце 60-х годов появились программы, которым под силу почти весь задачник Шапошникова и Вальцева, почти вся школьная алгебраическая мудрость.
О эти школьные задачи! Немало взрослых людей до конца жизни с дрожью вспоминают бездонные бассейны, таинственные растворы, работающих комбайнеров, проницательных продавцов и ехидных землекопов. До конца жизни в их снах из города Потомска отходит поезд, который через х часов мог прибыть в Ни-кудавль, но задержался на у минут в Ерундаре...
Искинт хладнокровно справляется с любой из этих задач, преодолевает болото расплывчатости, усматривает замаскированные факты, уточняет цели. Более того, Искинт покушается на вузовский курс математики, например, на интегрирование.
"Для решения задач интегрального исчисления на уровне хорошего первокурсника была составлена программа для большой быстродействующей универсальной вычислительной машины ИБМ-7090. Программа называется САИНТ (Символический Автоматический ПНТегратор)" - так начинается научный отчет Джеймса Слейгла, автора САИНТа, о проделанной работе.
Очень хочется мне подробно рассказать вам, уважаемые читатели, о САИНТе. Но я не уверен, что все вы знакомы с интегральным исчислением, что вам приходилось на своем веку брать интегралы. Те, кому приходилось, могут подтвердить: слово "брать" здесь не случайное слово. Интегралы, как крепости: чтобы ими овладеть, приходится вести подкопы, взрывать бастионы, подтаскивать лестницы и брать твердыни штурмом. Мозговым, конечно, штурмом.
На вооружении у человека, ведущего интегрирование, десятка полтора элементарных интегралов, роль которых напоминает роль таблицы умножения при арифметических вычислениях. Суть интегрирования - преобразование заданного интеграла в один или несколько элементарных.
Для такого преобразования человек обучен разным тактическим уловкам, приемам военного искусства. Загвоздка в том, какой из приемов применить на данном этапе боя. Скажем, разбил интеграл на части, а вместо упрощения вышло усложнение, не приблизившее к цели, а удалившее от нее.
Особенность человека состоит в том, что он может оценить пользу от того или иного преобразования, решить, стоит ли его применять сейчас или погодить, или вовсе от него отказаться, а взять другое.
Эти оценки человека не абсолютные истины, а догадки. Они не гарантируют успеха; может случиться, что человек ошибся, и крепость-интеграл не будет взята. Но чаще, гораздо чаще происходит иное: с помощью своих догадок-оценок человек решает задачу, которую иначе вовсе не решил бы.
Давайте на время забудем о САИНТе и перенесемся в Париж 1833 года. Весь город увлечен головоломкой, недавно привезенной из Индокитая. "Ханойская башня"- так называется головоломка. Внешне она выглядела очень просто - небольшая, тщательно отполированная дощечка с тремя стержнями и несколько колец. Правила тоже несложны.
В начале игры все кольца нанизываются на ближний стержень (будем играть с четырьмя кольцами). Они лежат пирамидой - самое большое внизу, самое малое сверху. Нужно побыстрее переложить кольца на дальний стержень, сохранив их порядок. Перекладывать по два кольца сразу нельзя, только по одному. А нанизывать их можно на любой из стержней. Можно и возвратить кольцо на стержень, с которого оно было снято. Запрещено класть большее кольцо на меньшее - на любом стержне кольца всегда складываются в пирамиду.
Первый ход в игре очевиден: переносим маленькое колечко либо на средний, либо на дальний стержень. Пусть мы выбрали средний стержень.
Тогда возникают три возможности: вернуть колечко обратно, перенести его на дальний стержень и вовсе не трогать, а взять следующее кольцо и нанизать его на дальний стержень.
Каждая из возможностей, определившихся после первого хода, в свою очередь, вызывает три варианта развития игры. Если нарисовать этот процесс размножения возможностей в виде дерева, то из корня его берут начало два ствола, от каждого из стволов отходят три ветви, а от каждой ветви - опять три ветви и так далее...
Для решения задачи не все ветви равноценны. Двигаясь по одним, мы долго будем плутать в пышной кроне дерева, а оказавшись на других, быстро достигнем цели. Самый короткий путь включает пятнадцать ветвей; пробираясь по ним, мы приходим к решению - четыре кольца аккуратной пирамидой лежат на дальнем стержне.
Если удалось одолеть головоломку с четырьмя кольцами (это удается не сразу), то можно усложнить задачу и взять восемь колец; при этом кратчайший путь составит 255 шагов. Шестнадцать колец; кратчайший путь - 65 535 шагов...
Большую роль в популярности головоломки "Ханойская башня" сыграла ее связь со старинной индийской легендой о храме города Бенареса. Башня этого храма, гласила легенда, особая. Она сложена из 64 золотых колец, надетых на общий стержень. Рядом вкопаны еще два стержня, и монахи неустанно перекладывают кольца со стержня на стержень, соблюдая особый ритуал. Когда все кольца окажутся на дальнем стержне, грянет гром, храм обратится в пыль, а мир исчезнет.
Оценим работу, которую предстоит проделать монахам до рокового мига. Наименьшее число перекладываний составит здесь 18 446 744 073 703 551 615. Если монахи станут переносить по одному кольцу в секунду и будут работать день и ночь, они окончат свой труд приблизительно через 585 биллионов лет.
Значит, пугаться скорой гибели мира нет причин. Зато есть причины поражаться огромности дерева, выросшего на почве несложной головоломки. Зато становится понятным, почему людям трудно справиться с этой забавой, когда число колец восемь или, того хуже, 12. Слишком много вариантов - и не попробуешь их все, и не запомнишь, какие пробовал.
Грузинский кибернетик В. Чавчанидзе назвал возникающую ситуацию "кошмаром перебора". Склонный к ярким и парадоксальным высказываниям, ученый заявил, что "кошмаром перебора" мир мстит за его непонимание. Чтобы решить задачу, нужно избежать полного перебора ветвей дерева возможностей и придумать что-нибудь более остроумное. Если бы снять сразу всю стопку колец и плавно перенести ее с ближнего стержня на дальний, то цель была бы достигнута одним махом...
Хорошая идея, жаль, правила игры не позволяют.
Ладно, не получается решить задачу сразу, будем делать это по частям. Станем собирать нашу пирамиду из колец на дальнем стержне колечко за колечком. Значит, первым там должно оказаться самое большое кольцо.
Но оно задавлено, находится под гнетом других колец. Освободить его от гнета - вот первоочередная цель. Затем не составит труда перебросить его с ближнего на дальний стержень. А потом как-нибудь пристроим к большому кольцу другие кольца.
Итак, наша задача разделяется на три подзадачи, как симфония делится на три части. Мы и назовем свои подзадачи музыкально: АНДАНТЕ, СКЕРЦО и ФИНАЛ.
АНДАНТЕ. Цель: освободить большое кольцо. Для этого надо предварительно освободить среднее. И - как удачно! - здесь опять работает наша идея: сослать угнетателей среднего кольца на запасной, в данном случае дальний стержень.
А чтобы изгнать эту пару колец, нужно сначала очистить малое кольцо, отправив маленькое колечко на запасной, теперь средний, стержень.
А маленькое колечко?.. Оно готово к ссылке. А средний стержень?.. Он свободен. Значит, ссылка маленького колечка осуществима сразу. Значит, можно сделать и все остальное!
Мы решили задачу АНДАНТЕ. Задача СКЕРЦО, как и положено, решается мгновенно: переносим большое кольцо с ближнего стержня на дальний; основание пирамиды заложено.
Теперь задача ФИНАЛ. Легко можно убедиться, что она поддается той же уловке - ссылке угнетателей на запасной стержень.
Выходит, дело сделано, мы знаем, как построить "Халойскую башню" с четырьмя кольцами, хотя и не занимались утомительным перебором возможностей. Мы не обследовали дерево возможностей; мы предпочли вырастить иное дерево - дерево целей. Корень дерева - общая цель головоломки - перенести все кольца. От этого корня ответвляются три ствола, три частные цели - наши АНДАНТЕ, СКЕРЦО и ФИНАЛ.
Что касается ствола СКЕРЦО, то он бесплоден - не ррдит никаких новых целей. Гораздо более плодородны АНДАНТЕ и ФИНАЛ: от них отходят цели меньшего масштаба, все более тонкие и конкретные веточки, вплоть до совсем элементарных целей, вроде "перенести маленькое колечко на средний стержень".
На наших глазах из одной головоломки выросло сразу два дерева: дерево возможностей и дерево целей. Дерево целей кажется более стройным, менее ветвистым, подобным корабельной сосне. Мы и растили его, как корабельную сосну, не давая чересчур ветвиться, обозначая на нем лишь разумные, а не все возможные цели.
Дерево целей - надежная опора и в более сложных случаях, когда башня состоит из восьми или 12 колец. Наши приемы - разделение задачи на подзадачи, освобождение и ссылка колец - не подводят и здесь. Мы не убоимся и главной "Ханойской башни", той, что собрана из 64 золотых колец. Ибо наше оружие - эвристики - не тупится о золото.
Они с самого начала имели дело с золотом. Помните, как Гиерон, царь Сиракуз, попросил Архимеда проверить, из чистого ли золота сделана его новая корона или ювелиры сплутовали. Помните, как мучился Архимед - слишком причудливы были контуры короны, чтобы разбить ее на цилиндры и конусы и геометрически вычислить объем. Помните, как в ояин прекрасный день выскочил он из ванны с ликующим криком "Эврика!", то есть "открыл!".
Он открыл, что корона такое же физическое тело, как и его собственное, и если погрузить ее в доверху наполненный водой сосуд, то объем вылившейся из сосуда воды будет равен объему короны. Архимед подарил нам первую эвристику, эвристику, которая работает до сих пор при измерении объемов тел сложной формы.
Мы не погружали в воду "Ханойскую башню" - и форма у нее простая, и объем башни нам знать ни к чему, Для нее мы нашли другие эвристики. Мы начали дело с конца, с цели, и попытались достичь ее сразу. Когда это не удалось, мы решили хотя бы приблизиться к цели и придумали промежуточную цель - освобождение большого кольца.
Ханойская башня
Это прекрасная эвристика - заменить недостижимую пока конечную цель промежуточной целью, достичь которую гораздо легче. Вся соль тут в том, чтобы почувствовать, что промежуточная цель не уводит в сторону от конечной, а приближает к ней. И еще одну эвристику мы изобрели, имя ей "ссылки лишних колец на запасной стержень". Нам повезло: эта эвристика доставила нас сначала к промежуточной, а потом и к конечной цели.
Вы, конечно, помните, уважаемый читатель, что рассказ о "Ханойской башне" понадобился нам, чтобы разъяснить, какого рода догадки-оценки (теперь мы скажем строже - эвристики) включены в программу САИНТ.
Программа САИНТ, подобно человеку, пытается решить задачу одним махом, заменив данный интеграл элементарным. Если это не получается, она производит алгебраические упрощения и снова пытается решить задачу. Если опять не выходит, САИНТ внимательно смотрит, что за птица-уравнение скрывается под знаком интеграла.
Как живых птиц отличают друг от друга форма клюва, оперение, размер и многие другие черты, так и подинтегральные птицы - алгебраические выражения - имеют каждая свои отличия. Как орнитолог оценивает птенчиков и после оценки надевает на их лапки кольца с перечнем их особенностей, так и САИНТ дотошно оценивает подинтегральное выражение и в памяти ЭВМ приписывает к нему его признаки.
Потом программа САИНТ берется за свой ассортимент эвристик. А он у нее не мал: в программе имеется набор из десяти эвристик, содержится десять драгоценных приемов интегрирования.
САИНТ вдумчиво перебирает эти свои эвристики, оценивает их одну за другой и примеряет каждую из них к подинтегральному выражению: эта не подходит вообще, и эта не подходит, а вот эта срабатывает, и эта годится, и эта тоже.
Программа работает с риском. Может добраться до цели за 3-4 хода, а может закрутиться в череде эвристик: преобразовала, оценила, снова преобразовала, снова оценила... и так без конца. Чтобы проверить успешность работы САИНТа, были взяты 54 задачи, предлагаемые на экзаменах первокурсникам в Массачусетском технологическом институте. Программа решила 52 из них. Две задачи оказались каверзными - память машины перегрузилась промежуточными целями и преобразованиями; САИНТ отпечатал: "Переполнение памяти. Неудача". Но и это неплохо! Ведь КПД САИНТа оказался близким к 96 процентам!
Естественно спросить, быстро ли САИНТ берет интегралы? Примерно с такой же скоростью, что и хороший студент (самый сложный интеграл она штурмовала 18 минут, а самый простой был взят через 1,8 секунды). Вспомним, что САИНТ работала на машине ИБМ-7090, безнадежно устаревшей на сегодняшний взгляд. Сегодня скородействие САИНТа повысилось бы в тысячу раз; чтобы перереши?!? весь задачник, ей понадобилось бы два-три часа. (Поправка: не весь задачник, а 96 процентов входящих в него задач; 4 процента САИНТ не решила бы даже за сутки, ибо САИНТ не строгий алгоритм, гарантирующий решение, а эвристическая программа)
Эвристики - суть этой программы, ее душа, ее радость и печаль.
Эвристики - проблески молнии во тьме проблем. Мрачна, как темная чаща, проблема. Не видно в ней ни зги, ни тропки, ни пути к цели. Но ярко вспыхивает эвристика, освещая все на мгновение; и надо воспользоваться моментом, чтобы увидеть дорогу к цели, пока проблема опять не погрузилась во мрак.
Эвристики - дочери Архимеда - самые остроумные приемы решения задач. Не зря все программы для Искинта долгое время именовалась эвристическими. Не зря программисты изобрели многие десятки эвристик и сами называли их то наивными, то осторожными, то свирепыми, то умными. Есть даже фагозвристики, которые, словно белые кровяные тельца - фагоциты, безжалостно пожирающие микробов, очищают память машины от второстепенных фактов, фактиков, излишней дребедени.
Эвристики - непостоянные красавицы, талантливые и беспечные, полная противоположность унылому работяге алгоритму.
Автору пришлось прочесть не одну статью о коренном различии между эвристиками и алгоритмами. Их настойчиво противопоставляли друг другу, разгоняя по разным углам. А после в угол, где находились эвристики, приводили человека, а в глухой алгоритмический угол затаскивали машину. Образ мысли человека, дескать, в высшей степени эвристичен, а образ мысли машины глубоко алгоритмичен. И отсюда делался вывод: не тягаться машине с человеком, Искинт принципиально невозможен.
Принципиально невозможен! Как часто иным людям кажется принципиально невозможным то, что им непонятно или что грозит нарушением их научных привычек. Но из своих противоположных углов эвристики и алгоритмы кричат: "Мы - братья и сестры, мы - близнецы, не разлучайте нас!"
И эвристики и алгоритмы - это приемы решения задач, четкие, определенные приемы, прилагаемые ко многим задачам. Здесь, в детерминированности и массовости, если пользоваться более строгим языком, нет никаких различий между эвристиками и алгоритмами. Нет различий и в остроумии, изяществе, внутренней силе: встречаются ослепительные по красоте алгоритмы, встречаются и занудные эвристики. Различие между ними проявляется только в одном - в успешности решения задач; алгоритм успешен всегда, эвристика - часто, но не всегда.
Выходит, что эвристика в определенном смысле хуже алгоритма? Но наше "хуже" носит схоластический характер, потому что эвристики работают с теми задачами, для которых нет строгого алгоритма. Вот он, гвоздь вопроса!
Программу САИНТ, написанную Д. Слейглом, удалось через шесть лет усовершенствовать другому ученому - Л. Мозесу; ее оценки стали многочисленнее и тоньше, в результате чего почти исчезли лишние ветви дерева целей. Программа берет интегралы без колебаний, но при этом еще остается эвристической.
Через два года Р. Риш, третий исследователь, напрочь отказался от эвристик. Он придумал алгоритм интегрирования многих видов выражений.
Ну что тут скажешь?! Интегрирование с момента его изобретения и по сию пору считалось серьезной умственной работой. На голову, не умеющую интегрировать, не надевали фуражку инженера. Алгоритма интегрирования не было; откуда взяться простым и однозначным правилам там, где нужна изобретательность?
И все же алгоритм интегрирования оказался возможным. И красивым. И эффективным не на 96, как эвристическая программа Д. Слейгла, а на все 100 процентов.
История с интегралами - поучительный пример, но не доказательство того, что эвристики лишь временные работники в программах Искинта, что в будущем их вытеснят жесткие и жестокие алгоритмы.
Думаю, произойдет совсем другое: они сольются, эвристики и алгоритмы. Понятие "алгоритм" сегодня живет, дышит, развивается, растет. Мы видели - оно вобрало в себя неопределенность и размытость. Оно охватит и эвристичность - умение просто и красиво решать задачи. "Эвристический алгоритм" - непривычное словосочетание, но мы быстро привыкнем к нему.
Мне кажется, что "теория противоположных углов" возникла из-за недооценки гибкости и мощности понятия "алгоритм". При слове "алгоритм" в головах у сторонников этой теории возникает нечто раз навсегда затверженное, неизменное, тупое, нудное, машинное; при слове "эвристика" им грезится что-то изящное, непринужденное, меняющееся, остроумное, неназойливое, человеческое. Но эта греза и есть алгоритмы, проницательные, элегантные, дерзкие алгоритмы.
Впрочем, чему здесь удивляться? Алгоритмы, в том числе эвристические алгоритмы, - порождение человеческого ума. Мы отрываем их от себя и дарим машинам. Если хотите, происходит "переселение душ" из людей в машины. Коль у программиста душа тупая и нудная, то и машинный алгоритм не блещет. Если же программист - человек с нестандартными идеями, с глубокой любовью к делу, тогда и на программы ложится яркий отсвет его личности.
Подлинное различие между Искинтом и человеком находится не на линии "алгоритмическое - эвристическое", оно находится на меже "частное - общее".
Программы, о которых шла речь в данной главе, делают что-нибудь одно. УЧЕНИКи решают арифметические задачки. САИНТ интегрирует. Попробуйте заставить УЧЕНИКов заняться "Ханойской башней" - не справятся, даже о чем идет речь, не поймут. Введите в САИНТ задачу про Мэри и Энн - программа просто остановится. И "Ханойская башня" непостижима для САИНТа.
Нетрудно построить эвристическую программу, которая вмиг разбросает кольца "Ханойской башни". Но в шашки она играть не сможет, хотя мы и сообщим ей шашечные правила. В шашки играет другая программа, играет, между прочим, в силу мастера. Только не предлагайте ей на этом основании головоломки или арифметические задачи.
Однодумы! Все эти программы - однодумы, одно понимают, в одном сильны, в одном результативны, а в другом нет.
Нет, они совсем неплохие, эти программы, но уж больно подогнаны по мерке задачи. Программист и рад бы иначе, но машина иначе не может, иначе задача не решается. А человек ведет себя совсем по-иному. Когда он приступает к новому для себя виду задач, у него заведомо нет узких эвристик; он их изобретает в процессе решения и совершенствует, если приходится всерьез заниматься такими задачами.
Видный советский ученый, академик П. Анохин, считал фундаментальным свойством живого способность к "опережающему отражению действительности". Эта способность в высшей степени свойственна человеку. Основываясь на своих потребностях, желаниях и мотивах, человек самостоятельно и гибко выбирает себе цели, а уж цели ведут его к постановке конкретных задач и к изобретению способов их решения.
Член-корреспондент АН СССР Гермоген Сергеевич Поспелов и профессор Дмитрий Александрович Поспелов в совместной работе пишут: "Основная разница между человеком и ЭВМ связана с наличием у человека потребностей, желаний, мотивации своего поведения, а отсюда и способности формулировать цели, ставить задачи как желаемые, предвосхищенные результаты своей деятельности... Основываясь на этой точке зрения, мы должны отказать вычислительной машине в каком-либо человекоподобном мышлении и интеллекте и рассматривать ее как инструмент, позволяющий "эффективизировать" интеллектуальную деятельность человека".
Итак, ЭВМ - инструмент, повышающий интеллектуальную производительность человека, и не более того. Суровое ограничение; отчего понадобилось высказать его ученым, активно работающим в области Искинта?
Оттого, что основа серьезной научной работы - строгость к себе, взыскательность, желание меньше обещать и больше дать обществу. Председатель Совета по искусственному интеллекту при АН СССР Г. Поспелов, может быть, острее других исследователей понимает, что разработка программ Искинта всегда связана с упрощениями, а упрощения - с неотвратимыми и невосполнимыми потерями. Мы воспроизводим в машине только ход рассуждений человека при решении задач, воспроизводим его сознательное логическое мышление, да и то со многими издержками. А невскрытым остается подсознание человека - могучий, но глубинный пласт интеллекта. А невскрытым оказывается образное мышление - драгоценные, золотоносные жилы. А не тронута вся эмоциональная сфера личности. Негоже в этих условиях утверждать близость Искинта к человеку.
Вместо наивной антропоморфности нужно добиваться серьезной практической пользы в областях, где другие методы бессильны, а Искинт работоспособен. Одна из таких областей ~- управление большими системами, например, крупным морским портом. Д. Поспелов развил для подобных систем теорию гироматов.
Само слово "гиромат" придумано польским писателем-фантастом С. Лемом. По Лему, гиромат - это интеллектуальная машина, способная обнаруживать вокруг себя изменения и быстро откликаться на новизну, обучаться, меняя свое строение, приспосабливаясь к миру. Гиромат Д. Поспелова основан на особой, знаковой, модели внешнего мира, которую строит и перестраивает ЭВМ. О гиромате у нас еще будет случай поговорить подробно, а пока согласимся с Г. Поспеловым и Д. Поспеловым: между человеческим мышлением и программами Искинта огромное расстояние.
Человек удивляет нас прежде всего своей способностью решать разнообразные, очень далекие друг от друга задачи, умением войти в мир задачи, как в свой дом, любовью к необычным задачам.
Волонтер Р. Декарт
Голландия. 1618 год. Волонтер Р. Декарт вместе со своим полком находится в Бреде. Гуляя по улице, он замечает объявление. Похоже, в этом объявлении предлагается желающим для решения трудная задача (была в те времена такая мода). Р. Декарт не понимает условий задачи - он почти не знает голландского языка. Он обращается за помощью к другому ротозею. Незнакомец переводит условия задачи с голландского на латынь.
Они знакомятся. Голландец, оказывается, занимается медициной, математикой и физикой. Он подзадоривает Р. Декарта: работа переводчика должна быть оплачена, плата за услугу - решение задачи.
Задетый за живое, Р. Декарт работает, быть может, всю ночь. Утром он приносит полное решение сложной задачи.
- Я засыпал, а Вы разбудили меня! - с улыбкой говорит Р. Декарт новому своему другу.
Он имеет в виду не минувшую ночь, скорее всю свою предшествующую жизнь, когда любовь к науке и досуг не слились еще у него в страсть решать задачи и понимать, как решают задачи другие люди.
С этого дня жизнь его круто изменилась. В этот день Р. Декарту было 22 года, столько же, сколько сегодня Искинту.