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