Листинг 19.1. Определение задачи изучения предиката has_daughter

% Изучение предиката по фактам, определяющим семейные отношения

% Фоновые знания

backliteraK parent(X,Y), [X,Y]) . % Фоновый литерал с переменными [X,Y]

backliteraK male(X) , [X]) .

backliteraK female(X), [X]).

prolog_predicate( parent(_,_)). % Цель parent(_,_) выполняется

% непосредственно интерпретатором Prolog prolog_predicate( male(_)). prolog_predicate( female(_)).

parent ( pam, bob) .

parent ( torn, bob) .

parent ( torn, liz) .

parent ( bob, ann) .

parent ( bob, pat) .

parent ( pat, jim) .

parent ( pat, eve) .

female ( pam) . male ( torn) . male( bob) . female( liz) . female( ann) . female ( pat) . male( jim). female( eve) .

% Положительные примеры

ex( has_daughter(torn)). % Том имеет дочь ex( has_daughter(bob)). ex( has_daughter(pat)).

% Отрицательные примеры

nex( has_daughter(pam)). % Пэм не имеет дочери nex( has_daughter(jim)).

start^hyp( [ [has_daughter (X) ] / [X] ] ) . % Начальная гипотеза

Листинг 19.1. Определение задачи изучения предиката has_daughter - student2.ru Листинг 19.1. Определение задачи изучения предиката has_daughter - student2.ru Листинг 19.1. Определение задачи изучения предиката has_daughter - student2.ru Листинг 19.1. Определение задачи изучения предиката has_daughter - student2.ru Листинг 19.1. Определение задачи изучения предиката has_daughter - student2.ru Листинг 19.1. Определение задачи изучения предиката has_daughter - student2.ru Глава19. Индуктивное логическое программирование



Отрицательные примеры представлены с помощью предиката nex (Example), на­пример, как показано ниже. nex( has_daughter(pairi) 1 . % Пэм не имеет дочери

Предикат backliteral (сокращение от background literal - фоновый литерал) задает форму литералов, которые могут использоваться в программе ILP в качестве целей при формировании предложений Prolog. В частности, предикат backliteral( parent(X,Y), ~X,Y',).

указывает, что в состав языка гипотез входят литералы в форме parent (X,Y), в ко­торых переменные X и Y могут быть переименованы. Вторым параметром предиката backliteral является список переменных в этом литерале. Такие фоновые литера­лы могут добавляться в качестве целей в тела формируемых предложений. Фоновые литералы представляют собой вызовы фоновых предикатов, которые могут быть за­даны непосредственно на языке Prolog. Предикат prolog_oredicate определяет це­ли, которые должны быть непосредственно выполнены интерпретатором Prolog1. На­пример, предикат prolog^predicate( parent(X,Y)) .

указывает, что цели, которые согласуются с предикатом parent (X, Y), обрабатыва­ются интерпретатором Prolog непосредственно, путем выполнения фонового предика­та parent. Другие цели, такие как has daughter (torn;, могут быть выполнены с помощью интерпретатора, подобного Prolog, но с особыми свойствами, который будет реализован специально для использования в методе ILP.

Наши рекомендации