Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Таунсенд Проектирование и программная реализац...doc
Скачиваний:
15
Добавлен:
12.11.2019
Размер:
4.53 Mб
Скачать
  1. (ЭТО-ГЕПАРД Э ГО-МЛЕКОПИТАЮЩЕЕ ЭТО-11ЛОТОЯДНОЕ

  2. Имёет-рыже-корич-окрас имеет-темиые-пятна ) 14

290

291

# 82 CrPROLOG.BLK

  1. \ ПРИМЕР КЛАССИФИКАЦИИ ЖИВОТНЫХ

  2. ПРАВИЛО: ЭТО-ЗЕБРА? (ЭТО-ЗЕБРА ЭТО-КОПЫТНОЕ

  3. ИМЕЁТ-МЕРНЫЕ-ПОЛОСЫ ) ПРАВИЛО: ЭТО-СТРАУС?

  4. (ЭТО-СТРАУС ЭТО-ПТИЦА НЕ-ЛЕТАЕТ ИМЕЕТ-ДЛИННУЮ-ШЕЮ

  5. ИМЕЕТ-ДЛИННЫЕ-НОГИ ) ПРАВИЛО: ЭТО-ПИНГВИН?

  6. (ЭТО ПИНГВИН ЭТО-ПТИЦА HE-ЛЕТАЕТ ПЛАВАЕТ

  7. ИМЕЕТ-ЧЕРНО-БЕЯ-ОКРАС ) ПРАВИЛО: ЭТО-АЛЬБАТРОС? 1 (ЭТО-АЛЬБАТРОС ЭТО-ПТИЦА ЛЕТАЕТ-ХОРОШО )

8 ПРАВИЛО: ЭТО-ТИГР? (ЭТО-ТИГР ЭТО-МЛЕКОПИТАЮЩЕЕ ЭТО-ПЛОТОЯДНОЕ

ИМЕЕТ-РЫЖЕ-КОРИЧ-ОКРАС ИМЕЕТ-ЧЕРНЫЕ-ПОЛОСЫ ) ПРАВИЛО: ЭТО-ЖИРАФ? (ЭТО-ЖИРАФ ИМЕЕТ-ДЛИННУЮ-ШЕЮ ИМЕЕТ-ДЛИННЫЕ-НОГИ ИМЕЕТ-ТВМНЫЕ-ПЯТНА )

15 ПРЕДЛОЖЕНИЯ НУЛЬ УСТАНОВИТЬ

Экр # 83 CrPROLOG.BLK •

  1. \ ПРИМЕР КЛАССИФИКАЦИИ ЖИВОТНЫХ

  2. ПРЕДЛОЖЕНИЯ ЧТСП

  3. (ЭТО-ЖИВОТНОЕ1? @ ЭТО-ЖИВОТНОЕ2? @ ЭТО-ПТИЦА1? @

  4. ЭТО-ПТИЦА2? ЭТО-ПЛОТОЙДНОЕ1? @ ЭТО-ПЛОТОЯДНО122? @

  5. ЭТО-КОПЫТНОЕ1? @ ЭТ0-К0ПЫТН0Е2? @ ЭТО-ГЕПАРД? @

  6. ЭТО-ТЙГР? @ ЭТО-ЖИРАФ? @ ЭТО-ЗЕВРА? @

  7. ЭТО-СТРАУС? @ ЭТО-ПИНГВИН? @ ЭТО-АЛЬБАТРОС? @ ) 7

8 ■

9

10-1112

  1. РЕШЕНИЯ НУЛЬ УСТАНОВИТЬ

  2. ЦЕЛИ НУЛЬ УСТАНОВИТЬ ■

  3. НУЛЬ ЭТО-АЛЬБАТРОС ЦЕЛИ СПИСОК

Приложение 1 СЛОВАРЬ ФОРТА

! ( n a -> )

( -> cfa )

( -> )

* ( nl n2 -> n3)

*/ (nl n2 n3 -> n4)

*/MOD ( nl n2 n3 -> r q)

+ ( nl n2 -> n3)

+! ( n a -> )

+LOOP ( n -> )

- ( n -> )

( nl n2 -> n3),

( n -> ) ( ->)

Занесение n по адресу а. Занесение в вершину стека cfa следующего слова из входного потока. Пропуск символов из входного потока до правой круглой скобки. Используется для записи комментария. Умножение nl на n2 с получением произведения nЗ. Умножение nl на n2 с получени­ем результата двойной длины, который затем делится на nЗ. Используется при масштабировании чисел с фиксированной точкой. То же, что и */, но в качестве результата в вершину стека заносит частное q и остаток r. Сложение nl и n2, результатом является nЗ.

Добавление n к содержимому по адресу а.

Добавление n к счетчику цикла. Если в результате полученное значение счетчика выходит за границу, цикл принудительно завершается, в противном случае управление передается на фрагмент, расположенный за DO. Компиляция n в словарь путем выделения памяти и занесения. Вычитание n2 из n1 с получением разности nЗ. Вывод числа n.

Используется во время компиляции. Компилирует строковый литерал, начинающийся с символа, следующего за пробелом после .", и завершающийся символом " . Скомпилированный текст выводится при исполнении слова ." .

292

/ ( n1 n2 -> nЗ)

/MOD ( nl n2 -> r q)

0< ( n -> f)

0= ( n -> f)

0> ( n -> f)

1+ ( n1 -> n2)

1- ( n1 ->n2)

2+ ( nl -> n2)

2-- ( n1 -> n2)

2/ ( n1 -> n2)

2* ( nl -> n2)

; (-> )

< ( n1 n2 -> f)

d= ( nl n2 -> f)

> ( nl n2 -> f)

>BODY ( cfa _> pfa)

>R ?DUP ( n1 - >[n1] n2)

@ ( a -> n)

ABS ( n1 ->n2)

ALLOT ( nl -> )

AND ( nl n2 -> n3)

BASE ( >pfa)

Деление nl на n2 с получением

частного nЗ.

То же, что и / , но в качестве

результата в вершину стеке заносится

частное q и остаток r.

Флат истинен, если n < 0.

Флаг истинен, если n = 0.

Флаг истиней, если n > 0.

n2 = nl + 1

n2 = nl - 1

n2 = n1 + 2.

n2=nl - 2 .

n2 = nl/2 . Выполняется

арифметическим сдвигом

вправо на один бит.

n2 = 2 * nl , Выполняется сдвигом

влево на один бит.

Определение слона форта путем

создания заголовка словарной статьи

и компиляции текста из входного потока

до символа ; .

Завершение определения через

двоеточие и перевод Форта в режим

интерпретации.

Флаг истинен, если nl < n2 .

Флаг истинен, если nl = n2.

Флаг истинен, если nl > n2 >.

Переход от cfa к pfa, т.е. к телу

словарной статьи.

Занесение n в стек возвратов

Если nl не ноль, выполненить

операцию DUP.

Занесение в вершину стека

содержимого по адресу а.

Занесение .в вершину стека

абсолютного значения nl.

Выделение n байт памяти в

словаре.

Выполнение поразрядной

конъюнкции над nl и п2 с

с получением nЗ.

Системная переменная,

содержащая текущее

основание системы счисления

для вводимых чисел.

BEGIN ( -> )

С! ( n a -> )

C@ ( a -> n)

CONSTANT период-компиляции:

(n -> )

период-выполнения:

( -> n) COUNT (a -> a+1 u)

CR ( -> )

CREATE ( ->)

DECIMAL ( -> )

DEFINITIONS ( -> ) DO ( граница счетчик ->)

DOES> период-компиляции:

( -> )

период-выпилнения: ( -> pfa )

DROP ( n -> )

DUP ( n n -> )

Начало цикла как со счетчиком (UNTIL), так и с условием (WHILE-REPEAT) . Занесение, младших разрядов (байта) n по адресу а. Выборка младших разрядов (байта) содержимого по адресу а. Старшие разряды результата обнуляются. Определяющее слово, которое в период компиляции создает слово, заносящее при своем исполнении (в период выполнения) число n в вершину стека. Преобразование указателя стро­ки со счетчиком в адрес первой литеры и число литер строки. Вывод символа возврата каретки (ASCII 13).

Определяющее слово, создающее заголовок словарной статьи Форта. Выбирает из входного потока имя и строит поля: имени, связи и кода. В cfa помещается ссылка на программу периода выполнения для VARIABLE. Установка основания системы счисления путем занесения числа 10 в переменную BASE равным десяти. Установка контекстного словаря v

компиляции (CURRENT) на текущий словарь поиска (CONTEXT). Компилирующее слово. Служит началом цикла DO. Исходным значением счетчика цикла является счетчик. Цикл завершается при переходе значения счетчика через границу (в обоих направлениях). Цикл всегда исполняется по крайней мере один раз. Путем использования опреде­ляющего слова DOES> в словах Форта задаются действия периода выполнения. Во время выполнения на стек заносится pfa слова, подлежащего исполнению.

Удаление верхнего элемента стека. Занесение копии верхнего элемента стека в вершину последнего.

293

ELSE

EMIT ( n -> )

EXECUTE ( сfа -> )

FLUSH ( -> )

FORGET ( -> )

FOR TH ( -> )

HERE (->a)

I ( -> n)

IF (f -> )

IMMEDIATE ( -> )

J ( -> n)

Компилирующее cлово. Используется в конструкциях IF-ELSE-TНEN. Слова,располо­женные между ELSE и THEN, выпол­няются в том случае, если флаг для IF ложен.

Вывод n в выходной поток в символьном виде. Выполнение слова, pfa которого находится на стеке. Запись обновленных дисковых буферов во внешнюю память и их освобождение. Выбор очередного слова из входного потока. Забываются все слова, определенные перед этим словом. Если слово зашищено, выдастся аварийное сообщение Контекстный словарь, содержащий стандартные слова Форта.

Занесение в вершину стека очередного доступного адреса (первого свободного адреса в словаре).

Используется в конструкциях DO ... LOOP или DO ... +LOOP для занесения в вершину стека текущего значения счетчика цикла. Компилирующее слово, которое в случае истинности фляга f у

заставит в период-выполнения исполняться слова, следующие непосредственно за IF. В противном случае будут исполняться слова, следующие за ELSE или THEN (если конструкция ELSE отсутствует).

Отмечает последнее определен­ное слово как компилирующее, которое при режиме компиляции будет не компилироваться, а исполняться.

Применяется во вложенных циклах типа DO. Заносит в вершину стека значение счетчика внешнего цикла ( см. I ).

KEY ( -> n)

LATEST ( -> nfa)

LITERAL ( n -> )

LOAD ( n -> ) LOOP

MAX ( nl n2 -> nЗ)

MIN ( nl n2 -> n3)

NEGATE ( n -> -n)

NOT ( nl -> n2)

OR ( n 1 n2 -> n3)

OVER ( nl n2 -> nl n2 nl)

R> ( -> n)

R@ ( -> n)

REPEAT ( -> )

ROT ( nl n2 nЗ -> n2 nЗ nl) SAVE-BUFFERS ( -> )

SPACE ( -> )

Занесение на стек символа из входного потока. Занесение на стек nfa последней созданной статьи. Компилирующее слово, которое в период выполнения вызывает занесение на стек n. Слово для работы с диском. Вызывает интерпретацию блока n. Компилирующее слово, которое в период выполнения увеличивает зна­чение счетчика DO-цикла на единицу. Если полученное значение счетчика выходит за границу, выполнение цикла завершается и начинают исполняться слова, следующие за словом LOOP. В противном случае исполняются слова, следующие за DO. Занесение на стек большего из чисел nl и n2.

Занесение на стек меньшего из чисел nl и n2.

Занесение на стек дополнения до двух от n или отрицательной величины n.

Поразрядное инвертирование nl. Выполнение поразрядной дизъюнкции над nl и n2 с по­лучением nЗ.

Занесение на стек копии вто­рого элемента стека. Перенесение верхнего элемента стека возвратов на стек данных. Копирование верхнего элемента стека возвратов на стек данных. Компилирующее слово. Применя­ется в циклах типа

BEGIN ... WH1LE ... REPEAT для передачи управления на слово, следующее за BEGIN.

Перемещение третьего элемен­та стека в его вершину. Запись на,диск всех обновлен­ных дисковых буферов. Вывод символа пробела (ASCII 32).

STATE

SWAP THEN

TYPE UNTIL

VARIABLE

VOCABULARY WHILE

XOR

( -> pfa)

! nl n2 -> n2 nl)

( a u -> )

( n -> )

nl п2 -> пЗ)

( ->)'

Период-компиляции:

( -> )

период-выполнения:

( -> cfa)

Системная переменная, содержа- щая текущее состояние Форта. Ноль - компиляция, в противном случае - интерпретация. Поменять местами два верхних элемента стека.

Компилирующее слово.применяе- мое в конструкциях IF-THEN или IF-ELSE THEN (см. IF и ELSE). Вывод строки, заданной двумя верхними элементами стека. Компилирующее слово, применяе- мое в конструкциях BEGIN-UNTIL. Если в период выполнения флаг f истинен, исполнение цикла завершается и начинают выполняться слова, следующие за UNTIL. В противном случае выполняются слова, следующие за BEGIN. Определяющее слово для созда- ния переменных. В период выполнения на стек помещает- ся pfa значения этой переменной. Определяющее слово для соз- дания контекстных словарей. Компилирующее слово, применяемое в конструкциях BEgIn-WHILE-REPEA Г Если в период выполнения флаг f истинен, исполняются слова, следующие за WHILE. В противном случае вьшолняются слова, следующие за REPEAT.

Выполнение поразрядного "исключающего или" над п! и п2 с получением пЗ, Компилирующее слово. Переход к состоянию интерпретации. Компилирующее слоро, применяемое внутри определения через двоеточие для компиляции cfa очередного слова из входного потока. В период выполнения этот cfa заносится на стек. Данное слово при интерпретации выполняется как слоао ' . Переход к состоянию компиляции.

Приложение Г

ИНСТРУМЕНТАЛЬНЫЕ СРЕДСТВА ПОСТРОЕНИЯ ЭКСПЕРТНЫХ СИСТЕМ

И нструментальные средства (ИС) представляют собой пакеты программ, облегчающие процесс построения экспертных систем. Они включают в себя блок логического вывода, пользовательский интерфейс и про "рамму приобретения знаний, позволяющую поль­зователю пополнять систему знания!

Каждое инструментальное средство имеет свои особенности,

что позволяет наиболее эффективно его применять только в какой-то одной прикладной области. К выбору инструментального сред­ства для построения конкретной экспертной системы нужно подхо­дить очень внимательно.

В настоящем приложении перечислены наиболее распростра­ненные инструментальные средства построения экспертных систем.

Название ЭС (разработчик)

Модель представ- ления знаний

Язык реализации (тип компьютера)

Область приложений

Цена (дол.)

1

2

3

4

5

Advisor

(Ultimate Media Inc:)

Правила

Ассемблер (Apple, Commodore 64)

Обучение

99.50

Advice Language/X

(Univ. of Edinburgh, Scofl

Правила

Паскаль (Apple)

Распределение аудиторий

99.50

Duck

(Smart System Technology)

Правила немоно- тонный ВЫ90Д

(Apoiio, Symbolics, VAX)

Организационное управление

99.50

ESP/Advisq>

(Expert Systems Intern.)

Правила

Пролог (IBM PC)

Разработка небольших ЭС

100

EXPERT

(Rutgers University)

Правила

Фортран

Фармакологи*, диагности-

ка ревматич. заболеваний

6000

EXPERT-2

(Mountain View Press)

Правила

Форт

(IBM PC, Apple)

Разработка небольших ЭС

895

Expert-Ease (Jeffrey Perrone & Asscc.)

Примеры решений

(!ВМ PC, DEC, Victor 9000)

Разработка небольших ЭС

695

ExperOPS V (ЕхрегТеШделсе)

Правила

ExpertLlSP (Macintosh)

Разработка небольших ЭС

325

>

EXSYS (Exsys Inc.)

Правила

(ISM PC)

Разработка небольших ЭС

295

INS1GHT-1 (Leve)5 Research)

Правила

Паскаяь (IBM PC, DEC, Victor 9000)

Обучение

95

INSJGHT-2 (Levei 5 Research)

Правила

Паскаль (!BM PC, DEC, Victor 9000)

Обучение

485

KDS Development System (KDS)

Правила

Ассемблер (iBM PC)

эоттка небольших ЭС

795

т . ч

Knowledge Craft (Carnegie Group Inc. 5

ФрейК"-- правила

Common LISP (DEC VAX'

Управл-. родством

50000

О


Know'eage Engineering Environment - KEE (intelliCorpi

Knowledge Engineering System - kES (Software А Я P)

LOOPS *■

(Xerox Palo Alto Research)

M.I

(Teknowledge Inc.)

MicroExpert

(McGraw Hill Book Co.)

Nexpert

(Neuron Data Inc.)

OPS5 (Carnegie-Mellon Univ.)

OPSSe

(Veres Inc., San Diego)

1

2

3

4

5

0PS5+ (Arteiligenee inc.)

Правила

(IBM PC)

Разработка больших ЭС

3000

Persona! Consultant (Texas Instruments)

Правила

IQLISP (Tl Professional & MS-DOS)

Разработка больших ЭС

950

Personal Consultant Pius (Texas instruments)

Фреймы и правила

iQLISP (Tl Professional)

Разработка небольших ЭС

3000

Rule-Master (Radian Corporation)

Правила

Си (IBM XT/AT, VAX, ЭВМ С ОС UNIX)

Диагностика и управление, военное дело, страхование

5000- 25000

SeRlES-PC (SRI Internationa!)

Правила

IQLISP (IBM PC)

5000

S.1 {Teknowledge Inc.)

Правила

Лисп (DEC VAX,Xerox)

70000

TIMM (General Research Corp.)

Правила

Фортран (IBM, DEC VAX, IBM PC)

Помощь пилоту вертолета во время боя

39500

Фреймы
Правила

Фреймы Правила Правила Правила Правила Правила

Лисп

(Symbolics 3600, Xerox П00)

IQLISP (IBM PC, DEC VAX)

INTERLISP "!X 1100)

Пролог (IBM PC)

Паскаль

(IBM PC, Apple)

(Macintosh)

Лисп

(VAX 11/780)

ZetaUSP (Symbplics 3600)

Vkr.aan ик>;.ен.::рия и f, ; 60000

4000

300

Демонстрационный прототип

'азработка больших ЭС 5000

Разработка небольших ЭС, 49.50 обучение

5000

Определение конфигурации ЭВМ

3000

MACSYMA (MIT)

Лисп (KL-1O)

PROSPECTOR (SRI International)

KAS (Семантическая сеть с правилами)

Лисп

PUFF (Stanford University)

EMYCIN (Правила)

Лисп (PDP-11)

MYCIN (Stanford University)

EMYCIN ■ (Правила)

Лисп (PDP-11)

XCON, XSEL (Carnegie-Mellon Univ. & DEC)

OPS5 (Правила)

(DEC VAX)

(Rutgers University «..Helena

EXPERT

Фортран

Laboratories) (правила)

Символьные преобразова- 1980 ния математических выра- жений

Геология 1978

Легочные заболевания 1981

Лечение менингита; 1975

диагностика инфекци- онных заболеваний

Определение конфигу- 1978

рации компьютерных систем типа VAX

Анализ результатов 1980

электрофореза

Алгоритм. Эффективная конечная процедура.

Альфа бета алгоритм. Стратегия поис-т решения с сокраще­ нием перебора за счет отбрасывания заведомо бесперспективных ветвей.

Ассоциативный список. Представление списковой структуры, при которой в ячейках связи хранятся пары атрибут-значение (А-3 - пары), называемые также А-списками.

Атом. Основной элемент данных в Лиспе. Используется для представления объектов. Как атом, так и списки являются сим­вольными выражениями.

Атрибут. Некоторое свойство объекта. Например, в факте "Цвет слона - серый" понятие слон - это объект, цвет - атрибут, а се-рый - значение.

Атрибут-значение (А-3). Способ представления факту ал ьного знания, при котором атрибутам могут присваиваться значения. Например, в факте "Животное имеет волосяной покров" ат­рибутом служит животное, а его значением является имеет_ волосяной_покров.

База данных. В системе, основанной на знаниях, этот термин, как правило, означает рабочую память (см. рабочая память).

База знаний. Часть системы, основанной на знаниях, которая состоит из фактов и правил. В продукционной системе она состоит из базы правил и рабочей памяти.

Булевские операторы. Операторы исчисления предикатов. К ним относятся операторы И, ИЛИ, НЕ.

Висячие ссылки. Ситуация в Лиспе при распределении памя­ти, когда некоторая ячейка считается свободной, а на самом деле занята. При таком положении возможны "висячие" указатели из активных ячеек (см. сборка мусора).

Внешний интерпритатор. Интерпретатор Форта, взаимодействующий с пользователем.

Внутренний интерпретатор. Часть виртуальной Форт- машины, интерпретирующая шитый код.