- •Лабораторная работа № 1. Малая экспертная система.
- •Теоретические сведения
- •Диагностические экспертные системы.
- •Пример применения байесовской стратегии оценки выводов
- •Контрольные задания:
- •Контрольные вопросы:
- •Лабораторная работа № 2. Знакомство с инструментальными средствами для создания экспертных систем.
- •Теоретические сведения
- •Контрольное задание:
- •Контрольное задание:
- •Контрольные вопросы:
- •Лабораторная работа № 4.
- •Теоретические сведения
- •Контрольное задание:
- •Основные стандартные домены
- •Основные стандартные предикаты:
- •Ключевые слова
- •Контрольные задания:
- •Контрольные вопросы:
- •Лабораторная работа №7. Предложения (факты и правила), цели на языке пролог.
- •Теоретические сведения Clauses (условия): Facts (факты) и Rules (правила)
- •О фактах
- •Контрольные вопросы:
- •Лабораторная работа №8. Переменные на языке программирования пролог.
- •Теоретические сведения
- •Анонимные переменные
- •Контрольное задание:
- •Принципы отката:
- •Контрольные задания:
- •Преимущества рекурсии
- •Оптимизация обратной рекурсии
- •Контрольные задания:
- •Объявление списков
- •Головы и хвосты
- •Обработка списков
- •Использование списков
- •Контрольное задание:
- •Контрольные вопросы:
- •Лабораторная работа №13. Секция фактов Лабораторная работа № 1.
- •Теоретические сведения
- •Объявление секций фактов
- •Модификация секции фактов
- •Добавление фактов в период исполнения программы
- •Загрузка фактов из файла в период исполнения программы
- •Удаление фактов в период исполнения программы
- •Удаление нескольких фактов сразу
- •Ключевые слова для объявления фактов
- •Описания Факты, объявленные с ключевым словом nondeterm
- •Факты, объявленные с ключевым словом determ
- •Факты, объявленные с ключевым словом single
- •Сохранение базы данных фактов во время выполнения программы
- •Контрольные задания:
- •Контрольные вопросы:
Контрольное задание:
Решите задачу согласно варианту, выданному преподавателем:
Вариант 1. Запишите предикат, названный sum_of, который работает точно подобно length_of, за исключением того, что требуется список чисел и их сумма. Например, sum_of([1, 2, 3, 4], S) должен связать S с 10.
Вариант 2. Запишите предикат oddlist, который берет два параметра. Первый параметр - список целых чисел, в то время как второй параметр возвращает список всех нечетных чисел, найденных в первом списке.
Вариант 3. Запишите предикат real_average, который вычисляет среднее значение всех элементов в списке вещественных чисел.
Вариант 4. Запишите предикат, который берет составной список как его первый параметр и возвращает второй параметр, который является списком со всеми удаленными подсписками. Этот предикат обычно известен, как flatten, поскольку это сглаживает список списков в один список. Например, на запрос который является первоначальным сглаженным списком
flatten([s(ed), i(3), l([r(3.9), l([s(sally)])])], r(4.21), X)
Пролог ответит
X = [s(ed), i(3), r(3.9), s(sally), r(4.21)]
1 Solution
Вариант 5. Сформировать список [2, 4, 6, 8, 10] и удалить из него введенное число.
Вариант 6. Сформировать списки [1, 3, 5, 7, 9] и [2, 4, 6, 8, 10] и объединить их в один.
Вариант 7. Сформировать список [3, 6, 9, 12, 15, 18] и вставить в него введенное число.
Вариант 8. Сформировать список из N натуральных чисел, начиная с 10. Каждое следующее на 5 больше предыдущего.
Вариант 9. Сформировать список [3, 6, 9, 12, 15] и найти сумму его элементов.
Вариант 10. Сформировать список [6, 5, 4, 3, 2] и найти сумму его элементов.
Вариант 11. Сформировать список [7, 5, 3, 1] и найти произведение его элементов.
Вариант 12. Сформировать список из N последовательных натуральных чисел, начиная с 10. Найти сумму его элементов.
Контрольные вопросы:
Что такое список?
В чем отличие списка от массива?
Как выглядит список, содержащий числа?
Каким образом объявляется домен для списка целых чисел?
Из чего состоит список?
Дайте понятие головы и хвостовой части списка?
Что такое хвост списка?
Какую структуру имеют списки?
Каким знаком можно отделить голову от хвостовой части списка?
Дайте понятие составного списка?
Как объявить домен для составного списка?
Лабораторная работа №13. Секция фактов Лабораторная работа № 1.
Цель работы: объявление секции фактов и изменение ее содержания.
Используемое программное обеспечение: Visual Prolog 5.2.
Теоретические сведения
Секция фактов состоит из фактов, которые вы можете добавить и удалить непосредственно из вашей программы в период её исполнения. Вы можете объявить предикаты в секции фактов вашей программы, и использовать их, так же как если бы они были объявлены в секции предикатов.
В Visual Prolog можно использовать, предикаты assert, asserta, assertz чтобы добавить новые факты в секцию фактов, и предикаты retract и retractall, чтобы удалить существующие факты. Вы можете изменить содержание вашей секции фактов удалением первого факта и затем добавлением новой версии этого факта (или вообще другого факта). Предикат consult считывает факты из файла и добавляет их к внутренним фактам, а предикат save сохраняет содержание внутренней секции фактов в файл.
Visual Prolog обрабатывает факты, принадлежащие секции фактов, совсем не так, как он обрабатывает нормальные предикаты. Факты для предикатов секции фактов сохранены в таблицах, которые можно легко менять, в то время как нормальные предикаты компилируются в двоичный код для обеспечения максимальной скорости.
