Логическое программирование на языке Prolog
Автор: Iwamimiko • Октябрь 17, 2021 • Практическая работа • 724 Слов (3 Страниц) • 276 Просмотры
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ
ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
«ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)
Кафедра АПУ
ОТЧЕТ
по практической работе №1
по дисциплине «Интеллектуальные информационные системы»
Тема: «Логическое программирование на языке Prolog»
Вариант 7
Студенты гр. 8371 | Васиков И.Р., Курышев Н.К. | |
Преподаватель | Сычёв И.О. |
Санкт-Петербург
2021
Задание на практическую работу
Задан фрагмент генеалогического дерева, изображенный на рисунке ниже. Необходимо разработать программу на языке Prolog, которая позволит ответить (на основании информации по генеалогическому дереву) на вопросы, указанные в таблице (в соответствии с номером варианта). При этом необходимо реализовать предикаты для отношений, перечисленных в первом столбце таблицы.
Требования: среда SWI-prolog
[pic 1]
[pic 2]
Общие теоретические сведения
Prolog (PROgramming in LOGic) – декларативный язык
программирования: решение задачи получается логическим выводом из
ранее известных положений. Программа на Прологе представляет собой
набор фактов с правилами, обеспечивающими получение заключений на
основе этих фактов.
Основа Пролога – Логика предикатов. Пролог пытается проверить
истинность гипотезы, запрашивая для этого информацию, о которой уже
известно, что она истинна.
В Прологе необходимо описать объекты и отношения, а затем
правила, для которых эти отношения являются истинными. Например,
предложение «Джону нравятся коты» – устанавливает отношение между
между «джон» и «коты», отношение «нравятся». Пример правила: «Джону
нравятся коты, если они пушистые».
Особенность Пролога заключается в том, что мы описывает, что мы
хотим получить, а не как мы это хотим получить. Пролог решает задачу
путём логического вывода из известных ему фактов и правил.
Механизм логического вывода Пролога берёт условия из правил и
просматривает список известных фактов и правил, пытаясь удовлетворить
условиям.
Объекты данных в Прологе называются термами. Пролог использует
методы полного перебора и обход дерева. Во время проверки условий
(доказательства утверждений) Пролог заменяет переменные на конкретные
значения.
Принцип работы с прологом:
Создать базу знаний Пролога (обычно имеет расширение .pl).
Здесь хранятся факты и правила. Можно использовать любой
текстовый редактор (в VS code есть расширения для работы
Prolog) , либо использовать встроенный реадактор SWI-prolog
Затем задаем вопросы:
Через консоль запускаем swipl file.pl
Либо через SWI prolog меню File->Consult
См. https://www.swi-prolog.org/pldoc/man?section=quickstart
Факты
Факты – отношения между объектами. Факт завершается точкой:
likes(john,mary).
likes(mary,paul).
likes(paul,apple).
Свойства:
green(grass).
Правила
Правило – это заключение, для которого известно, что оно истинно.
Правило имеет две части: заголовок и тело. Части разделяются символом :-,
который означает «если». Правило:
likes(mary,X):-likes(paul,X).
читается как «Мэри любит всё, что любит Пол» или «Мэри любит
что-то, если это что-то любит Пол».
Запросы
Задавать вопрос – означает попросить Пролог доказать утверждение.
Например:
- study(mark, book).
Запросы также называют более общим термином «цель», т.е. мы даём
Прологу цель для выполнения.
Переменные
Переменные – с большой буквы, постоянные идентификаторы с
маленькой. В правиле
likes(mary,X):-likes(paul,X)
X – это переменная, можно было назвать Something или Y, как
угодно.
В прологе нет оператора присваивания; переменные
инициализируются при сопоставлении с константами в фактах и правилах. В
...