- •Лабораторная работа № 1. Малая экспертная система.
- •Теоретические сведения
- •Диагностические экспертные системы.
- •Пример применения байесовской стратегии оценки выводов
- •Контрольные задания:
- •Контрольные вопросы:
- •Лабораторная работа № 2. Знакомство с инструментальными средствами для создания экспертных систем.
- •Теоретические сведения
- •Контрольное задание:
- •Контрольное задание:
- •Контрольные вопросы:
- •Лабораторная работа № 4.
- •Теоретические сведения
- •Контрольное задание:
- •Основные стандартные домены
- •Основные стандартные предикаты:
- •Ключевые слова
- •Контрольные задания:
- •Контрольные вопросы:
- •Лабораторная работа №7. Предложения (факты и правила), цели на языке пролог.
- •Теоретические сведения Clauses (условия): Facts (факты) и Rules (правила)
- •О фактах
- •Контрольные вопросы:
- •Лабораторная работа №8. Переменные на языке программирования пролог.
- •Теоретические сведения
- •Анонимные переменные
- •Контрольное задание:
- •Принципы отката:
- •Контрольные задания:
- •Преимущества рекурсии
- •Оптимизация обратной рекурсии
- •Контрольные задания:
- •Объявление списков
- •Головы и хвосты
- •Обработка списков
- •Использование списков
- •Контрольное задание:
- •Контрольные вопросы:
- •Лабораторная работа №13. Секция фактов Лабораторная работа № 1.
- •Теоретические сведения
- •Объявление секций фактов
- •Модификация секции фактов
- •Добавление фактов в период исполнения программы
- •Загрузка фактов из файла в период исполнения программы
- •Удаление фактов в период исполнения программы
- •Удаление нескольких фактов сразу
- •Ключевые слова для объявления фактов
- •Описания Факты, объявленные с ключевым словом nondeterm
- •Факты, объявленные с ключевым словом determ
- •Факты, объявленные с ключевым словом single
- •Сохранение базы данных фактов во время выполнения программы
- •Контрольные задания:
- •Контрольные вопросы:
Контрольные задания:
Напишите программу, которая передаёт ту же информацию, что и следующие факты и предложения, на языке Пролог согласно варианту, выданному преподавателем:
Вариант 1. Вычислить сумму 1+2+3+…+N.
Вариант 2. Подсчитать сумму ряда целых четных чисел от 2 до N.
Вариант 3. Вычислить сумму ряда целых нечетных чисел от 1 до n.
Вариант 4. Найти значение произведения: 2*4*6*...*26.
Вариант 5. Найти значение произведения: 1*3*5*...*11.
Вариант 6. Используя базу данных и правило предок, составить правило для определения всех предков-дедушек.
Вариант 7. Используя базу данных и правило предок, составить правило для определения всех предков-бабушек.
Вариант 8. Используя базу данных и правило предок, составить правило для определения всех потомков-мужчин.
Вариант 9. Используя базу данных и правило предок, составить правило для определения всех потомков-женщин.
Контрольные вопросы:
Что такое рекурсивная процедура?
Из каких частей состоит рекурсия, охарактеризуйте их?
Что такое граничное условие?
Где обычно применяется рекурсия?
Назовите преимущества рекурсии.
В чем недостаток рекурсии?
Что называют оптимизацией обратной рекурсии?
Лабораторная работа №12.
СПИСКИ И РЕКУРСИЯ.
Цель работы: изучение возможностей представления и обработки данных в программах на языке Пролог с использованием списков.
Используемое программное обеспечение: Visual Prolog 5.2.
Теоретические сведения
Обработка списков - объектов, которые содержат произвольное число элементов - мощная техника в Прологе.
В Прологе, список - объект, который содержит произвольное число других объектов в пределах этого. Списки соответствуют массивам на других языках, но, в отличие от массива, не требуют объявления размерности.
Есть другие способы объединить несколько объектов в один. Если число объектов, которые будут объединены, известно заранее, Вы можете делать их параметрами отдельной составной структуры данных. И даже если число объектов непредсказуемо, Вы можете использовать рекурсивную составную структуру данных, типа дерева. Но списки являются обычно более легкими для использования, потому что язык обеспечивает краткое примечание для них.
Список, который содержит числа 1, 2, и 3, написан как [1, 2, 3].
Чтобы формировать структуру данных списка, Вы отделяете элементы списка запятыми и заключаете их в квадратные скобки.
Объявление списков
Для объявления домена для списка целых чисел необходимо:
DOMAINS
integerlist = integer*
Звездочка означает «список чего-то», т.е. integer* означает «список целых чисел».
Обратите
внимание, что
список слов
не имеет никакого специального значения
в
Элементы в списке могут быть чем-нибудь, включая другие списки. Однако, все элементы в списке должны принадлежать тому же самому домену, и в дополнение к объявлению домена списка должно быть объявление domains для элементов:
DOMAINS
elementlist = elements*
elements = ...
Здесь
элементы
должны быть приравнены к одному типу
домена (например:
integer,
real,
или
symbol)
или к набору альтернатив, отмеченных с
различными функторами.
elementlist = elements*
elements = integer; real; symbol
Способ объявлять список, составленный из целых чисел, вещественных чисел и символов состоит в том, чтобы определить один домен, включающий все три типа с функторами.
