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

Предложения: Факты и Правила.

Программист на Прологе описывает объекты и связи, а затем описывает

правила, при которых эти связи являются истинными. Например, предложение

Bill likes dogs. (Бил любит собак.)

устанавливает связь между объектами Bill и dogs (Бил и собаки); этой

связью является likes (любит). Ниже представлено предложение, описываю-

щее, когда предложение "Bill likes dogs." является истинным:

Bill likes dogs if the dogs are nice. (Бил любит собак, если

эти собаки красивые).

Факты: То что известно

В Прологе связь между объектами называется фактом. В естественном

языке связь устанавливается в предложении. В логике предикатов, использу-

емой Прологом, связь соответствует простой фразе (факту), состоящей из

имени связи и объекта или объектов, заключенных в круглые скобки. Как и

предложение, факт завершается точкой.

Ниже представлено несколько предложений на естественном языке со

связью "likes".

Bill likes Cindy. (Билу нравится Санди)

Cindy likes Bill. (Санди нравится Бил)

Bill likes dogs. (Билу нравятся собаки)

А теперь перепишем эти же факты, используя синтаксис Пролога.

likes (bill, cindy).

likes (cindy, bill).

likes (bill, Dogs).

Факты, помимо связей, могут выражать и свойства. Так, например,

предложения естественного языка "Kermit is green" ("Кемит зеленый") и

"Caitlin is girl" ("Кейтлин девочка") на Прологе (выражая те же свойства)

выглядят следующим образом:

green (kermit).

girl (caitlin).

Правила: То что вы можете получить из заданных фактов

Правила позволяют вам вывести один факт из других фактов. Другими

словами можно сказать, что правило - это заключение, для которого извест-

но, что оно истинно, если одно или несколько других найденных заключений

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

связи "likes":

Cindy likes everything that Bill likes. ("Санди любит все, что любит

Бил".)

Caitlin likes everything that is green. ("Кейтлин любит все

зеленое".)

Используя эти правила, вы можете из предыдущих фактов найти некото-

рые вещи, которые любят Санди и Кейтлин:

Cindy likes Cindy. (Санди любит Санди.)

Caitlin likes Kermit. (Кейтлин нравится кемит.)

Для задания этих же правил в Прологе вам нужно незначительно изме-

нить синтаксис:

likes (cindy, Something) if likes (bill, Something).

likes (caitlin, Something) if green (Something).

Кроме того, вы можете думать о правиле как о процедуре. Другими сло-

вами, правила:

likes (cindy, Something) if likes (bill, Something).

likes (caitlin, Something) if green (Something).

могут означать следующее: "Для того, чтобы доказать, что Санди любит

что-то, нужно доказать, что это же самое любит Бил." и "Для того, чтобы

доказать, что Кейтлин что-то любит, необходимо доказать, что это "что-то"

- зеленое.". С такой "процедурной" точки зрения правила могут "попросить"

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

экран.

Запросы

Предоставив Прологу множество фактов, мы можем, в соответствии с

этими фактами, задавать вопросы: это известно как запрос системы Пролога.

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

и вопросы, задаваемые людям. И, основываясь на уже известных фактах и

правилах, представленных ранее, и Пролог и люди будут отвечать на вопросы

аналогичным образом.

На естественном языке мы спрашиваем вас:

Does Bill like Cindy? (Бил любит Санди?)

В синтаксисе Пролога мы запрашиваем Пролог:

likes (bill, cindy).

Получив данный вопрос, Пролог ответит:

Да,

т.к. у него есть факт, говорящий именно это.

Немного усложнив и обобщив вопрос, мы можем спросить (на естествен-

ном языке):

What does Bill like? (Что любит Бил?)

В синтаксисе Пролога мы запрашиваем его:

likes (bill, What).

Отметим, что синтаксис Пролога при задании вами вопроса не изменяет-

ся: этот запрос выглядит очень похожим на факт. Кроме того, очень важно

отметить, что второй объект (What) начинается с заглавной буквы, тогда

как первый объект (bill) - нет. Это объясняется тем, что bill - это конс-

танта (известное значение), тогда как What - переменная. Обычно, констан-

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

Пролог всегда ищет ответ на вопрос, начиная с первого факта. Он

просматривает каждый факт до тех пор, пока не достигнет последнего из

них. Получив вопрос о том, что любит Bill, Пролог ответит:

What = dogs

What = cindy

2 Solutions (2 решения)

Это объясняется тем, что Пролог знает:

likes (bill, cindy).

и

likes (bill, dogs).

Мы надеемся, что у вас получилось то же самое.

Если же мы спросим вас (и Пролог):

What does Cindy like?

likes (cindy, What).

Пролог ответит:

What = dogs

What = cindy

What = bill

3 Solutions

Это объясняется тем, что Пролог знает, что Санди любит Била и все

то, что любит Бил, а также то, что Бил любит Санди и собак.

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

давать людям. Однако, на вопросы типа "Какие девушки нравятся Билу?" не

может быть пока получено ответа, т.к. Пролог, в этом случае, не знает

фактов о девушках и не может, следовательно, вывести заключение на основе

неизвестного материала. В данном примере мы не предоставили Прологу ка-

ких-либо связей или свойств, позволяющих определить, являеются ли ка-

кие-либо объекты девушками.

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