Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LP_1.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
75.26 Кб
Скачать

1.4 Исполнение программ на Прологе

Вернёмся к методу резолюций.

Независимо от решаемой задачи программа всегда выполняется по одной и той же схеме, определяемой методом резолюции - тем методом поиска решения, который использует система логического программирования Пролог.

Поиск решения осуществляется следующим образом. Делаем запрос к программе или, по-другому, ставим цель.

Среди всех элементов множества предложений S отыскивается первое предложение, которое имеет такое же имя, как и первая цель в запросе.

Если предложение - правило, то это имя должно быть именем головы, или если это предложение факт, то именем факта.

Проверяется существование подстановки унифицирующей цель запроса и этого предложения, т.е., конкретной подстановки, которая делает их совпадающими.

Если такой подстановки не существует, то делается попытка найти следующее по порядку предложение с таким же именем.

Если такая подстановка найдена, то резольвентой оказывается

  • или тело найденного правила, в случае, когда предложение оказалось правилом

  • или пустой дизъюнкт, если предложение оказалось фактом.

Далее просматриваются цели в теле правила, также как если бы это были цели в запросе.

Просмотр целей осуществляется слева направо.

Чтобы раскрыть именно сущность метода резолюций приведем пример работы следующей программы.

Пусть нам даны правила (мы их буквенно пронумеруем)

P  Q1,Q2. (a)

P  Q3. (b)

U Q3. (c)

U  P,R. (d)

И даны факты

R. (e)

Q1. (f)

Q3. (g)

И мы делаем такой запрос

?- U. (h)

Смысл запроса. «А правда ли, что U?»

Ответ может быть или «Да!!» или «Нет, это ложь!»

Обратите внимание, что эти предложения записаны в иной форме, чем предложения рассмотренные нами ранее (1)-(7), хотя обе эти записи эквивалентны.

Система Пролог отыскивает ПЕРВОЕ ПО ПОРЯДКУ вхождение U.

В данной программе таковым оказывается предложение (c). Но мы ничего не знаем о Q3.

Что это за утверждение?

Поэтому далее делается попытка удовлетворить условия найденного правила, то есть, что-нибудь выяснить относительно Q3. Для чего вновь просматривается вся наша программа, но теперь с целью поиска первого предложения, начинающегося с Q3.

Таковым предложением оказывается формула (g).

Оказывается, что Q3 – это факт для нашей программы. Против факта, как говориться …

Итак, ответ – «Да».

Так система находит первое решение.

Некоторые Пролог системы автоматически отыскивает все возможные решения.

В данном случае альтернативные решения могут получиться за счет правила (d), в котором тоже определяется U.

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

Но этого мы коснемся подробнее, когда займемся конкретной реализацией Пролога, которой в нашем случае будет SWI-Prolog.

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