
- •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. Операции со структурами данных.
2.2.Определение отношений на основе фактов и правил
Центральное понятие- отношение между объектами, представленное в терминах ограничения условий и целей. Программист мыслит в терминах структуры отношений, не заботясь о точности их реализации.
Отношение – это обобщение функции, которое определяется как подмножество прямого произведения множеств.
Итак, сама программа – это множество фактов и правил, задающих отношения между объектами в конкретной прикладной области. Отношение в Прологе называется предикатом. Объекты, связанные этим отношением, называются аргументами. Аргументы могут быть константами (атомами) или переменными.
Предикат определяет, является ли данное отношение истинным или ложным, поэтому предикат можно рассматривать как “индикатор отношения”.
Для записи отношений между объектами можно использовать различные формализмы. В ЛП используется исчисление предикатов первого порядка (ИП1П).Вернее, ограниченная форма ИП1П в виде логики так называемых хорновских предложений(факты, правила и цели).
По сути хорновские дизъюнкты - это логические импликации(правила типа если - то) .В общем виде импликации имеют вид:
A
;A
;….;A
:-B
,B
,…,B
(n>=0;m>=0)
В – это посылки импликации, А – это заключение импликации.
Чтобы увеличить эффективность метода резолюций, используемого в качестве метода автоматизации доказательства теорем, берутся лишь формулы при n=1 и m>=0:
Формула Хорна-> A:-B ,B ,….,B
(n=1; m>0)- это правило
A:-
(m=0;n=1) - это факт
?:-B ,B ,…..,B
(m>0;n=0) –это цель
Рис.2.1. Схема, демонстрирующая два уровня значения программы – декларативное и процедурное
2.3 Пример программы на языке Пролог
Рассмотрим классическую программу родственных отношений на языке Пролог
Дано дерево родственных отношений вида:
Рис.2.2.Дерево родственных отношений
Предположим, надо определить, кто является сестрой Ann?
Тот факт, что Tom является родителем Bob (стрелки на рисунке) можно записать следующим образом:
parent(tom,bob).
parent- имя отношения –предикат
tom,bob –параметры (аргументы) отношения.
Имена собственные являются константами и в Прологе пишутся со строчной буквы.
Программа на Прологе для ответа на вопрос, кто является сестрой Ann имеет следующий вид:
Листинг 2.1.Программа о семейных отношениях
domains
person=symbol
predicates
parent(person,person)
female(person)
sister(person,person)
clauses
parent(pam,bob). %определение отношений
parent(tom,bob). % на основе фактов
parent(bob,ann).
parent(bob,pat).
parent(pat,jim).
parent(tom,liz).
female(ann).
female(pat).
female(liz).
female(pam).
sister(X,Y):- %определение отношений
parent(Z,X), % на основе правил
parent(Z,Y),
female(X),
X<>Y.
goal (внешняя цель)
sister(X,ann).
Представленное на рис.1.1.дерево семейных отношений определено в программе на основе 6 предложений, каждое из которых объявляет о наличии одного факта, выраженного отношением parent.Это отношение определяет связь между двумя объектами.
Чуть ниже представлены 4 предложения, каждое из которых объявляет о наличии факта, выраженного унарным отношением female.Это отношение определяет такое свойство объекта как принадлежность к женскому полу.
Последовательность предложений, описывающих один и тот же предикат, называется процедурой.
Все предложения, относящиеся к одной и той же процедуре, имеют одинаковое имя предиката и одну и ту же размерность(арность). Эти предложения должны следовать друг за другом.
Следующее предложение программы определяет отношение sister(X,Y) на основе правил. Правила определяют условия, при которых отношения между объектами становятся истинными. Чем правило отличается от факта? Факт всегда является истинным. Правило становится истинным при выполнении определенных условий. Правило имеет голову и тело. Правило (его заголовок) принимает значение истина только в том случае, если приняли значение истинности все предложения, составляющие его тело.
голова:- тело.
Правило применимо к любым объектам, поэтому в правиле используются переменные, которые по ходу решения задачи могут конкретизироваться.
Для описания объектов и отношений между ними используются идентификаторы. Идентификаторы объекта и отношения начинаются со строчной буквы, за которой может следовать любое число символов – буквы верхнего и нижнего регистров, цифры, знаки подчеркивания.
Нельзя использовать пробелы, знак минус и слеш.
Построим графы, определяющие абстрактные отношения, такие как сестра и тетя :
Рис.2.3 Определение отношений сестра и тетя