Введя эту базу, можно задавать вопросы об оценках, например:
По-русски |
На Прологе |
Ответ ЭВМ |
Какая оценка у Ивановой по литературе? |
Цель: оценка(иеанова, литература ,Х). |
Х=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
оценка(фамилия,предмет,балл)
двоечник(фамилия)
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.