- •Лекция 1-2: Базовые понятия ии
- •Цель преподавания дисциплины
- •Терминология
- •Философские аспекты проблемы систем ии (возможность существования, безопасность, полезность).
- •История развития систем ии.
- •Лекция 3: Архитектура и основные составные части систем ии
- •Различные подходы к построению систем ии
- •Вспомогательные системы нижнего уровня (распознавание образов зрительных и звуковых, идентификация, моделирование, жесткое программирование) и их место в системах ии
- •Лекции 4-7: Системы распознавания образов (идентификации)
- •Понятие образа
- •Проблема обучения распознаванию образов (оро)
- •Геометрический и структурный подходы.
- •Гипотеза компактности
- •Обучение и самообучение. Адаптация и обучение
- •Перцептроны
- •Нейронные сети История исследований в области нейронных сетей
- •Модель нейронной сети с обратным распространением ошибки (back propagation)
- •Нейронные сети: обучение без учителя
- •Нейронные сети Хопфилда и Хэмминга
- •Метод потенциальных функций
- •Метод группового учета аргументов мгуа Метод наименьших квадратов
- •Общая схема построения алгоритмов метода группового учета аргументов (мгуа).
- •Алгоритм с ковариациями и с квадратичными описаниями.
- •Метод предельных упрощений (мпу)
- •Коллективы решающих правил
- •Методы и алгоритмы анализа структуры многомерных данных Кластерный анализ
- •Иерархическое группирование
- •Лекции 8-11. Логический подход к построению систем ии
- •Неформальные процедуры
- •Алгоритмические модели
- •Продукционные модели
- •Режим возвратов
- •Логический вывод
- •Зависимость продукций
- •Продукционные системы с исключениями
- •Язык Рефал
- •Синтаксис термы
- •Константы
- •Переменные
- •Область действия переменных
- •Сложные термы, или структуры
- •Синтаксис операторов
- •Синтаксис списков
- •Синтаксис строк
- •Утверждения
- •Запросы
- •Ввод программ
- •Унификация
- •Арифметические выражения
- •Введение
- •Арифметические выражения
- •Арифметические операторы
- •Вычисление арифметических выражений
- •Сравнение результатов арифметических выражений
- •Структуры данных
- •Бинарные деревья представление бинарных деревьев
- •Представление множеств с помощью бинарных деревьев
- •Механизм возврата и процедурная семантика
- •Механизм возврата
- •Пример: задача поиска пути в лабиринте
- •Элементы нечеткой логики
- •Указатели
- •Содержание
Переменные
Понятие переменной в Прологе отличается от принятого во многих языках программирования. Переменная не рассматривается как выделенный участок памяти. Она служит для обозначения объекта, на который нельзя сослаться по имени. Переменную можно считать локальным именем для некоторого объекта.
Синтаксис переменной довольно прост. Она должна начинаться с прописной буквы или символа подчеркивания и содержать только символы букв, цифр и подчеркивания.
Переменная, состоящая только из символа подчеркивания, называется анонимной и используется в том случае, если имя переменной несущественно.
Область действия переменных
Областью действия переменной является утверждение. В пределах утверждения одно и то же имя принадлежит одной и той же переменной. Два утверждения могут использовать одно имя переменной совершенно различным образом. Правило определения области действия переменной справедливо также в случае рекурсии и в том случае, когда несколько утверждений имеют одну и ту же головную цель. Этот вопрос будет рассмотрен в далее.
Единственным исключением из правила определения области действия переменных является анонимная переменная, например, «_» в цели любит(Х,_). Каждая анонимная переменная есть отдельная сущность. Она применяется тогда, когда конкретное значение переменной несущественно для данного утверждения. Таким образом, каждая анонимная переменная четко отличается от всех других анонимных переменных в утверждении.
Переменные, отличные от анонимных, называются именованными, а неконкретизированные (переменные, которым не было присвоено значение) называются свободными.
Сложные термы, или структуры
Структура состоит из атома, называемого главным функтором, и последовательности термов, называемых компонентами структуры. Компоненты разделяются запятыми и заключаются в круглые скобки.
Приведем примеры структурированных термов:
собака(рекс), родитель(Х,У).
Число компонент в структуре называется арностью структуры. Так, в данном примере структура собака имеет арность 1 (записывается как собака/1), а структура родитель - арность 2 (родитель/2). Заметим, что атом можно рассматривать как структуру арности 0.
Для некоторых типов структур допустимо использование альтернативных форм синтаксиса. Это синтаксис операторов для структур арности 1 и 2, синтаксис списков для структур в форме списков и синтаксис строк для структур, являющихся списками кодов символов.
Синтаксис операторов
Структуры арности 1 и 2 могут быть записаны в операторной форме, если атом, используемый как главный функтор в структуре, объявить оператором (см. гл. 6).
Синтаксис списков
В сущности, список есть не что иное, как некоторая структура арности 2. Данная структура становится интересной и чрезвычайно полезной в случае, когда вторая компонента тоже является списком. Вследствие важности таких структур в Прологе имеются специальные средства для записи списков. Возможности обработки списков рассматриваются в разд. 5.1.
Синтаксис строк
Строка определяется как список кодов символов. Коды символов имеют особое значение в языках программирования. Они выступают как средство связи компьютера с внешним миром. В большинстве реализации Пролога существует специальный синтаксис для записи строк. Он подобен синтаксису атомов. Строкой является любая последовательность символов, которые могут быть напечатаны (кроме двойных кавычек), заключенная в двойные кавычки. Двойные кавычки в пределах строки записываются дважды «».
В некоторых реализациях Пролога строки рассматриваются как определенный тип объектов подобно атомам или спискам. Для их обработки вводятся специальные встроенные предикаты. В других реализациях строки обрабатываются в точности так же, как списки, при этом используются встроенные предикаты для обработки списков. Поскольку все строки могут быть определены как атомы или как списки целых чисел, и понятие строки является чисто синтаксическим, мы не будем более к нему возвращаться.