Скачиваний:
21
Добавлен:
01.05.2014
Размер:
46.59 Кб
Скачать

- 4 -

Нижегородский Государственный Технический Университет

Факультет информационных систем и технологий

Кафедра “Компьютерные технологии в проектировании и производстве”

ПРЕДСТАВЛЕНИЕ ЗНАНИЙ В ИНФОРМАЦИОННЫХ СИСТЕМАХ

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

Выполнил:студент гр. 01-СБК

Ситников И.А.

Проверил: Волков М.Б.

г. Нижний Новгород

2003 г.

Цель работы: Ознакомиться c моделями знаний в форме семантических сетей, фреймов, условно-логических моделей, построенными на основе графов. Получить навыки программирования подобных моделей на языке Visual Prolog 5.0.

Задания к работе:

Составить программу на Visual Prolog реализующую поиск путей в графах.

DOMAINS

список=symbol*

PREDICATES

% путь(нач вершина,конечн вершина,исходн граф,искомый путь,огран длины пути).

nondeterm путь(symbol,symbol,список,список,integer).

% путь1(некотр вершина,путь в исх графе,исх граф,список,integer).

nondeterm путь1(symbol,список,список,список,integer).

nondeterm принадлежит(symbol,symbol,список).

nondeterm граф(список).

nondeterm смежные(symbol,symbol,список).

CLAUSES

%описание ветвей графа и пар смежных узлов

граф([a,b,b,d,b,c,c,d,c,e,e,d,d,a,e,b]).%факт1

путь(A,Z,Граф,Путь,Номер):-путь1(A,[Z],Граф,Путь,Номер).%пр1

путь1(A,[A|Путь1],_,Путь1,_). % факт 2

%основное правило поиска пути:

путь1(A,[Z|Путь1],Граф,Путь,Номер):-Номер>0,

смежные(Y,Z,Граф),

not(принадлежит(Y,Z,Путь1)),

Номер1=Номер-1,

путь1(A,[Y,Y,Z|Путь1],Граф,Путь,Номер1).%пр2

смежные(Y,Z,Граф):-принадлежит(Y,Z,Граф);

принадлежит(Z,Y,Граф).%пр3

%принадлежность двух элементов списку

принадлежит(Y,Z,[Y,Z|_]).%факт3

принадлежит(Y,Z,[_,_|Хвост]):-принадлежит(Y,Z,Хвост).%пр4

GOAL

граф(Граф), путь(a,e,Граф,Путь,3).

/*

Граф=["a","b","b","d","b","c","c","d","c","e","e","d","d","a","e","b"], Путь=["a","b","b","c","c","e"]

Граф=["a","b","b","d","b","c","c","d","c","e","e","d","d","a","e","b"], Путь=["a","d","d","c","c","e"]

Граф=["a","b","b","d","b","c","c","d","c","e","e","d","d","a","e","b"], Путь=["a","b","b","d","d","e"]

Граф=["a","b","b","d","b","c","c","d","c","e","e","d","d","a","e","b"], Путь=["a","d","d","e"]

Граф=["a","b","b","d","b","c","c","d","c","e","e","d","d","a","e","b"], Путь=["a","b","b","e"]

Граф=["a","b","b","d","b","c","c","d","c","e","e","d","d","a","e","b"], Путь=["a","d","d","b","b","e"]

6 Solutions

*/

Составить программу, моделирующую семантическую сеть.

Программа примет следующий вид:

PREDICATES

nondeterm является(symbol,symbol).

nondeterm есть(symbol,symbol).

nondeterm для(symbol,symbol).

nondeterm что_делает(symbol,symbol).

CLAUSES

%доспех является защитой

является(доспех,защита).

%Связываем методы различных уровней

является(Ребенок,Родитель) :- есть(Ребенок,Родитель).

%шлем есть доспех

есть(шлем,доспех).

%шлем предназначен для защиты головы

для(защита_головы,шлем).

%доспех предназначен для защиты тела

для(защита_тела,доспех).

%защита служит спасением жизни

что_делает(спасает_жизнь,защита).

%Связываем св-ва различных уровней

что_делает(Свойство,Объект):-для(Свойство,Объект).

%Наследственность

что_делает(Свойство,Объект) :- является(Объект,Объект1),

что_делает(Свойство,Объект1).

GOAL

%что_делает(A,шлем).

/* A=защита_головы

A=защита_тела

A=спасает_жизнь

3 Solutions

*/

для(A,доспех).

/* A=защита_тела

1 Solution

*/

Составить программу, моделирующую фрейм.

PREDICATES

nondeterm фрейм(symbol,symbol,symbol).

CLAUSES

фрейм(человек,ако,млекопитающее).

фрейм(человек,умеет,мыслить).

фрейм(тинейджер,ако,человек).

фрейм(тинейджер ,возраст,"13-19 лет").
фрейм(тинейджер,любит,развлекаться).
фрейм(студент,ако, тинейджер ).
фрейм(студент,учится,"ВУЗ").
фрейм(студент,возраст,"17-23 лет").
фрейм(студент,сдает,сессию).
фрейм(Название,Слот,Значение):-фрейм(Название,ако,Значение_ако),
фрейм(Значение_ако,Слот,Значение).

GOAL

фрейм(студент,умеет,Что_умеет).
% Что_умеет=мыслить

Вывод: В результате выполнения работы мы познакомились c моделями знаний в форме семантических сетей, фреймов, условно-логических моделей, построенных на основе графов. Получили навыки программирования подобных моделей на языке Visual Prolog.

Соседние файлы в папке Лаба №3