- •Введение
- •1. Организация вычислительного процесса
- •2. Основные элементы языка
- •2.1. Имена
- •2.2. Типы данных
- •2.3. Константы и переменные
- •2.4. Программные секции Пролога
- •2.4.1. Секция Domains
- •2.4.2. Секция Ppredicates
- •2.4.3. Секция Database
- •2.4.4. Секция Clauses
- •2.4.5. Секция Goal
- •3. Примеры программ
- •3.1. Программы с фактами и простыми правилами
- •3.2. Рекурсии
- •3.3. Программирование циклов
- •3.4. Работа со списками
- •3.5. Нахождение пути на графе
- •3.6. Использование структур
- •Vife(X):–family(_,X,_). % X – жена
- •3.7. Динамическая база данных
- •It_is("хищник"),
- •Xpositive(X, y), !. % в базе данных
- •3.8. Обработка текстов
- •Verb( string ) % Глагол
- •4. Стандартные предикаты
- •4.1. Ввод/вывод
- •4.2. Управление экраном и оконная система
- •4.3. Обработка строк
- •4.4. Преобразование типов
- •4.5. Работа с базой данных
- •4.6. Управляющие предикаты
- •4.7. Прочие стандартные предикаты
- •4.8. Арифметические и логические предикаты
- •5. Использование языка Пролог для построения экспертных систем
- •5.1. Оболочка экспертной системыGeni
- •5.2. Оболочка экспертной системы pexpert
- •5.2.1. Синтаксис правил
- •5.2.2. Функции
- •5.2.3. Взгляд на работу программы
- •5.2.4. Команды верхнего уровня
- •5.2.5. Команды оценки правил
- •5.2.6. Команды, действующие во время ввода данных
- •Рекомендуемая литература
- •Приложение. Варианты лабораторных работ Лабораторная работа 1. Работа с простой базой данных
- •Лабораторная работа 2. Программа “Родственные отношения”
- •Лабораторная работа 3. Построение простой вопросно-ответной системы
- •Лабораторная работа 4. Работа со списками
- •Лабораторная работа 5. Нахождение пути на графе
- •Лабораторная работа 6. Работа с базой данных с использованием структур
- •Лабораторная работа 7. Построение экспертной системы
- •Лабораторная работа 8. Построение синтаксического анализатора
4.6. Управляющие предикаты
exit
Выполняет немедленный выход из программы.
fail
Вынуждает завершиться предикат ложно и, следовательно, возвратиться к предыдущей точке разветвления (backtracking).
true
Значение предиката всегда истинно.
!
Отсечение (прекращение перебора между головой дизъюнкта и данным знаком).
4.7. Прочие стандартные предикаты
random(RealVariable)
(real) – (o)
Равномерное псевдослучайное число в диапазоне от 0 до 1.
random(MaxValue,RandomInt)
(integer,integer) – (i,o)
Равномерное псевдослучайное целое число RandomIntв диапазоне от 0 доMaxValue.
findall( Variable, Atom, ListVariable )
В списке ListVariableвозвращаются все решения для переменнойVariableв предикатеAtom.
not( Atom )
Выполняется успешно, если заданный Atomпредставляет собой цель, которая не достигается.
free( Variable )
Выполняется успешно, если Variableне является конкретизированной переменной.
bound( Variable )
Выполняется успешно, если Variableявляется конкретизированной переменной.
4.8. Арифметические и логические предикаты
В арифметических операциях могут участвовать операнды (числа и переменные), арифметические операции + (сложение), – (вычитание), * (умножение), / (деление), mod (деление по модулю), div (целочисленное деление), скобки.
Приоритет выполнения операций представлен числами:
-
+ , –
1
* , /
2
div ,mod
3
– ,+ (унарные)
4
Логические операторы:
-
>
Бодьше
<
Меньше
=
Равно
>=
Больше или равно
<=
Меньше или равно
<> ,
Не равно
Арифметические функции:
-
sin(Х)
Синус, угол в радианах
cos(Х)
Косинус, угол в радианах
tan(Х)
Тангенс, угол в радианах
arctan(Х)
Арктангенс
ln(Х)
Логарифм натуральный
log(Х)
Логарифм десятичный
abs(X)
Модуль аргумента
exp(Х)
Экспонента
sqrt(Х)
Корень квадратный
Кроме этих предикатов, в Прологе имеется большой набор стандартных предикатов для построения графических объектов. Просмотреть названия стандартных предикатов графики можно в разделе HELP меню интегрированной среды Пролога.
5. Использование языка Пролог для построения экспертных систем
Пролог является, возможно, наиболее подходящим языком, на котором выполняются экспертные системы и оболочки. На Прологе довольно просто создать интерактивную экспертную систему (т.е. работающую в режиме диалога). Такая система может варьировать процесс опроса в зависимости от обстоятельств. Более того, она может задавать минимально необходимое число вопросов.
Разработка правил для экспертных систем базируется на двух известных концепциях - с прямой и обратной цепочкой рассуждений. Каждая концепция определяет стратегию выбора в конкретных условиях. Стратегия прямого вывода состоит в том, что задается последовательность вопросов, построенных таким образом, что каждый из них позволяет отбросить большую группу потенциальных ответов, благодаря чему значительно сужается пространство поиска. Так продолжается до тех пор, пока не остается один определенный ответ.
Другую модель поведения предлагает стратегия обратного вывода. В некоторых задачах имеется всего несколько решений при наличии огромных объемов входной информации. В этом случае целесообразно в каждый момент времени рассматривать только одно из возможных решений, а затем собрать и проверить все свидетельства, которые могут его подтвердить или опровергнуть. Существует много приложений такого рода. К ним относятся, в частности, классификационные ЭС (найти причину неисправности, установить заболевание и др.). Ряд примеров экспертных систем приведен в [1].