Базовые принципы логического программирования
Выбери формат для чтения
Загружаем конспект в формате docx
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Реферат
Лекция №1. Парадигмы программирования. Базовые принципы логического программирования. Процесс унификации и определение отношений на основе правил.
Выполнил:
Проверил:
Содержание
Содержание 2
Парадигмы программирования 3
Декларативное и процедурное программирование 3
Базовые принципы логического программирования 4
Процесс унификации и определение отношений на основе правил 4
Машина вывода и механизм бектрекинга 6
Список источников 6
Парадигмы программирования
Парадигма программирования – это совокупность принципов, методов и понятий, определяющих способ конструирования программ.
Парадигма определяется:
• вычислительной моделью
• базовой программной единицей
• методами разделения абстракций
Разновидности парадигмы:
1. Императивная парадигма
• структурное программирование
• обобщенное программирование
• аспектно-ориентированное программирование программирование
2. Декларативная парадигма
• функциональное программирование
• логическое программирование
3. Объектно-ориентированная парадигма
4. Табличная парадигма
5. Реляционная парадигма
Декларативное и процедурное программирование
Под программой понимают последовательность команд, этот стиль программирования принято называть императивным (процедурным). Программируя в императивном стиле, программист должен объяснить компьютеру, как нужно решать задачу. Примерами императивных языков могут служить языки: Assembler и C++.
Декларативный стиль можно назвать противоположным императивному. Программа представляет собой совокупность утверждений, описывающих что представляет собой программа и желаемый результат. Программируя в декларативном стиле, программист должен задать спецификацию решения задачи. Примерами декларативных языков могут служить языки: LISP и Prolog.
Базовые принципы логического программирования
На примере Пролога можно выделить основные принципы логического программирования. Сопоставление с образцом, вывод с поиском и возвратом – механики, присущие этому языку программирования. Для хранения данных в Прологе используются списки, а не массивы. В языке отсутствуют операторы присваивания и безусловного перехода (указатели). Естественным, а то и единственным методом программирования является рекурсия. Пролог, как и все логическое программирование, требует немного иного стиля мышления, отказа от стереотипов императивного программирования.
Процесс унификации и определение отношений на основе правил
Теорема унификации
Для любого унифицируемого конечного множества простых выражений S алгоритм унификации закончит свою работу и выдаст наиболее общий унификатор для S.
Правила значительно расширяют возможности базы знаний, так как они универсальны и могут вместо конкретных значений содержать переменные.
Рассмотрим процесс унификации на примере, введем в программу правило, которое определяет отношение бабушка, как мама мамы: 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 первых аргументов. Но уже на втором шаге сопоставление становится возможным и переменная Y конкретизируется значением “Маша”.
Машина вывода и механизм бектрекинга
Логический вывод в Прологе выполняется машиной вывода, которая работает на идее сопоставления образцов, связывания фактов и логических переменных, сопоставлении вопросов с возможными ответами, основанными на правилах и фактах. Пролог просто доказывает гипотезы, реализуя различные стратегии логического вывода.
Зачастую при решении задач требуется вернуться назад на некоторый шаг промежуточного решения, чтобы продолжить решение уже с другой логикой. На Прологе это можно сделать с помощью бэктрекинга. Как правило в месте ветвления подцелей Пролог ставит метку и начинает испытывать первую альтернативу, Если она оказывается неуспешной он продолжает решение с метки, исследуя вторую альтернативу. Точка возврата при отработка альтернатив называется точкой бэктрекинг поинт.
Список источников
1. Основы программирования на языке Пролог : курс лекций : учеб. пособие для студентов вузов, обучающихся по специальностям в обл. информ. технологий / П. А. Шрайнер. - М. : Интернет - Ун-т Информ. Технологий, 2005. - 176 с. - (Серия «Основы информационных технологий» / Интернет-Ун-т информ. технологий).
2. Чистая архитектура. Часть II — Парадигмы программирования / Хабр (habr.com)
3. Практика логического программирования на языке Пролог: Учебно пособие / А.Ю. Беляков М-во с.-х. РФ, федеральное гос. бюджетное образов. учреждение высшего образов. «Пермская гос. с.-х. акад. им. акад. Д.Н. Прянишникова». – Пермь : ИПЦ «Прокростъ», 2017. – 129 с.