- •Содержание
- •Введение
- •Глава 1. Основные понятия
- •1.1. Понятие об искусственном интеллекте
- •1.1.1. Точка зрения Петрунина.
- •1.1.2. Интеллектуальные алгоритмы.
- •1.2. Основные направления исследования в области ии
- •1.3. Данные и знания. Основные модели представления знаний
- •Глава 2. Логические модели представления знаний
- •2.1. Логика высказываний
- •2.1.1. Булева алгебра.
- •2.1.2. Понятие о логическом следствии.
- •2.1.3. Метод резолюции в лв.
- •Имеет место теорема о полноте резолютивного вывода. Множество клозов противоречиво тогда и только тогда, когда из него методом резолюции можно вывести пустой клоз.
- •2.2. Логика предикатов первого порядка
- •2.2.1. Основные определения.
- •2.2.2. Метод резолюции в лппп.
- •2.2.3. Стратегии проведения резолюции.
- •2.2.4. Упорядоченный линейный вывод в лппп.
- •2.2.5.Применение поиска в пространстве состояний при реализации автоматизированного логического вывода.
- •2.2.6. Логический вывод на хорновских дизъюнктах.
- •Понятие экспертной системы и применение логического вывода при построении экспертных систем.
- •2.2.9. Запросы класса b.
- •2.2.10. Запросы класса c.
- •2.3. Понятие о нечетком выводе
- •2.4. Неклассические логики
- •2.4.1. Логики высших порядков.
- •2.4.2. Модальные логики.
- •2.4.3. Многозначные логики.
- •Глава 3. Продукционные модели представления знаний
- •3.1. Основные понятия
- •3.2. Стратегии управления
- •3.2.1. Поиск с возвратом.
- •3.2.2. Поиск в пространстве состояний.
- •3.3. Понятие о коммутативных системах продукций
- •3.4. Понятие о нечетком выводе на продукциях
- •3.5. Сравнение продукционных и логических моделей
- •Глава 4. Реляционные языки представления знаний
- •4.1. Основные элементы естественных языков
- •4.2. Дескрипторные модели
- •4.2.1. Понятие об ипс.
- •4.2.2. Линейная модель работы ипс.
- •4.2.3. Понятие о многоуровневом поиске.
- •4.2.4. Основные характеристики ипс.
- •4.4. Синтагматические цепи
- •4.4.1. Понятие синтагматических цепей.
- •4.4.2. Фреймы.
- •4.5. Сетевые модели представления знаний
- •4.5.1. Понятие семантической сети.
- •4.5.2. Структура интеллектуальной системы доступа к данным на основе семантической сети.
- •4.5.3. Задача поиска кратчайшего обхода образца в семантической сети.
- •4.5.4. Понятие о логическом выводе на семантических сетях.
- •Глава 5. Нейронные сети
- •5.1. Параллели из биологии
- •5.2. Базовая искусственная модель
- •5.3. Применение нейронных сетей
- •5.4. Обучение сети
- •Глава 6. Организация диалога с эвм на естественном языке
- •6.1. Элементы теории формальных языков
- •6.2. Обратная польская запись
- •6.3. Недостатки применения аппарата формальных грамматик
- •6.4. Элементы семиотики
- •6.5. Модель непосредственных составляющих
- •6.6. Многозначность в естественных языках
- •6.7. Расширенные сети переходов
- •6.8. Глубинные (семантические) падежи
- •Глава 7. Логическое программирование на языке пролог
- •7.1. Основные понятия в языке Пролог
- •7.2. Пакет Turbo Prolog
- •7.3. Структура программы
- •7.4. Поиск решений
- •7.5. Механизм отката
- •7.6. Операторы. Декларативный и процедурный смысл программы
- •7.7. Повторение и рекурсия
- •7.8. Повторение и откат
- •7.8.1. Метод отката после неудачи (опн).
- •7.8.2. Метод отсечения и отката (оо).
- •7.8.3. Метод повтора, определенный пользователем.
- •7.9. Методы организации рекурсии
- •7.10. Отладка программы и обнаружение ошибок
- •7.11. Графика в Turbo Prolog’е
- •7.11.1 Создание меню.
- •7.11.2. Создание графического режима.
- •7.11.3. Черепашья графика
- •7.12. Списки и их использование
- •7.12.1. Использование списка.
- •7.12.2. Поиск элементов в списке.
- •7.12.3. Создание нового списка путем слияния двух списков
- •7.12.3. Разделение на два списка.
- •7.13. Сортировки
- •7.13.1. Наивная сортировка.
- •7.13.2. Сортировка включением.
- •7.13.3. Метод «пузырька».
- •7.13.4. Быстрая сортировка.
- •7.14. Компоновка данных из базы в список
- •7.15. Работа с символами и строками
- •7.16. Специальные строки
- •7.17. Работа с файлами
- •7.18. Создание динамических баз данных
- •7.19. Библиотеки Turbo Prolog’а
- •7.19. Модульное программирование
- •7.20. Решение задачи о волке, козе и капусте
- •Глава 8. Введение в язык лисп
- •8.1. Основные особенности языка Лисп
- •8.2. Понятия языка Лисп
- •8.2.1 Атомы и списки.
- •8.2.2 . Внутреннее представление списка.
- •8.2.3 .Написание программы на Лиспе.
- •8.2.4. Определение функций.
- •8.2.5. Рекурсия и итерация.
- •В) maplist. Эта функция действует подобно mapcar, но действия осуществляет не над элементами списка, а над последовательными cdr этого списка.
- •8.2.6 . Функции интерпретации выражения.
- •8.2.7. Макросредства.
- •8.2.8. Функции ввода-вывода.
- •Список используемых источников
- •Перечень используемых сокращений
7.10. Отладка программы и обнаружение ошибок
Для отладки работы программы используется трассировка, позволяющая просмотреть траекторию работы программы. Для этого необходимо использовать директиву trace, слово trace ставится перед Predicates или domains. Она приостанавливает выполнение программы после каждой попытки удовлетворить (согласовать) подцель. В окно трассировки печатается значение переменной. Для продолжения программы нажимается F10, для остановки – ECS.
Если требуется трассировать только предикаты, то их перечисляют после trace. При ошибке курсор останавливается на начале того предиката, где случилась ошибка.
Информация, выдаваемая во время трассировки.
Ключевое слово |
Пояснение |
CALL |
Выводится всякий раз, когда осуществляется обращение к заданному предикату. Его имя и значение параметров отображается в окне трассировки. |
RETURN |
Возвращаемое значение отображается в окне трассировки, когда заданный предикат выполнен и возвращает управление вызванному его предикату. Если имеются дополнительные предложения, которым сопоставляются входные параметры, символ * показывает, что данное предложение является точкой возврата. |
FAIL |
Если рассматриваемый предикат не согласуется, то выводится ключевое слово, за которым следует имя соответствующего предиката. |
REDO |
Указывает, что осуществляется возврат назад. Имя предиката, которое будет рассматриваться следующим, вместе со значением параметров выводится в окно трассировки |
7.11. Графика в Turbo Prolog’е
Графика в Турбо Прологе позволяет создавать окна различного цвета, определять цвет текста и фона, переключать ввод и вывод из одного окна в другое, рисовать рисунки. Для работы с окнами, которые могут быть созданы как в текстовом, так и в графическом режиме имеются встроенные предикаты:
Makewindow (сделать окно) – открыть окно,
Shiftwindow (переключиться. на окно) – сменить окно,
Gotowindow (переключиться. на окно) – выбор окна,
Removewindow (удалить)
Clearwindow (очистить)
Окно создается предикатом Makewindow (номер окна, атрибуты экрана, атрибут рамки, строка рамки, начальная строка, начальный столбец, высота окна, ширина окна). Первый аргумент используется при активизации окна и перехода между окнами, а второй определяет цвет символов и фона в зависимости от типа монитора, указанное число получается сложением номера цвета текста с номером текста фона.
Цвет текста:
0 – черный 8 – серый
1 – синий 9 – светло-синий
2 – зеленый 10 – светло-зеленый
3 – голубой 11 – светло-голубой
4 – красный 12 – светло-красный
5 – фиолетовый 13 – светло-фиолетовый
6 – коричневый 14 - желтый
7 – белый 15 – интенсивно-белый
Цвет фона:
0 – черный
16 – синий
32 – голубой
48 – зеленый
64 – красный
80 – фиолетовый
96 – коричневый
112 – белый
Третий аргумент определяет цвет рамки:
0 – нет рамки
1- синий
2 3 4 5 6 7 – такие же, как и цвет текста
8 – коричневый
-1 – мерцающее белое
-2 – мерцающее желтое
-3 – мерцающее фиолетовое
-4 – мерцающее красное
Четвертый аргумент определяет имя окна, т.е. текст в середине заголовка окна.
Пятый и шестой аргументы – максимальная верхняя строка (максимально 24) и крайний слева столбец (максимально-79).
Седьмой аргумент – число строк в окне ( максимум 25).
Восьмой аргумент – число столбцов в окне (максимум 80).
Примеры:
-
Makewindow (1,7,7, «Fullscreen», 0,0,25,80) весь экран
-
Makewindow (2, 4, 1, «меню», 4, 20, 16, 40)
Shiftwindow ( номер) – сделать активным окно номера N
Gotowindow (N окна) – переключение между неперекрывающимися окнами
Clearwindow – очистка текущего окна
Removewindow – удаление текущего окна
Стандартные операторы ввода, вывода read, readint, readchar, write работают с текущим окном. Для позиционирования вывода используется оператор Cursor (N строки, N столбца), при этом номера определяются относительно верхней строки и левого столбца.
Для приостановки работы программы и ожидания ввода с клавиатуры используется оператор readchar(_).
Задания для самостоятельной работы.
-
Создать окно с белыми символами на черном фоне.
-
Вывести текст в окно.
-
Удалить текст из окна.
-
Удалить окно.