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

Министерство образования Российской Федерации

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

университет

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

Представление знаний в информационных системах

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

Выполнил:

студент гр. 02-КТ-2

Тимофеев Д.Л.

Проверил:

Волков М.Б.

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

2004 г.

Цель работы

Ознакомиться с основами декларативной и процедурной части Prolog-программ.

Задание №1

Программа «Любить»

PREDICATES

nondeterm любить(symbol,symbol)

CLAUSES

любить(елена,теннис).%факт1

любить(джон,футбол).%факт2

любить(том,бейсбол).%факт3

любить(эрик,плавание).%факт4

любить(марк,теннис).%факт5

% любить(саша,_).%факт6 - саша любит все виды спорта

% любить(_,шахматы).%факт7 - все любят шахматы

%правило1

%любить(билл,Спорт):-любить(том, Спорт).

%правило2

%любить(ира,Что):-любить(том, Что),любить(марк,Что).

/*Ира любит те виды спорта, которые одновременно нарвятся тому и марку*/

%правило3

любить(ира,Что):-любить(эрик, Что);любить(том, Что).

%Ира любит теже виды спорта, которые нрвятся Эрику, но в тоже времы

%ей нравятся теже виды спорта, от которых безума Том

GOAL

любить(ира,Что).%цель1

/*

Редактирование запросов.

запрос 1

любить(билл,бейсбол).%факт3%правило1

yes

запрос 2

любить(билл,теннис).

no

запрос 3

любить(билл,Вид_спорта). %Какой вид спорта любит Билл?

Вид_спорта=бейсбол

запрос 4

любить(Кто,Вид_спорта).%Кто и что любит?

Кто=елена, Вид_спорта=теннис

Кто=джон, Вид_спорта=футбол

Кто=том, Вид_спорта=бейсбол

Кто=эрик, Вид_спорта=плавание

Кто=марк, Вид_спорта=теннис

Кто=билл, Вид_спорта=бейсбол

6 Solutions

запрос 5

любить(Кто,Кто). %Есть человек, у которого имя, звучит, как вид спорта?

No Solution

запрос 6

любить(_,_).%кто-то чего-то любит?

yes

запрос 7

любить(Кто,теннис),любить(билл, Что).

%Кто любит теннис, и что любит билл?

Кто=елена, Что=бейсбол

Кто=марк, Что=бейсбол

2 Solutions

запрнос 8

любить(Кто,теннис);любить(джон, Что)

%Кто любит теннис, или что любит Джон?

Кто=елена

Кто=марк

Что=футбол

3 Solutions

запрос 9

любить(Кто,теннис),любить(Кто, футбол)

%Кто любит теннис, и фитбол?

No Solution

*/

%***************************************************************************

/*

Редактирование базы правил и фактов.

%факты 1-6 , правило1

любить(Кто,теннис),любить(Кто, футбол)

%Кто любит теннис, и футбол?

Кто=саша

1 Solution

%факты 1-7, правило 1

%Саша любит шахматы?

любить(саша,шахматы).

yes %факт7

%факты 1-5, правило2

%Что любит ира

любить(ира,Что)

No Solution

%факты 1-5 правило 3

%Что любит ира

любить(ира,Что)

Что=плавание

Что=бейсбол

2 Solutions

*/

Задание 2

Электронная схема

PREDICATES

%элемент(наименование, обозначение, узел1, узел2)

nondeterm элемент(symbol, symbol, integer, integer)

%общий_узел(обозначение1, обозначение2, узел)

nondeterm общий_узел(symbol, symbol, integer)

%паралел_соед(элемент1, элемент2)

nondeterm паралел_соед(symbol, symbol)

%звезда(symbol,symbol,symbol,integer).

nondeterm звезда(symbol,symbol,symbol,integer).

%******************************************************************************

%***

%

CLAUSES

%элементы схемы

элемент(резистор, r1, 1 , 4).%факт1

элемент(резистор, r2, 3, 6).%факт2

элемент(резистор, r3, 1, 3).%факт3

элемент(источник, u1, 1, 2).%факт4

элемент(источник, u2, 2, 3).%факт5

элемент(лампочка, lamp1, 2, 5).%факт6

элемент(катушка, l1, 4, 5).%факт7

элемент(катушка, l2, 5, 6).%факт8

элемент(конденсатор, c1, 4, 5).%факт9

элемент(конденсатор, c2, 5, 6).%факт10

элемент(конденсатор, c3, 3, 6).%факт11

%Прввило общего узла - правило1

общий_узел(Elem1, Elem2, Num):-

элемент(_,Elem1,Num,_),элемент(_,Elem2,Num,_),Elem1<Elem2;

элемент(_,Elem1,Num,_),элемент(_,Elem2,_,Num),Elem1<Elem2;

элемент(_,Elem1,_,Num),элемент(_,Elem2,Num,_),Elem1<Elem2;

элемент(_,Elem1,_,Num),элемент(_,Elem2,_,Num),Elem1<Elem2.

%Правило паралелльного соединения - правило2

паралел_соед(Elem1,Elem2):-

элемент(_,Elem1,Num1,Num2),элемент(_,Elem2,Num1,Num2),Elem1<Elem2;

элемент(_,Elem1,Num1,Num2),элемент(_,Elem2,Num2,Num1),Elem1<Elem2.

%Правило Звезды - правило3

звезда(Elem1,Elem2,Elem3,Num):-

общий_узел(Elem1, Elem2, Num),общий_узел(Elem1, Elem3, Num),Elem2<Elem3.

%******************************************************************************

%***

%

GOAL

звезда(_,_,_,2).

/*

Запрос 1

элемент(резистор, r1, 1 , 4).

yes

Запрос2

элемент(резистор, r1, 2 , 4).

no

Запрос3

общий_узел(u2,r3,Num).

No Solution

Запрос4

общий_узел(r3,u2,Num).

Num=3

1 Solution

Запрос5

общий_узел(Elem1,Elem2,Num).

Elem1=r1, Elem2=r3, Num=1

Elem1=r1, Elem2=u1, Num=1

Elem1=r3, Elem2=u1, Num=1

Elem1=lamp1, Elem2=u2, Num=2

Elem1=c1, Elem2=l1, Num=4

Elem1=c2, Elem2=l2, Num=5

Elem1=c3, Elem2=r2, Num=3

Elem1=r2, Elem2=r3, Num=3

Elem1=r2, Elem2=u2, Num=3

Elem1=lamp1, Elem2=u1, Num=2

Elem1=l1, Elem2=r1, Num=4

Elem1=l2, Elem2=lamp1, Num=5

Elem1=c1, Elem2=r1, Num=4

Elem1=c2, Elem2=lamp1, Num=5

Elem1=c2, Elem2=l1, Num=5

Elem1=c3, Elem2=r3, Num=3

Elem1=c3, Elem2=u2, Num=3

Elem1=u1, Elem2=u2, Num=2

Elem1=l1, Elem2=l2, Num=5

Elem1=c1, Elem2=l2, Num=5

Elem1=c1, Elem2=c2, Num=5

Elem1=r3, Elem2=u2, Num=3

Elem1=l1, Elem2=lamp1, Num=5

Elem1=l2, Elem2=r2, Num=6

Elem1=c1, Elem2=lamp1, Num=5

Elem1=c1, Elem2=l1, Num=5

Elem1=c2, Elem2=r2, Num=6

Elem1=c2, Elem2=l2, Num=6

Elem1=c2, Elem2=c3, Num=6

Elem1=c3, Elem2=r2, Num=6

Elem1=c3, Elem2=l2, Num=6

31 Solutions

Запрос6

паралел_соед(_,c3).

результат выполнения

no

Запросс7

паралел_соед(First, Last).

результат

First=c1, Last=l1

First=c2, Last=l2

First=c3, Last=r2

3 Solutions

Запрос8

звезда(First, Second, Third,_).

результат

First=r1, Second=r3, Third=u1

First=c1, Second=l1, Third=r1

First=c2, Second=l2, Third=lamp1

First=c3, Second=r2, Third=r3

First=c3, Second=r2, Third=u2

First=r2, Second=r3, Third=u2

First=lamp1, Second=u1, Third=u2

First=c2, Second=l1, Third=l2

First=c2, Second=l1, Third=lamp1

First=c3, Second=r3, Third=u2

First=l1, Second=l2, Third=lamp1

First=c1, Second=l2, Third=lamp1

First=c1, Second=c2, Third=l2

First=c1, Second=c2, Third=lamp1

First=c1, Second=c2, Third=l1

First=c1, Second=l1, Third=l2

First=c1, Second=l1, Third=lamp1

First=c2, Second=l2, Third=r2

First=c2, Second=c3, Third=r2

First=c2, Second=c3, Third=l2

First=c3, Second=l2, Third=r2

21 Solutions

Запрос9

звезда(_,_,_,2).

резульат

yes

*/

6