
- •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.4.Понятие искусственного интеллекта
Искусственный интеллект- это одна из новейших областей информатики, предметом которой является разработка компьютерных систем, обладающих возможностями, связанными со способностями естественного интеллекта. Задачи, для которых неизвестны алгоритмы решения, априорно относятся к сфере искусственного интеллекта.
Особенность задач, относящихся к сфере ИИ, заключается в том, что их почти невозможно формализовать, то есть для их описания не подходят обычные (примитивные) структуры данных, используемые в традиционных языках программирования для обработки данных, и методы работы с ними. Такие задачи не предусматривают обработки данных с фиксированной структурой(т.е. с такой структурой, в которую входят отдельные численные значения или матрицы численных значений). Один из фундаментальных вопросов программирования – это вопрос о представлении сложных объектов (например, множеств) и вопрос об эффективной реализации операций над подобными объектами. Наиболее часто используются структуры данных, принадлежащие к трем большим семействам (списки, деревья, графы).
1.5.Символьные языки программирования
Понятия отношения и предиката
В
сфере ИИ используются символьные языки
представления знаний и формализмы,
стоящие на более высоком понятийном
уровне. Здесь важное значение имеет
обработка отношений
между
данными.
При этом эти отношения могут претерпевать
существенные изменения в ходе выполнении
программы. Отношение
– это обобщение функций, то есть более
общее понятие, чем функция (отношение
определяется как подмножество прямого
произведения множеств). Функция,
рассматриваемая как отношение – это
подмножество декартова произведения.
(декартовым произведением двух множеств
M1
и M2
называется множество всевозможных
упорядоченных пар
<x,y>,
где х берется из М1, а y
–из М2.)
Любую функцию можно представить в виде отношения с помощью следующего преобразования:
(f
x
x
…x
)=y
(f
x
x
…x
y)
функция отношение
Функция- это частный случай отношения, не содержащего двух элементов (x x ….x y ) и
(x
x
…
x
y
)
таких, что y
y
,так как значение функции определяется
однозначно.
У функции, представленной в форме отношения, аргументы и результат находятся в равнозначных позициях аргументов отношения.
Определение понятия отношение
Пусть
дано множество М.
Рассмотрим декартово произведение
множеств M
=M*M*…*M
–
множество всех упорядоченных
последовательностей из n
элементов(x1
,x2
,…xn)
таких, что xi
M;
n-местным
отношением на М
называется его подмножество: R
Mn.
Например, сложение двух целых положительных чисел можно представить в виде отношения между множествами целых чисел (N1,N2,N3)
R N1*N2*N3,
где n1+n2=n3 и ni принадлежит множеству Ni.
Отношение можно явно представить как множество троек:
R= {(1 1 2),(1 2 3),(1 3 4),. . .}
Это отношение имеет три численных аргумента, т.е. оно является 3-х местным. 0-местное отношение реализует константу, 1-местное отношение – реализует свойство, 2-х и более местное отношение можно графически представить в виде сети. На основе отношений могут быть реализованы декларативные языки (Лисп за основу программирования берет функцию и лямбда-исчисление, а Пролог основан на более общем понятии отношения и хорновской логике.)
Иногда может рассматриваться множество М1*М2*…*Mn, где Mi- множества различной природы, и подмножества этого множества рассматриваются в качестве отношений. Например, прямая и плоскость – объекты принадлежащие разным множествам, но они могут находиться в отношении параллельности, компьютер может быть инструментом для человека, на нем работающего (М1-множество компьютеров, М2-множество людей) и т.д.
Определение понятия предикат
n-местным
предикатом P(x1,x2,..,xn)
называется функция P:
Mn
B,
где M
–произвольное множество, а B={1,0}.
М называется предметной областью, xi – предметными переменными.
Для любых M и n существует взаимно однозначное соответствие между n-местными отношениями и n-местными предикатами. Каждому n-местному отношению R соответствует предикат P такой, что P(x1,x2,….,xn)=1 тогда и только тогда, когда (x1,x2,….,xn) R,и любому предикату P(x1,x2,..,xn) соответствует отношение R такое, что (x1,x2,..,xn) R тогда и только тогда, когда P(x1,x2,..,xn)=1.Это значит, что областью истинности предиката P является множество R.
Отсюда видно, что предикат – это индикатор отношения. Он принимает значение true или false в зависимости от того, имеет место данное отношение или нет.
ИИ изучает методы решения компьютерных задач, не имеющих явного алгоритмического решения, используя в качестве инструмента символьные языки программирования, в том числе и язык исчисления предикатов первого порядка.