Главная страница
Навигация по странице:

  • File|New

  • Project

  • Результат

  • Пример 2

  • Пример 3

  • Решение

  • write

  • Лабораторный практикум пролог. Методические рекомендации по дисциплине Анализ данных


    Скачать 311.21 Kb.
    НазваниеМетодические рекомендации по дисциплине Анализ данных
    АнкорЛабораторный практикум пролог
    Дата11.03.2021
    Размер311.21 Kb.
    Формат файлаodt
    Имя файлаProlog.odt
    ТипМетодические рекомендации
    #183725
    страница2 из 10
    1   2   3   4   5   6   7   8   9   10
    Пример 1.

    Имеется база данных, содержащая следующие факты: родитель(илья, марина). родитель(марина, ира). родитель(елена, иван). родитель(николай, ира). родитель(ольга, алексей). родитель(марина, саша). родитель(сергей, иван).

    Определить:

    1. верно ли, что Марина является родителем Саши;

    2. верно ли, что Алексей является родителем Ольги;

    3. кто является ребенком Николая;

    4. кто родители Ивана;

    5. всех родителей и их детей.

    Решение.

    1. Запустите среду Visual Prolog. Закройте окно проекта (если оно открыто) и откройте новый файл (File|New) (рис.2)

    В появившемся окне наберите текст программы, содержащий разделы: PREDICATES (описание предиката родитель), CLAUSES (перечисляются имеющиеся факты) и GOAL (запрос).



    рис.2. Рабочее окно редактора

    DOMAINS

    имя=symbol


    родитель(имя, имя)

    PREDICATES

    nondeterm

    CLAUSES

    родитель(илья, марина). родитель(марина, ира). родитель(елена, иван). родитель(николай, ира). родитель(ольга, алексей). родитель(марина, саша). родитель(сергей, иван).

    GOAL

    родитель(марина, саша)



    Запустите и протестируйте программу с помощью команды Project |
    Test Goal (можно использовать кнопку на панели инструментов или сочетание клавиш +). Результат выполнения программы будет выведен в отдельном окне

    рис3. Окно вывода результата



    Указание: перед следующим запуском программы следует закрыть это окно.

    1. Для ответа на вопрос: верно ли, что Алексей является родителем Ольги, измените запрос:

    GOAL

    родитель(алексей, ольга).

    После запуска программы (Project | Test Goal) будет получен ответ: no

    1. Для ответа на вопрос: кто является ребенком Николая, запишите цель: GOAL

    родитель(николай, X) .

    Результат:

    Х=ира

    1 Solution

    1. Для ответа на вопрос: кто родители Ивана, укажите запрос:

    GOAL

    родитель(Х, иван), родитель^, иван), X<>Y.

    Результат:

    Х=елена, Y=сергей

    Х=сергей, Y=елена

    2 Solutions

    1. Для определения всех родителей и их детей, запишите:

    GOAL родитель(Х, Y).

    Результат:

    Х=илья, Y=марина

    Х=марина, Y=ира

    Х=елена, Y=иван

    Х=николай, Y=ира

    Х=ольга, Y=алексей

    Х=марина, Y=саша

    Х=сергей, Y=иван

    7 Solutions

    Пример 2

    Имеются факты вида: родитель(имя, имя) и женщина(имя).

    а) составить правило мать и определить, кто мать Маши.

    б) составить правило бабушка и определить, кто бабушка Ирины.

    в) составить правило внучка и определить, сколько внучек у Ольги и как их зовут

    Решение:

    DOMAINS

    имя= symbol

    PREDICATES

    nondeterm родитель(имя, имя) женщина(имя)

    nondeterm мать(имя,имя)

    nondeterm бабушка(имя,имя)

    nondeterm внучка(имя,имя)

    CLAUSES родитель(марина,ирина).

    родитель(елена, анна). родитель(ольга,марина). родитель(ольга,татьяна). родитель(татьяна,катя). родитель(анна, маша).

    женщина(ольга). женщина(маша). женщина(ирина). женщина(елена). женщина(анна). женщина(марина). женщина(татьяна). женщина(катя).

    MaTb(X,Y): -родитель(ХД),женщина(Х). 6a6ymka(X,Z): -мать(ХД),родитель^^). внучка(Х,У): -бабушка^,Х),женщина(Х).

    А) GOAL

    мать(Кто,маша).

    Результат:

    Кто=анна

    1 Solution

    Б) GOAL бабушка(Кто,ирина).

    Результат:

    Кто=ольга

    1 Solution

    В) GOAL

    внучка(Кто, ольга).

    Результат:

    Кто=ирина

    Кто=катя

    2 Solutions

    Замечание: ключевое слово nondeterm определяет недетерминированные предикаты, которые могут совершать откат назад и генерировать множественные решения. Таким образом, если задача предполагает возможность получения несколько решений, следует объявлять предикаты как недетерминированные.

    Пример 3

    Записать по правилам Пролога следующие факты:

    Билл играет в теннис, баскетбол и футбол

    Майк играет в футбол и хоккей.

    Сформулировать запросы, выясняющие:

    а) кто играет в футбол

    б) во что играет Майк

    в) во что играют и Билл, и Майк

    Решение:

    DOMAINS

    имя, cnopT=symbol

    PREDICATES

    р1ау(имя,спорт)

    CLAUSES

    р1ау(билл,теннис). р1ау(билл,баскетбол). р1ау(билл,футбол).

    р1ау(майк,хоккей).

    р1ау(майк,футбол).

    1. GOAL

    play(Х,футбол).

    Результат:

    Х=билл

    Х=майк

    2 Solutions

    Б) GOAL

    play(майк,Х).

    Результат:

    Х=хоккей

    Х=футбол

    2 Solutions

    1. GOAL

    р1ау(майк,Х),р1ау(билл,Х).

    Результат:

    Х=футбол

    1 Solution

    Создание проекта позволяет протестировать пример как автономную исполняемую программу. После запуска проекта на исполнение создается exe- файл, работа которого завершается после первого решения, удовлетворяющего решению задачи. Запуск программы в этом режиме не обеспечивает автоматический вывод значений переменных, поэтому необходимо использовать стандартный предикат вывода write.

    Пример 4.

    Заданы отношения-факты: родитель(“Иван”,”Катя”). родитель(“Анна”,” Олег ”). родитель(“Олег”,”Дима”). родитель(“Игорь”,”Ольга”). родитель(“Олег”,”Виктор”). родитель(“Игорь”,”Иван”). мужчина(“Дима”). мужчина(“Иван”). мужчина(“Игорь”). мужчина(“Олег”). мужчина(“Виктор”). женщина(“Катя”). женщина(“Ольга”). женщина(“Анна”).

    Составить новое отношение-правило
    1   2   3   4   5   6   7   8   9   10


    написать администратору сайта