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