- •Таганрог 2001
- •Содержание
- •Введение
- •1. Принципы логического программирования
- •1.1. Базовые понятия
- •1.2. Терминология
- •1.3. Сложные термы, или структуры
- •1.4. Синтаксис строк
- •1.5. Утверждения
- •1.6. Запросы
- •1.7. Ввод программ
- •1.8. Унификация
- •1.9. Арифметические выражения
- •1.10. Вычисление арифметических выражений
- •1.11. Сравнение результатов арифметических выражений
- •Контрольные вопросы и упражнения
- •2. Структуры данных на языке пролог
- •2.1. Списки
- •2.2. Бинарные деревья
- •2.3. Механизм возврата и процедурная семантика
- •3. Представление моделей знаний
- •3.1. Процесс представления знаний
- •3.2. Семантические сети
- •3.3. Фреймы
- •3.4. Механизм наследования в Прологе
- •3.5. Создание динамических баз данных
- •3.6. Представление задач в виде и/или – графов
- •4. Экспертные системы
- •4.1. Системы экспертных консультаций
- •Этап идентификации
- •Этап концептуализации
- •Этап формализации
- •Этап выполнения
- •Этап тестирования
- •Этап опытной эксплуатации
- •Экспертные системы, параллельные и последовательные решения
- •Пример эс, основанной на правилах логического вывода и действующую в обратном порядке
- •Часть 1.
- •Часть 2.
- •Часть 3.
- •Часть 4.
- •Часть 5.
- •4.2. Запоминание пути вывода
- •5. Пример задачи на представление знаний
- •6. Заключение
- •Литература
- •Представление знаний и логическое программирование в системах искусственного интеллекта Учебное пособие
1.3. Сложные термы, или структуры
Следует отметить, что данный раздел нельзя рассматривать как полный учебник по языку Пролог, а только как краткое введение, служащее для иллюстрации принципов логического программирования, более подробно описанных в [2], [3], [4].
Структура состоит из атома, называемого главным функтором, и последовательности термов, называемых компонентами структуры. Компоненты разделяются запятыми и заключаются в круглые скобки.
Приведем примеры структурированных термов:
собрание (место_проведения),
параметры_собрания (Х,У).
Число компонент в структуре называется арностью структуры. Так, в данном примере структура собрание имеет арность 1 (записывается как объект/1), а структура параметры_собрания - арность 2 (параметры_собрания/2). Заметим, что атом можно рассматривать как структуру арности 0.
Для некоторых типов структур допустимо использование альтернативных форм синтаксиса. Это синтаксис операторов для структур арности 1 и 2, синтаксис списков для структур в форме списков и синтаксис строк для структур, являющихся списками кодов символов.
Структуры арности 1 и 2 могут быть записаны в операторной форме, если атом, используемый как главный функтор в структуре, объявить оператором.
Список есть не что иное, как некоторая структура арности 2. Данная структура становится интересной и чрезвычайно полезной в случае, когда вторая компонента тоже является списком. Вследствие важности таких структур в Прологе имеются специальные средства для записи списков.
1.4. Синтаксис строк
Строка определяется как список кодов символов. Коды символов имеют особое значение в языках программирования. Они выступают как средство связи компьютера с внешним миром. В большинстве реализации Пролога существует специальный синтаксис для записи строк. Он подобен синтаксису атомов. Строкой является любая последовательность символов, которые могут быть напечатаны (кроме двойных кавычек), заключенная в двойные кавычки. Двойные кавычки в пределах строки записываются дважды “”.
В некоторых реализациях Пролога строки рассматриваются как определенный тип объектов подобно атомам или спискам. Для их обработки вводятся специальные встроенные предикаты. В других реализациях строки обрабатываются в точности так же, как списки, при этом используются встроенные предикаты для обработки списков. Поскольку все строки могут быть определены как атомы или как списки целых чисел, и понятие строки является чисто синтаксическим, мы не будем более к нему возвращаться.
1.5. Утверждения
Программа на Прологе представляет собой совокупность утверждений. Утверждения состоят из целей и хранятся в базе данных Пролога. Таким образом, база данных Пролога может рассматриваться как программа на Прологе. В конце утверждения ставится точка “.”. Иногда утверждение называется предложением.
Основная операция Пролога - доказательство целей, входящих в утверждение.
Существуют два типа утверждений:
факт: это одиночная цель, которая, безусловно, истинна;
правило: состоит из одной головной цели и одной или более хвостовых целей, которые истинны при некоторых условиях.
Правило обычно имеет несколько хвостовых целей в форме конъюнкции целей.
Таким образом, правило согласовано, если согласованы все его хвостовые цели.
Примеры фактов:
собрание(собрание_38).
параметры_собрания (место_проведения, время_проведения).
служащий (Иван).
Примеры правил:
руководитель (X) :- руководство (X,Y), служащий (Y).
человек (Х) :- служащий (Х).
Разница между правилами и фактами чисто семантическая. Хотя для правил мы используем синтаксис операторов (более подробное рассмотрение операторного и процедурного синтаксисов выходит за рамки пособия), нет никакого синтаксического различия между правилом и фактом.
