- •1. Основные понятия дисциплины.
- •2. Классификация знаний. Отличие знаний от данных.
- •I группа.
- •II группа.
- •III группа.
- •IV группа.
- •3. Модели представления знаний в ис. Продукционная модель. Модель на основе фреймов Модели представления знаний в ис
- •Продукционная модель знаний.
- •Модель на основе фреймов.
- •4. Модели представления знаний в ис. Семантические сети. Формально-логическая модель. Модели представления знаний в ис
- •Семантические сети
- •2.5 Формальные логические модели на основе исчисления предикатов
- •5. Экспертные системы. Понятие, назначение, области применения. Основные характеристики экспертных систем. Понятие эс. Основные характеристики.
- •Основные характеристики эс:
- •Области применения эс. Типы эс и подходы к их реализации.
- •Назначение
- •Критерий использования эс для решения задач.
- •6. Ограничения в применение экспертных систем. Преимущества экспертных систем перед человеком – экспертом. Ограничения в применение экспертных систем
- •Преимущества экспертных систем перед человеком – экспертом.
- •7. Отличие экспертных систем от традиционных программ. Структура экспертной системы. Назначение подсистем экспертной системы.
- •Назначение подсистем экспертной системы
- •8. Общие сведения о языке Пролог.
- •9. Вычислительная модель Пролога. Факты, запросы, переменные, домены и правила.
- •10. Работа со списками в языке Пролог.
- •1.4.5.2 Предикат может иметь несколько вариантов использования
- •Работа с деревьями в языке Пролог.
- •1.3 Создание дерева
- •11. Особенности ввода-вывода в языке Пролог.
- •12. Особенности написания экспертной системы на языке Пролог.
- •13. Стратегии получения знаний. Теоретические аспекты извлечения знаний. Стратегии получения знаний.
- •10.3 Теоретические аспекты извлечения знаний.
- •14. Представление нечетких знаний информационных системах.
- •Пример 9.1
- •15. Классификация методов практического извлечения знаний. Коммуникативные активные методы.
- •16. Классификация методов практического извлечения знаний. Коммуникативные пассивные и текстологические методы
11. Особенности ввода-вывода в языке Пролог.
Чтение символов
Системные предикаты get(X), get0(X), skip(X) служат для ввода символов с терминала пользователя. Коды символов различаются в зависимости от используемой реализации Пролога. В микрокомпьютерах в основном применяется код ASCII*, а в больших ЭВМ (таких, как ICL2900) - код EBDIC**.
Перечисленные предикаты определяются следующим образом.
get0(X)
Предикат вызывает считывание одного символа с клавиатуры. Если переменная X неконкретизирована, то X принимает значение кода символа. Если же переменная X конкретизирована, то вводимый символ сопоставляется с X. Целевое утверждение будет успешно доказано только в том случае, если символ сопоставим с X.
get(X)
Предикат вызывает считывание одного или нескольких символов с клавиатуры до тех пор, пока не будет считан символ пробела. Если переменная X неконкретизирована, то код символа отождествляется с X и доказательство утверждения заканчивается успехом. Если же переменная X конкретизирована, целевое утверждение будет доказано только в случае, если вводимый символ сопоставим с X.
skip(X)
Предикат считывает символы с клавиатуры или из текущего входного файла, пока не встретится символ с кодом X, тогда доказательство цели заканчивается успешно. Переменная X может быть целочисленным выражением.
Запись символов
Для вывода символов используются системные предикаты: put(X), tab(X) nl. Они определяются следующим образом.
put(X)
Символ с кодом X записывается на терминал. Допускается, чтобы X был целочисленным выражением. Доказательство целевого утверждения put(X) всегда заканчивается успехом. X может быть кодом как управляющего, так и алфавитно-цифрового символа.
tab(X)
На терминал выводится X пробелов. X может быть целочисленным выражением.
nl
Происходит переход на новую строку терминала.
Рассмотрим примеры:
put(65) на терминал выводится символ А
(подразумевается ASCII код)
put(66+32) выходится символ b
put('C') выводится символ С
put([100]) выводится символ d
put(‘e’+’A’-‘a’) выводится символ Е
put(a(b)) выдается сообщение об ошибке
Считывание термов
Предикаты
read(X), readb(X) и read(X,Y)
служат для считывания термов. Приведем их определение.
read(X)
Если переменная неконкретизирована, то она означивается термом, считанным с терминала. Попытка пользователя напечатать выражение, не являющееся термом, приведет к ошибке. Вводимая информация должна заканчиваться точкой. В случае, если переменная X конкретизирована термом, попытка доказать целевое утверждение заканчивается успехом только при условии, что вводимый с терминала терм сопоставим с X. В противном случае попытка доказательства завершается неудачей.
readb(X)
Данный предикат аналогичен предикату read(X), но вводимый терм не должен заканчиваться точкой.
read(X,Y)
Доказательство предиката завершается успехом, если считываемый терм отождествляется с X, и неудачей в противном случае. При успешном доказательстве переменная Y становится списком, состоящим из имен переменных, входящих в терм X. Пролог переименовывает переменные, встретившиеся в вводимом терме. Таким образом, когда попытка доказать целевое утверждение read(X,Y) заканчивается успехом, список Y содержит внутренние имена переменных, входящих в терм X. Как и при использовании предиката read(X), после вводимого терма должна стоять точка.
readb(X,Y)
Предикат аналогичен предикату read(X,Y). Различие состоит в том, что пользователь не должен печатать точку после ввода терма.
Примеры:
После запроса:
?-read(X).
система ожидает ввода. Если пользователь напечатает:
test (5).
то в результате переменная X получит значение
Х- test (5)
Задав вопрос
?- read (джек (мужчина)).
и введя терм
test.
получим ответ:
нет.
При запросе:
?-read(X,Y).
вводим терм
fred(P,a(Q)).
в результате получаем
X = fred(_55,a(_57))
Y=[[P |_55],[Q | _57]]
где _55 - внутреннее имя переменной Р, а _57 - внутреннее имя переменной Q.
Запись термов
Рассмотрим предикаты, служащие для записи термов.
write(X)
Данный предикат выводит терм на экран. Если X содержит конкретизированные переменные, то на экране отображаются термы, которыми эти переменные конкретизированы. Если X содержит неконкретизированные переменные, они выводятся как уникальные целочисленные переменные. Сцепленные переменные, входящие в X, отображаются в виде одного и того же целого значения. Например, в ответ на запрос
?- write(cyммa(N,S,N+l)).
на экране появится
сумма (_35,_36 is_35+l ) .
writeq(X)
Предикат аналогичен предикату write(X) кроме случая, когда X содержит атом или функторы, которые в программе следует заключать в кавычки. Предикат writeq записывает такие величины на экране в кавычках. Например, в результате запроса
?- writeq('fred.txt').
на экране появится
'fred.txt'
display (X)
Предикат выводит терм X в стандартной скобочной префиксной
форме записи. Например, запрос
?- display (X+Y).
вызовет появление на экране записи:
+ (X,Y)