Программирование на языке Пролог для искусственного интеллекта
Шрифт:
7.3. Различные виды равенства
В каких случаях мы считаем, что два терма равны? До сих пор мы рассматривали три вида равенства в Прологе. Первый был связан с сопоставлением и записывался так:
Это равенство верно, если X и Y сопоставимы. Следующий вид равенства записывался в виде
Такое равенство выполняется, если X сопоставим со значением арифметического выражения E. Мы также рассматривали равенства вида
которые верны, если равны значения арифметических
Иногда нам может понадобиться более строгий вид равенства - буквальное равенство двух термов. Этот вид реализован еще одним встроенным предикатом, записываемым как инфиксный оператор '
Это равенство выполняется, если термы Т1 и Т2 идентичны, т.е. имеют в точности одинаковую структуру, причем все соответствующие компоненты совпадают. В частности, должны совпадать и имена переменных. Отношение "не идентичны", дополнительное к данному, записывается так:
Приведем несколько примеров:
Давайте в качестве примера переопределим отношение
из разд. 7.1. Пусть на этот раз N будет числом буквальных вхождений
7.4. Работа с базой данных
Реляционная модель предполагает, что база данных — это описание некоторого множества отношений. Пролог-программу можно рассматривать как именно такую базу данных: описание отношений частично присутствует в ней в явном виде (факты), а частично — в неявном (правила). Более того, встроенные предикаты дают возможность корректировать эту базу данных в процессе выполнения программ. Это делается добавлением к программе (в процессе вычисления) новых предложений или же вычеркиванием из нее уже существующих. Предикаты, используемые для этой цели, таковы:
Цель
всегда успешна, а в качестве своего побочного эффекта вызывает "констатацию" предложения С, т.е. добавление его к базе данных.
Цель
приводит к противоположному эффекту: удаляет предложение, сопоставимое с С. Следующий диалог иллюстрирует их работу:
Предложения, добавленные к программе таким способом, ведут себя точно так же, как и те, что были в "оригинале" программы. Следующий пример показывает, как с помощью
Ниже приводится пример диалога с этой программой, во время которого база данных постепенно изменяется:
Добавлять и удалять можно предложения любой формы. Следующий пример показывает, что, кроме того,
К этой программе можно добавить правило: