- •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.10.2Семантические сети
Впервые семантические сети были применены в 1961г. Куиллианом для моделирования алгоритма долговременной памяти при исследовании смысла фраз естественного языка. В общем случае семантическая сеть представляет собой граф, узлами которого являются объекты и ситуации, а дуги графа выражают отношения. Наиболее часто в семантических сетях используют два вида отношений:
is–a (есть или является) (Мухтар есть собака)
has part of (характеризует отношение между частью и целым)
Представим фразу - “все ласточки птицы”, в виде следующего графа.
Фраза “Ласточка Юко-птица” может быть представлена:
добавим также фразу, что “все птицы имеют перья” .
Добавим новые объекты
Развивая схему, в частности “владеет” (это отношение) можно выделить в отдельный объект, например когда требуется выделить в семантической сети следующую фразу “Юко владеет гнездом с весны до осени”.
has
part of
Падежн. рамка
В семантических сетях выделяют следующие основные виды отношений:
лингвистические (агент – лицо, объект, произв.действие) объект – то над чем производится действие; инструмент – то чем выполняется действие; условие – т.е. предпосылка, причина, способствующие осуществлению действия; место – место совершения действия.
теоретикомножественные (включение во множество).
логические (логические операции).
кватифицированные (связанные с применением логики предикатов 1-го порядка).
При использовании семантических сетей возникают проблемы, связанные с тем, что выводы в семантических сетях не всегда являются достоверными.
Все ласточки изучаются, но конкретно Юко может не изучаться.
Вывод семантической сети осуществляется с помощью процедур. Процедуры неотделимы от БЗ, представленной семантической сетью. Одна из основных процедур вывода – процедура сопоставления. В этом случае производится сопоставление графа запроса с некоторой частью семантической сети. В случае успешного сопоставления объекты, входящие в запрос, получают конкретные значения (конкретизируются). Тем самым получается ответ на вопрос.
Например:
Чем владеет Юко?
агент
объект
= гнездо
3.10.3 Представление знаний фреймами
Впервые фреймы были предложены в 1975г. в арботах Минского. Фреймы предназначены для описания стереотипных ситуаций, т.е. они описывают в общих чертах ту или иную ситуацию. В дальнейшем, в токое описание может вноситься уточнение, учитывающие конкретные особенности. Фреймы обычно представляют в виде списка, в начале которого стоит имя фрейма, а далее стоят подсписки (слоты – имя слота, значение слота, процедуры).
(<имя фрейма>{(<имя слота><значение><процедуры>)}…)
Для наглядности фреймы часто представляют в виде таблиц.
<имя фрейма>
<имя слота> |
Указатель наследов. |
Тип |
значение |
Если добавлено |
Если удалено |
Если нужно |
is-a |
U,S,R |
Pointer |
A |
|
|
|
дочерн. |
|
List |
|
|
|
|
присоед. процедура |
|
Lisp |
AVE |
|
|
|
<имя фрейма> и <имя слота> - это уникальные идентификаторы.
Среди слотов существуют системные слоты, которые создает сама фреймовая система.(дата создания, владелец, комментарии…).
Фреймы могут образовывать иерархические структуры, и для этого использовать слот is-a, он указывает на фрейм родитель. Аналог - слоты, котрые указывают на дочерние фреймы. Со слотом всегда связана какая-либо процедура (если она создана на Lisp, то ее тип Lisp, а значение – имя.
Указатель наследования используется в том случае, когда фреймы образуют иерархическую структуру. В нем указывается, какие свойства родителей наследует дочерний фрейм:
U – означает, что значение слота является уникальным, и это свойство не может быть позаимствованно у родительского слота;
S – значение слота такое же как у родителя;
R – означает диапазон. И этот диапазон задан фреймом родите-лем. Соответственно свойства слота могут находиться только в данном диапазоне.
Cо слотом могут быть связаны два типа процедур:
процедуры слуги;1
процедуры демоны.
Процедуры слуги – это обычные процедуры, которыезапускаются по мере необходимости.
Процедуры демоны запускаются всякий раз, когда осуществляется обращение к фрейму или слоту, если их имена там указаны.
Процедура “Если добавлено” запускается автоматически, если слот приобретает какое-либо значение. Процедура “Если удалено” запускается автоматически, если удалено значение из слота. Процедура “Если нужно” запускается, когда происходит обращение к слоту и требуется выяснить его значение, а значение еще не определено. Некотрые из клеточек таблицы могут быть пустыми. В качестве значения слота может быть имя другого фрейма.
Рассмотрим следующий пример иерархической структуры фреймов.
Это
родительский фрейм, который может быть
незаполненным. Этот фрейм только
обозначил слоты.
Дата |
|
Место |
|
Тема |
|
Выступление |
|
Цель |
|
Спонсоры |
|
Тема
ИИ
Тема |
Автом-ка |
|
|
Дата |
25-30.10.99 |
Место |
Львов |
Тема |
|
Выступл. |
|
Вывод в семантических (фреймовых) сетях осуществляется с помощью 3-х механизмов:
Механизма наследования;
С помощью процедур демонов.
С помощью присоединенных процедур, путем передачи сообщений.
Рассмотрим 3-й способ:
АА
(имя)
ВВ
is-a
FRAME
A
Рассчет
LISP
Вычислить
is-a
FRAME
B
X
LIST
10,30,20,25
LISP
AVE
Предполагается, что в ходе поиска идет обращение к слоту “рассчет” и вызывается процедура “вычислить”, внутри которой имеется некоторая процедура MSG, которая обращается к процедуре рассчета фрейма ВВ и вычисляется процедура AVE. Т.е. происходит обмен сообщениями между слотами.
Поиск осуществляется следующим образом:
Осуществляется запрос фреймов сети.
Запрос начинает сопоставляться с некоторым фреймом А. Такое сопоставление может быть успешным или неуспешным. Если сопоставление неуспешно начинается движение по сети фреймов по одному из алгоритмов поиска (в глубину, в ширину, равных цен). Определяется тот узел, который дает max-ум совпадений, запускается и выполняется процедура демон. Если не хватает информации, то осуществляется движение по сети от фрейма к фрейму, посылая запросы и получая ответы на запросы.
Фреймово представление знаний объединяет декларативный и процедурный подходы.
Рассматривая модели представления знаний, можно отметить, что в каждом подходе при выводе знаний из БЗ присутствует процедура сопоставления с образцом.