Назад | Содержание| Вперёд 2. 5. Пример: обезьяна и банан Задача ...

Назад | Содержание| Вперёд

2. 5.    Пример: обезьяна и банан

Задача об обезьяне и банане часто используетсяв качестве простого примера задачи из областиискуственного интеллекта. Наша пролог-программа,способная ее решить, показывает, как механизмысопоставления и автоматических возвратов могутприменяться для подобных целей. Мы сначаласоставим программу, не принимая во вниманиепроцедурную семантику, а затем детально изучимее процедурное поведение. Программа будеткомпактной и наглядной.

Рассмотрим следующий вариант данной задачи.Возле двери комнаты стоит обезьяна. В серединеэтой комнаты к потолку подвешен банан. Обезьянаголодна и хочет съесть банан, однако она не можетдотянуться до него, находясь на полу. Около окнаэтой же комнаты на полу лежит ящик, которымобезьяна может воспользоваться. Обезьяна можетпредпринимать следующие действия: ходить пополу, залезать на ящик, двигать ящик (если она уженаходится около него) и схватить банан, если онастоит на ящике прямо под бананом. Может лиобезьяна добраться до банана?

Одна из важных проблем при программированиисостоит в выборе (адекватного) представлениярешаемой задачи в терминах понятийиспользуемого языка программирования. В нашемслучае мы можем считать, что "обезьяний мир"всегда находится в некотором состоянии, ионо может изменяться со временем. Текущеесостояние определяется взаиморасположениемобъектов. Например, исходное состояние мираопределяется так:

(1)        Обезьяна у двери.

(2)        Обезьяна на полу.

(3)        Ящик у окна.

(4)        Обезьяна не имеетбанана.

Удобно объединить все эти четыреинформационных фрагмента в один структурныйобъект. Давайте в качестве такого объединяющегофунктора выберем слово "состояние". На рис.2.12 в виде структурного объекта изображеноисходное состояние.

Нашу задачу можно рассматривать как игру дляодного игрока. Давайте, формализуем правила этойигры. Первое, целью игры является ситуация, вкоторой обезьяна имеет банан, т. е. любоесостояние, у которого в качестве четвертойкомпоненты стоит "имеет":

        состояние( -,-, -, имеет)

Второе, каковы разрешенные ходы, переводящиемир из одного состояния в другое? Существуютчетыре типа ходов:

(1)        схватить банан,

(2)        залезть на ящик,

(3)        подвинуть ящик,

(4)        перейти в другое место.

Рис. 2. 15.  Поиск бананаобезьяной. Перебор начинается в верхнем узле ираспространяется вниз, как показано.Альтернативные ходы перебираются слева направо.Возврат произошел только один раз.

котором в ней расположены предложения,касающиеся отношения ход. В нашемслучае этот порядок (к счастью) оказался весьмаподходящим. Однако возможен и менее удачныйпорядок. По правилам игры обезьяна могла бы слегкостью ходить туда-сюда, даже не касаясьящика, или бесцельно двигать ящик в разныестороны. Как будет видно из следующего раздела,более тщательное исследование обнаруживает, чтопорядок предложений в нашей программе является,на самом деле, критическим моментом дляуспешного решения задачи.

Назад | Содержание| Вперёд









Главная | В избранное | Наш E-MAIL | Добавить материал | Нашёл ошибку | Наверх