Você está na página 1de 14

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

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


• Что такое Предикат?
• Правила в Прологе
Что такое ПРОЛОГ?
• Пролог – это специальное программное
обеспечение для построения БЗ и
создания на их основе разнообразных
систем Искусственного Интеллекта.
• 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
Лев
c
z
Андрей Петр
d
y Алексей Михаил Дмитрий
БЗ «Родственники» в
окончательном виде
факт Отец(«Лев», «Андрей»);
Отец(«Лев», «Петра»);
Отец(«Андрей», «Алексей»);
Отец(«Петр», «Михаил»);
Отец(«Петр», «Дмитрий»);

правило сын(А,В) :- отец(В,А)


дедушка (Х, 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. Опишите на Прологе базу знаний, отражающую
родственные отношения между женщинами трех
поколений в одной семье.

Você também pode gostar