Логические нейронные сети




ПРОЛОГ-программа - часть 2


База знаний

Процедура "мужчина":

мужчина (иван)

мужчина (василий)

мужчина (петр)

мужчина (федор)

мужчина (юрий)

Процедура "женщина":

женщина (марья)

женщина (ирина)

женщина (ольга)

женщина (елена)

Процедура "родитель":

родитель (марья, иван) (Читать: "Марья — родитель Ивана")

родитель (иван, елена)

родитель (марья, василий)

родитель (федор, марья)

родитель (петр, ирина)

родитель (петр, иван)

родитель (федор, юрий)

Процедура "мать":

мать (X, Y): — женщина (X), родитель (X, Y)

Процедура "отец":

отец (X, Y): — мужчина (X), родитель (X, Y)

Процедура "брат":

брат (X, Y): — мужчина (X), родитель (P,X), родитель (P, Y), X<>Y

Процедура "сестра":

сестра (X, Y): — женщина (X), родитель (P, X), родитель (P, Y), X<>Y

Процедура "дядя":

дядя (X,Y): — брат (X, P), родитель (P, Y)

Пусть задана некоторая сложная (т.е. опирающаяся не на факт, а требующая вывода) цель, с которой мы обратились в эту БЗ, например:

дядя (X, Y) (запись цели образует фрейм),

и ее решение (вывод) заключается в нахождении всех пар переменных (имен объектов) X и Y, для которых справедливо утверждение "X является дядей Y".

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

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

То есть для решения данной задачи необходимо действовать следующим образом.

Находим первый (а он и единственный) предикат цели дядя (X, Y) . Находим в БЗ процедуру с этим именем и заменяем найденный предикат правой частью этой процедуры. Получим трансформированную цель — фрейм




Содержание  Назад  Вперед