Представление
БД в виде списков структур. БД можно считать потоком целостных информационных
элементов, что представляется в языке Пролог в виде списка структур. Каждый элемент
списка - это целостный информационный элемент. Семья("Иванов", "?лег",
"Лена", []), семья("Сидоров", . . . []), . . . )
Первое
преимущество: Возможно включение в информационный элемент аргумент с произвольным
числом элементов. Второе преимущество: Список целостных информационных элементов
не обязательно хранится в БД. Этот список может быть задан в качестве аргумента
запроса.
Представление в виде рекурсивной структуры.
Одним из способов представления записей в БД является использование рекурсивных
структур. Аналогично односвязным спискам в Паскале. В рекурсивной структуре
один из аргументов в каждой записи указывает на следующую запись.
Работать
с рекурсивными структурами языка Пролог несколько легче, чем со связными списками
процедурных языков программирования, т. н. ?нтерпретатор Пролога отвечает за все
действия, связанные с обработкой указателя.
Представление
БД в виде двоичных деревьев. БД, представленная в виде двоичного дерева
представляет записи, каждая из которых содержит указатель на запись, предшествующую
ей и последующую за ней.
Граф определяется как множество вершин вместе с множеством ребер, каждое из которых
задается парой вершин. К ребрам можно приписывать стоимости, имена или метки произвольного
вида в зависимости от конкретного приложения. Существует 3 способа представления
графов средствами Пролога.
База данных содержащая
сведения о связях между вершинами. 1. ребро ('1', '2', '3') ребро ('2',
'3', '2') ребро ('2', '4', '2') ребро ('1', '5', '3')
2.
ребро (a, b) ребро (a, c) ребро (b, d) ребро (b, c) ребро (c,
e)
Следует ли указывать двусторонние связи, или лучше
использовать дополнительный предикат?
II 2) граф([a, b,
c, d, e]), [p(a, b), p(b, c), p(b, d) . . .]) Если точно известно, что хотя
бы один раз вершины соединены то первый параметр можно опустить. Граф*список
Поиск
пути в графе. 1) поиск пути
в а-цикличном графе (без циклов) По другому эти графы называются деревьями.
путь(верш1,
верш2, путь_рез) путь(X, X, [X]):-!. путь(X, Y, [X|P]):-ребро(X, Z), путь(Z,
Y, P) 2) поиск пути в цикличном графе путь2(X, Y):-путь2(X, Y, [X]). путь(A,
A, Результат):-!. путь2(A, B, часть_пути):-ребро(A, N), not(принадлежит(N,
часть_пути)), путь2(N, B, [N|часть_пути]).
Накопитель -
[x] - здесь сохраняется множество пройденных вершин.
Пространство
состояний - это граф, вершин? которого соответствуют ситуациям, вст?ечающимся
в задаче, а решение задачи сводится к поиску пути в этом графе. В процессе
поиска как правило возникает проблема, как обрабатывать альтернативные пути поиска.
В этой связи в Прологе существуют 2 основные стратегии: 1. Поиск в глубину 2.
Поиск в ширину
Стратегия поиска в глубину. Программы
искусственного интеллекта имеют специфическую организацию: имеется начальное состояние;
и необходимо найти путь, приводящий к конечному состоянию, т. е. цели. Где конечное
состояние может представлять собой набор приемлемых состояний. Программа должна
искать требуемые состояния "шагая" от состояния к состоянию при этом
распознавая ситуации, когда она находит цель или попадает в тупик.
Стратегия поиска в глубину основана на тщательном исследовании последовательности
одного варианта выбора до изучения других вариантов. Первоначально исследуется
самая первая левая ветвь дерева, когда процесс поиска заходит в тупик. Интерпретатор
возвращается вверх, в последний пункт выбора. Где имеются неизученные альтернативные
варианты движения. Поиск в глубину наиболее адекватен рекурсивному стилю программирования. Стратегия
поиска в ширину. Поиск в ширину предусматривает переход в первую очередь
к вершинам, ближайшим к стартовой вершине. В результате процесс поиска имеет тенденцию
развиваться больше в ширину. При поиске в ширину приходится сохранять все множество
альтернативных вершин (а не одну вершину как при поиске в глубину). Хранятся не
только вершины, но и множество путей, которые хранятся в виде списка.
Общие
принципы построения поиска в ширину: 1) Если первый элемент (вершина) первого
пути (в списке путей) - это целевая вершина то взять этот путь в качестве решения. 2)
Иначе удалить первый путь и породить множество продолжений этого пути на один
шаг.
Множество продолжений добавляется к списку путей
в конец. Стратегия поиска в ширину гарантирует получение кратчайшее решение
первым, в отличии от стратегии поиска в глубину. Если критерием оптимальности
является минимальная стоимость решающего пути, а не его длинна, то поиска в ширину
также бывает недостаточно, поскольку возникает сложность комбинаторного характера.
Выбор
направлений поиска с помощью эвристики Информация относящаяся к конкретной
решаемой задачи и используемая для управления поиском называется эвристикой.
В жизнедеятельности человека эвристика - это эмпирическое правило, с помощью которого
человек в отсутствии формулы или алгоритма пытается осуществить свои намерения. 1.
Эвристика не есть точный метод. 2. Эвристические методы не всегда приводят
к требуемому результату и дают в большей степени не точный, а приблизительный
ответ на поставленный вопрос.
Существует два стандартных
способов включения эвристической информации о конкретной задачи в поисковую структуру
интеллектуальной системы. 1. Использование эвристической оценочной информации,
которая взвешивает утверждения конкретной задачи и определяет их относительную
значимость (игра в пятнашки). 2. Непосредственно помещается эвристическая информация
в правила (шахматная игра).
Общие сведения о экспертных
системах Программирование экспертных систем представляет собой некоторую
часть области программирования искусственного интеллекта. Критериями оценки экспертной
системы является: (отличительные характеристики экспертной системы от остальных
задач искусственного интеллекта) 1. Необходимо отражение внутренней системы
функционирования программы. Подхода к разрешению проблемы со стороны человека. 2.
Программа должна объяснять свои действия способом понятным человеку. 3. Программа
должна обеспечивать взаимодействие с пользователем посредством диалога подобному
диалогу на естественном языке.
Экспертная система - это
автоматическая система принятия решения на основе знаний эксперта отображенных
в экспертной базе знаний и сформулированных, как правило, не на процедурном языке
программирования. Экспертная система - это программы моделирующие действия
эксперта-человека при решении задач в узкой предметной области на основе накопленных
знаний.
Этапы развития экспертных систем К первому
этапу развития экспертных систем наибольшее распространение получили экспертные
системы на правилах, которые способны лишь повторить логический вывод эксперта
- это экспертные системы первого поколения. Экспертные системы относящиеся
ко второму поколению называют партнерскими или усилителями интеллектуальных способностей
человека. Их общими отличительными чертами является: способность развиваться
и само обучаться, т.е. эволюционировать. Общая структура экспертных систем
Чтобы проводить экспертизу компьютерная программа должна быть способна: 1.
Решать задачи посредством логического вывода. 2. Получать в процессе решения
достаточно надежные результаты. 3. Выводить заключения в период сеанса работы
с пользователями, с необходимыми пояснениями, каким образом были получены эти
заключения 4. По мере возможности использовать дополнительную информацию поступающую
во время консультации.
В общем виде экспертную систему
можно представить в виде совокупности 3-х основных блоков: 1. База знаний (БЗ) 2.
Механизм вывода (МВ) 3. Система пользовательского интерфейса (СПИ)
База
знаний - содержит знания относящиеся к конкретной прикладной области: факты,
правила, методы эвристики, различные идеи относящиеся к способам решения задач
к данной предметной области. Механизм вывода - содержит принципы и правила
работы экспертной системы. Он выбирает способ применения правил, выполняет правила
и определяет, когда найдено приемлемое решение и передает результаты в систему
пользовательского интерфейса. Система пользовательского интерфейса - это часть
экспертной системы, которая непосредственно взаимодействует с пользователем и
обеспечивает бесперебойный обмен информацией между пользователем и системой. Кроме
того СПИ позволяет пользователю наблюдать за процессом решения задач.
Представление
знаний Оболочка экспертной системы в принципе не зависит от ее приложения.
Разумным способом разработки экспертных систем для нескольких приложений сводятся
к созданию универсальной оболочки, после чего достаточно подключить конкретную
базу знаний. При этом база знаний должна удовлетворять одному и тому же формализму,
которой оболочка понимает. В качестве кандидата на использование экспертных систем
можно рассматривать любую непротиворечивую на анализ предложений естественного
языка. В turbo Prolog используется 2 способа: 1. Классификация и помещение
фактов в правила turbo Prolog - получение экспертной системы на правилах. 2.
Организация фактов в утверждениях, которые образуют базу знаний - экспертная система
на логике.