Главная Другое » Файлы » Лекции » Другое [ Добавить материал ]

Концепции языка Prolog - презентация

[Скачать с сервера (158.9 Kb) - бесплатно] 02.11.2010, 17:36
Лекция в виде презентации в формате pdf об основных концепциях языка пролог.


Фрагменты из лекции:

Введение:
  • Prolog — это язык программирования для символических, нечисловых вычислений.
  • Он особенно хорошо приспособлен для решения проблем, которые касаются объектов и отношений между объектами:
    • реализация экспертных систем и оболочек экспертных систем;
    • создание пакетов символьных вычислений;
    • доказательства теорем и интеллектуальные системы и т.д.
Концепция языка Prolog:
  • Prolog является декларативным языком программирования, который обеспечивает решение задач, выраженных в терминах объектов и отношений между ними
  • В Prolog отсутствуют операторы присваивания, ветвлений, циклов, безусловных переходов и указателей. Говоря не строго, в Прологе отсутствуют какие-либо действия.
Программирование на языке Пролог:
Программа на языке Prolog состоит из следующих компонент :
  1. Набор фактов об объектах и отношениях между ними;
  2. Множество правил об объектах и отношениях между ними;
  3. Единственный вопрос об объектах и отношениях между ними.

Факты:
  • Факт понимается как запись того отношения, значение которого истинно.
  • Форма записи факта: имя_предиката(аргумент {, аргумент}).
  • В терминологии Prolog любая совокупность фактов (и правил) называется базой данных.

Правила записи фактов:
  • Все имена предикатов и аргументов должны начинаться со строчной латинской буквы.
  • Перечисление аргументов – через запятую.
  • Каждый факт должен заканчиваться точкой.
  • Количество аргументов и вид отношений (направления отношений) определяются программистом и не меняются при выполнении программы.
Примеры фактов:
  • likes(ivan, programming). ;Иван увлекается программированием
  • likes(programming, ivan). ;Программирование увлекается Иваном

Правила записи фактов в VisualProlog:
  • Тип отношений описывается в разделе predicates : likes(symbol,symbol)
  • При описании фактов и правил в разделе clauses предикаты должны быть сгруппированы:
    clauses
    likes(ivan,programming).
    likes(ivan,reading).
    likes(mary,reading).

Вопросы:
  • Для того чтобы программа, написанная на языке Prolog, начала работу, к ней нужно обратиться с вопросом.
  • Для формулировки вопроса в программе на VisualProlog существует раздел goal.
    goal
    likes(ivan,mary).
  • Обращение к Prolog с вопросом инициализирует процедуру поиска в базе данных, ранее введенной в систему.

Формирование ответа на вопрос:
  • Пролог просматривает БД в поисках предиката, сопоставимого с вопросом.
  • Предикаты считаются совпадающими, если они совпадают посимвольно и их соответствующие аргументы попарно совпадают.
  • Если предикат вопроса совпадает с предикатом одного из фактов в БД, то вопрос согласуется с БД.
  • При этом ответом на вопрос будет либо Yes, либо No.

Переменные:
  • Под переменной в Prolog понимается любое имя, начинающееся с прописной латинской буквы.
  • Примеры : Who, What, Ivan.
  • В отличие от процедурных языков, где имя переменной связывается с областью памяти, переменная в Prolog обозначает объект, значение которого может быть найдено.
  • Переменная называется конкретизированной, если существует объект, который она обозначает.
  • Если не известно, что именно обозначает переменная, то считается, что переменная не конкретизирована.

Использование переменных в вопросах
  • В вопросах переменные используются для того, чтобы найти какой-либо объект.
  • Пример:
    likes(ivan,X) – ответом будет:
    X = programming
    X = reading
    2 Solutions
    Yes
  • При сопоставлении факта и вопроса, содержащего переменную, переменная получает значение
  • Если обозначаемый переменной объект не имеет значения в рассматриваемом контексте, то используется анонимная переменная.

  • В VisualProlog анонимные переменные обозначаются символом "_”.
  •  Пример : likes(ivan,_) – ответом будет : Yes

Сложные вопросы и поиск с возвратом:
  • В сложных вопросах, содержащих конъюнкцию, должны быть доказаны все подцели.
  • Сначала Prolog пытается доказать первую подцель.
  • Если в базе данных есть факт, соответствующий первой подцели, то Prolog отмечает найденное место (приписывает маркер) и пытается согласовать следующие подцели.
  • После согласования (или не согласования) следующих подцелей, Prolog снова возвращается к первой подцели и снова начинает ее согласование с приписанного маркера.
  • Описанный процесс получил название поиска с возвратом (backtracking).


... ...


Правила:
  • Под правилами в Prolog понимаются наиболее общие утверждения об объектах и отношениях между ними.
  • Правила задают новые отношения через уже существующие.
  • Пролог-правило имеет вид фразовой формы: заключение:-усл1, усл2, … ,услN.
  • Данное выражение считается основным в Prolog.
  • Прологоподобные языки считаются языками типа "если-то” : заключение истинно, если истинными являются все условия, перечисленные в правой части.
  • (Чтобы посмотреть пример - качайте полную версию)
...
...

Декларативная трактовка Prolog- программ:
  • Декларативное значение программ позволяет установить, является ли заданная цель истинной, а в случае положительного ответа — при каких значениях переменных она является истинной.
  • Никаких шагов в программе не выполняется.
  • Для доказательства истинности цели достаточно правильно сформулировать все факты и правила. При этом порядок правил и фактов не важен, так же не важен порядок целей в правилах.
  • Пролог автоматически, без участия пользователя, доказывает истинность целей. При этом нет необходимости знать, как работает механизм вывода.
Процедурная трактовка Prolog-программ:
  • При процедурной трактовке Prolog- программы подчеркивается последовательность шагов, которые выполняет интерпретатор при обработке запроса. Здесь имеет значение порядок следования подцелей в правиле.
  • Множество фраз, имеющих одно и то же имя и одинаковое количество аргументов, можно рассматривать как процедуру, при этом запрос является вызовом процедуры.
  • Для получения процедурного значения Prolog-программы необходимо знать, как работает механизм вывода.
Похожие материалы:

Добавил: mauzer (02.11.2010) | Категория: Другое
Просмотров: 7606 | Загрузок: 1481 | Рейтинг: 4.0/1 |
Теги: рекурсия, программирование, язык, декларативный, Пролог
Комментарии (0)

Имя *:
Email *:
Код *: