- •Министерство образования и науки Российской Федерации
- •Лабораторная работа № 1
- •Данные и знания
- •Синтаксис языка Пролог
- •Семантика языка Пролог
- •Алгоритм работы Пролог-машины.
- •Пример построения базы правил на Пролог
- •Задание на лабораторную работу
- •Лабораторная работа № 2
- •Использование списков в Пролог.
- •Использование накапливающего параметра
- •Управление перебором
- •Задание на лабораторную работу
- •Лабораторная работа № 3
- •Представление задачи в терминах пространства состояний
- •Слепые методы поиска
- •Методы эвристического поиска
- •Поиск оптимального пути
- •3.4 Задание на лабораторную работу
- •Лабораторная работа № 4
- •Основные понятия теории игр
- •Представление игры в матричной форме
- •Представление игры в виде игрового дерева
- •Задание на лабораторную работу
Синтаксис языка Пролог
Наименьшие элементы Пролог-программы: Атомы, Числа, Переменные.
Атомы можно записывать тремя способами:
1 - в виде букв, цифр и _, начинающейся со строчной буквы. Пр.катя.
2 – как последовательность спец. Символов +, -, *,/,=. Пр. :-
3 – цепочка символов, заключенная в ''. Пр. 'катя'.
Числа в Прологе могут быть целые и вещественные.
Переменные представляются в виде последовательности букв, цифр и _, начинающейся с заглавной буквы. Пр. Х. Особая переменная _ используется в тех местах, где значение нам безразлично.
Пример: имеет_ребенка(Х) :- родитель(Х, _).
Структура – это конструкция Пролог, которая позволяет объединить другие компоненты: атомы, числа, переменные и др. структуры. В последнем случае структура рекурсивная (дерево, список). Количество аргументов структуры называется ее арностью.
Пример: дерево на Пролог узел(а1, а2) или узел(узел(а1,а2), а3)
Все объекты называются термами. Термы входят в состав предикатов (простых предложений). Предикаты обозначают отношения между объектами (не путать со структурами). Предикаты составляют факты, правила и вопросы, структуры являются термами, то есть входят в состав предикатов.
p(t1,t2,…,tn).
p– предикатный символ.
t1,t2,…,tn– термы.
Из предикатов строятся предложения: факты, правила и вопросы.
Факт – это предикат, после которого ставится точка.
Вопрос (цель) – это предикат или последовательность предикатов, которые формулируют результат, который должна выдать программа. Начинается вопрос с ?- , заканчивается точкой, цели разделяются запятыми.
Правила имеют вид: p:-p1, p2,…,pn.
P, p1, p2,…,pn– предикаты
P – заголовок правила
p1, p2,…,pn– тело правила
Факт – это правило, у которого нет тела.
Семантика языка Пролог
Правила в пролог имеют 2 смысла: декларативный и процедурный.
1 – декларативный смысл правила p:-p1, p2,…,pn.
р истинно, если истинны все p1, p2,…,pn.
2 – процедурный смысл правила определяет порядок достижения целей. Если предикат рассматривать как цель, то для достижения цели р нужно последовательно достичь цели p1, p2,…,pn.
Правило можно представить как процедуру р с параметрами t1, t2,…,tm:
p(t1, t2,…,tm):-
p1(…),
p2(…),
…,
рn(…).
Для выполнения процедуры р необходимо выполнить процедуры p1(…), p2(…),…, рn(…).
Вопрос системе можно рассматривать как вызов процедуры.
?- p(t1, t2,…,tm).
Параметры в Пролог передаются путем сопоставления. ! и тот же параметр может быть и входным, и выходным. Применяется алгоритм унификации. 2 терма сопоставимы, если они идентичны или если они станут идентичными при применении подстановки.
Алгоритм работы Пролог-машины.

Процедура «Вычислить» получает на входе список целей, на выходе результат: успех или неудача. В случае успеха выдается подстановка. Этот алгоритм в процессе работы просматривает базу фактов и правил и согласует их с целями. Факты можно считать правилами, у которых нет тела.
Если список целей пуст, то алгоритм успешно завершает работу.
если список не пуст, то запускается процедура «Просмотр». Она просматривает факты и правила (предложения), пока не обнаружит предложение С, голова которого сопоставима с первой целью G1.
Если такого предложения найти не удается, то процедура «Просмотр» возвращает неудачу. Если предложение найдено, то оно будет иметь вид H :- B1,B2,..,Bn. Подходящих предложений может быть несколько, тогда выберет первый. Находим подстановку (пока достаточно знать, что переменная сопоставима с конкретным значением). В списке целей первая цель G1 заменяется телом правила:
B1,B2,..,Bn, G2,…, Gm. //новый список целей
Если найден факт, то список целей уменьшится, если правило, то такой же по размеру или увеличится.
К новому списку целей применяется подстановка. Этот список возвращается процедуре «Вычислить».
Если этот список целей приведет к успеху, то и вычисление всей программы будет успешным. Если вычисление списка приведет к неудаче, то и процедура «Просмотр» должна продолжить свою работу: найти еще одно предложение.
