Выше изложенное справедливо для логики высказываний. В отличии от этого в логике предикатов:
1. могут присутствовать кванторы
2. в качестве аргументов предикатов могут использоваться переменные Поэтому при использовании метода резолюции в логике предикатов порядок действий следующий:
1. записать БЗ (базы знаний) в виде фактов и правил
2. преобразовать к префиксной нормальной форме - все кванторы выводятся из формул и записываются слева
3. преобразование к сколеновской нормальной форме – избавление от кванторов вообще
4. преобразование к виду хорновских дизъюнктов
5. подстановка и унификация (Цель: избавиться от переменных, подставить вместо них константы, конкретизировать правила)
6. собственно применение одной из модификаций методов резолюций Примечание:при автоматизированной обработке вручную делается только первый этап, а остальное – выполняется автоматически.
Маркер цели М устанавливается на начало БЗ (базы знаний). Делается попытка согласовать цель (запрос) с 1-й клаузой БЗ. Для этого заголовок цели сравнивается с заголовком первой клаузы:
а) Если не сопоставляется - инкремент маркера, все повторяется, если М дошел до конца БЗ выдается ответ «нет».
б) цель сопоставляется с фактом
б1) если запросы с аргументами константами, выдается ответ «да», окончание работы.
б2) если запрос (цель) содержит переменные, происходит означивание переменных, например Х= Петр, работа продолжится, продолжится движение М по базе знаний
в) цель сопоставляется с заголовком правила, содержащего несколько посылок или подцелей. В этом случае вводятся маркеры соответствующих подцелей М1, М2,…, установленные на начало БЗ. Подцели поочередно сопоставляются в порядке слева на право, при этом М стоит на месте, а М1 (маркер первой подцели) начинает движение по БЗ, при этом возможны те же самые ситуации. Если первая подцель согласуется, подстановки, измененные при этом фиксируются, начинается движение маркера второй подцели и т.д. Если очередная подцель не согласуется ни в каких вариантах, происходит откат на один шаг назад, подстановки изменяемые при фиксации заданного маркера отменяются и делается попытка переслать предыдущую подцель с другими подстановками. В случае успеха продолжается согласование ближайшей правой подцели, в случае не успеха откат делается ещё на один шаг назад. В худшем случае если откат дошел до крайне левой подцели, то подстановки сделанные при остановке главного маркера отменяются и маркер переводится на следующую клаузу. Если запрос содержит переменные то работа осуществляется до тех пор пока не будут выбраны все комбинации переменных при которых цель сопоставляется.
Пример 1 Пусть на факультативе нужно выбрать одну техническую и одну гуманитарную дисциплину 5 фактов и правила имеют следующий вид:
Возможный выбор (x,y): технические (х), гуманитарные (y)
Возможен выбор (МП, СИИ)?
М2 на Гуманитарные (Психология) - нет
Гуманитарные (История) - нет
Гуманитарные (Ин. яз) - нет
Ответ – нет
Возможен выбор (х1, у1)?
1) {x1/x, y1/y} М на Возможен выбор
2) М1 на Технические (МП) {МП/x1}
3) М2 на Гуманитарные (Психология) {псих./у1}
Х1=МП У2=Псих
4) М2 на Гуманитарные (История) {ист./у1}
Х1=МП У2=Ист
5) М2 на Гуманитарные (Ин. яз) {ИЯ./у1}
Х1=МП У2=ИЯ
6) М2 на начало
М1 на Технические (СИИ) {СИИ/x1}
7) М2 на Гуманитарные (Психология) {псих./у1}
Х1=МП У2=Псих
8) М2 на Гуманитарные (История) {ист./у1}
Х1=МП У2=Ист
…
Замечание: об области действия означенных переменных.
Если в различных правилах используются одинаковые переменные, это не одни и те же переменные, Пролог все равно даст им разные имена, при рекурсивном вызове правила, вводится новый комплект переменных. Область действия означенной переменной – текущее правило и все вызванные из него.
Как передаются перестановки выше по дереву через сцепленные переменные.
Пример.
Пусть весь животный мир состоит из обезьян и тигров