![](/user_photo/2706_HbeT2.jpg)
- •Содержание
- •Введение
- •Глава 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.3. Структура программы
Типовая программа содержит 5 разделов:
A) domains <описание доменов>(заголовок области, описание различных классов объектов программы);
B) database < описание предикатов динамической базы данных>(содержит утверждения базы данных, которые являются предикатами динамической базы; если программа такой базы данных не требует, то этот раздел может быть опущен);
C) predicates <описание предикатов> – служит для описания предикатов);
D) goаl <целевое утверждение> – (описание внутренней цели и подцелей);
E) clauses <утверждения> – все правила и факты, известные априори.
С целью упрощения организации фактов и правил ПРОЛОГ поддерживает составные объекты-структуры, которые строятся из шести базовых предписанных классов (доменов).
Стандартные типы доменов приведены в таблице:
Тип данных |
Ключевое слово |
Диапазон значений |
Примеры |
Символ |
Char |
Все символы |
‘a’,’#’,’\13’ |
Целые |
Integer |
-32768 +32767 |
-63,64 |
Действительные |
Real |
+1E-307 +1E308 |
1.25E23, 4.56 |
Строки |
String |
Последовательность символов длиной <250 |
“today”,”123” |
Символьные имена |
Symbol |
1. Последовательность символов, первая буква 2. Последовательность любых символов в “” |
“Stars and Stripes” |
Файлы |
File |
Допустимое имя |
Mail.txt, BIRDS.DBA |
Пример программы:
domains (раздел описания),
lich (человек), uvl (увлечение) = symbol,
predicates (отношение, предикат),
lubit (lich, uvl) (любит человек увлечение),
clauses (факты, правила),
lubit (lena, ping_ pong),
lubit (ivan, futbol),
lubit (tolya, basketbol),
lubit (mark, plavat),
lubit (lena, plavat),
lubit (boria, X): – lubit (tolya, X). –Боря любит то же, что любит Толя,
Alt+C – компиляция, Alt+R – запуск на счет, Alt+F-?
Вопросы, беседа с программой:
lubit (lena, plavat) – вопрос (истинно),
lubit (boria, futbol) – (нет решения),
l
два
решения
Х = ping_pong
Х = plavat.
lubit (Х, futbol) Х = ivan,
lubit (Х, Y) – напишет все решения.
Примечание. Здесь и далее курсивом выделены комментарии к программе, которые набирать не следует.
Выход из программы в интерактивном режиме завершается по клавише ESC.
Цель может быть составной:
lubit (Х, plavat), lubit (Х, ping_pong)? Х = lena
Дополнительное задание: написать программу «Телефонный справочник».
tel (lich, nomer) – предикат
Факты: Аня – 240-385
Правила: телефон у Вики такой же, как у Ани. Какой телефон у Вики? и т.д.
7.4. Поиск решений
Пример: 1) likes (mary, аpples) – факт,
2) likes (beth, X):– likes (mary, Х) – правило.
Введем цель:
likes (beth, аpples)? – любит ли Бет яблоки? X= аpples
совпали подцель
Цель
сопоставляется с фактом 1 пословно: терм
предиката цели likes
совпадает с термом факта 1. Т.е.
сопоставление начинается слева направо
до тех пор, пока очередное сопоставление
окажется неуспешным. beth
не совпадает c
mary
и поэтому дальше уже не проверяется.
Пролог
ищет следующую точку входа и находит
правило 2. Если факт совпадает с левой
частью правила – головой,
то он
пытается выполнить часть правила справа
(тело). likes
и beth совпали у обоих, но apples
и Х не сопоставимы. Однако Х – это
переменная, следовательно, она может
быть сопоставлена с любым значением.
Т.е. Х присваивается
значение apples.
Это связывание используется до тех пор,
пока либо не будет вычислена цель, либо
нельзя будет выполнить никакого другого
сопоставления с учетом этого связывания.
Следовательно, предикат likes(beth,
X)
имеет значение likes(beth,
apples).
Теперь пытаемся выполнить условие if
likes(mary,
X)
и проверяем факт likes(mary,
apples)
как подцель. Снова
сначала просматривается база и находится
факт likes(mary,
apples).
Так как тело совпало, то цель достигнута,
и решение есть X=apples
и является истиной. Как цели, так и
правила могут быть связаны с помощью
союзов и (,) и или(;).
Число аргументов в предикате называется арностью. Если в предикате нет аргументов, то арность равна нулю. Совпадение проверяется на имя аргумента (likes – пример), на число аргументов (арность), на тип аргументов, на совпадение значений (слева направо)
При сравнении аpples, Х происходит процесс связывания: Х=аpples, так как переменная может принимать любое значение. Из этого следует, что цель совпала с головой. При появлении подцели начинается проверка заново.
Ответ задачи: X=аpples.
В теле правила может быть несколько подцелей, подцели обрабатываются последовательно слева направо. Если одна из подцелей несопоставима, то и вся цель является неуспешной. Сопоставление и поиск решений выполняются внутренними унификационными процедурами. Они выполняют сопоставление целей и подцелей с фактами и головами правил, чтобы доказать эти цели или подцели, а также определяют, сгенерированы ли новые подцели правой части. При сопоставлении с правилами, где имеется переменные Х, переменные сначала не имеют значения, т.е. они не означены, не идентифицированы, свободные. Когда переменная сопоставляется с объектом (apples), она связывается. Внешние цели заставляют программу выдать все решения, удовлетворяющие цели, а внутренние цели заставляют программу остановиться после первого успешного сопоставления целей. Таким образом, переменная освобождается после неуспешного сопоставления или при успешном достижении цели, и ее значения не являются одновременными.
Для присваивания значения переменным используется оператор (=), который практикуется двояко: как присваивание или как сравнение в зависимости от того является ли значение объектов свободными или означенными.
Пример:
1) аpples=аpples – это сравнение. Равенство истинно, цель достигнута.
2) аpples=oranges – это тоже сравнение. Равенство ложно, цель недостигнута
3) X=аpples, если Х не означено, то это присвоение, в противном случае это сравнение.
Если оба значения известны, то трактуется как сравнение, даже если оба объекты являются переменными: х=у
Если известно одно значение, то оно присваивается второму, независимо от того где оно стоит: аpples=X.