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

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

Жанры

Неизвестно

Шрифт:

Пусть дана некоторая программа и цель G, тогда, в соответствии с декларативной семантикой, можно утверждать, что

Цель G истинна (т.е. достижима или логически следует из программы) тогда и только тогда, когда

(1) в программе существует предложение С, такое, что

(2) существует такая его (С) конкретизация I, что

(a) голова I совпадает с G и

(б) все цели в теле I истинны.

Это определение можно распространить на вопросы следующим образом. В общем случае вопрос к пролог-системе представляет собой список целей, разделенных запятыми. Список целей называется истинным (достижимым), если все цели в этом списке истинны (достижимы) при одинаковых конкретизациях переменных. Значения переменных получаются из наиболее общей конкретизации.

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

Р :- Q; R.

читается так: Р - истинно, если истинно Q или истинно R. То есть смысл такого предложения тот же, что и смысл следующей пары предложений:

Р :- Q.

Р :- R.

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

Р :- Q, R; S, Т, U.

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

Р :- ( Q, R); (S, Т, U).

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

Р :- Q, R.

Р :- 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. Стая
Любовные романы:
современные любовные романы
остросюжетные любовные романы
9.37
рейтинг книги
Стая

Сердце Дракона. нейросеть в мире боевых искусств (главы 1-650)

Клеванский Кирилл Сергеевич
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.51
рейтинг книги
Сердце Дракона. нейросеть в мире боевых искусств (главы 1-650)

100 великих войн

Соколов Борис Вадимович
100 великих
Справочная литература:
энциклопедии
6.40
рейтинг книги
100 великих войн

Тринадцатый IV

NikL
4. Видящий смерть
Фантастика:
боевая фантастика
попаданцы
6.25
рейтинг книги
Тринадцатый IV

Тринадцатый V

NikL
5. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.50
рейтинг книги
Тринадцатый V

Пламенев. Книга 3-7

Карелин Сергей Витальевич
Пламенев
Фантастика:
аниме
уся
фэнтези
сянься
5.00
рейтинг книги
Пламенев. Книга 3-7

Корсаков

Кощеев Владимир
1. Корсаков
Фантастика:
альтернативная история
аниме
попаданцы
5.00
рейтинг книги
Корсаков

Трое в Долине

Никитин Юрий Александрович
5. Трое из леса
Фантастика:
героическая фантастика
8.90
рейтинг книги
Трое в Долине

Ученик

Первухин Андрей Евгеньевич
1. Ученик
Фантастика:
фэнтези
6.27
рейтинг книги
Ученик

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

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

Неучтенный элемент. Том 4

NikL
4. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 4

Лекарь Империи 5

Карелин Сергей Витальевич
5. Лекарь Империи
Фантастика:
городское фэнтези
аниме
героическая фантастика
попаданцы
5.00
рейтинг книги
Лекарь Империи 5

“Цесаревич” Часть I. Эскадренный броненосец. 1899-1906 гг.

Мельников Рафаил Михайлович
Боевые корабли мира
Научно-образовательная:
история
технические науки
военная техника и вооружение
военная история
4.00
рейтинг книги
“Цесаревич” Часть I. Эскадренный броненосец. 1899-1906 гг.

Кодекс Крови. Книга VII

Борзых М.
7. РОС: Кодекс Крови
Фантастика:
боевая фантастика
попаданцы
аниме
5.25
рейтинг книги
Кодекс Крови. Книга VII