Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Факт – это то, что известно.
Правило – это способ порождения новых фактов на основе имеющихся. Для родственных отношений мы можем установить множество правил, избавляясь от необходимости вводить дополнительные факты, например, кто кому приходится братом, племянником и т.д. Правило, определяющее отношение брат или сестра (имеют общих родителей): sibling(X,Y):- parent(Z,X), parent(Z,Y), X< >Y. Предикат сравнения X< >Y нужен для того, чтобы Пролог не выводил решения, что каждый сам себе брат или сестра. Для точного определения брат это или сестра, тетя или дядя, бабушка или дедушка, мать или отец и т.п. необходимо добавить факты полового признака – одноместные предикаты, например, men и women man (рюрик). man (игорь). man (святослав). и т.д. woman (ефанда). woman (ольга). и т.д. Правило, определяющее отношение типа дядя, выглядит следующим образом: uncle(X,Y):- parent(Z,Y), sibling(X,Z), man(X). Когда в ходе резолюции цели Пролог встречает не факт, а правило, то вначале унифицирует заголовок правила, т.е. сравнивает связанные переменные и присваивает значения свободным переменным. В случае успешной унификации аргументов Пролог подставляет значения аргументов из заголовка в первый предикат в теле правила и ставит этот предикат себе в качестве подцели, которую начинает унифицировать с базой знаний. В случае успешной резолюции данной подцели Пролог переходит к следующему условию правила. Если унификация этого предиката условия приводит к неудаче, то Пролог выполняет откат к предыдущему условию правила. Этот откат происходит только в том случае, если этот предыдущий предикат является неоднозначным. Если в цепочке предикатов внутри правила встречаются как однозначные, так и неоднозначные предикаты, то откат после неудачи выполняется на ближайший неоднозначный предикат. Факт – знания, основанные на константах (неизменяемые знания). Правила – знания, которые выводятся на основании фактов. Набор фактов и правил не содержит в себе алгоритма. Правила и факты существуют независимо друг от друга. Объединение правил для вывода результата происходит в ходе резолюции цели. Переменные в заголовке правила существуют только внутри данного правила. При откате внутри правила происходит переход к предыдущему неоднозначному предикату в правиле.
Пример программы на Прологе Существует множество реализации языка Пролог для разных классов вычислительных систем. Для выполнения лабораторных работ используется программный продукт Visual Prolog v.5.2 Personal Edition for Windows. Программа на Прологе состоит из нескольких секций, каждая из которых идентифицируется ключевым словом и имеет следующую обобщенную структуру:
Domains /* секция объявления доменов */ Database /* секция объявления динамических баз данных */ Predicates /* секция объявления предикатов */ Clauses /* предложения (факты и правила) */ Goal /* подцель_1, подцель_2, и т. д. */ Обязательным в программе является присутствие двух секций с именами predicates и clauses. В первой из них описываются структуры используемых в программе отношений, а во второй эти отношения определяются. Более подробно секции Пролог-программы будут рассмотрены на следующих практических занятиях. Для набора фактов и правил, рассмотренных выше, один из возможных примеров программы на Прологе будет иметь вид: Рис. 1.2. Пример программы на Прологе Пролог-программа может использовать комментарии, которые не влияют на выполнение программы, но могут оказать помощь человеку, читающему программу. Пролог игнорирует произвольное число строк, заключенное между символами /* и */. Все, что находится между % и концом строки, также рассматривается как комментарий. Практикум 1-1
Практикум 1-2
Практикум 1-3
Контрольное задание 1 Исходные данные Номер варианта индивидуального задания выбирается по последней цифре номера зачетной книжки (номера студенческого билета). В индивидуальном задании студенту для описания базы фактов предлагается минимальный набор родственных отношений в соответствии с вариантом:
Значками «/1», «/2», «/3» задается арность отношения или, говоря в терминах предметной области, количество личностей в отношении. Например: · отношение «мужчина/1» характеризует такой факт как «Виктор является мужчиной» или на Пролог мужчина (“Виктор”); · отношение «отец/2» характеризует родственное отношение «Виктор отец Андрея» или на Пролог отец (“Виктор”, “ Aндрей”); · отношение «сын/3» характеризует родственной отношение «Андрей сын Виктора и Аллы» или на Пролог сын (“Андрей”, “Виктор”, “Алла”); · отношение «родитель/3» характеризует родственной отношение «Виктор и Алла родители Андрея» или на Пролог родители (“Виктор”, “Алла”, “Андрей”). Примечание: Указанный в задании минимальный набор фактов родственных отношений может быть расширен дополнительными фактами, но необходимость подобного действия необходимо обосновать. Задание 1. Генеалогическое дерево Для определения фактов базы знаний необходимо составить генеалогическое дерево и изобразить его на бумаге в виде семантической сети. Пример генеалогического дерева приведен на рис.1.1. Личности, объединяемые генеалогическим деревом, могут быть как реальными (Иван Грозный, Петр I, Николай II, Пушкин А.С., и т.п.), так и виртуальными (родословные гномов и т.п. персонажей). Для проверки правильности составления всех правил родственных отношений дерево должно содержать не менее четырех уровней или, говоря языком предметной области, на дереве должны быть прадедушки (прабабушки) и правнуки (правнучки). Для упрощения задания не рекомендуется (но не возбраняется) вводить в генеалогическое дерево личностей порождающих циклические связи, являющимися, например, одновременно «супругой» и «двоюродной сестрой». Задание 2. Представление правил Используя исходные предикаты (в соответствии с вариантом) написать правила для установления родственных связей, таких как: · отец, мать, сестра, брат, сын, дочь; · двоюродная сестра (кузина), двоюродный брат (кузен), дядя, тетя, племянник, племянница; · дедушка, бабушка, прадедушка, прабабушка, внук, внучка, правнук, правнучка. Дополнительно (для желающих - задания повышенной трудности): кровные (общий предок), сводные брат и сестра, шурин, деверь, золовка, тесть, теща, зять, невестка. Для каждого родственного отношения первоначально необходимо записать правило на естественном языке (в виде продукции). Например: ЕСЛИ есть такой X который является отцом Z И Z является отцом ИЛИ матерью Y ТОГДА X является дедом Y. Затем переписать это же правило на языке Пролог: grandfather (X,Y):- father (X,Z), father (Z,Y).
grandfather (X,Y):- father (X,Z), mother (Z,Y). Задание 3. Программа на Прологе Перевести генеалогическое дерево в базу фактов, в соответствии с предикатами, заданными в варианте. Описать все правила родственных отношений. Сформулировать запросы для проверки работы программы Требования к оформлению Преподавателю на проверку сдается файл Microsoft Word, содержащий следующую информацию: 1. Титульный лист 2. Генеалогическое дерево 3. Составление правил искомых родственных связей в базе знаний 4. Листинг разработанной базы знаний на языке Пролог 5. Примеры запросов к базе знаний и ее ответов ПРАКТИЧЕСКОЕ ЗАНЯТИЕ 2.
|
|||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2017-02-10; просмотров: 268; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.218.129.100 (0.016 с.) |