Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пролог_лекция_3.doc
Скачиваний:
2
Добавлен:
14.09.2019
Размер:
79.36 Кб
Скачать

Вычислительная модель логических программ

Одним из наиболее важных аспектов программирования на Про­логе являются понятия подстановки, конкретиза­ции и унификации (отождествления) переменных.

1 правило получения логического следствия

Подстановкой называется конечное (возможно пустое) множество  пар вида Xi=ti, где Xi – переменная, ti – терм. Xi  Xj при ij и Xi не входит в ti при любых i и j. Примеры подстановок:

X= «Петр 1»;

X= «Вася», Y= «Маша»

Результатом подстановки №2 в терм likes(X,Y) будет likes(«Вася», «Маша»). Возможна и следующая ситуация в результате подстановки №1: child(«Петр 1», «Петр 1»)

2 правило получения логического следствия

Обобщение. Целевое утверждение истинно, если существует хотя бы одна такая подстановка, что получившийся в результате терм является логическим следствием программы.

3 правило получения логического следствия

Конкретизация. При выполнении подстановки в целевое утверждение, переменные целевого утверждения конкретизируются, т.е. принимают конкретные значения. Из утверждения, содержащего переменные, всегда выводимо утверждение, полученное путем применения любой подстановки.

Основой автоматической дедукции и логического вывода является алгоритм унификации. Унификатором двух термов называется такая подстановка, которая делает эти два терма одинаковыми. Если такая подстановка существует, термы называются унифицируемыми. Алгоритм находит наиболее общий унификатор двух термов. Если такого нет, возникает сообщение об отказе.

Переменные, входящие в утверждения, отождествляются особым образом - сопоставляются.

Терм Х сопоставляется с термом Y по следующим правилам. Ес­ли Х и Y - константы, то они сопоставимы, только если они одинако­вы. Если Х является константой или структурой, а Y - неконкретизированной переменной, то Х и Y сопоставимы и Y принимает значе­ние Х (и наоборот). Если Х и Y - структуры, то они сопоставимы тог­да и только тогда, когда у них одни и те же главный функтор и ар­ность и каждая из их соответствующих компонент сопоставима. Если Х и Y - неконкретизированные (свободные) переменные, то они сопоставимы, в этом случае говорят, что они сцеплены. Примеры унификации:

Терм 1

Терм 2

Отождествимы ?

джек (Х)

джек (человек)

да: Х=человек

джек (личность)

джек (человек)

нет

джек (Х,Х)

джек (23,23)

да: Х=23

джек (Х,Х)

джек (12,23)

нет

джек (_,_ )

джек (12,23)

да

f(Y,Z)

Х

да: X=f(Y,Z)

Х

Z

да: X=Z

Анонимные переменные не конкретизируются. Например:

?- pair(_,_)

yes

?- pair(X,X)

no

Простейший способ определения ответа – совпадение: из Р выводимо Р. Если тождественный цели факт найден, ответом будет Да. Иначе ответом будет Нет. (?-плюс(0,1,3)). Пролог всегда ищет ответ на поступивший запрос, начиная с самой "вершины" фактов. Далее он последовательно просматривает каждый факт до самого конца, пока больше фактов не останется.

Другой способ поиска цели – это поиск с помощью подстановки. Х=Вася – это подстановка, также как Х=Степан. Но первая подстановка в терм нравится(Маша,Х) дает совпадение, а вторая – нет. Такой способ поиска называется обобщением. Если ни одна удовлетворяющая подстановка не найдена, дается ответ Нет. Турбо-Пролог использует механизм поиска с возвратом (backtracking). Действие его таково, что после нахождения одного решения ТП осуществляет повторную оценку условий задачи, при которой может оказаться, что другие значения переменных дадут новые решения.

Найти ответ на вопрос ?-плюс(Х,У,3), ?-плюс(Х,Х,4)

Третий способ вывода или поиска цели – это конкретизация. У нас имеется общее утверждение: (плюс(0,Х,Х)). Для него ответом на вопрос ?-(0,2,2) будет Да именно вследствие конкретизации.

Поиск цели начинается с исходного вопроса (целевого утверждения) и заканчивается либо успехом, либо отказом. Процесс происходит методом редукции цели. Тело текущей цели заменяется телом того правила, заголовок которого совпадает с целью. Конъюнкция текущих целей, требующих в данный момент доказательства, называется резольвентой. Выбираются такая цель в резольвенте и такое предложение в программе, что заголовок предложения унифицируем с целью. Вычисление происходит с новой резольвентой, полученной из старой заменой ее тела на тело выбранного предложения и последующим применением наиболее общего унификатора. Вычисление заканчивается, если резольвента пуста..

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]