0
Ваша корзина
0 товаров — 0
Ваша корзина пуста
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
 

  • Страница 1 из 1
  • 1
Какие действия предприняла обезьяна чтобы достать бананы?
AzamatДата: Пятница, 27.04.2018, 11:57 | Сообщение # 1
Сержант
Группа: Проверенные
Сообщений: 38
Награды: 0
Репутация: 0
Статус: Offline
 
 
 
Какие действия предприняла обезьяна чтобы достать подвешенные на веревке бананы?



Условие задачи:

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

Решение задачи:


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

state(ГдеЯщик, ОбезьянаПоГоризонтали, Обезьяна по вертикали, Банан).

Опишем с помощью этого предиката начальное и конечное состояние задачи:

state(“Ящик у окна”, “Обезьяна у двери”, “Обезьяна на полу”, “Банан висит”).
state(“Ящик под бананом”, “Обезьяна под бананом”, “Обезьяна на ящике”, “Банан у обезьяны”).

Для перехода из одного состояния в другое существуют следующие возможные действия:

Схватить банан;
Залезть на ящик;
Передвинуть ящик;
Перейти из одного места в другое.
Обратите внимание, что переход между действиями возможен при соблюдении определенных условий, например, чтобы схватить банан, обезьяна по крайней мере должна стоять на ящике. Чтобы описать эти условия используем предикат move, содержащий совершаемое действие, состояние до совершения действия и состояние после совершения действия.

move("Схватить", state("Ящик под бананом", "Обезьяна под бананом",
"Обезьяна на ящике", "Банан висит"),
state("Ящик под бананом", "Обезьяна под бананом",
"Обезьяна на ящике", "Банан у обезьяны")).
move("Залезть на ящик", state("Ящик под бананом", "Обезьяна под бананом",
"Обезьяна на полу", "Банан висит"),
state("Ящик под бананом", "Обезьяна под бананом",
"Обезьяна на ящике", "Банан висит")).
move("Передвинуть ящик", state("Ящик у окна", "Обезьяна у окна",
"Обезьяна на полу", "Банан висит"),
state("Ящик под бананом", "Обезьяна под бананом",
"Обезьяна на полу", "Банан висит")).
move("Перейти", state(Ящик, ПоложениеОбезьяны1, "Обезьяна на полу", Банан),
state(Ящик, ПоложениеОбезьяны2, "Обезьяна на полу", Банан)):-
pl(ПоложениеОбезьяны1), pl(ПоложениеОбезьяны2),
ПоложениеОбезьяны1 <> ПоложениеОбезьяны2.
Предикат pl содержит в себе горизонтальное положение обезьяны, им мы воспользовались, чтобы описать тот факт, что при совершении действия «Перейти» обезьяна не может остаться на том же месте, чтобы избежать избыточных решений.

Для получения окончательного решения используем предикат result, определяемый состоянием, с помощью рекурсии и точки останова:

result(state(_, _, _, "Банан у обезьяны")):- !.
result(СостояниеДо):-
move(Действие, СостояниеДо, СостояниеПосле),
write(СостояниеДо),nl,
write(Действие),nl,
write(СостояниеПосле), nl,
result(СостояниеПосле).
В цели программы укажем начальное состояние задачи:
GOAL
result(state("Ящик у окна", "Обезьяна у двери", "Обезьяна на полу", "Банан висит")).
Прикрепления: 0655137.jpg (81.2 Kb)


Сообщение отредактировал Azamat - Пятница, 27.04.2018, 11:59
 
  • Страница 1 из 1
  • 1
Поиск:

 
 
 
 
 
 

 
 
Последние темы на форуме:
 
  • Онлайно-Казино Лучшие топ 10 Клубов по версии Spark.ru
  • Рейтинг 11- Казино-Онлайн 2025: лучший Список Spark Топ 100
  • Рейтинг Spark top Online Казино за 2025 год: Топ 10 Казино
  • Casino Online 2025 — топ 10 casino - рейтинг казино 2025 РУ
  • КАЗИНО ОНЛАЙН ЗА 2025 ГОД: ТОП 29+32 лучших игровых сайтов
  • Ret 10+ Казино-Онлайн За 2025 ГОД: Топ Рейтинг 10 Лучших...
  • SPARK — онЛайн-_КазинО на деньги с выводом Россия на 2025...
  • Sild КАЗИНО-ОНЛАЙН 13++ ЗА 2025__ ГОД: РЕйТИнг ТОП ++10...
  • Рейтинг 10 Казино-Онлайн 2025: лучший Список Spark_ Топ 100.
  • Как обменять российские водительские права удаленно
  • Рейтинг лучших онлайн казино топ 10 casino - рейтинг казино
  • Лучшие 10— Онлайн-Казино за 2024-2025 год : Рейтинг 100++...
  • 60-33 Лучшие КАЗИНО-ОНЛАЙН ЗА 2025 ГОД: Топ 33- лучших...
  • Обзор 100++ лучших бездепозитных бонусов онлайн казино...
  • TOP онЛайн-_КазинО на деньги с выводом Россия на 2025...
  •  
     

     
    Обращаем ваше внимание на то, что данный интернет-сайт www.relasko.ru носит исключительно информационный характер и ни при каких условиях не является публичной офертой, определяемой положениями Статьи 437 (2) Гражданского кодекса РФ. Цена и наличие товара может отличаться от действительной. Пожалуйста, уточняйте цены и наличие товара у наших менеджеров.
    Администрация сайта не несет ответственности за действия и содержание размещаемой информации пользователей: комментарии, материалы, сообщения и темы на форуме, публикации, объявления и т.д.
    Правообладателям | Реклама | Учебники | Политика
    Отопление, водоснабжение, газоснабжение, канализация © 2003 - 2024
    Рейтинг@Mail.ru Рейтинг арматурных сайтов. ARMTORG.RU Яндекс.Метрика