Читать «Искусственный разум» онлайн - страница 50

Алексей Григорьевич Чачко

Итак, "решатель любых задач"! Теперь правильно, но длинно, целых три слова; переставим эти слова и, сократив, получим: ЛЮБОЗАР - ЛЮБой ЗАдачи Решатель. Надеюсь, читатель простит эту вольность; имя ЛЮБОЗАР мне нравится, в нем и любовь, и заря, и мужество.

Любозар

ЛЮБОЗАР действительно решает непохожие друг на друга задачи. Интегрирует функции, перестраивает "Ханойскую башню", доказывает теоремы булевой алгебры (эту способность он явно унаследовал от "Логика-теоретика"), проводит грамматический разбор английских предложений. ЛЮБОЗАР - свой человек в мире головоломок; задачи о кувшинах с водой, трех монетах, отце и сыновьях, миссионерах и людоедах - он раскусил их все.

Храбро взялся он и за знаменитую задачу о семи кенигсбергских мостах. Откуда ему, рожденному в наши дни, знать, что этими мостами в 1736 году интересовался знаменитый математик Л. Эйлер?

Задача была сугубо практической. Город Кенигсберг пересекает река Прегель, омывающая остров Кнейпхоф; через реку переброшено семь мостов. Может ли пешеход обойти все мосты один за другим, пройдя по каждому только один раз? Жители Кенигсберга, говорят, пытались решить эту задачу и головой и ногами, но тщетно. И обратились за помощью к Л. Эйлеру.

Ученый доказал, что экскурсия по семи мостам невозможна. Но ЛЮБОЗАР ничего не знал про неразрешимость задачи. Он трудился изо всех сил, нашел два маршрута по шести мостам, а по семи, естественно, ни одного. Память ЭВМ переполнилась, ЛЮБОЗАР изнемог и сдался, отпечатав: "Исчерпаны все методы для всех целей. Неуспех". О каких методах он говорит? И о каких целях?

Пора, по нашему обыкновению, проникнуть внутрь программы.

Главными ее шестернями служат четыре эвристики, которые авторы назвали методами. Четыре метода у ЛЮБОЗАРа, и каждый из них достоин отдельного рассказа.

Метод первый: "Действую!" Он самый простой и самый прямолинейный из всех любозаровских методов. Когда к данной ситуации можно применить какие-нибудь действия, известные программе, она непременно это сделает. Уточним наше "можно применить". Вспомним, ЭВМ перерабатывает "слова" и ничего, кроме "слов". Один из видов машинной переработки - сличение двух "слов". Пусть первое из "слов" описывает задачную ситуацию (начальную или промежуточную), а второе - стартовые условия для применения данного действия. Если эти два "слова" побуквенно совпадают, действие совершается, а если нет, то ничего не происходит. Например, если первое "слово" выглядит так: "человек стоит возле моста", а второе "слово" так: "возле моста стоит человек", то ЭВМ считает их разными "словами". Получается уж чересчур жестко и тупо; чтобы хоть немного смягчить неловкость, авторы ЛЮБОЗАРа включили в программу преобразователь "слов" в стандартную форму. Он причесывает "слова" на один фасон и после этого шлет их на сличение. В нашем примере действие совершится, ибо по сути оба "слова" одинаковы.