
- •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.Синтаксис Пролога
3.1. Объекты данных
Рис.3.1. Классификация объектов данных
Атомы, переменные и числа в Прологе относятся к простым объектам.
Для представления объектов, имеющих несколько компонент (арность которых >0) используются структурированные объекты, которые представляются в виде деревьев.
Тип объекта распознается по его синтаксической форме.
АТОМ может быть символом (symbol) или строкой(string).
Символы:
1) цепочка букв, цифр и символа подчеркивания, начинающаяся со строчной буквы
(например,nil | x23 | x_y | ann)
2) специальные символы, кроме тех специальных символов, которые имеют в Прологе заранее определенный смысл(например, :-если - то )
::=, <--->, ... и т.д.
3) цепочки символов, заключенные в одинарные кавычки
‘Tom’ ‘Ann’ ‘X’.
Строка:
Выделяется двойными кавычками и может содержать любую комбинацию литер:
“New York”, ”We study Prolog”.
Так как symbol/string взаимозаменяемы, то их отличия несущественны.
ЧИСЛО - как обычно
ПЕРЕМЕННАЯ- цепочка, состоящая из букв, цифр, символов подчеркивания. Начинается с прописной буквы или символа подчеркивания
X Result List_student _x23
Лексической областью определения переменных является одно предложение, поэтому под переменными с одним и тем же именем в двух предложениях подразумеваются две различные переменные.
Если переменная используется в предложении только один раз, то для нее не обязательно использовать имя. В этом случае используют так называемую анонимную переменную, которая записывается как один символ подчеркивания. Каждый символ подчеркивания представляет новую анонимную переменную.
Если анонимная переменная появляется в цели, то ее значение не выводится при выдаче результата.
СТРУКТУРА-это объект, который состоит из несколькиx компонентов. Эти компоненты тоже могут быть структурами. Все структурированные объекты могут быть изображены в виде деревьев. Корнем дерева является функтор.
student(fio(“orlov”,”dmitriy”),address(“pskov”,”mira”,53))
Составной объект student имеет две части: объект fio(“orlov”,”dvitriy”) и объект address(“pskov”,”mira”,53). Функторы у этих объектов – fio и address.
С точки зрения синтаксиса все объекты данных представляют собой термы.
3.2. Составные объекты и альтернативные домены. В утверждениях объекты представляют собой данные.
Простой объект представляет сам себя, а структура, состоящая из простых объектов, называется простой структурой.
Составной объект представляют другой объект или совокупность объектов. Составные объекты дают возможность представить эту совокупность объектов как единое целое, и эту совокупность легко в случае необходимости разделить.
Аргументы составного объекта данных могут быть сами составными объектами.
student
/ \
name address
/ \ / | \
first last city street housenumb