Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пролог.doc
Скачиваний:
16
Добавлен:
10.11.2018
Размер:
1.44 Mб
Скачать

2.2.6. Логический вывод на хорновских дизъюнктах.

Клозом Хорна (дизъюнктом Хорна, хорновским дизъюнктом) называется выражение вида (A1….An)->(B1…Bm), где n>=0, 0<=m<=1. Ai, Bj – литеры.

Клозы Хорна действительно являются дизъюнктами, так как возможны следующие случаи:

  1. m=0, n=0 - имеем пустой клоз.

  2. m=0, n>0 – A1….An. Клоз Хорна такого вида называется теоремой (и используется для формулирования теорем). А так как в выводе участвуют теоремы, а их отрицания, то имеем A1…An.

  3. m=1, n=0. Такой клоз Хорна называют фактом. Факт состоит из одной литеры.

  4. m=1, n>0 – аксиома. A1….An->B=A1 … AnB.

Задача. Методом резолюции получить пустой клоз.

Доказательство начинается с теоремы (предполагается, что она единственная). Далее пытаемся найти факт или аксиому, с которой можно провести резолюцию (непосредственно или посредством подстановки).

//здесь расписать формально шаги резолюции (16)

Пусть имеем список целей:

C1 , … , Ci-1, Ci , Ci+1 , … , Ck

Его отрицание является дизъюнктом:

 C1  …   Ci-1   C i   Ci+1  …   Ck

А) Если факт B = Ci , то:

 C1  …   Ci-1   Ci  Ci+1  …   Ck

B

 C1  … Ci-1   Ci+1  …  Ck

Т.е. получили список:

C1 … , C i-1 , C i+1, … , Ck

Фактически мы исключили цель, имеющую подтверждающий факт.

В) Если аксиома (A1 An) B, где:

B - Ci

Имеем:

 С1  …   Ci-1   Ci   Ci+1  …   Ck

 A1  …   Ak  B

 C1  …  Ci-1   A1 …   An  Ci+1  …  Ck

таким образом происходит подмена доказываемой цели на утверждения, стоящие в левой части:

C1 , …, C i-1 , A1 , …, An , Ci+1 , … , Ck

Далее, процесс продолжается и так до тех пор, пока мы не получим пустой клоз или не будет возможности применить ни аксиому, ни факт. Заметим, что боковой клоз всегда выбирается из входного множества, что увеличивает скорость вывода. Но этот метод имеет крупный недостаток. Он в отличие от OL-вывода не обладает свойством полноты, и может зацикливать в довольно тривиальных случаях.

Подход, основанный на клозах Хорна, лег в основу концепции логического (рекурсивно-логического) программирования, которая реализована в языке программирования Пролог.

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

Основными элементом программы на Прологе является предикат. Понятие предиката несколько расширено по сравнению с ЛППП. Прологовский предикат также имеет значение «истина» или «ложь» также может содержать в качестве аргументов константы, переменные или функции. В тоже время пролог-предикат несет в себе и процедурную нагрузку, т.е. выполняет какие-либо действия. Более того, в Прологе в виде предикатов оформлены все стандартные подпрограммы.