
- •1.Введение в функциональное и логическое программирование
- •1.1. Основные классы вычислительных моделей
- •1.1.1 Процедурная вычислительная модель
- •1.1.2 Функциональная вычислительная модель
- •1.1.3. Логическая вычислительная модель
- •1.1.4. Объектно-ориентированная вычислительная модель (ооп)
- •1.2.Метод оценки (способ получения результатов)
- •1.3. Обмен информацией в процессе оценки
- •1.4.Понятие искусственного интеллекта
- •1.5.Символьные языки программирования
- •1.6. Основные направления в искусственном интеллекте
- •Для работы в сфере ии надо иметь:
- •1) Языки ии, обеспечивающие простоту модификации
- •3) Важна и структура самой машины, позволяющая с
- •2.Основы логического программирования и язык Пролог.
- •2.1.Основные понятия
- •2.2.Определение отношений на основе фактов и правил
- •2.3 Пример программы на языке Пролог
- •2.4.Использование рекурсии
- •2.5.Декларативная и процедурная трактовка программы
- •2.6. Cтруктура программы
- •2.7.Особенности лп:
- •2.8 Использование предиката not и
- •3.Синтаксис Пролога
- •3.1. Объекты данных
- •3.2. Составные объекты и альтернативные домены. В утверждениях объекты представляют собой данные.
- •3.2.1. Составная структура
- •Листинг3.1. Использование доменной структуры с именем personal_library
- •3.2.2.Доменная структурная диаграмма программы “Библиотека” (дсд)
- •3.2.3.Предикатная структурная диаграмма программы “Библиотека” (псд)
- •3.2.4. Альтернативные домены
- •Выводы:
- •Рассмотрение работы с составными объектами и альтернативными доменами закончено. Посмотрим, как именно строится логический вывод, реализованный на эвм?
- •3.3. Сопоставление структур(matching)
- •3.4.Унификация и подстановки (Unify).
- •3.5.Основные правила поиска с возвратом:
- •Листинг 3.4.Унификация и поиск с возвратом
- •4.Принцип резолюции
- •Метод резолюции в исчислении предикатов – это пра-
- •4.1.Логическое следствие
- •4.2. Логический вывод
- •4.3 Преимущества и недостатки метода резолюции
- •4.4. Пример применения метода резолюций.
- •5. Управление поиском решений
- •5.1.Метод отката после неудачи – опн
- •5.2 Метод отсечения и отката – оо
- •5.2.1.Влияние предиката cut на составную цель
- •5.2.3. Использование зеленых и красных отсечений
- •5.2.4.Использование предиката not как средства управления
- •5.3.Метод повтора, определяемый пользователем (мп)
- •5.4.Методы организации рекурсии
- •Листинг 5.9. Бесконечная рекурсия (хвостовая рекурсия)
- •Пример программы, которая циклически считывает символ, введенный пользователем. Если символ не равен #, то он выводится на экран, иначе процесс заканчивается.
- •Листинг 5.14. Пример рекурсии для генерации ряда чисел в порядке возрастания
- •Определение
- •Список помогает сделать программу компактной, эффектив-
- •Список – это рекурсивный составной объект, поэтому
- •6.1.Операции над структурами данных типа список.
- •6.2.Предикат findall
- •6.3. Операции со структурами данных.
Для работы в сфере ии надо иметь:
1) Языки ии, обеспечивающие простоту модификации
программ и данных;
(Lisp-List Processing –обработка списков; Haskell ,Caml, Curry, Hope и др.)
Prolog –Programming in Logic-программирова-
ние в терминах логики)
2) Системы программирования для поддержки
составления, разработки и сопровождения программного обеспечения ПО (создание удобной среды разработки ПО)
3) Важна и структура самой машины, позволяющая с
большей эффективностью использовать эти
языки.
В настоящее время мы работаем с машинами чет-
вертого поколения, т.н. фон-неймановскими машинами. Процедурные языки программирования созданы именно под эту архитектуру. Другие языки программирования могут входить с этой архитектурой в противоречие. Правда, современные технологии обеспечивают высокие скорости работы процессоров и большие объемы достаточно дешевой памяти, так что вопрос согласования языков программирования и архитектуры компьютера не стоит сегодня так остро.
Что относится к области ИИ?
доказательства теорем;
базы данных и базы знаний;
(интересно сравнить системы БД SQL и прологовские: для выполнения тех же задач вы получаете возможность работать с развитой логикой. При этом система Visual Prolog,например, обеспечивает высокую скорость работы и имеет большую эффективность и более дружественный интерфейс.)
Самоорганизующиеся СУБД, способные подстраиваться под профиль конкретной задачи без администрирования.
задачи символьной математики;
эврестические задачи, моделирующие поведение человека в проблемной ситуации;
экспертные системы;
нейронные сети (используются в робототехнике, информационных технологиях)
логико-лингвистические модели в системах управления;
печать с голоса;
интеллектуальные игры;
мутационные исчисления ( набор правил для моделирования процесса эволюции по созданию Homo Sapiens).
Операционные системы (ОС) реального времени (для принятия решений в рамках дефицита времени)
Web- приложения и административные системы.
2.Основы логического программирования и язык Пролог.
2.1.Основные понятия
Процедурный стиль программирования зависит в большой степени от внутренних механизмов компьютера, так как процедурные языки ориентированы в основном на последовательное исполнение инструкций, оперирующих с памятью (операции присваивания). Однако, подавляющее большинство задач, которые решаются на компьютере, напрямую с архитектурой машины не связаны.
Логический стиль программирования строится на основе абстрактной модели, поэтому тоже никак не связан с архитектурой ЭВМ. Поскольку вычисление есть частный случай логического вывода, а алгоритм – это аксиоматическое задание функции, то весьма актуальным является возможность применения идей логического программирования для решения достаточно широкого круга задач (касающихся объектов и отношений между объектами).
Суть идеи логического программирования(ЛП): компьютеру в качестве программы можно представить не алгоритм решения задачи, а формальное ее описание в виде аксиоматической системы, тогда построение решения задачи в виде вывода можно поручить компьютеру. Это значит, что программа на Прологе не отображает последовательность действий, как это принято в процедурных языках, а представляет собой определенный набор фактов и правил, которые позволяют на их основе выполнить логический вывод. Это возможно, потому что имеются методы автоматического поиска доказательства (то есть существуют некоторые универсальные алгоритмы, которые могут быть запрограммированы). Именно поэтому эффективность ЛП зависит не только от аксиоматизации задачи, но и от качества компилятора, который реализует поиск доказательства.
Язык Пролог(Prolog-PROgramming in LOGic) –декларативный язык, так как знания в виде фактов и правил их использования представлены в декларативной форме.