Лабораторная работа №4 Введение в Visual Prolog icon

Лабораторная работа №4 Введение в Visual Prolog




НазваЛабораторная работа №4 Введение в Visual Prolog
Дата конвертації17.05.2013
Розмір77.3 Kb.
ТипЛабораторная работа

Лабораторная работа № 4

Введение в Visual Prolog

План:


  1. знакомство со средой Visual Prolog;

  2. определение отношений на основе фактов;

  3. определение отношений на основе правил;

  4. рекурсивные правила;

  5. общие принципы поиска ответов на вопросы системой Prolog.

Блок 1. Вводный материал

Prolog   это язык программирования для символических, нечисловых вычислений. Он особенно хорошо приспособлен для решения проблем, которые касаются объектов и отношений между объектами.

Запуск Visual Prolog осуществляется следующим образом: Пуск Программы Visual Prolog 5.2 Visual Prolog 32. Исходный вид окна приложение Visual Prolog представлен на рис. 4.1.



Рис. 4.1. Вид основного окна приложения Visual Prolog.

Запуск и тестирование программы. Используя команду меню File | New (F7), создаётся новый файл noname.pro. В терминологии языка Пролог для того, чтобы программы могла быть выполнена, достаточно в окне напечатать текст «GOAL Write("Привет!"), nl».

Активировав команду Project | Test Goal (Ctrl+G), выполняется GOAL. Результат выполнения команды GOAL приведен на рис. 4.2.



Рис. 4.2. Вид тестового окна выполнения команды GOAL.

Результат выполнения программы будет расположен в отдельном окне (Inactive...), которое необходимо закрыть перед тем, как тестировать следующую программу.

  Обработка ошибок. При обнаружении ошибки в программе среда визуальной разработки приложений Visual Prolog отобразит окно Errors (Warnings). Вид списка обнаруженных ошибок приведен на рис. 4.3.



Рис. 4.3. Вид окна, демонстрирующего обнаруженные ошибки.

Двойной щелчок по одной из приведенных ошибок позволяет переходить на её место в исходном тексте программы.

 Блок 2. Практические задания

Определение отношений на основе фактов

Пример 4.1.

Опишем семейные отношения, заданные деревом, представленным на рис. 4.4.

Решение

  1. Тот факт, что Том является одним из родителей Боба, можно записать на языке Prolog следующим образом: parent (tom, bob).

  2. Все дерево семейных отношений, показанное на рис. 4.4, определено с помощью программы family.pro.

  3. После передачи соответствующей программы в систему Prolog последней можно задавать некоторые вопросы об отношении parent. Пример, демонстрирующий ответ на запрос: «Является ли Боб одним из родителей Пэт?» описан в файле family_question1.pro.

  4. П
    ри обнаружении факта, о существовании которого утверждается в программе, Prolog отвечает yes, если в программе нет упоминания о том, что запрашивает вопрос, Prolog отвечает no.

При записи фактов надо соблюдать следующие правила:

  • имена всех отношений и объектов записываются с маленькой буквы;

  • вначале записывается имя отношения, затем в круглых скобках, через запятую, перечисляются объекты;

  • в конце факта ставится точка.

Задание 4.1.

  1. Используя файл family_question1.pro, задайте вопрос: «Является ли Лиз одним из родителей Пэт?»

  2. Получите ответ на вопрос: «Является ли Том одним из родителей Бена?» и проанализируйте результат.

Задание 4.2.

  1. Откройте файл family_question2.pro и изучите продемонстрированное там приложение, позволяющее задавать более интересные вопросы. Например, «Кто является родителями Лиз?»

  2. Самостоятельно задайте вопрос: «Кто является детьми Боба?»

Задание 4.3.

  1. Запишите по правилам Visual Prolog следующие факты:

"слон больше, чем лошадь",

"лошадь больше, чем осел",

"осел больше, чем собака" и

"осел больше, чем обезьяна".

  1. Составьте запросы и выясните: "кто больше слон, или лошадь" и "кто больше собаки".

Пример 4.2.

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





Решение

Проанализируйте результат запуска файла family_grandparent.pro, демонстрирующего реализацию подобного сложного запроса.

Задание 4.4.

  1. Аналогичным образом программе, рассмотренной в примере 4.2, задайте вопрос о том, кто является внуками Тома.

  2. Задайте вопрос: «Имеют ли Энн и Пэт общих родителей?».

  3. Укажите, какой ответ даст система Prolog на приведенные ниже вопросы?

  • parent ( jim, X).

  • parent ( X, jim).

  • parent ( pam, X), parent ( X, pat).

  • parent ( pam, X), parent ( X, Y), parent ( Y, jim).

  1. Сформулируйте на языке Prolog перечисленные ниже вопросы об отношении parent.

  • Кто является родителем Пэт?

  • Имеет ли Лиз ребенка?

  • Кто является дедушкой или бабушкой Пэт?

Определение отношений на основе правил

Пример 4.3.

Определим пары людей, где один является сыном или дочерью другого.

Решение

  1. Введем информацию о мужском или женском поле людей, участвующих в отношении parent. Эта задача реализована в приложении family2.pro.

  2. В качестве следующего дополнения в программе введено отношение offspring (отпрыск), обратное отношению parent. Отношение offspring можно определить таким же образом, как и parent, предоставив список обычных фактов об отношении offspring, и в качестве каждого факта указать такую пару людей, что один из них является сыном или дочерью другого, например: offspring ( liz, tom).

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

Для всех X и Y,

Y является сыном или дочерью X, если

X является родителем Y.

Такая формулировка и реализована в файле family2.pro.

Предложения Prolog, такие как offspring(Y,X):-parent(X,Y). называются правилами. Правила состоят из следующих частей:

  • условие (правая часть правила), называемое также телом предложения;

  • заключение (левая часть правила), называемое также головой предложения;

  • символ (:-) имеет смысл "если", и служит для разделения двух частей правила: заголовка и тела.

Задание 4.5.

  1. Задайте программе, рассмотренной выше, вопрос: «Является ли Лиз дочерью Тома?», для этого конкретизировав переменные Х, Y и задав частный случай общего рассматриваемого правила.

  2. Введите в рассматриваемый пример программы определение отношения mother, которое может быть основано на следующем логическом утверждении:

Для всех X и Y,

X является матерью Y, если

X является одним из родителей Y и

X - женщина.

Для заданий конъюнкции двух условий используйте между ними запятую.

  1. Используя полученные знания переопределите отношение grandparent.

  2. И
    спользуя схему, приведенную на рис. 4.6, определите отношение sister.




  1. Задайте системе вопрос: «Являются ли Энн и Пэт сестрами?»

  2. Проанализируйте предложенный системой Prolog ответ и объясните причину подобного исхода.

  3. Преобразуйте приведенные ниже утверждения в правила Prolog.

  • Каждый, кто имеет ребенка, счастлив (введите отношение happy с одним параметром).

  • Для всех X, если X имеет ребенка, имеющего сестру, то X имеет двоих детей (введите новое отношение hastwochildren).

  1. Определите отношение grandchild с использованием отношения parent. Подсказка: оно должно быть аналогично отношению grandparent (см. рис. 4.5).

  2. Определите отношение aunt (X, Y) в терминах отношений parent и sister. Для упрощения этой задачи вы можете вначале нарисовать схему для отношения, определяющего понятие aunt (тетя), в стиле рис. 1.6.

Блок 3. Исследовательские задания

Задание 4.6*.

Реализуйте в Visual Prolog решение следующей задачи: «В автомобильных гонках три первых места заняли Алеша, Петя и Коля. Какое место занял каждый из них, если Петя занял не второе и не третье место, а Коля - не третье?».

Задание 4.7*.

Реализуйте с использованием Visual Prolog решение задачи: «Витя, Юра и Миша сидели на скамейке. В каком порядке они сидели, если известно, что Миша сидел слева от Юры, а Витя слева от Миши».

Задание 4.8*.

Запустите приложение family3.pro с описанием семьи и проанализируйте использованный там подход для описания отношения predecessor (предок). Поэкспериментируйте с возможностями вывода в данной программе1.

Задание 4.9.

Руководствуясь своим вариантом из файла Контрольные задания.doc реализуйте в Visual Prolog решение задач 4 и 5.

*Пригласите преподавателя и продемонстрируйте ему результат всей проделанной работы.

Блок 4. Резюме

  1. Запуск Visual Prolog: ПускПрограммыVisual Prolog 5.2Visual Prolog 32.

  2. Создание нового файла: File | New (F7).

  3. Активировать команду: Project | Test Goal (Ctrl+G).

  4. Программа Prolog состоит из предложений. Каждое предложение оканчивается точкой.

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

  6. Параметрами отношений могут быть определенные объекты или константы (такие как tom и ann), а также объекты более общего характера (такие как X и Y). Объекты первого типа называются атомами. Объекты второго типа называются переменными.

  7. Правила - заключение, для которого известно, что оно истинно, если одно или несколько других найденных заключений или фактов являются истинными.

  8. Вопросы к системе состоят из одной или нескольких целей.

  9. Ответ на вопрос может быть положительным или отрицательным, в зависимости от того, может ли быть достигнута соответствующая цель или нет.

  10. Если вопросу соответствует несколько ответов, Prolog отыскивает столько ответов, сколько потребует пользователь (в пределах возможного).

  11. Предложения языка Prolog состоят из головы и тела. Тело представляет собой список целей, разделенных запятыми. Запятые рассматриваются как знаки конъюнкции.

Блок 5. Вопросы для самоконтроля

  1. Какова структура окон в программе Visual Prolog?

  2. Каким образом обрабатываются ошибки в программах Visual Prolog’а?

  3. Сформулируйте отличие между атомами и переменными.

  4. Какие символы можно использовать в имени переменной?

  5. Что такое «правило» с точки зрения Prolog’а?

  6. Перечислите требования, предъявляемые к постановке вопросов в Prolog’е.

  7. Какие раздела выделяются в предложениях языка Prolog?

  8. В каком разделе описываются факты? Правила? Запросы? Каковы особенности их записи?

  9. В каких случаях используется запятая при формировании запроса?




1 Данная программа изложена в книге Братко И. Алгоритмы искусственного интеллекта на языке Prolog, 3 е издание.: Пер. с англ. – М.: Издательский дом «Вильямс», 2004. С. 37.






Схожі:

Лабораторная работа №4 Введение в Visual Prolog iconПрактикум по программированию Лабораторная работа №3 Лабораторная работа №3 Обработка естественного языка
Цель: познакомиться с основными понятиями исчисления высказываний; изучить понятие правило вывода, научиться строить правила вывода...
Лабораторная работа №4 Введение в Visual Prolog iconПрактикум по программированию Лабораторная работа №1-2. Лабораторная работа №1-2 Основы алгоритмизации: способы описания алгоритмов
Цель: изучить способы описания алгоритмов; научится записывать словесные алгоритмы и алгоритмы в виде блок-схем; научится создавать...
Лабораторная работа №4 Введение в Visual Prolog iconЛабораторна робота №1 написання простої програми на мові prolog
...
Лабораторная работа №4 Введение в Visual Prolog iconЛабораторная работа №2 Тема "Парная нелинейная регрессия"

Лабораторная работа №4 Введение в Visual Prolog iconЛабораторная работа №1 Тема "Парная линейная регрессия"

Лабораторная работа №4 Введение в Visual Prolog iconЛабораторная работа №9 Работа с программой Turbo Debugger
«Архитектура эвм» и более углубленного понимания архитектуры и программной модели процессоров семейства Intel x8086. В качестве средства...
Лабораторная работа №4 Введение в Visual Prolog iconЛабораторная работа №1 Работа с двухмерной векторной графикой. Пакет Corel Draw 11
Ознакомится с возможностями системы графического дизайна CorelDraw11, и получить основные навыки работы с двухмерной векторной графикой....
Лабораторная работа №4 Введение в Visual Prolog iconЛабораторная работа № Применение законов Ома и Кирхгофа для анализа электрических цепей

Лабораторная работа №4 Введение в Visual Prolog iconДокументи
1. /Лабораторна работа ь3.doc
2. /Лабораторная...

Лабораторная работа №4 Введение в Visual Prolog iconДокументи
1. /ПРОГРАММИРОВАНИЕ/Лабораторная работа 1.doc
2. /ПРОГРАММИРОВАНИЕ/Лабораторная...

Додайте кнопку на своєму сайті:
Документи


База даних захищена авторським правом ©te.zavantag.com 2000-2017
При копіюванні матеріалу обов'язкове зазначення активного посилання відкритою для індексації.
звернутися до адміністрації
Документи