Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






CLAUSES. likes(john, computers).






likes(ellen, reading).

likes(john, computers).

likes(john, badminton).

likes(leonard, badminton).

likes(eric, swimming).

likes(eric, reading).

2. Рассмотрите такой запрос: Is there a person who likes both reading and swimming (Этот человек любит и чтение, и плавание)?

likes(Person, reading), likes(Person, swimming).

Пролог решит обе части этого запроса, просматривая в программе факты сверху вниз. В первой части запроса

likes(Person, reading)

переменная Person свободна; ее значение неизвестно до тех пор, пока Пролог не станет находить решение. С другой стороны, второй аргумент, reading, известен. Пролог ищет факт, который подходит для решения первой части запроса

likes(ellen, reading)

так как найдено соответствие (reading из факта сочетается с reading в запрос), Пролог привязывает свободную переменную Person со значением ellen. В то же время, Пролог помещает указатель в список фактов, показывая, насколько далеко продвинулась процедура поиска.

Далее по очереди будет полностью удовлетворение запроса (нахождение человека, который любит и чтение, и плавание), для этого нужно выполнение второй части запроса, основываясь на выполнение первой. Так как Person теперь связана с ellen, Пролог должен искать следующий факт

likes(ellen, swimming).

Поиск Прологом этого факта ведется с начала программы, но такого факта не обнаруживается, так как его нет в программе. Следовательно, вторая часть запроса, когда Person - это ellen, не истинна. Пролог теперь «освобождает» Person и пытается найти другое решения первой части запроса, еще раз используя свободную переменную Person. Поиск другого факта, удовлетворяющего первую часть запроса, начинается с указателя в списке фактов. Это возвращение к последнему отмеченному месту известно как отслеживание в обратном порядке.

Пролог ищет следующего человека, который любит чтение, т.е. пытается найти факт подобно likes(eric, reading). Переменная Person теперь связана с eric, и Пролог еще раз пытается удовлетворить вторую часть запроса, ища в программе факт подобно следующему:

likes(eric, swimming).

3. На этот раз соответствие полностью найдено, и запрос полностью удовлетворен. Пролог выдаст ответ (рис. 1):

Person=eric

1 Solution

 
 

Рис. 1. Вывод результата к вышеописанной программе

 

4. Рассмотрим следующий пример и составим новое отношение-правило дед(X, Y) и определим, кто является дедушкой Кати.

Заданы отношения-факты:

родитель(“иван”, “катя”).

родитель(“анна”, “олег ”).

родитель(“олег”, “дима”).

родитель(“игорь”, “ольга”).

родитель(“олег”, “виктор”).

родитель(“игорь”, “иван”).

мужчина(“дима”).

мужчина(“иван”).

мужчина(“игорь”).

мужчина(“олег”).

мужчина(“виктор”).

женщина(“катя”).

женщина(“ольга”).

женщина(“анна”).

5. Опишем разделы доменов и предикатов.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.