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

  • Отчет по дисциплине: «Интеллектуальные информационные системы»Выполнила: студентка группы 19ЗИСВеденяпина Ю.Р.Проверил

  • Динамические предикаты в Prolog.

  • Работа с базами данных в Prolog.

  • Пространство состояний задачи.

  • Поиск в глубину и его реализация в Prolog.

  • Поиск в ширину и его реализация в Prolog.

  • Эвристический поиск Prolog

  • ИИС. Интеллектуальные информационные системы,. Отчет по дисциплине Интеллектуальные информационные системы студентка группы 19зис веденяпина Ю. Р


    Скачать 21.49 Kb.
    НазваниеОтчет по дисциплине Интеллектуальные информационные системы студентка группы 19зис веденяпина Ю. Р
    Дата21.04.2022
    Размер21.49 Kb.
    Формат файлаdocx
    Имя файлаИнтеллектуальные информационные системы,.docx
    ТипОтчет
    #488868

    Министерство науки и высшего образования Российской Федерации

    Пензенский казачий институт технологий (филиал) ФГБОУ ВО

    «Московский государственный университет технологий и управления

    им. К.Г. Разумовского (Первый казачий университет)»
    Отчет

    по дисциплине: «Интеллектуальные информационные системы»


    Выполнила:

    студентка группы 19ЗИС

    Веденяпина Ю.Р.

    Проверил:

    к.п.н. доц. Акимова И.В.

    Пенза

    2022


    1. Динамические предикаты в Prolog.

    Динамический класс - класс, способный порождать объекты (экземпляры или точные копии), Динамические классы могут содержать как статические, так и динамические предикаты, а также статические и динамические факты. Каждый экземпляр динамического класса содержит свою копию динамического предиката и свою копию динамического раздела фактов. Создание объекта (экземпляра или копии класса) осуществляется вызовом предиката-конструктора. Как правило, это предикат-функция new(), но может быть и любой другой, объявленный как конструктор в разделе constructors декларации класса.

    Например, класс dynamicClass является динамическим классом, что определяется конструкцией dynamicClass:justInterface.

    class dynamicClass:justInterface

    end class dynamicClass

    implement dynamicClass

    end implement dynamicClass

    interface justInterface

    end interface justInterface

    Опять-таки, синтаксически все правильно, но практически бесполезно. Теперь добавим какие-нибудь полезности и вынесем вперед декларацию интерфейса.

    interface justInterface

    predicates

    visibleDynamicPred:().

    end interface justInterface

    class dynamicClass:justInterface

    predicates

    visibleStaticPred:().

    end class dynamicClass

    implement dynamicClass

    clauses

    visibleStaticPred():-

    invisibleStaticPred(),

    clauses

    visibleDynamicPred():-

    invisibleStaticPred(), 

    class predicates

    invisibleStaticPred:().

    clauses

    invisibleStaticPred():-

    predicates

    invisibleDynamicPred:().

    clauses

    invisibleDynamicPred():-

    end implement dynamicClass


    1. Работа с базами данных в Prolog.

    Пролог-программу можно рассматривать как реляционную базу данных: описание отношений частично присутствует в ней в явном виде (факты), а частично – в неявном (правила).

    База данных Пролога содержит набор основных, заранее определённых отношений. Кроме того, резервируется пространство для добавления предикатов, которые будут объявлены пользователем. Встроенные предикаты дают возможность корректировать базу данных в процессе выполнения программы. Операции для работы с утверждениями, заданными пользователем, классифицируются следующим образом: 1. Добавление утверждений из диалога с пользователем и удаление существующих утверждений. 2. Добавление утверждений из файла и замена имеющихся утверждений на находящиеся в файлах утверждения для того же самого предиката. Для предиката базы данных существуют связанные с ним факты. В любой момент времени факт содержит в точности такие значения аргументов, для которых предикат является истинным.

    В программе на Прологе существует специальная секция, обозначаемая ключевым словом database, которое определяет начало последовательности объявлений описывающих базу данных предикатов. Доменные имена аргументов предиката базы данных должны быть объявлены в секции domains. Соответствующие предикатам базы данных факты помещаются в специальную область оперативной памяти, которая называется внутренней базой данных. По умолчанию ей присваивается стандартное имя dbasedom. Допускается наличие нескольких секций database. В этом случае только одна секция может быть безымянной, для остальных – следует явно указать имя. Имена секций и предикатов во внутренней базе данных должны быть уникальными. В различных секциях запрещено использование одинаковых имен предикатов. Предикаты динамической базы данных можно использовать в программе точно так же, как и другие предикаты Пролога.

    1. Пространство состояний задачи.

    Пространством состояний задачи называется граф такой, что решение задачи сводится к поиску в нем пути с определенными свойствами. В пространстве состояний задачи вершины графа соответствуют ситуациям, а дуги — переходам от одних ситуаций к другим - этапам решения задачи. Одному или нескольким начальным со­стояниям, соответствующим исходной информации поставленной задачи, сопоставляется система ко­рневых вершин графа. Граф также включает одну или несколько целевых вершин, соот­ветствующих завершающей ситуации решения исходной задачи. Поиск в пространстве состояний характеризует решение задачи как процесс нахождения пути от начального состояния к целевому.

    1. Поиск в глубину и его реализация в Prolog.

    Поиск в глубину является естественным для языка Пролог, он используется машиной вывода Пролога для вычисления целей. Поэтому поиск в глубину путей на графах реализуется в языке Пролог наиболее просто.

    Мы говорим "в глубину", имея в виду тот порядок, в котором рассматриваются альтернативы в пространстве состояний. Всегда, когда алгоритму поиска в глубину надлежит выбрать из нескольких вершин ту, в которую следует перейти для продолжения поиска, он предпочитает самую "глубокую" из них. Самая глубокая вершина — это вершина, расположенная дальше других от стартовой вершины. 

    Поиск в глубину наиболее адекватен рекурсивному стилю программирования, принятому в Прологе. Причина этого состоит в том, что, обрабатывая цели, пролог-система сама просматривает альтернативы именно в глубину.

    Поиск в глубину прост, его легко программировать, и он в некоторых случаях хорошо работает. Программа для решения задачи о восьми ферзях фактически была примером поиска в глубину. Для того, чтобы можно было применить к этой задаче описанную выше процедуру решить, необходимо сформулировать задачу в терминах пространства состояний. Это можно сделать так:

    • вершины пространства состояний — позиции, в которых поставлено 0 или более ферзей на нескольких последовательно расположенных горизонтальных линиях доски;

    • вершина-преемник данной вершины может быть получена из нее после того, как в соответствующей позиции на следующую горизонтальную линию доски будет поставлен еще один ферзь, причем таким образом, чтобы ни один из уже поставленных ферзей не оказался под боем;

    • стартовая вершина — пустая доска (представляется пустым списком);

    • целевая вершина — любая позиция с восемью ферзями (правило получения вершины-преемника гарантирует, что ферзи не бьют друг друга).

    1. Поиск в ширину и его реализация в Prolog.

    В противоположность поиску в глубину стратегия поиска в ширину предусматривает переход в первую очередь к вершинам, ближайший к стартовой вершине. В результате процесс поиска имеет тенденцию развиваться более в ширину, чем в глубину.

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

    1. Эвристический поиск Prolog

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

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


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