Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
IIS / Печень О.А / Тема 2 / ЛР 2 1 - Prolog знакомство.doc
Скачиваний:
30
Добавлен:
31.03.2015
Размер:
204.8 Кб
Скачать

Лабораторная работа № 3 Программирование интеллектуальных систем на языке Пролог Знакомство с языком Пролог

  1. Введение

Пролог (Prolog) - язык программирования, применяемый в разработках искусственного интеллекта и системах, основанных на принципах искусственного интеллекта. Пролог широко использовался при создании ЭВМ пятого поколения, при построении экспертных систем, настраиваемых баз данных, естественно-языковых интерфейсов и интеллектуальных систем управления. Свое название Пролог получил от слов "ПРОграммирование на языке ЛОГики". Теоретической основой Пролога является раздел символьной логики, называемый исчислением предикатов. Предикат - это логическая функция, которая выражает некоторое отношение между своими аргументами и принимает значение "истина", если это отношение имеется или "ложь", если оно отсутствует.

Пролог является декларативным, а не процедурным языком программирования. Это его принципиальное отличие от Паскаля, Си и других традиционных процедурных языков программирования. На процедурном языке программист должен описать алгоритм решения шаг за шагом. На Прологе программист должен описать задачу и основные правила се решения, исполняющая система Пролога сама определит, есть ли решение, и какое. Язык Пролог обладает рядом уникальных свойств: что делает его мощным средством логического программирования. К таким свойствам относятся:

  1. механизм вывода с поиском и возвратом,

  2. встроенный механизм сопоставления с образцом,

  3. простая, но выразительная структура данных с возможностью ее изменения.

Пролог отличается единообразием программ и данных. Данные и программы лишь две различные точки зрения на объекты Пролога. В единой базе данных можно свободно создавать и уничтожать отдельные элементы. Поскольку не существует различия между программой и данными, то можно менять программу во время ее работы. Естественным методом программирования является рекурсия.

Пролог является декларативным языком. Это означает, что имея необходимые факты и правила, он может использовать дедуктивные выводы для решения задач программирования. Пролог - язык описаний и вместо серии шагов, определяющих, как компьютер должен решать проблему, программа на Прологе содержит описание проблемы, которое включает в себя:

  1. Имена и структуры объектов, используемых в задаче.

  2. Имена отношений (предикатов), существующих между объектами.

  3. Основную цель (задачу), решаемую данной программой.

  4. Факты и правила, описывающие отношения между объектами.

 Такое описание используется для спецификации желаемых отношений между имеющимися входными данными и выходными данными, генерируемыми на основании входных. Первые две области описаний аналогичны секции объявлений программ на Паскале. Третья описывает формулировку основной цели программы. Четвертая содержит список логических утверждений в форме фактов, таких как,

Иван любит Марью Петр любит пиво

или в форме правил, например,

Иван любит X, если Петр любит Х ( Иван любит то, что любит Петр ).

На основе имеющихся правил и фактов Пролог делает выводы. Имея два вышеприведенных факта и одно правило. Пролог придет к выводу, что

Иван любит пиво.

А если задать Прологу задачу, Например,

Найти всех, кто любит пиво ,

то он найдет все решения этой задачи. При этом он автоматически управляет решением задачи, стараясь во время выполнения программы найти все возможные наборы значений, удовлетворяющие поставленной задаче. При этом поиск производится по всей базе данных, ранее введенной в систему (термин база данных используется при объединении набора фактов для совместного их использования при решении некоторой конкретной задачи).

В Прологе используется метод поиска с возвратом, который позволяет в случае нахождения одного решения пересмотреть все сделанные предположения еще раз, чтобы определить, не приводит ли новое значение переменной к еще одному решению. Синтаксис Пролога очень короток и прост. Поэтому ею проще освоить, чем запутанный синтаксис традиционных языков программирования.