14
База Знаний на ПРОЛОГЕ • Что такое Пролог? • Что такое Предикат? • Правила в Прологе

БЗ на ПРОЛОГЕ

Embed Size (px)

Citation preview

Page 1: БЗ на ПРОЛОГЕ

База Знаний на ПРОЛОГЕ

• Что такое Пролог?

• Что такое Предикат?

• Правила в Прологе

Page 2: БЗ на ПРОЛОГЕ

Что такое ПРОЛОГ?

• Пролог – это специальное программное обеспечение для построения БЗ и создания на их основе разнообразных систем Искусственного Интеллекта.

• Logic programming language – язык логического программирования, разработан во Франции в 70-х годах.

Page 3: БЗ на ПРОЛОГЕ

ФАКТ БЗ «Родственники»

Естественный языкЛев – отец Андрея;

Лев – отец Петра;

Андрей – отец Алексея;

Петр – отец Михаила;

Петр – отец Дмитрия;

язык ПрологОтец(«Лев», «Андрей»);

Отец(«Лев», «Петра»);

Отец(«Андрей», «Алексей»);

Отец(«Петр», «Михаил»);

Отец(«Петр», «Дмитрий»);

В данной таблице записаны факты.

Факты устанавливают отношения между мужчинами.

Имя отношения – отец

Слова в скобках – аргументы

Образовавшая конструкция <имя>(<аргументы>)

Page 4: БЗ на ПРОЛОГЕ

«Предикат»

В языке Пролог конструкция вида <имя>(<аргументы>)

носит название Предикат.• Если аргументы обозначают объекты (людей,

предметы и пр.), то такой предикат описывает факт.

• Имена людей, названия предметов и другие слова, обозначающие какие-то конкретные объекты, называются в Прологе символьными константами.

Page 5: БЗ на ПРОЛОГЕ

Синтаксические правила

• Символьные константы можно писать в кавычках, можно без кавычек.

• В кавычках пишутся имена собственные («Михаил», «Виктор» и т.д.)

• Все, что без кавычек пишется с прописной буквы. (отец)

• Имя предиката пишется всегда строчными буквами.

Page 6: БЗ на ПРОЛОГЕ

Еще некоторые правила

•Факт может содержать произвольное количество аргументов(0,1,2,…).•Если факт содержит несколько аргументов, то его смысл зависит от порядка записи аргументов. Пример: факт – отец («Лев», «Андрей»);

отец ( «Андрей», «Лев»);Имеют разный смысл. Первый факт имеет место, второй нет.Первый аргумент отвечает на вопрос кто (что)? Второй – по отношению к кому (чему)?

Page 7: БЗ на ПРОЛОГЕ

Правило на Прологе

• Простейшее правило на прологе записывается в виде 2-х предикатов, соединенных знаком :- который читается «если».

• Предикат, записанный слева от :- называется заголовком (головой) правила, а справа – телом правила.

• Правило обозначает следующее:Если имеет место тело правила, то справедлив заголовок.

Пример: (правило, определяющее понятие Сын,)«А является сыном для В, если В является отцом для А». А

и В – любые мужские имена.Выражение на Прологе: сын(А,В) :- отец(В,А)

Page 8: БЗ на ПРОЛОГЕ

Терминология и обозначение

• А и В называются переменными.• Переменная может обозначаться одной

прописной(заглавной) буквой или словом, начинающим с прописной буквы.

• По смыслу переменная может быть заменена на неопределенное местоимение: кто-то, что-то, некто, нечто и др.

Page 9: БЗ на ПРОЛОГЕ

БЗ «Родственники»правило, определяющее, кто есть дедушка.

• Лев является дедушкой Алексею, потому, что Андрей – отец Алексея, а Лев – отец Андрея.

Лев

Андрей

Алексей

Петр

Михаил Дмитрий

Используя понятие переменной, можно сказать иначе:

«Х является дедушкой для Y, если Х является отцом для Z и Z является отцом для Y»

X

Z

Y

Таким образом тело правила состоит из двух отношений, соединенных связкой И. Роль связки И играет запятая («,»)

дедушка (Х, Y) :- отец (Х, Z), отец (Z, Y)

Page 10: БЗ на ПРОЛОГЕ

конъюнкция

• Конъюнкция – логическое умножение (И).

• Если одновременно истинны отношения

отец (X,Y) и отец (Y,Z), то истинным является и отношение дедушка (X,Z), следовательно запятая в Прологе используется как знак конъюнкции

Page 11: БЗ на ПРОЛОГЕ

• Имея определение «дедушка», сформулируем правило «внук»• внук (Y,X) :- дедушка (X,Y)• брат (Z,C) :- отец(X,C), отец(X,Z), (Z<>C)• Неравенство обозначает, что имена у братьев должны быть разными• Дядя – брат отца, значит С является дядей для Y , если С является

братом отца Y• дядя (С,Y) :- брат(С,Z), отец (Z,Y)• племянник (Y,C) :- дядя (C,Y)• Кузен (Y,D) :- сын (D,C), дядя (C,Y)

Правило «внук», «брат», «дядя», «кузен»

Лев

Андрей

Алексей

Петр

Михаил Дмитрий

x

z

y

c

d

Page 12: БЗ на ПРОЛОГЕ

БЗ «Родственники» в окончательном виде

Отец(«Лев», «Андрей»);Отец(«Лев», «Петра»);Отец(«Андрей», «Алексей»);Отец(«Петр», «Михаил»); Отец(«Петр», «Дмитрий»);

факт

правило сын(А,В) :- отец(В,А) дедушка (Х, Y) :- отец (Х, Z), отец (Z, Y) внук (Y,X) :- дедушка (X,Y)брат (Z,C) :- отец(X,C), отец(X,Z), (Z<>C)дядя (С,Y) :- брат(С,Z), отец (Z,Y)племянник (Y,C) :- дядя (C,Y)Кузен (Y,D) :- сын (D,C), дядя (C,Y)

Page 13: БЗ на ПРОЛОГЕ

Сравнительные отношения

• = равно

• <> не равно

• > больше

• < меньше

• >= больше или равно

• <= меньше или равно

Page 14: БЗ на ПРОЛОГЕ

Вопросы и задания

1. Для чего предназначен язык Пролог?2. Как в Прологе записываются факты?3. Как в Прологе записываются Правила?4. Добавьте к БЗ «Родственники» факты и правила,

отражающие новые сведения об этой семье в связи со следующими событиями: - у Андрея родился сын Сергей;- у Михаила родился сын Олег.

5. Опишите на Прологе базу знаний, отражающую родственные отношения между женщинами трех поколений в одной семье.