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

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

Жанры

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

Братко Иван

Шрифт:

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

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 — порождение нового списка целевых утверждений.

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

Эпоха Опустошителя. Том I

Павлов Вел
1. Вечное Ристалище
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эпоха Опустошителя. Том I

Проблема майора Багирова

Майер Кристина
1. Спецназ
Любовные романы:
современные любовные романы
6.60
рейтинг книги
Проблема майора Багирова

Законы Рода. Том 13

Андрей Мельник
13. Граф Берестьев
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Законы Рода. Том 13

Газлайтер. Том 15

Володин Григорий Григорьевич
15. История Телепата
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Газлайтер. Том 15

О, Путник!

Арбеков Александр Анатольевич
1. Квинтет. Миры
Фантастика:
социально-философская фантастика
5.00
рейтинг книги
О, Путник!

Прометей: каменный век

Рави Ивар
1. Прометей
Фантастика:
альтернативная история
6.82
рейтинг книги
Прометей: каменный век

Её (мой) ребенок

Рам Янка
Любовные романы:
современные любовные романы
6.91
рейтинг книги
Её (мой) ребенок

Идеальный мир для Лекаря 8

Сапфир Олег
8. Лекарь
Фантастика:
юмористическое фэнтези
аниме
7.00
рейтинг книги
Идеальный мир для Лекаря 8

Прометей: каменный век II

Рави Ивар
2. Прометей
Фантастика:
альтернативная история
7.40
рейтинг книги
Прометей: каменный век II

Цвет сверхдержавы - красный. Трилогия

Симонов Сергей
Цвет сверхдержавы - красный
Фантастика:
попаданцы
альтернативная история
8.06
рейтинг книги
Цвет сверхдержавы - красный. Трилогия

Болтливый мертвец

Фрай Макс
7. Лабиринты Ехо
Фантастика:
фэнтези
9.41
рейтинг книги
Болтливый мертвец

На границе империй. Том 9. Часть 2

INDIGO
15. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 2

Истребители. Трилогия

Поселягин Владимир Геннадьевич
Фантастика:
альтернативная история
7.30
рейтинг книги
Истребители. Трилогия

Лишняя дочь

Nata Zzika
Любовные романы:
любовно-фантастические романы
8.22
рейтинг книги
Лишняя дочь