Чтение онлайн

на главную - закладки

Жанры

Программирование на языке Пролог для искусственного интеллекта

Братко Иван

Шрифт:

Таким образом, запятая между целями обозначает конъюнкцию целей: они все должны быть истинными. Однако в Прологе возможна и дизъюнкция целей: должна быть истинной, по крайней мере одна из целей. Дизъюнкция обозначается точкой с запятой. Например:

P :- Q; R.

читается так: P — истинно, если истинно Q или истинно R. То есть смысл такого предложения тот же, что

и смысл следующей пары предложений:

P :- Q.

P :- R.

Запятая связывает (цели) сильнее, чем точка с запятой. Таким образом, предложение

P :- Q, R; S, T, U.

понимается как:

P :- ( Q, R); (S, T, U).

и имеет тот же смысл, что и два предложения

P :- Q, R.

P :- S, T, U.

Упражнения

2.6. Рассмотрим следующую программу:

f( 1, один).

f( s(1), два).

f( s(s(1)), три).

f( s(s(s(X))), N) :-

 f(X, N).

Как пролог-система ответит на следующие вопросы? Там, где возможны несколько ответов, приведите по крайней мере два.

(a)

 ?- f( s( 1), A).

(b)

 ?- f( s(s(1)), два).
 

(c)

 ?- f( s(s(s(s(s(s(1)))))), С).
 

(d)

 ?- f( D, три).

2.7. В следующей программе говорится, что два человека являются родственниками, если

(a) один является предком другого, или

(b) у них есть общий предок, или

(c) у них есть общий потомок.

родственники( X, Y) :-

 предок( X, Y).

родственники( X, Y) :-

 предок( Y, X).

родственники( X, Y) :-

 % X и Y имеют общего предка

 предок( Z, X),

 предок( Z, Y).

родственники( X, Y) :-

 % X и Y имеют общего потомка

 предок( X, Z),

 предок( Y, Z).

Сможете ли вы сократить эту программу, используя запись с точками с запятой?

2.8. Перепишите следующую программу, не пользуясь точками с запятой.

преобразовать( Число, Слово) :-

 Число = 1, Слово = один;

 Число = 2, Слово = два;

 Число = 3, Слово = три.

2.4. Процедурная

семантика

Процедурная семантика определяет, как пролог-система отвечает на вопросы. Ответить на вопрос — это значит удовлетворить список целей. Этого можно добиться, приписав встречающимся переменным значения таким образом, чтобы цели логически следовали из программы. Можно сказать, что процедурная семантика Пролога — это процедура вычисления списка целей с учетом заданной программы. "Вычислить цели" это значит попытаться достичь их.

Назовем эту процедуру

вычислить
. Как показано на рис. 2.9, входом и выходом этой процедуры являются:

 входом — программа и список целей,

 выходом — признак успех/неуспех и подстановка переменных.

Рис. 2.9. Входы и выходы процедуры вычисления списка целей.

Смысл двух составляющих выхода такой:

(1) Признак успех/неуспех принимает значение "да", если цели достижимы, и "нет" — в противном случае. Будем говорить, что "да" сигнализирует об успешном завершении и "нет" — о неуспехе.

(2) Подстановка переменных порождается только в случае успешного завершения; в случае неуспеха подстановка отсутствует.

ПРОГРАММА

большой( медведь). % Предложение 1

большой( слон). % Предложение 2

маленький( кот). % Предложение 3

коричневый ( медведь). % Предложение 4

черный ( кот). % Предложение 5

серый( слон). % Предложение 6

темный( Z) :- % Предложение 7:

 черный( Z). % любой черный

% объект является темным

темный( Z) :- % Предложение 8:

 коричневый( Z). % Любой коричневый

% объект является темным

ВОПРОС

?- темный( X), большой( X) % Кто одновременно темный

% и большой?

ШАГИ ВЫЧИСЛЕНИЯ

(1) Исходный список целевых утверждений:

темный( X), большой( X).

(2) Просмотр всей программы от начала к концу и поиск предложения, у которого голова сопоставима с первым целевым утверждением

темный( X).

Найдена формула 7:

темный( Z) :- черный( Z).

Замена первого целевого утверждения конкретизированным телом предложения 7 — порождение нового списка целевых утверждений.

Поделиться:
Популярные книги

Печать Пожирателя

Соломенный Илья
1. Пожиратель
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Печать Пожирателя

Привет из Загса. Милый, ты не потерял кольцо?

Лисавчук Елена
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Привет из Загса. Милый, ты не потерял кольцо?

Мастер 2

Чащин Валерий
2. Мастер
Фантастика:
фэнтези
городское фэнтези
попаданцы
технофэнтези
4.50
рейтинг книги
Мастер 2

Нечто чудесное

Макнот Джудит
2. Романтическая серия
Любовные романы:
исторические любовные романы
9.43
рейтинг книги
Нечто чудесное

Клан

Русич Антон
2. Долгий путь домой
Фантастика:
боевая фантастика
космическая фантастика
5.60
рейтинг книги
Клан

Имя нам Легион. Том 3

Дорничев Дмитрий
3. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 3

Запасная дочь

Зика Натаэль
Фантастика:
фэнтези
6.40
рейтинг книги
Запасная дочь

Убивать чтобы жить 7

Бор Жорж
7. УЧЖ
Фантастика:
героическая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 7

У врага за пазухой

Коваленко Марья Сергеевна
5. Оголенные чувства
Любовные романы:
остросюжетные любовные романы
эро литература
5.00
рейтинг книги
У врага за пазухой

Кодекс Охотника. Книга XXI

Винокуров Юрий
21. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XXI

Генерал Скала и ученица

Суббота Светлана
2. Генерал Скала и Лидия
Любовные романы:
любовно-фантастические романы
6.30
рейтинг книги
Генерал Скала и ученица

Оцифрованный. Том 1

Дорничев Дмитрий
1. Линкор Михаил
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Оцифрованный. Том 1

Его маленькая большая женщина

Резник Юлия
Любовные романы:
современные любовные романы
эро литература
8.78
рейтинг книги
Его маленькая большая женщина

Хуррит

Рави Ивар
Фантастика:
героическая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Хуррит