Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Реферат
Лекция №1. Введение в язык логического программирования Пролог
Выполнил:
Проверил:
1
Содержание
Содержание .................................................................................................................................................. 2
Парадигмы программирования .................................................................................................................. 3
Декларативное и процедурное программирование .................................................................................. 3
Базовые принципы логического программирования ............................................................................... 4
Процесс унификации и определение отношений на основе правил ...................................................... 4
Машина вывода и механизм бектрекинга ................................................................................................. 6
Список источников ..................................................................................................................................... 6
2
Парадигмы программирования
Парадигма программирования – это совокупность принципов, методов
и понятий, определяющих способ конструирования программ.
Парадигма определяется:
вычислительной моделью
базовой программной единицей
методами разделения абстракций
Разновидности парадигмы:
1. Императивная парадигма
структурное программирование
обобщенное программирование
аспектно-ориентированное программирование программирование
2. Декларативная парадигма
функциональное программирование
логическое программирование
3. Объектно-ориентированная парадигма
4. Табличная парадигма
5. Реляционная парадигма
Декларативное и процедурное программирование
Под программой понимают последовательность команд, этот стиль
программирования
принято
называть
императивным
(процедурным).
Программируя в императивном стиле, программист должен объяснить
компьютеру, как нужно решать задачу. Примерами императивных языков
могут служить языки: Assembler и C++.
Декларативный
стиль
можно
назвать
противоположным
императивному. Программа представляет собой совокупность утверждений,
3
описывающих что представляет собой программа и желаемый результат.
Программируя
в
декларативном
стиле,
программист
должен
задать
спецификацию решения задачи. Примерами декларативных языков могут
служить языки: LISP и Prolog.
Базовые принципы логического программирования
На примере Пролога можно выделить основные принципы логического
программирования. Сопоставление с образцом, вывод с поиском и возвратом
– механики, присущие этому языку программирования. Для хранения данных
в Прологе используются списки, а не массивы. В языке отсутствуют
операторы
присваивания
и
безусловного
перехода
(указатели).
Естественным, а то и единственным методом программирования является
рекурсия. Пролог, как и все логическое программирование, требует немного
иного
стиля
мышления,
отказа
от
стереотипов
императивного
программирования.
Процесс унификации и определение отношений на основе правил
Теорема унификации
Для
любого
унифицируемого
конечного
множества
простых
выражений S алгоритм унификации закончит свою работу и выдаст наиболее
общий унификатор для S.
Правила значительно расширяют возможности базы знаний, так как
они универсальны и могут вместо конкретных значений содержать
переменные.
4
Рассмотрим процесс унификации на примере, введем в программу
правило, которое определяет отношение бабушка, как мама мамы:
baba(X,Y):- mama(X,Z), mama(Z,Y).
Дальше напишем: DOMAINS s = string PREDICATES mama(s,s)
baba(s,s)
CLAUSES
mama("Наташа","Даша").
mama("Даша","Маша").
mama("Маша","Глаша"). mama("Маша","Паpаша"). baba(X,Y):- mama(X,Z),
43 mama(Z,Y).
Запустим
программу
и
зададим
машине
вывода
вопрос
baba(“Наташа”,W).
Процесс унификации будет проходить следующим образом:
Сверху – вниз будет происходить поиск предиката baba( первые
четыре факта не подходят)
Наткнувшись на правило baba, Пролог сопоставляет вопрос
baba(“Наташа”,W) с головой правила baba(X,Y), после чего
переменная X конкретизируется значением “Наташа”, а W
связывается с переменной Y из правила baba(X,Y)
Пролог
пытается
последовательно
достигнуть
подцели
mama(“Наташа”,Z) и mama(Z,Y)
Просматривая
факты
Пролог
mama("Наташа","Даша"),
что
натыкается
приводит
к
на
факт
конкретизации
переменной Z значением “Даша”
Подцель
считается
достигнутой
и
Пролог
переходит
к
доказательству подцели mama(Z,Y), а вернее – mama(“Даша”,Y)
Поиск снова начинается с первого факта, который в данном
случае
не
может
быть
сопоставлен
с
подцелью
ввиду
несопоставимости 45 первых аргументов. Но уже на втором шаге
сопоставление
становится
возможным
конкретизируется значением “Маша”.
5
и
переменная
Y
Машина вывода и механизм бектрекинга
Логический вывод в Прологе выполняется машиной вывода, которая
работает на идее сопоставления образцов, связывания фактов и логических
переменных, сопоставлении вопросов с возможными ответами, основанными
на правилах и фактах. Пролог просто доказывает гипотезы, реализуя
различные стратегии логического вывода.
Зачастую при решении задач требуется вернуться назад на некоторый
шаг промежуточного решения, чтобы продолжить решение уже с другой
логикой. На Прологе это можно сделать с помощью бэктрекинга. Как
правило в месте ветвления подцелей Пролог ставит метку и начинает
испытывать первую альтернативу, Если она оказывается неуспешной он
продолжает решение с метки, исследуя вторую альтернативу. Точка возврата
при отработка альтернатив называется точкой бэктрекинг поинт.
Список источников
1. Основы программирования на языке Пролог : курс лекций : учеб.
пособие для студентов вузов, обучающихся по специальностям в обл.
информ. технологий / П. А. Шрайнер. - М. : Интернет - Ун-т Информ.
Технологий, 2005. - 176 с. - (Серия «Основы информационных
технологий» / Интернет-Ун-т информ. технологий).
2. Чистая архитектура. Часть II — Парадигмы программирования / Хабр
(habr.com)
3. Практика логического программирования на языке Пролог: Учебно
пособие / А.Ю. Беляков М-во с.-х. РФ, федеральное гос. бюджетное
образов. учреждение высшего образов. «Пермская гос. с.-х. акад. им.
акад. Д.Н. Прянишникова». – Пермь : ИПЦ «Прокростъ», 2017. – 129 с.
6