Студопедия

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

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

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






Likes(ellen, tennis).






Likes(john, football).

Likes(tom, baseball).

Likes(eric, swimming).

Likes(mark, tennis).

Likes(bill, Activity): - likes(tom, Activity).

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

Факт, выражающий отношение «likes» в естественном языке:

ellen likes tennis - Эллин любит теннис.

Вот тот же самый факт, написанный на языке Пролог:

likes(ellen, tennis).

Последняя строка в Программе является правилом:

likes(bill, Activity): - likes(tom, Activity).

Это правило соответствует следующему утверждению в естественном языке

Bill likes an activity if Tom likes that activity. - Bill любит занятие, если Tom любит это занятие.

В этом правиле, головой является likes(bill, Activity), а телом - likes(tom, Activity). Заметьте, что в этом примере нет никакого факта о том, что Билл любит бейсбол (Bill likes baseball).

5. На Прологе, чтобы выяснить, любит ли Билл бейсбол, задайте такой запрос:

likes(bill, baseball).

При попытке найти решение этого запроса, Пролог будет использовать правило:

likes(bill, Activity): - likes(tom, Activity).

В результате программный код должен выглядеть следующим образом:

PREDICATES

nondeterm likes(symbol, symbol)

 

CLAUSES

likes(ellen, tennis).

likes(john, football).

likes(tom, baseball).

likes(eric, swimming).

likes(mark, tennis).

likes(bill, Activity): - likes(tom, Activity).

 

GOAL

likes(bill, baseball).

 

6. Чтобы проверить написанную программу нажмите пункт меню Project → Test Goal. Система выдаст ответ в диалоговом окне (рис. 1) - Yes.

 

Рис. 1. Пример программы на Прологе по определению нравится ли Биллу бейсбол

 

Это результат объединения правила

likes(bill, Activity): - likes(tom, Activity).

с фактом

likes(tom, baseball).

7. Для того чтобы решить, любит ли Бил бейсбол likes(bill, baseball). Исправьте запрос в разделе GOAL likes(bill, baseball) на likes(bill, tennis). Система ответит (рис. 2) - No.

Рис. 2. Пример программы на Прологе по определению нравится ли Биллу теннис

 

Visual Prolog ответил No на последний запрос (" Does Bill likes tennis? "), потому что не было факта, что Bill likes tennis (Билл любит теннис). Объекты Bill и tennis не могут быть выведены, используя имеющиеся правила и факты. Конечно, может быть Билл и обожает теннис в реальной жизни, но Visual Prolog отвечает, основываясь только на факты и правила, которые были заданы в программе.

8. Рассмотрим следующий пример.

Имеется база данных, содержащая следующие факты:

родитель(илья, марина).

родитель(марина, ира).

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

родитель(николай, ира).

родитель(ольга, алексей).

родитель(марина, саша).

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

Необходимо определить:

1) верно ли, что Марина является родителем Саши;

2) верно ли, что Алексей является родителем Ольги;

3) кто является ребенком Николая;

4) кто родители Ивана;

5) всех родителей и их детей.

9. Для начала опишем разделы доменов и предикатов.






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