
- •Глава 1. Анализ процессов проектирования алгоритмов
- •1.1. Актуальность создания системы проектирования алгоритмов
- •1.2. Анализ форм представления алгоритмов
- •1.3. Анализ процесса проектирования алгоритмов
- •1.4. Документы описания алгоритма
- •1.5. Определение системы программирования татра
- •Раздел 2. Языки описания алгоритмов
- •4.1. Язык заполнения сводной документа описания признаков
- •4.2. Язык описания правил выбора решений (язык описания таблицы предикатов)
- •4.3. Язык описания решений задачи
- •5. Дополнительные возможности описания алгоритмов
- •5.1. Оптимизация объема памяти, занимаемой алгоритмом (язык описания таблицы предикатов)
- •5.2. Язык заполнения таблицы признаков
- •5.3. Язык описания правил выбора решений без ссылки на сводный документ описания признакового пространства
- •6. Организация ввода алгоритмов в базу данных
- •6.1. Ввод данных в пакетном режиме
- •Int filtr(long n, long a, short l, short *I, short *j, long *m, int RazM, long *k, int RazK) ,
- •Int predi( long n, long k, long m, int RazM, long r, int RazM) ,
- •Int resch(long n, short f, long a, short l, short I, short j, long m, int RazM) ,
- •7.2. Методика проектирования программы вычисления признаков
- •7.3. Методика проектирования программы оформления решения
- •8. Организация хранения алгоритмов в базе данных
- •7.2. Организация информационных массивов в системе программирования tatra
- •8.1. Структура массива мо
- •8. Состав программного обеспечения
5. Дополнительные возможности описания алгоритмов
В этом разделе описываются такие возможности описания алгоритмов, которые позволяют
оптимизировать объем занимаемой алгоритмом памяти,
задать пространство признаков конкретного алгоритма,
описать таблицу предикатов без задания состава и описания признакового пространства, связав его тем самым непосредственно с заданием пространства признаков конкретного алгоритма (определенного под тем же именем, что и предикат) и т.д.
5.1. Оптимизация объема памяти, занимаемой алгоритмом (язык описания таблицы предикатов)
Язык описания правил выбора решений позволяет разработчику программной системы оптимизировать объем занимаемой предикатом памяти. Для этого разработчик при описании правил выбора решений принудительно задает интервалы изменения признаков алгоритма и их градации. Сделать это можно задавая данные о признаках при описании правил выбора решений. Таблица предикатов в этом случае описывается следующим образом:
<таблица предикатов>::= <справка><описание признаков>(<данные о признаках>) <тело условия>/
Справка, описание признаков и тело условия задается по правилам, описанным в разделе 4.2.
<данные о признаках>::= <данные о признаке><данные о признаке><данные о признаках>
<данные о признаке>::=<разбиение признака> <минимальное значение признака> <максимальное значение признака>
Порядок задания данных о признаках должен соответствовать порядку следования признаков в правилах выбора решений.
<разбиение признака> ::= Е=<действительная константа>;Е=<целая константа>;
Разбиение - это положительное число.
<минимальное значение признака>::= А=<действительная константа>;А=<целая константа>;
<максимальное значение признака>::= B=<действительная константа>;B=<целая константа>;
Поясним введенные понятия. Разбиение признака вводится с целью экономии памяти в вычислительной системы при хранении алгоритмов во внутренней форме представления правил выбора решений. С этой целью меняется шаг наращивания значения признака (т.е. разбиение ) по сравнению с внешним представлением. Например, на внешнем языке признак "длина детали" меняется с шагом 0.01, а во внутренней форме этот шаг может быть равен и 0.01, и 0.1, и 1.0 и т.д. Разбиение признака вычисляется по условиям, которые записаны в таблице предикатов в соответствующем данному признаку столбце, следующим образом:
если при задании условия хотя бы в одной строке признак задан перечислением, например:
= А , В , С , ... , ALPHA; или # А , В , С , ... , ALPHA; , то разбиение E = P,
где Р - минимальная физическая градация.
во всех других случаях разбиение определяется как наибольший общий делитель разностей граничных значений признаков, упорядоченных в порядке возрастания.
Рассмотрим понятия минимальное и максимальное значения признаков. По разбиению и условиям , записанным в таблице предикатов, вычисляются минимальное и максимальное значения признаков по следующему правилу:
если при задании условия хотя бы в одной строке признак задан перечислением, например:
= А , В , С , ... , ALPHA; или # А , В , С , ... , ALPHA; , то минимальное и максимальное значения признака равны
А = min{<граничные значения по всему столбцу>} - P
В = max{<граничные значения по всему столбцу>} + P
Граничные значение признака по каждому условию определяется по правилу, которые приведены в табл. 1.
во всех других случаях минимальное и максимальное значения признака определяется следующим образом:
все условия приводятся к виду <=A, тогда
А = min{<граничные значения по всему столбцу>}
В = max{<граничные значения по всему столбцу>} + Е
Граничные значение признака по каждому условию определяется по правилу, которые приведены в табл. 1.
Пример 1: Первый столбец таблицы предикатов записан следующим образом:
[0.32, 1.4]
[0.6, 1.25]
[0.6, 2.5]
[1.8, 6.3]
Упорядоченные граничные значения признака:
0.32, 0.6, 0.7, 1.26, 1.41, 1.81, 2.51, 6.31
Разности: 0.28, 0.1, 0.56, 0.4, 0.7, 3.8
Наибольший общий делитель, а иначе разбиение E = 0.01. Минимальное значение признака A = 0.31 и максимальное значение признака В = 6.31.
Пример 2: Пусть таблица предикатов будет иметь вид представления на рис. 7. Все граничные значения признака приведем к виду <=А. Тогда граничные значения для первого признака равны: 4, 5, 6, 7;
Для второго признака: 30., 35., 40.0
Тогда разбиение (наибольший общий делитель) для первого признака Е =1, для второго - Е = 5.0. Минимальные и максимальные значения для первого признака А = 4 и В = 8, для второго признака A = 30.0 и В = 45.0.