
- •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. Операции со структурами данных.
3.2.1. Составная структура
На Прологе это выглядит так:
student(name(“liz”,”petrova”),address(“moscow”,”lefortov”,23))
student – главный функтор;
name, address- функторы
Функтор – это имя (не функция), которое идентифицирует сложную структуру объекта данных и связывает его аргументы вместе. Аргументы в свою очередь могут быть составными. Функтор помогает распознавать различия в объектах (один объект - это имя, другой объект- это адрес). Пролог позволяет объявлять составные объекты в разделе domains:
domains
stud_name=name(symbol,symbol)
stud_addr=address(symbol,symbol,integer)
predicates
student(stud_name,stud_addr)
clauses
student(name(“liz”,”petrov”),address(“Moscow”,”lefortov”,23)).
Имена доменов stud_name и stud_addr – это имена составных объектов, образованных при помощи функторов name и address.Таким образом, составной объект является определенной структурой доменов. Каждая структура предполагает особое представление фактов в базе данных (БД).
Структура обеспечивает средство сортировки объектов по категориям. Ссылки на доменную структуру осуществляются по имени функтора.
Пролог позволяет конструировать составные объекты с несколькими уровнями.
Листинг3.1. Использование доменной структуры с именем personal_library
domains
personal_library = book(title, author, publisher, year)
collector, title, author, publisher=symbol
year=integer
predicates
collection(collector, personal_library)
clauses
collection(ivanov,book(“Artificial intelligence”,”Patrick Winston”,”Addison-Wesley Publishing company”,2005)).
сollection(petrov, book(“Artificial intelligence”, ”Stuart Rassel”, ”Pretice Hall”,2007)).
.................................................
и т.д.
3.2.2.Доменная структурная диаграмма программы “Библиотека” (дсд)
personal_lilrary домен
|
book функтор структуры 0-уровень
__________|_______________ |
| | | |
title author publisher year уровень1
3.2.3.Предикатная структурная диаграмма программы “Библиотека” (псд)
collecton -предикат 0-уровень
____|________
| |
collector book -функтор уровень1
____________|_________________
| | | |
title author publisher year -уровень2
ДСД является компонентой ПСД.
Диаграммы показывают, как организованы домены и предикаты.
Все компоненты структуры и их уровни здесь видны очень ясно. Верхние уровни определяют общие черты структуры, нижние уровни отображают детали. Используются при разработке и документировании программ и проектов наряду с диаграммами потоков данных и структурными схемами.
Важная особенность составных объектов состоит в том, что они позволяют передавать группы величин как один аргумент. Мы можем иметь одну переменную для хранения целой группы величин. И это достигается благодаря использованию составного объекта.