
- •1. Искусственный интеллект: предмет, история развития, направления исследований.
- •1.1. Направления исследований в области ии
- •1.2. Основные задачи, решаемые в области искусственного интеллекта Представление знаний и разработка систем, основанных на знаниях
- •Игры и творчество.
- •Разработка естественно-языковых интерфейсов и машинный перевод
- •Распознавание образов
- •Новые архитектуры компьютеров
- •Интеллектуальные роботы
- •Специальное программное обеспечение
- •Обучение и самообучение
- •2. Система знаний
- •3. Модели представления знаний
- •3.1. Семантические сети
- •3.2. Фреймовая модель
- •3.3. Продукционная модель
- •3.4. Логическая модель
- •4. Экспертные системы
- •4.1. Назначение экспертных систем
- •4.2. Типы задач, решаемых с помощью экспертных систем
- •4.3. Структура экспертных систем
- •4.4. Основные этапы разработки экспертных систем
- •1. Выбор подходящей проблемы
- •2. Разработка прототипной системы
- •3. Развитие прототипа до промышленной экспертной системы.
- •4. Оценка системы
- •5. Стыковка системы
- •6. Поддержка системы
- •4.5. Инструментальные средства разработки экспертных систем
- •5. Пролог - язык логического программирования
- •5.1. Общие сведения о пролоГе.
- •5.2. Предложения: факты и правила
- •5.3. Запросы
- •5.4. Переменные в пролоГе
- •5.5. Объекты и типы данных в пролоГе
- •5.6. Основные разделы пролог-программы
- •5.7. Поиск с возвратом
- •1 Solition
- •5.8. Управление поиском с возвратом: предикаты fail и отсечения
- •5.9. Арифметические вычисления
- •5.10. Рекурсия
- •5.11. Списки
- •5.12. Стандартные задачи обработки списка
- •1. Генерирование списка из (n2-n1) последовательных целых чисел, начиная с n1.
- •2. Объединение списков.
- •3. Поиск заданного элемента
- •4.Удаление элемента из списка.
- •5. Вставка символа X в список
5.7. Поиск с возвратом
Поиск с возвратом (backtracking) – это один из основных приемов поиска решений поставленной задачи в ПРОЛОГ’е. Выполняя поиск, ПРОЛОГ может столкнуться с необходимостью выбора между альтернативными путями. Тогда он ставит маркер у места развилки (точка отката) и выбирает первую подцель. Если она не выполняется, то ПРОЛОГ возвращается в точку отката и переходит к следующей подцели.
Рассмотрим механизм поиска на примере. Пусть имеются факты:
знает (лена, таня).
знает (лена, иван).
студент (иван).
Требуется определить, есть ли у Лены знакомые студенты.
Программа:
PREDICATES
знает (symbol, symbol)
студент (symbol)
знаком_студент(symbol, symbol)
CLAUSES
знает (лена, таня). % (1)
знает (лена, иван). % (2)
студент (иван). % (3)
знаком_студент(X,Y):- знает (X,Y), студент (Y). % (4)
GOAL
знаком_студент(лена, Name).
Поиск решения:
1. Пытаясь выполнить целевое утверждение знаком_студент(лена, Name), ПРОЛОГ проверяет каждое предложение из раздела CLAUSES. В результате сопоставления с предложением (4) - X=лена. Переменная Y унифицируется с переменной Name.
2. Переход к первой подцели знает (лена,Y) и поиск соответствующего предложения. В результате сопоставления с предложением (1) – Y=таня. Возле факта знает (лена, таня) устанавливается маркер.
3. Переход ко второй подцели студент (таня) и поиск соответствующего предложения. Факт не найден – возврат в точку отката.
4. Дальнейший поиск фактов, соответствующих первой подцели знает(лена,Y). В результате сопоставления с предложением (2) – Y=иван.
5. Переход ко второй подцели студент (иван) и поиск соответствующего предложения приводит к успешному завершению поиска.
Результат:
Name=иван
1 Solition
Д
ерево
поиска можно представить следующим
образом:
рис.2. Целевое дерево поиска с возвратом
Благодаря механизму поиска с возвратом ПРОЛОГ в состоянии находить все возможные решения, имеющиеся для данной задачи.
Основные правила поиска с возвратом:
Цели должны быть доказаны по порядку, слева направо.
Для доказательства некоторой цели предложения просматриваются в том порядке, в каком они появляются в тексте программы.
Для того, чтобы доказать заголовочную цель правила, необходимо доказать цели в теле правила. Тело правила состоит, в свою очередь из целей, которые должны быть доказаны.
Цель считается доказанной, если с помощью соответствующих фактов доказаны все цели, находящиеся в листьевых вершинах дерева целей.
5.8. Управление поиском с возвратом: предикаты fail и отсечения
Для управление поиском с возвратом используются два стандартных предиката: fail и отсечения.
1. fail – это тождественно-ложный предикат, искусственно создающий ситуацию неуспеха и заставляющий продолжить поиск. Использование предиката fail позволяет найти все решения задачи.
Пример 1. Вывести список студентов 4-го курса.
DOMAINS
name=string
kurs=integer
PREDICATES
Student(name, kurs)
spisok
CLAUSES
Student("Ира",2).
Student("Юра",4).
Student("Коля",1).
Student("Леша",4).
Student("Оля",4).
spisok:-Write("Список студентов 4 курса"), nl, Student(X,4),
Write(X), nl, fail.
GOAL
spisok.
Комментарий: nl (new line) – предикат перевода курсора на новую строку
В данном примере после первого найденного решения (Х= «Юра») и его вывода предикат fail заставляет вернуться в точку отката и продолжить поиск, просматривая другие факты. В результате будут найдены все решения, удовлетворяющие запросу.
Результат выполнения программы:
Список студентов 4 курса
Юра
Леша
Оля
2. Чтобы ограничить пространство поиска и прервать поиск решений при выполнении какого-либо условия, используется предикат отсечения (обозначается !), Однажды пройдя через отсечение, невозможно вернуться назад, т.к. этот предикат является тождественно-истинным. Процесс может только перейти к следующей подцели, если такая имеется.
Если задано предложение вида:
R:-A, B, ! , C.
то после достижения подцелей А и В процесс поиска других решений этих подцелей прекращается и вычислительный процесс перейдет к следующей подцели С.
Например, чтобы в примере 1 вывести все возможные пары одного из студентов 4-го курса со всеми остальными студентами, следует изменить правило spisok
spisok:- Student(X,4), !, Student(Y,_), X<>Y, Write(X," - ",Y), nl, fail.
Результат выполнения программы:
Юра - Ира
Юра - Коля
Юра - Леша
Юра – Оля