- •1 Общая характеристика дисциплины
- •1.1 Значение дисциплины ии
- •1.2 Понятие "искусственный интеллект"
- •1.3 Краткая история развития ии
- •1.4 Классификация систем ии
- •Представления знаний - центральная проблема ии.
- •Компьютерной лингвистики, решение которой обеспечивает процесс естественно- языкового общения с эвм и процесс автомтического перевода с иностранных языков.
- •Компьютерной логики, имеющей особо важное значение для развития экспертных систем, поскольку ее цель – моделирование человеческих рассуждений.
- •1.5 Основные направления развития ии
- •2Языки систем искусственного интеллекта
- •2.1 Общие сведения о языках сии
- •2.2 Язык лисп
- •2.2.1 Алфавит
- •2.2.2 Атомы и точечные пары
- •2.2.3 Списки
- •2.2.4 Арифметические функции языка лисп
- •2.2.5 Функции setq и quote
- •2.2.6 Функции car и cdr
- •2.2.7 Композиция функций саr и cdr.
- •2.2.8 Пустой список
- •2.2.9 Функция cons
- •2.2.10 Логические значения и предикаты
- •2.2.11 Предикаты атом и eq
- •2.2.12 Предикат null
- •2.2.13 Предикаты, классифицирующие атомы
- •2.2.14 Арифметические предикаты сравнения
- •2.2.15 Операции над строками битов
- •2.2.16 Функция cond
- •2.2.17 Определяющее выражение функции
- •2.2.18 Определяемые функции
- •2.2.19 Рекурсивные функции
- •2.2.20 Prog- механизм.
- •2.3 Обращение (инверсия) списков
- •2.4 Вычисление факториала числа
- •2.5 Вычисление длины списка
- •2.6 Вычисление длины списка и его подсписков
- •2.7 Соединение списков
- •2.8 Удаление элемента из списка
- •2.9 Функция, вычисляющая список общих элементов двух списков
- •2.10 Функция, объединяющая два списка и не включающая повторяющиеся элементы
- •2.11 Ассоциативные списки
- •2.12 Функции, изменяющие значения указателей
- •2.13 Функции read и print
- •2.14 Функция eval
- •3 Представление задач и поиск решений
- •3.1 Представление задач в пространстве состояний
- •3.2 Сведение задачи к подзадачам
- •3.3Представление задач в виде доказательства теорем
- •3.4 Поиск решения в пространстве состояний
- •3.5 Алгоритм поиска в ширину
- •3.6 Алгоритм поиска в глубину
- •3.7Алгоритм равных цен
- •3.8 Алгоритмы эвристического (упорядочного) поиска
- •3.9 Поиск решения задачи, при сведении задачи к подзадачам
- •3.10 Представление знаний
- •3.10.1 Продукционные системы
- •3.10.2Семантические сети
- •3.10.3 Представление знаний фреймами
- •3.11 Сопоставление с образцом
- •3.11.1 Функции Mapcad, Apply и Funcall
- •3.11.2 Свойства Атомов
- •3.11.3 Функция сопоставления с образцом
- •3.11.4 Присваивание значений при сопоставлении с образцом
- •3.11.5 Функции Explope, Compress, AtomCar, AtomCdr
- •3.11.6 Задание ограничений при сопоставлении с образцом
- •3.12 Программная реализация лисп - машин
- •3.12.1 Структура памяти лисп - машины
- •3.12.2 Диалекты языка лисп
- •3.12.3 Аппаратная реализация языка лисп
- •4 Математические основы логического вывода
- •4.1 Решение задач с помощью доказательства теорем
- •4.2 Тождественные преобразования при доказательстве теорем
- •4.3 Принцип резолюции
- •4.4Примеры применения принципа резолюции
- •4.5 Система управления роботом strips.
- •5Решение задач искусственного интеллекта на языке пролог
- •5.1 Применение метода доказательства теорем в системе пролог
- •5.2 Особенности программирования на пролоГе
- •5.4 Арифметические предикаты
- •5.5 Предикаты управления возвратом
- •5.6 Программа вычисления квадратного корня
- •5.7 Вычисление n!
- •5.8 Область действия предиката отсечения
- •5.9 Отрицание на пролоГе
- •5.10 Определение структур управления
- •5.11 Организация циклов в языке пролог
- •5.11.1 Цикл repeat-fail
- •5.11.2 Сопоставление цикла с возвратом и рекурсии
- •5.12 Операторная запись.
- •5.13 Ввод-вывод в системе пролог
- •5.13.1 Предикаты ввода-вывода символов
- •5.13.2 Предикаты ввода-вывода термов
- •5.13.3 Примеры применения предикатов ввода-вывода
- •5.14 Предикат name
- •5.15 Предикаты проверки типов термов
- •5.16 Создание и декомпозиция термов
- •5.17 Предикаты работы с базой данных .
- •5.18 Бинарные деревья
- •5.18.1 Построение бинарного дерева
- •5.18.2 Преобразование списка в упорядоченное дерево
- •5.18.3 Преобразование дерева в список
- •5.18.4 Удаление элемента из дерева
- •5.18.5 Поиск в глубину
- •5.18.6 Поиск в ширину
- •5.19 Поиск решений в игровых программах.
- •5.20 Обратное усечение дерева.
3.11.6 Задание ограничений при сопоставлении с образцом
С целью сопоставления некоторого класса атомов в функцию match вводят ограничения. Чтобы воспользоваться этим ограничением, необходимо подставить некоторый описательный образец на место атомов.
(Restrict <*/atom>
<предикат>/{<предикат>})
Идея состоит в том, что соответствующая позиция должна быть заменена атомом, который удовлетворяет предикатам, перечисленным в ограничении.
Пример:
Проверим имя атома > 4 символов, или нет.
(Defun 4Letterp (A)
(Equal (Length (Explode A)) 4)
)
Вызов функции match со списком ограничений:
(Match ‘(Restrict > 4Letterp)&)
‘(Блок имеет серую окраску))
Рассмотрим как это свойство реализовано в программе:
(And (Not (Atom (Car P)))
(Equal (Caar P) ‘Restrict)
(Equal (Cadar P) ‘*)
(Apply ‘And
(Mapcar ‘(Lambda (PR)
(Funcall PR (Car )
(Cddar P)
(Match (Cdr P) (Cdr R))
)
После того как проделаны соответствующие проверки, атом из факта подается на предикаты в списке ограничений, посредством функции Mapcar, затем And проверяеет все ли предикаты возвращают значение Т. Если это так, то все условия истинны и вызывается Match, иначе Nil.
Система сопоставления с образцом может использовать другие операции. Например, нужно извлечь значения из переменных образца:
(Match ‘(> T) ‘(A)) T=A
(Match ‘(< T) ‘(A)) T
(Match ‘(< T) ‘(B)) Nil
Рассмотренная система сопоставления с образцом, является простой, потому что она ориентирована на сопоставление одного атома с другим. Более того не существует представления о степени близости, либо сопоставления успешно, либо нет. Система должна сопоставлять любые объекты. Система должна давать некоторый показатель, значеникоторого простираются от полного отсутствия совпадения, среднего (хорошего) совпадения, до абсолютного совпадения.
Можно написать программу, которая при взаимодействии с человеком, ведет себя как психиатр.
Программа ведения диалога
Программа позволяет вести несложный диалог с пользователем. Принцип работы программы основан на том, что "узнает" в вопросах и ответах пользователя обрывки знакомых фраз, после чего строит ответ используя шаблоны, а также слова и фразы, извлеченные из ответов пользователя. Программа представляет собой цикл с использование предложения Cond, в котором содержится проверка ключевых слов и фраз. Связь с пользователем устанавлявается с помощью функций Read и Print. Если встречается слово МАТЬ, то переменная Mother принимает значение T. Тогда, если никакое условие не сработает, то реакция системы будет определяться значением этой переменной.
(DEFUN DIALOG
(PROG (L MOTHER S)
(PRINT 'ГОВОРИТЕ!)
LOOP
(SETQ S (READ))
(COND ((MATCH '(& ВОЛНУЕТ &L) S)
(PRINT (APPEND '(КАК ДАВНО ВАС ВОЛНУЕТ ) L)))
((MATCH '(& МАТЬ &) S)
(PROGN (SETQ MOTHER T)
(PRINT '( РАССКАЖИТЕ БОЛЬШЕ О ВАШЕЙ СЕМЬЕ
))))
((MATCH '(& КОМПЬЮТЕРЫ &) S)
(PRINT '(МАШИНЫ ПУГАЮТ ВАС ?))
((OR (MATCH 'ДА S) (MATCH 'НЕТ S))
(PRINT '(НЕ БУДЬТЕ СТОЛЬ КРАТКИ))))
((MATCH '(& (RESTRICT * BADWORD) &) S)
(PRINT '( РУГАТЬСЯ НЕ ХОРОШО)))
(MOTHER (PROGN (SETQ MOTHER NIL)
(PRINT '(ВЫ ГОВОРИЛИ О ВАШЕЙ
МАМОЧКЕ ?))))
(T (PROGN N
(PRINT '(ВРЕМЯ ВЫШЛО.))
(RETURN))))
(GO LOOP)))
Пример возможного диалога:
Говорите
Меня беспокоит погода
Как давно Вас беспокоит погода?
С тех пор как уехала моя мать
Расскажите больше о вашей семье
Они все купили компьютеры
Машины пугают Вас?
Нет или да
Не будьте столь кратки
Если другое слово
Вы говорили о Вашей мамочке
Безусловно назвать такую программу интеллектуальной сложно. Но по мере расширения количества образцов заложенных в нее она сможет поддерживать довольно осмысленный диалог. В целях более лучшего освоения приведенной программы рекомендуется продумать один из возможных сценариев диалога, который обеспечивает данная программа.