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


лирик(фамилия)

физик(фамилия)

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

филателист(фамилия)

меломан(фамилия)

книголюб(фамилия)

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

музыкант(фамилия)

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

clauses

оценка("Иванова",литература,5).

оценка("Иванова",математика,5).

оценка("Иванова",музыка,5).

оценка("Петров",физика,4).

оценка("Петров",химия,3).

оценка("Петров",литература,5).

оценка("Васечкин",литература,2).

оценка("Васечкин",музыка,4).

оценка("Васечкин",физика,5).

собирает("Петров",марки). собирает("Петров",книги). собирает("Васечкин",ноты). собирает("Иванова", пластинки).

%Двоечник - тот, у кого есть хотя бы одна двойка по %какому-либо предмету двоечник(Имя):-оценка(Имя,_,2).

%Лирик - тот, у кого пятерка по литературе лирик(Имя):- оценка(Имя,литература,5).

%Физик - тот кто имеет хотя бы одну оценку по физике и %не лирик. физик(Имя):-оценка(Имя,физика,_),по1(лирик(Имя)).

с/

%   а) филателист - тот, кто собирает марки; филателист(Имя):-собирает(Имя,марки).

о/_______________________________________


%   б) меломан - тот, кто собирает ноты или пластинки; меломан(Имя):-собирает(Имя,ноты). меломан(Имя):-собирает(Имя,пластинки).

о/.______    __        ....         .

%   в) книголюб - тот, кто собирает книги и имеет оценку

%     4 или 5 по литературе;

книголюб(Имя):собирает(Имя,книги),хорошая_оценка(Имя,литература).

хорошая_оценка(Имя,Предмет):-оценка(Имя,Предмет,5).

хорошая_оценка(Имя,Предмет):-оценка(Имя,Предмет,4). %---------------------------------------------

%   г) Музыкант - меломан, который имеет только пятерки %     по музыке.

музыкант(Имя):-меломан(Имя),отлично(Имя, музыка). отлично(Имя,Предмет):-оценка(Имя,Предмет,5). %---------------------------------------------

ПРИМЕЧАНИЕ: В именах правил можно использовать символ "_" (подчеркивание), например, "хорошая_оценка"

3. РЕАЛИЗАЦИЯЛОГИЧЕСКИХСВЯЗОКИКВАНТОРОВНА

ПРОЛОГЕ 3.1 ПрименениеправилдеМоргана

В предыдущем параграфе мы познакомились с употреблением логических связок. Обобщим сведения, которые нам известны:

Для реализации связки не используется встроенная функция not (в вопросах и правой части правил).

Для реализации связки ииспользуется запятая (также в вопросах и правой части правил).

Для реализации связки илиможно применить два способа'

1     Использовать точку с запятой ";"•

2.    Записать несколько правил с одинаковой левой частью и различными правыми, или несколько вопросов.


Для записи отрицания дизъюнкции и конъюнкции на Прологе используются правила де Моргана:

АилиВ = А и В

АиВ = А или В

Квантор существования на Прологе обозначается символом "_ " в правой части правила. Для квантора всеобщности специаль ного обозначения на Прологе нет, но его можно заменить квантором существования, используя правила для отрицания, похожие на пра вила де Моргана для логических связок:

НЕ("существует X, такое что истинно Р(Х)") <=> для каждого X истинно НЕ(Р(Х)).

НЕ("для каждого X истинно Р(Х)") о существует X, такое что истинно НЕ(Р(Х)).

3.2. Базазнаний "Гидрометцентр"

Рассмотрим использование этих правил на примере базы знаний «Гидрометцентр». Пусть наблюдения за погодой за неделю дали следующие результаты:


Информация о  погоде за неделю может быть записана  на Прологе в виде фактов вида:

погода(<день>,<твмпература>,<давление>,<ветер>|;___        .

День недели

ПН

ВТ

СР

ЧТ

ПТ

СБ

ВС

Температура (С)

15

12

7

0

5

10

20

Давление (мм.рт ст)

760

754

766

700

780

750

760

Направление ветра

юж

сев

воет

сев_в

ю_эап

ю_в

юж