Upload
vladimir
View
268
Download
3
Embed Size (px)
Citation preview
База Знаний на ПРОЛОГЕ
• Что такое Пролог?
• Что такое Предикат?
• Правила в Прологе
Что такое ПРОЛОГ?
• Пролог – это специальное программное обеспечение для построения БЗ и создания на их основе разнообразных систем Искусственного Интеллекта.
• Logic programming language – язык логического программирования, разработан во Франции в 70-х годах.
ФАКТ БЗ «Родственники»
Естественный языкЛев – отец Андрея;
Лев – отец Петра;
Андрей – отец Алексея;
Петр – отец Михаила;
Петр – отец Дмитрия;
язык ПрологОтец(«Лев», «Андрей»);
Отец(«Лев», «Петра»);
Отец(«Андрей», «Алексей»);
Отец(«Петр», «Михаил»);
Отец(«Петр», «Дмитрий»);
В данной таблице записаны факты.
Факты устанавливают отношения между мужчинами.
Имя отношения – отец
Слова в скобках – аргументы
Образовавшая конструкция <имя>(<аргументы>)
«Предикат»
В языке Пролог конструкция вида <имя>(<аргументы>)
носит название Предикат.• Если аргументы обозначают объекты (людей,
предметы и пр.), то такой предикат описывает факт.
• Имена людей, названия предметов и другие слова, обозначающие какие-то конкретные объекты, называются в Прологе символьными константами.
Синтаксические правила
• Символьные константы можно писать в кавычках, можно без кавычек.
• В кавычках пишутся имена собственные («Михаил», «Виктор» и т.д.)
• Все, что без кавычек пишется с прописной буквы. (отец)
• Имя предиката пишется всегда строчными буквами.
Еще некоторые правила
•Факт может содержать произвольное количество аргументов(0,1,2,…).•Если факт содержит несколько аргументов, то его смысл зависит от порядка записи аргументов. Пример: факт – отец («Лев», «Андрей»);
отец ( «Андрей», «Лев»);Имеют разный смысл. Первый факт имеет место, второй нет.Первый аргумент отвечает на вопрос кто (что)? Второй – по отношению к кому (чему)?
Правило на Прологе
• Простейшее правило на прологе записывается в виде 2-х предикатов, соединенных знаком :- который читается «если».
• Предикат, записанный слева от :- называется заголовком (головой) правила, а справа – телом правила.
• Правило обозначает следующее:Если имеет место тело правила, то справедлив заголовок.
Пример: (правило, определяющее понятие Сын,)«А является сыном для В, если В является отцом для А». А
и В – любые мужские имена.Выражение на Прологе: сын(А,В) :- отец(В,А)
Терминология и обозначение
• А и В называются переменными.• Переменная может обозначаться одной
прописной(заглавной) буквой или словом, начинающим с прописной буквы.
• По смыслу переменная может быть заменена на неопределенное местоимение: кто-то, что-то, некто, нечто и др.
БЗ «Родственники»правило, определяющее, кто есть дедушка.
• Лев является дедушкой Алексею, потому, что Андрей – отец Алексея, а Лев – отец Андрея.
Лев
Андрей
Алексей
Петр
Михаил Дмитрий
Используя понятие переменной, можно сказать иначе:
«Х является дедушкой для Y, если Х является отцом для Z и Z является отцом для Y»
X
Z
Y
Таким образом тело правила состоит из двух отношений, соединенных связкой И. Роль связки И играет запятая («,»)
дедушка (Х, Y) :- отец (Х, Z), отец (Z, Y)
конъюнкция
• Конъюнкция – логическое умножение (И).
• Если одновременно истинны отношения
отец (X,Y) и отец (Y,Z), то истинным является и отношение дедушка (X,Z), следовательно запятая в Прологе используется как знак конъюнкции
• Имея определение «дедушка», сформулируем правило «внук»• внук (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
БЗ «Родственники» в окончательном виде
Отец(«Лев», «Андрей»);Отец(«Лев», «Петра»);Отец(«Андрей», «Алексей»);Отец(«Петр», «Михаил»); Отец(«Петр», «Дмитрий»);
факт
правило сын(А,В) :- отец(В,А) дедушка (Х, 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)
Сравнительные отношения
• = равно
• <> не равно
• > больше
• < меньше
• >= больше или равно
• <= меньше или равно
Вопросы и задания
1. Для чего предназначен язык Пролог?2. Как в Прологе записываются факты?3. Как в Прологе записываются Правила?4. Добавьте к БЗ «Родственники» факты и правила,
отражающие новые сведения об этой семье в связи со следующими событиями: - у Андрея родился сын Сергей;- у Михаила родился сын Олег.
5. Опишите на Прологе базу знаний, отражающую родственные отношения между женщинами трех поколений в одной семье.