- •Ответы на гос экзамен по ипсапр 2011.
- •Хорновская логическая программа. Сеанс работы с интерпретатором Пролога. Общие принципы поиска ответов на вопросы системой Пролог. Синтаксис языка swi-Prolog.
- •Предмет «Искусственный интеллект». Область исследования. Методы исследования. Особенности исследований.
- •Декларативная и процедурная семантика программ. Рекомендуемый порядок предложений и целей.
- •Эвристическое решение задачи как противоположность алгоритмическому. Когда используются эвристические методы? ии - сфера исследования многих наук.
- •Приведите классификацию объектов данных в Прологе.
- •Психологическая теория интеллекта: Что такое интеллект? Три слоя ментального опыта. Особенности организации когнитивного опыта.
- •Рекурсия. Метод накапливающего параметра.
- •Психологическая теория интеллекта: особенности организации метакогнитивного опыта, особенности организации интенциального опыта.
- •Как работает отсечение? Чем отличаются «зеленые» отсечения от «красных»? Какие недостатки отсечения в Прологе?
- •Формальные системы. Выход за пределы системы. Примеры. Дзен и выход из системы.
- •Как определяется «отрицание» в Прологе? Как негативная информация (т.Е. Информация о том, что не имеет место) представляется в Пролог-программах. Какие недостатки отрицания в Прологе?
- •Представление знаний: продукционная модель, семантическая сеть.
- •Представление знаний: фреймы, логические модели.
- •Что такое структура? Что такое функтор? Что такое рекурсивная структура данных? Является ли список рекурсивной структурой?
- •Способ решения задачи - разбиение задачи на подзадачи. Изменение пространства задачи - как выход из системы. Пример изменения представления.
- •Алгоритмы поиска в глубину и ширину.
- •Метапрограммирование. Эквивалентность программ и данных. Предположение об открытости мира. Программирование второго порядка.
- •Сведение задач к подзадачам. Представление задач в виде и/или-графов.
- •Функции и структура экспертной системы.
- •Имеются три варианта определения предиката max: 1)
- •Требования к современным экспертным системам.
- •Где находится значение сообщения? Три уровня любого сообщения. Парадокс сообщения. Многоуровневые описания (о шахматах и не только).
-
Алгоритмы поиска в глубину и ширину.
Поиск в глубину. Поиск в глубину основывается на стратегии:
В каждой вершине выбирается какая-то определенная альтернатива, и ее изучение продолжается до тех пор, пока дальнейшее продвижение оказывается невозможным. Тогда процесс поиска возобновляется от ближайшей точки ветвления, имеющей неисследованные альтернативные варианты. Поиск в глубину основывается на предположении "любой данный путь хорош, как и всякий другой".
Поиск в глубину обладает следующими недостатками:
а) отыскивается не самый короткий путь;
б) если в дереве есть бесконечные ветви и если такая бесконечная ветвь встретится - поиск никогда не закончится, даже если есть конечный путь в целевую вершину.
Поиск в глубину наиболее адекватен рекурсивному стилю программирования, принятому в Прологе. Так как обрабатывая цели.
Пролог-система сама просматривает альтернативы именно в глубину.
Поиск в ширину. При поиске в ширину целевая вершина сначала отыскивается среди всех вершин, расположенных на данном уровне, прежде чем будут исследованы ветви, отходящие вниз от этих вершин.
Таким образом, сначала ищем решение среди путей длины один, потом - длины два и т.д.
Этот поиск применим, даже если дерево бесконечно или практически бесконечно. К недостаткам этого поиска можно отнести неэффективность: если b - среднее число альтернатив для каждой внутренней вершины, то число путей длины n равно в среднем bn. Поиск в глубину и поиск в ширину относятся к стратегиям полного перебора.
Эффективность поиска повышается, если упорядочить ветви, идущие от каждой вершины. В первую очередь при переборе следует выбирать наиболее перспективные ветви.
-
Метапрограммирование. Эквивалентность программ и данных. Предположение об открытости мира. Программирование второго порядка.
Характерной особенностью Пролога является эквивалентность программ и данных, представлено логическими термами. Для того чтобы можно было использовать эту эквивалентность, необходимо, чтобы программы можно было рассматривать в качестве данных, а данные можно было бы превращать в программы. Смысл встроенного предиката call (X) в Прологе состоит в передаче терма х в качестве цели.
Вместо вызова предиката call (X) можно писать просто х.
Доступность мета переменных означает, что в качестве целей в конъюнктивных вопросах и в теле предложений разрешается использовать переменные. В процессе вычисления в момент обращения к такой переменной ей должно быть сопоставлено значение - терм. Если переменной не сопоставлено значение в момент обращения, то возникает ошибочная ситуация. Доступность метапеременных является важным инструментом метапрограммирования, используемым при построении метапрограмм, которые обращаются с другими программами как с данными: они выполняют их анализ, преобразование и моделирование.
При работе с неизвестной информацией альтернативой предположению о замкнутости мира служит предположение об открытости мира: если правило Р отсутствует в текущей программе, то считается, что Р ни истинно, ни ложно. В этом случае запрос может обладать одним из трех допустимых истинностных значений: истина, ложь или неизвестно. Если запрос признан неизвестным, то программа может предпринять какие-то особые действия, например, она может обратиться к альтернативному источнику знаний. По умолчанию интерпретатор языка Пролог руководствуется предположением о замкнутости мира. Поэтому, если требуется, чтобы поведение программы соответствовало предположению об открытости мира, то это нужно выражать в явном виде при составлении программы.
Программирование второго порядка. Программирование на Прологе расширяется введением методов, отсутствующих в модели логического программирования. Эти методы основаны на свойствах языка, выходящих за рамки логики первого порядка. Они названы методами второго порядка, т.к. здесь используются множества и их свойства, а не отдельные элементы.
Логика первого порядка позволяет проводить квалификацию по отдельным элементам. Логика второго порядка, кроме того, позволяет проводить квантификацию по предикатам. Такое расширение в логическом программировании влечет за собой использование правил с целями, предикатные имена которых являются переменными. Имена предикатов допускают обработку и модификацию.
Предикат apply (+Term, +List) присоединяет элементы списка List к аргументам терма Term и вызывает полученный терм в качестве цели.
Например, apply(plus(l),[2, X]) вызывает plus(l, 2, X). Предикат checklist (+Pred, +List) проверяет все ли элементы списка List удовлетворяют предикату Pred.