- •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.2 Свойства Атомов
Элементы с которыми работает Lisp: атом и список. Когда встречается атом, то Lisp берет его, как имя функции или интерпритирует его из таблицы, в которой содержится:
Имя атома,
Свойства атома,
Значение свойства.
Атом/свойства |
Значение |
применение |
T |
T |
- |
Nil |
Nil |
- |
Витамин |
В12 |
медецина |
Иван |
первый |
- |
Список может быть различным. Атом имеет несколько свойств, по которым он похож на объекты реального мира.
Присвоить атому свойство “значение”
(Set ‘L ‘(A B))
Теперь набрав $L, получим значение (A B) из таблицы атомов, или можем набирать:
$(Car L)
A
$(Cdr L)
B
$(Append LL)
(A B A B)
(Set ‘A ‘B)
(Set ‘B ‘C)
$A
B
$B
C
$(EVAL A)
C
В Lisp для присвоения атому свойства используют функцию:
(Put <атом> ())
(<имя свойства><значение свойства>)
Побочный эффект функции Put заключается в изменении списка свойств атома. Если свойства с указанным именем не было, то оно добавляется. Если это имя было, то значение свойства изменяется.
Пример:
Пусть имется атом Fnumber
(Put ‘Fnumber ‘(Integer 2)) (Integer 2)
можно присвоить еще свойство
(Put ‘Fnumber ‘(Even T)) (Even T Integer 2)
Если свойство было, то меняется его значение
(Put ‘Fnumber ‘(Integer 21)) (Even T Integer 21)
Есть функция, удаляющая свойства атома
(Remprop <атом> <свойство>)
Для доступа к значением свойств применим функцию:
(Get <атом> <свойство>) – возвращает значение свойства, если свойство есть, или nil, если свойства нет.
3.11.3 Функция сопоставления с образцом
Необходимо определить функцию match, которая сопоставляет образец и факт, руководствуясь приведеннными выше обобщенными правилами.
Тогда при обращении к функции match:
(match '(цвет яблоко красный) '(цвет * красный))-> T
или
(match '(& знания &)
'(мои знания по ОИИ очень хорошие ну очень хорошие
просто великолепные)) -> T
Теперь будем определять match, но вначале упрощенно,затем все более усложняя. Вначале - используя правила 1 и 3, т.е. не вводя специальные символы.
(DEFUN MATCH (P D)
(COND ((AND (NULL P) (NULL D)) T)
((EQUAL (CAR P) (CAR D))(MATCH (CDR P)(CDR D)))
))
Функция сопоставляет, когда списки имеют одинаковую длину.
Следующий вариант обрабатывает '*'. Это определение функции тоже работает со списками равной длины.
(DEFUN MATCH (P D)
(COND ((AND (NULL P) (NULL D)) T) (1)
((OR (NULL P) (NULL D)) NIL) (2)
((OR (EQUAL (CAR P) (CAR D)) условие OR
(EQUAL (CAR P) '*)
(MATCH (CDR P)(CDR D)))) - действие
))
(2) условие проверяет образец и факт на равную длину. Далее применяются правила (3) и (4).Если (CAR ОБРАЗЕЦ)=* и равны (CDR P) и (CDR D), то проверка – сопоставимы ли “хвосты”.
Рассмотрим как выполняется сопоставление на конкретном примере. Пусть требуется сопоставить следующие образец и факт:
(цвет * красный) и (цвет яблоко красный)
1) (match ‘(цвет * красный)
‘(цвет яблоко красный))
Ниже приведена схема рекурсивных вызовов функции match. Здесь каждый блок обозначает рекурсивное обращение к функции match c соответствующими значениями аргументов, записанными слева от блока.
2) (match ‘(цвет апельсин красный)
‘(цвет яблоко красный))
Дополним определение функции match так, чтобы обрабатывал-
ся знак &.
(DEFUN MATCH (P D)
(COND ((AND (NULL P) (NULL D)) T)
((OR (NULL P) (NULL D)) NIL)
((OR (EQUAL (CAR P) (CAR D))
(EQUAL (CAR P) '*))
(MATCH (CDR P)(CDR D)))
((EQUAL (CAR P) '&)
(COND (MATCH (CDR P) D) T) (1)
(MATCH (CDR P) (CDR D)) T) (2)
(MATCH P (CDR D)) T) (3)
))))
В определении функции можно использовать либо утверждения 1 и 2, либо 2 и 3.
Пример
Образец – (A & B)
Факт - (A X Y B)
проверим работу функции match