Системы Искусственного Интеллекта. Выводы по аналогии

Страницы работы

Содержание работы

НГТУ

Кафедра ПС и БД

Системы Искусственного Интеллекта

Лабораторная работа  № 7

Тема: “ Выводы по аналогии”

Факультет: ПМИ

Группа     :  ПМ-83

Студенты:   Арифуллин Д.

Кирилов П.

Пахомов А.А.

Преподаватель:

Целебровская М.Ю.

г. Новосибирск

2001 г.

Цель работы: Изучение аналогии как механизма вывода, используемого в интеллектуальных системах

Задание

 


                                                                                                     ?

 


Рассмотрим одну из простейших постановок в форме так называемой причинно-следственной аналогии.

A                                                           B

 


A’                                                          B’

                                                  ?                                                       

               match( inside(X, Y), inside(Y,X), invert ).

Интерпретация данной задачи следующая: “Фигура A находится в таком же соответствии к фигуре B, как фигура A’ к фигуре  B’ . Требуется определить фигуру B’ ” .  Причинно-следственную связь    A        B   можно рассматривать как прецедент. В настоящее время существует целый класс  экспертных систем, основанный на механизме CBR. Знания проще представить в виде хорошо подобранных прецедентов (случаев из практики), чем в виде правил. Процесс общения с экспертной системой в этом случае сводится к формулировке проблемы на некотором языке, поиске близкого прецедента, адаптации прецедента к данной проблеме.

Рассмотрим один из возможных подходов к реализации аналогии . Идея данного подхода заключается в том, что из причинно-следственного перехода A -> B извлекается закономерность (правило), которое затем применяется к A’-> B’. Действительно, из факта A->B (см. рис), можно заключить , что если одна фигура находится внутри другой, то в результате перехода внутренняя фигура становится внешней. Реализовать данный мезанизм вывода можно с помощью механизма унификации ,       который является базовым в Прологе. Как всегда следует выбрать подходящую структуру данных для представления задачи.

Ниже приводится один вариантов программы аналогии.

Текст программы:

domains

%   figure1=square;circle;triangle                 

figure=

square;  % квадрат

circle;    % круг

triangle; % треугольник

above(figure,figure);                             % быть рядом

inside(figure,figure)                              % быть внутри

figurelist=figure*   %имя правила

pair=is_to(figure,figure) % причинно-следственное отношение

predicates

match(figure,figure,symbol)     % правила перехода от фигуры к фигуре

analogy(pair,pair,figurelist)      % задание аналогии

figures(symbol,figure,figure,figure)

answers(symbol,figurelist)

test_analogy(symbol,figure)

member(figure,figurelist)            

clauses

analogy(is_to(A,B),is_to(C,X),Answers):match(A,B,Rule),

match(C,X,Rule),

member(X,Answers).

match(inside(Figure1,Figure2),

inside(Figure2,Figure1),invert).

match(inside(Figure1,Figure2),

inside(Figure1,Figure2),equal).

match(inside(Figure1,inside(Figure2,Figure3)),

inside(Figure1,above(Figure2,Figure3)),

inserttoabove).

test_analogy(Name,X):figures(Name,A,B,C),

answers(Name,Answers),

analogy(is_to(A,B),is_to(C,X),Answers),!.

figures(test1,inside(square,triangle),

inside(triangle,square),

inside(circle,square)).

figures(test2,inside(square,triangle),

inside(square,triangle),

inside(circle,square)).

figures(test3,inside(square,inside(circle, triangle)),

inside(square, above(circle, triangle)),

inside(triangle, inside(square, circle))).

answers(test1,[inside(circle,triangle),

inside(square,circle),

inside(triangle,square)]).

answers(test2,[inside(circle,square),

inside(square,circle),

inside(triangle,square)]).

answers(test3,[inside(triangle,above(square, circle)),

inside(square, square),

inside(circle, above(circle, square))]).

member(X,[X|Xs]):-!.

member(X,[Y|Xs]):-member(X,Xs).

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

Развитие приведенной программы сделано с расчетом на то, что полной аналогии может и не быть. Также, что некоторые отношения, например «быть рядом» являются коммутативными. В силу этого может возникнуть множество изоморфных структур для одного и того же объекта.

Тесты:

Goal:  match(inside(circle,square),inside(square,Y),Answers).

Y=circle, Answers=invert

1 Solution

....................................

Goal: match(inside(triangle,circle),X,Answers).

X=inside(circle,triangle), A

nswers=invert

X=inside(triangle,circle), A

nswers=equal

2 Solutions

...................................

Goal:match(X,Y,Z)

X=inside(_,_), Y=inside(_,_), Z=invert

X=inside(_,_), Y=inside(_,_), Z=equal

X=inside(_,inside(_,_)), Y=inside(_,above(_,_)), Z=inserttoabove

3 Solutions

.......................................

Goal:  analogy(is_to(A,B),is_to(C,X), Answers).

A=inside(_,_), B=inside(_,_), C=inside(_,_), X=inside(_,_), Answers=[inside(_,_)|_]

A=inside(_,_), B=inside(_,_), C=inside(_,_), X=inside(_,_), Answers=[inside(_,_)|_]

A=inside(_,inside(_,_)), B=inside(_,above(_,_)), C=inside(_,inside(_,_)),

X=inside(_,above(_,_)), Answers=[inside(_,above(_,_))|_]

3 Solutions

......................................

Goal: analogy(is_to(inside(circle,triangle),inside(circle,square)),is_to(inside(circle,square),

inside(X,Y)).

No Solutions

.......................................

Goal: test_analogy(test1,X).

X=inside(square,circle)

1 Solution

........................................

Goal: test_analogy(test2,X).

X=inside(circle,square)

1 Solution

.........................................

Goal: test_analogy(test3,X).

X=inside(triangle,above(square,circle))

1 Solution

..........................................

Goal: figures(test1,A,B,C).

A=inside(square,triangle), B=inside(triangle,square), C=inside(circle,square)

1 Solution

.............................................

Goal: figures(test2,A,B,C).

A=inside(square,triangle), B=inside(square,triangle), C=inside(circle,square)

1 Solution

............................................

Goal: figures(test3,A,B,C).

A=inside(square,inside(circle,triangle)),

B=inside(square,above(circle,triangle)), C=inside(triangle,inside(square,circle))

1 Solution

............................................

Goal:answers(X,Y).

X=test1,

Y=[inside(circle,triangle),inside(square,circle),inside(triangle,square)]

X=test2,

Y=[inside(circle,square),inside(square,circle),inside(triangle,square)]

X=test3,

Y=[inside(triangle,above(square,circle)),inside(square,square),inside(c

ircle,above(circle,square))]

3 Solutions

............................................

Goal: member(X,Y).

X=_, Y=[_|_]

1 Solution

Информация о работе