
- •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. Операции со структурами данных.
4.3 Преимущества и недостатки метода резолюции
1. Надо знать и помнить всего одно правило.
2. Применение этого правила можно автоматизировать(запрограммировать на ПК).
3.Ответы можно извлекать из унификаторов.
Недостатки:
Не гарантируется конец работы (бесконечный цикл при попытке найти доказательство). Но это бывает очень редко, так как большинство реальных задач не содержат “неразрешимых ” формул.
Общий вывод:
1. Предложения Пролога можно интерпретировать как предложения исчисления предикатов первого порядка.
(фразы Хорна)
2. Компилятор Пролога можно рассматривать как резолюционную процедуру доказательства, использующую поиск в глубину (сверху - вниз и слева – направо)
3. Все вычислительные задачи можно сформулировать, пользуясь только отрицанием, правилами и фактами, а те из задач, которые являются разрешимыми, можно решить с помощью общей резолюции сверху вниз.
(неразрешимыми считаем те задачи, которые не имеют опровержения)
Дополнительная информация:
Резолюция обладает важными свойствами корректности и полноты.
Резолюция корректна в том смысле, что если с ее помощью из множества допущений S1 и отрицания F выводится противоречие, то обязательно справедливо отношение S1 |-- F .
Резолюция полна в том смысле, что если справедливо S1|-F ,то противоречие непременно выводится из S1 и F .
Проблема общезначимости
Логика первого порядка только частично разрешима. Но есть алгоритмы, которые всегда устанавливают справедливость отношения S1|- F ,если оно действительно имеет место. Это значит, что если составили неразрешимую логическую программу, то есть не имеющую опровержения и подали ее на вход частично разрешимой процедуры, основанной на резолюции и реализовали на ЭВМ ,то может произойти зацикливание.
Исследования подтвердили, что логика хорновских дизъюнктов является универсальным вычислительным формализмом. Ее проверили на множестве натуральных чисел, на частично рекурсивных функциях, на классе алгоритмов Маркова и тому подобное.
4.4. Пример применения метода резолюций.
Листинг 4.1. программа, иллюстрирующая применение метода резолюции
predicates
likes(symbol,symbol)
food(symbol,symbol)
clauses
S2 likes(bill,pizza):-
food(pizza,italiano).
S3 food(pizza,italiano).
S2 и S3 –родительские предложения
В качестве S1 будет выступать цель goal: likes(bill,pizza), которая поступит на компилятор в виде отрицания.
Опровержение отрицания демонстрируется так: допущение отрицания цели ведет к противоречию.
likes(bill,pizza) подаем на вход системы резолютивного вывода. Система должна опровергнуть это отрицание при помощи других предложений программы.
Рис. 4.1. Применение принципа резолюции
Для верхнего случая : S1: A.
S2:A:-B.
S: B
Для нижнего случая : S1: A
S2:A
S: противоречие
В данном примере оказалось достаточно двух шагов вывода. Если предположить, что мы не отказываемся от предложений S2 и S3, и сами они не являются противоречивыми, то отсюда следует, что они совместно противоречат S1, то есть подтверждают отрицание S1, а следовательно, ответ –ДА.
В общем виде:
S1: (A1,..,An)
S2: Aк:-B1,..,Bm где 1<=к<=n
Некий предикат Ak из отрицания S1 совпадает с головой правила S2.В этой ситуации шаг вывода заменяет Ak в S1 на подцель из S2, и в качестве резольвенты получаем s: (A1,..,Ak-1,B1,..,Bm,Ak+1,..,An).
Если на запрос можно получить ответ на основе знаний, закодированных во входных допущениях, то система обязательно его получит. Ответственность за построение вывода, за управление протоколом связываний и извлечения ответа может быть полностью возложено на систему.
Каждое вычисленное решение обладает требуемым свойством – оно логически следует из данных допущений. Очень немногие из формальных систем программирования обладают этими качествами.