ЯЗык "Пролог". Понятие базы знаний, определение. Задачи и упражнения, страница 4


Введя эту базу, можно задавать вопросы об оценках, например:

По-русски

На Прологе

Ответ ЭВМ

Какая оценка у Ивановой по литературе?

Цель: оценка(иеанова, литература ,Х).

Х=5

У кого есть "тройка" по химии?

Цель: оцеика(Х,химия,3).

Х=петров

У кого есть "пятерки"?

Цель: оценка(Х,_,5)

Х=иванова Х=иванова Х=иванова Х=петров Х=васечкин Х=васечкин

Если у одного и того же ученика несколько пятерок, ЭВМ повторит его фамилию столько раз, сколько таких фактов содержится в базе знаний.

Символ «_» в третьем вопросе означает, что переменная, на месте которой он стоит, может принимать какое угодно значение (и нас оно не интересует). Если же мы хотим в ответе на вопрос увидеть и предметы, по которым стоит та оценка, которая нам нужна, то «на месте» предмета надо поставить еще одну переменную, например:


Введя это правило в машину и задав вопрос, получим ответ, что двоечник - Васечкин.

Попробуем определить «физика» и «лирика».

По-русски

На Прологе

Ответ ЭВМ

У кого есть четверки и по какому предмету?

Цель: оценка(Х,У,4).

Х=петров У=физика Х=васечкин

У=музыка

Дадим ОПРЕДЕЛЕНИЕ «двоечника» (у правила будет один параметр - фамилия двоечника):

По-русски

На Прологе

Двоечник - тот, у кого есть хотя бы одна «двойка» по какому-либо предмету.

двоечник(Х)-оценка(Х,_,2).


«Лирик» - тот. у кого «пятерка» по литературе, а «физик» - тот, кто не лирик и имеет хотя бы одну оценку по физике.

По-русски

На Прологе

«Лирик» - тот, у кого «пятерка» по литературе «Физик» - тот, кто не лирик и имеет хотя бы одну оценку по физике

лирик(Х):-оценка(Х,литература,5).

физик(Х):-по{(лирик(Х)), оценка(Х,физика, ).

«not» во втором правиле обозначает логическую связку не(отрицание). А как дать определение отличника? Попробуем дать такое

ОПРЕДЕЛЕНИЕ:

отличник(Х):- оценка(Х,_,5).

Задав машине вопрос «Как фамилия отличников?» (Цель: от-личник(Х)) получим ответ:

Х=иванова

Х=петров

Х=васечкин

Таким образом, машина считает отличниками всех, у кого есть «пятерки» (а по школьным меркам отличником считается тот, у кого нет других оценок, кроме «пятерок»). Как же быть? Тут самое время вспомнить о правилах де Моргана. Здесь надо записать отрицание существования других оценок, кроме «пятерок». Для этого запишем вспомогательное правило:

По-русски

На Прологе

Тот, у кого есть хотя бы одна оценка ниже пяти - не отличник

неотличник(Х):- оценка(Х,_,В), В<5.

Тогда правило для определения отличника будет выглядеть так:


По-русски


На Поологе


 


Отличник - тот, у кого есть хотя бы

отличник(Х):-

одна «пятерка» и кто не является не-        оценка(Х,_,5), поНнеотличник(Х)). отличником.

±

2.3. Задачииупражнения

1.  Дать определение факта.

2.  Дать определение правила.

3.  Дать определение вопроса.

4.  Пусть в базе знаний "Школа", кроме сведений об оценках, содержатся факты вида:

t

собирает (<фамилия>,<что>).

Записать на Прологе определения:        --

a)  филателист - тот, кто собирает марки;

b)  меломан - тот, кто собирает ноты или пластинки,

c)  книголюб - тот, кто собирает книги и имеет оценку «4» или «5» по литературе;

d)    музыкант - меломан, который имеет только «пятерки» по музыке.

Программа может быть такой:

О/                                          _        ________________________________ ц

/О                                                          —--

%База знаний "Школа"

од

domains

фамилия,предмет=зутЬо1 %"фамилия" - фамилия ученика,

%"предмет" - учебный предмет %(последовательность символов)

балл=1п1едег                       %оценка по предмету (целое число)

коллекция=марки: ноты; пластинки; книги

predicates

оценка(фамилия,предмет,балл)

двоечник(фамилия)