Скачиваний:
201
Добавлен:
17.06.2016
Размер:
2.69 Mб
Скачать

Совместное задание фактов, правил и запросов

1. Предположим, что у вас есть следующие факты и правила:

A fast car is fun.

A big car is nice.

A little car is practical. (Маленькая машина практична.)

Bill likes a car if the car is fun. (Билу нравится машина,

если она крепкая.)

Когда вы прочтете эти факты, вы сможете сделать вывод, что Билу нра-

вятся крепкие машины. Почти тем же способом и Пролог придет к такому же

заключению. Если о крепких машинах не будет дано никаких фактов, то вы

будете не в состоянии сделать логический вывод о типе машин, которые нра-

вятся Билу. Вы можете делать предположения о том, какой тип машин может

быть крепким, однако Пролог знает только то, что вы ему говорите - он не

может строить догадки.

2. Ниже представлен пример, демонстрирующий, как Пролог использует

правила для ответов на запросы. Посмотрим на факты и правила, являющиеся

частью программы CH03EX01.PRO (полностью она приведена на следующей стра-

нице):

likes (ellen, tennis). (Эллен нравится теннис.)

likes (john, football). (Джону нравится футбол.)

likes (tom, baseball). (Тому нравится бейсбол.)

likes (eric, swimming). (Эрику нравится плавание.)

likes (mark, tennis). (Марку нравится теннис.)

likes (bill, Activity) (Билу нравится то же, что и

if likes (tom, Activity). Тому.)

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

likes (bill, Activity) if likes (tom, Activity).

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

языке:

Билу нравится любой вид спорта, если Тому нравится этот вид спорта.

В этом правиле заголовком является likes (bill, Activity), а "телом"

- likes (tom, Activity). Отметим, что в этом примере нет факта, говоряще-

го о том, что Билу нравится бейсбол. Для того же, чтобы Пролог определил,

любит ли Бил бейсбол, вы можете задать следующий вопрос:

likes (bill, baseball).

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

ло:

likes (bill, Activity) if likes (tom, Activity).

Загрузите в свой компьютер программу CH03EX01.PRO (требуемые для

этого действия описаны в Главе 2) и для ее запуска нажмите Alt-R.

/* Программа CH03EX01.PRO */

predicates

likes (symbol, symbol)

clauses

likes (ellen, tennis).

likes (john, football).

likes (tom, baseball).

likes (eric, swimming).

likes (mark, tennis).

likes (bill, Activity) if likes (tom, Activity).

Когда система выведет в диалоговое окно приглашение

Goal: (Цель)

введите запрос:

likes (bill, baseball).

Система ответит в диалоговом окне:

Yes (Да)

Goal: _

Для определения того, что

likes (bill, baseball).

система использовала комбинированное правило

likes (bill, Activity) if likes (tom, Activity).

и факт

likes (tom, baseball).

на основе чего она подтвердила истинность запроса. Теперь она ждет, когда

вы введете в диалоговое окно другой запрос. Введите новый запрос:

likes (bill, tennis).

Система ответит:

No (Нет)

Goal:_

На последний запрос ("Нравится Билу теннис?") Турбо Пролог ответил

нет из-за того, что:

а. Нет фактов, говорящих о любви Била к теннису.

б. Связь между Билом и теннисом не выводится из заданного

правила и имеющихся фактов.

Конечно, в реальной жизни Бил может обожать теннис, однако ответы

Турбо Пролога могут основываться только на тех фактах и правилах, которые

вы ввели в программу.

Соседние файлы в папке Документация