- •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 в список
3. Поиск заданного элемента
Чтобы определить содержится ли элемент X в списке L создадим отношение member(X, L).
Возможны случаи:
1) если X совпадает с головой списка L, то элемент найден и поиск прекращается. Первая часть правила (нерекурсивная):
member (X, [X | L]).
2) если X не принадлежит голове, то он может принадлежать хвосту. Отбрасываем голову списка и вызываем правило для оставшегося списка. Вторая часть правила (рекурсивная):
member (X, [_ | L]: - member (X, L).
Таким образом, правило поиска элемента имеет вид:
member (X, [X | L]).
member (X, [_ | L]: - member (X, L).
Например, для ответа на вопрос «Содержится ли число 4 в списке [2, 3, 4, 5]?», можно составить запрос:
GOAL
member(4, [2, 3, 4, 5]),Write (“yes”);Write (“no”), nl.
При выполнении поиска X сравнивается с головой L. Если элементы не совпадают, то первый элемент отбрасывается и X сравнивается с головой полученного списка и так далее, пока L не станет пустым списком. Если элемент X найден, то цель достигнута, выводится сообщение “yes”, иначе выводится “no”.
4.Удаление элемента из списка.
Определим отношение del(X, L, L1), где
X – удаляемый элемент;
L – исходный список;
L1 – список, полученный в результате удаления X из L.
Возможны два случая:
1) если X – голова списка, то результирующий список равен хвосту списка L. Первая часть правила (нерекурсивная):
del(X, [X|L], L).
2) если X принадлежит хвосту, то список L делим на голову и хвост. Для хвоста снова вызывается правило del. Вторая часть правила (рекурсивная):
del(X, [Y|L], [Y|L1]):- del(X,L,L1).
Полная запись правила удаления элемента из списка:
del(X, [X|L], L).
del(X, [Y|L], [Y|L1]):- del (X,L,L1).
Например, для удаления из списка [1, 2, 3, 4] элемента 3, следует составить запрос:
GOAL
del(3, [1, 2, 3, 4], L),Write (L), nl.
Результат: [1, 2, 4].
нет
нет
да
X = 3 [3 | 4] первая часть правила выполняется, результирующий список принимает значение хвоста L = [4]. Элементы извлекаются из стека по одному и становятся в голову списка L.
L = [1, 2, 4]
5. Вставка символа X в список
Определим отношение ins(X, L, L1), где
X – добавляемый элемент в список
L – исходный список
L1 – список, полученный в результате вставки элемента Х в список L
Отношение ins(X, L, L1) можно определить через del(X, L1, L). Если для отношения del(X, L1, L) список L1 – исходный список, содержащий элемент Х, то для ins(X, L, L1) список L1 является результирующим. Список L, не содержащий Х, для del(X, L1, L) – результирующий, а для ins(X, L, L1) – исходный.
ins(X, L, L1): - del(X, L1, L).
Например, для вставки элемента 5 в список [1, 2, 3] необходимо составить запрос:
GOAL
ins(5, [1, 2, 3], L),Write (L), nl, fail.
Результат:
[5, 1, 2, 3]
[1, 5, 2, 3]
[1, 2, 5, 3]
[1, 2, 3, 5]
Примечание: так как отношение ins(X, L, L1) определено через del (X, L1, L), то в разделе CLAUSES должно быть описано также правило del(X, L1, L).
Литература
Адаменко А., Кучуров А. Логическое программирование и Visual Prolog.-CПб., 2003.
Братко И. Программирование на языке ПРОЛОГ для искуственного интеллекта.- М., 1990.
Ин Ц., Соломон Д. Использование Турбо-Пролога. -М., 1993.
Клоксин У., Меллиш К. Программирование на языке ПРОЛОГ. -М., 1991.
Макаллистер Дж. Искусственный интеллект и Пролог на микроЭВМ.- М., 1990.
Нильсон Н. Искусственный интеллект. М., 1973.
Попов Э.В. Экспертные системы. М., 1987.
Симонс Дж. ЭВМ пятого поколения: компьютеры 90-х годов.- М.,1985 г.
Тимофеев А.В. Информатика и искусственный интеллект.- М.,1992.
Янсон А. Турбо-Пролог в сжатом изложении. -М.,1990.
