Лабораторный практикум пролог. Методические рекомендации по дисциплине Анализ данных
Скачать 311.21 Kb.
|
Методические рекомендации по дисциплине «Анализ данных» Лабораторный практикум в сред е Visual Prolog ОГЛАВЛЕНИЕ Table of Contents Лабораторный практикум в сред е Visual Prolog 1 ВВЕДЕНИЕ 3 1. ПРОЛОГ - язык логического программирования 5 1.1. Создание баз знаний в ПРОЛОГе 5 Краткие теоретические сведения 5 Пример 1. 8 Результат: 9 Результат: 9 Результат: 10 Пример 2 10 Пример 3 11 Решение: 11 Решение 12 1.2 Поиск с возвратом. Управление поиском 17 Краткие теоретические сведения 17 Пример 1. 17 Пример 3 21 Результат выполнения программы: 22 Пример 4 22 Результат выполнения программы: 22 Пример 5 22 Результат выполнения программы 23 Результат выполнения программы 23 Результат выполнения программы 24 Пример 6 24 Результат выполнения программы: 24 Пример 7 25 Результат выполнения программы: 25 1.3 Решение логических задач в ПРОЛОГе 27 Краткие теоретические сведения 27 Пример 1 27 Результат выполнения программы 29 Пример 2 29 Пример 3 30 Результат выполнения программы 30 Пример 4 30 Результат выполнения программы 31 1.4 Арифметические вычисления и рекурсия в ПРОЛОГе 31 Краткие теоретические сведения 31 Пример 1. 32 Результат выполнения программы: 32 Пример 2. 32 Результат выполнения программы: 33 Пример 3. 33 Результат выполнения программы: 33 Результат выполнения программы: 34 Пример 5 34 Результат выполнения программы: 35 1.5 Списки 35 Пример 1 36 Результат выполнения программы: 36 Пример 2 36 Результат выполнения программы: 37 Пример 3 37 Пример 4 37 Результат выполнения программы: 37 Пример 5 38 Результат выполнения программы: 38 Пример 6 38 Решение: 38 Результат выполнения программы: 38 Пример 7 39 Результат выполнения программы: 39 Пример 8 40 Результат выполнения программы: 40 1.6 Создание экспертных систем средствами ПРОЛОГа 40 Краткие теоретические сведения 40 Литература 50 ВВЕДЕНИЕ Языки функционального и логического программирования являются представителями декларативной парадигмы программирования. В декларативных языках, в отличие от процедурных, описывается не алгоритм решения задачи, а знания об объектах и процессах соответствующей предметной области. Поиск решения задачи вырабатывается и реализуется в ходе логического вывода с помощью специального механизма. Знание общих концепций и методов современного декларативного программирования и, в частности, таких его разновидностей, как функциональное и логическое программирование, позволяет эффективно решать задачи, связанные с обработкой символьной информации, построением систем поддержки принятия рещений, экспертных систем. Основоположником логического направления программирования является язык ПРОЛОГ, а функционального - ЛИСП. В настоящее время эти и другие языки, поддерживающие и развивающие декларативную парадигму программирования, развиваются и становятся все более универсальными. Предлагаемое методическое пособие представляет собой описание лабораторных работ по изучению функционального и логического программирования. Основная цель пособия - помощь студентам в подготовке к выполнению лабораторных работ. Целью выполнения данных лабораторных работ является приобретение студентами навыков работы в среде Visual Prolog, а также закрепление теоретических знаний, полученных при прослушивании курса лекций. Пособие содержит необходимый теоретический материал, примеры решения задач и задания по программированию на языке Пролог! К каждому разделу приводятся несколько типовых задач с решениями. В настоящем пособии приводится список литературы, которая может быть использована при подготовке к лабораторным работам. Данное пособие может использоваться студентами при изучении дисциплин: Функциональное и логическое программирование, Интеллектуальные информационные системы, Основы логического программирования. В качестве результата выполнения лабораторной работы студентом должен быть подготовлен отчет о проделанной работе, который включает: 1. Постановку задачи Входные/Выходные данные (при необходимости) Текст программы (с необходимыми комментариями) Результаты тестирования (наборы входных и выходных данных). 1. ПРОЛОГ - язык логического программирования 1.1. Создание баз знаний в ПРОЛОГе Краткие теоретические сведения ПРОЛОГ (ПРОграммирование в ЛОГике) - язык логического программирования, предназначен для решения задач из области искусственного интеллекта. Он используется для обработки естественного языка и разработке систем, основанных на знаниях. Методы поиска, используемые в нем, принципиально отличаются от традиционных. Вместо детальных инструкций, предписывающих как решать ту или иную задачу, программист на языке Prolog уделяет основное внимание описанию задачи. Основные конструкции ПРОЛОГа заимствованы из логики. ПРОЛОГ относится не к процедурным, а к декларативным языкам программирования. Он ориентирован не на разработку решений, а на систематизированное и формализованное описание задачи с тем, чтобы решение следовало из составленного описания. Современной средой, в основе которой лежит язык Пролог, является Visual Prolog. В среде Visual Prolog используется подход, получивший название «визуальное программирование», при котором внешний вид и поведение программ определяются с помощью специальных графических средств проектирования без традиционного программирования на алгоритмическом языке. рис.1 Среда разработки Visual Prolog Интерфейс Visual Prolog включает: главное меню, панель инструментов, окно проекта. Если во время последнего использования системы Visual Prolog там был открытый проект, то система автоматически вновь откроет этот проект. На рис.1.1 изображен внешний вид среды Visual Prolog после запуска. В окне проекта отображаются модули открытого проекта route.prj: karta.pro, route.pro, VPITools.pro. Левая панель кнопок в окне проекта позволяет выбирать нужный компонент проекта: модуль, окно, меню и т.д. С помощью кнопок правой панели выбранный компонент можно редактировать(кнопка Edit), удалять(кнопка Delete), а также добавлять новый(кнопка New). Пункт меню File содержит команды для работы с файлами. Чтобы создавать новое окно редактирования, можно использовать команду File | New. Эта команда создаст новое окно редактора с заголовком "NONAME". В меню Edit представлены команды, позволяющие редактировать текст программы. Встроенный редактор системы по интерфейсу похож на обычный текстовый редактор. Можно производить вырезку, копирование и вставку текста, операции Отмена/Восстановление, которые можно активизировать из меню Edit. Также меню Edit показывает "горячие клавиши", связанные для этих действий. Пункт меню Project содержит команды для работы с проектом: создать новый, открыть, запустить и т.д. Запуск проекта на исполнение выполняется нажатием кнопки Команды меню Options позволяют выполнять настройку проекта, устанавливать необходимые параметры. Среда Visual Prolog позволяет протестировать программу без создания проекта. Для этого используется утилита Test Goal. Достаточно создать новый файл, набрать текст программы и активизировать Test Goal нажатием кнопки Программа на ПРОЛОГе состоит из предложений, которые могут быть фактами, правилами или запросами. Факт - это утверждение о том, что соблюдается некоторое конкретное соотношение между объектами. Факт используется для того, чтобы показать простую взаимосвязь между данными. Структура факта: <имя_отношения>( t1,t2,...,tn) ), t1,t2,...,tn- объекты Примеры фактов: учится (ира, университет). % Ира учится в университете родитель(иван, алексей). % Иван является родителем Алексея язык_программирования (пролог). % Пролог - это язык программирования Набор фактов составляет базу данных. В виде факта в программе записываются данные, которые принимаются за истину и не требуют доказательства. Правила используются для того, чтобы установить отношения между объектами на основе имеющихся фактов. Структура правила: <имя_правила> :- <тело правила> или <имя_правила > if <тело правила> Левая часть правила вывода называется головой правила, а правая часть - телом. Тело может состоять из нескольких условий, перечисленных через запятую или точку с запятой. Запятая означает операцию «логическое И», точка с запятой - операцию «логическое ИЛИ». В предложениях используются переменные для обобщенной формулировки правил вывода. Переменные действуют только в одном предложении. Имя в разных предложениях указывает на разные объекты. Все предложения обязательно заканчиваются точкой. Примеры правил: мать (Х, У) :- родитель (Х, У), женщина(Х). студент (X) :- учится (X, институт); учится (X, университет). Правило отличается от факта тем, что факт - всегда истина, а правило является истинным, если выполняются все утверждения, составляющие тело правила. Факты и правила образуют базу знаний. Переменные служат для обозначения объектов, значения которых меняются в ходе выполнения программы. Имена переменных начинаются с заглавных букв или знака «_» Область действия переменной - предложение. Одноименные переменные в разных предложениях могут иметь разные значения. Специальным знаком «_» обозначается анонимная переменная, которая используется тогда, когда конкретное значение переменной не существенно для данного предложения. Значение анонимной переменной не выводится на печать. Если имеется база данных, то можно написать запрос (цель) к ней. Запрос — это формулировка задачи, которую программа должна решить. Его структура такая же, как у правила или факта. Существуют запросы с константами и запросы с переменными. Запросы с константами позволяют получить один из двух ответов: “да” или “нет”. Если в запрос входит переменная, то интерпретатор пытается найти такие ее значения, при которых запрос будут истинным. Запросы мо-гут быть составными, т.е. состоять из нескольких простых запросов. Они могут объединяться знаком ‘,', который понимается как логическая связка И или знаком ‘;'(логическое ИЛИ). Простые запросы называются подцелью, составной запрос принимает истинное значение тогда, когда истинна каждая подцель. Как правило, программа состоит из четырех разделов. DOMAINS - секция описания доменов(типов). Секция применяется, если в программе используются нестандартные домены. PREDICATES - секция описания предикатов. Секция применяется, если в программе используются нестандартные предикаты. CLAUSES - секция предложений. Именно в этой секции записываются предложения: факты и правила вывода. GOAL - секция цели. В этой секции записывается запрос. |