Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
tatra_v2.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
216 Кб
Скачать
☆

Алгоритм применения правил и выбора допустимого множества решений

Входные данные:

ИмяАлг – поле с именем алгоритма, по которому выбирается множество решений;

КортПр – массив, содержащий описание объекта, относительно которого принимается множество решений, в виде кортежа двоичных признаков;

Буффер – поле памяти, которое отводится под хранение имени алгоритма и самого алгоритма, по которому выбирается множество решений. Имя алгоритма хранится в первых восьми байтах, далее размещается алгоритм;

РазБуф – размер поля памяти, которое отводится под хранение алгоритма, плюс 8 байт, которые отводятся для хранения имени алгоритма.

Выходные данные:

МнРеш – поле памяти, которое отводится под хранение допустимого множества решений. Первые слово в поле отводится под хранение количества выбранных решений, затем записываются номера выбранных решений;

РазРеш – размер поля памяти, которое отводится под хранение допустимого множества решений.

Замечание: Для понимания работы алгоритма необходимо использовать описание структуры записей, хранящих данных о правилах выбора решений. Следует обратить внимание на то, что все вспомогательные данные (номера решений, признаки конца предложений, системы предложений, конец алгоритма) имеют отрицательный знак. Предложения, которые хранят правила выбора решений, в знаковом разряде имеют нуль.

В алгоритме используются следующие обозначения:

НР - номер решения;

КП - признак конца предложения;

КС - признак конца системы предложений;

КА - признак конца алгоритма (таблицы).

Начало

Проверка наличия в памяти алгоритма и считывание его из базы знаний

Отчистка имени алгоритма, заданного в поле ИмяАлг, от постоянных символов. Посторонние символы заменяются пробелами

да

В поле Буффер есть алгоритма с заданным именем?

нет

Занесение в поле ключей имени алгоритма из поля ИмяАлг и считывание алгоритма из базы знаний ТАТРА. Поле ключей содержит 25 символов. Структура поля:

ТАТРАппп“имя алгоритма – 8сим”PREDIппп

п – пробел

нет

Алгоритм считан?

да

Аварийное завершение работы: “Алгоритм “имя алгоритма” не считан из базы знаний”

Занесение в поле Буффер имени алгоритма

Номер слова в поле Буффер должно соответствовать последнему слову, отводимому под имя алгоритма

А

Конец

А

Проверка правила

Взять следующее слово в поле Буффер

нет

В поле Буффер номер решения?

НР – это отрицательное число.

да

Аварийное завершение работы: “Сбой предиката алгоритма “имя алгоритма””

Д

Запомнить номер решения

Сравнить каждое слово предложение алгоритма (поле Буффер - a) с соответствующим словом КортПр - b по правилу: (а&b)b

да

Результат равен нулю (т.е. решение выбирается)?

нет

Нарастить счетчик выбранных решений в поле МнРеш

B

C

Конец

B

Поиск нового решения

Взять следующее слово в поле Буффер

да

В поле Буффер конец алгоритма (т.е. = КА)?

нет

да

В поле Буффер конец решения (т.е. = КС)?

нет

да

В поле Буффер конец предложения (т.е. = КП)?

нет

Аварийное завершение работы: “Сбой предиката алгоритма “имя алгоритма””

Пропустить все положительные слова поля Буффер

B

А

Конец

С

Поиск нового предложения или решения

Взять следующее слово в поле Буффер

да

В поле Буффер конец алгоритма (т.е. = КА)?

нет

да

В поле Буффер конец решения (т.е. = КС)?

нет

да

В поле Буффер конец предложения (т.е. = КП)?

нет

С

Д

А

Конец

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]