V* = (2+ h2*) log2( 2+ h2*) , (2.4)
где h2* должно представлять собой число различных входных и выходных параметров.
Из уравнения (3.4) следует, что потенциальный объем V* любого алгоритма не должен зависеть от языка, на котором он может быть выражен. Если h2* расценивается как число единых по смыслу (неизбыточных) операндов, то V* оказывается наиболее полезной мерой содержания алгоритма.
Вернемся к примеру программы для алгоритма Евклида и определим его объем для программ на Паскале и СИ.
Паскаль: V =N * log2 h = 61* log2 18 = 254.4 бита.
СИ: V =N * log2 h = 55* log2 18 = 224.8 бита.
Чтобы найти потенциальный объем, нам нужно подсчитать число требуемых входных и выходных параметров. В данном случае это А, В и GCD, так что h2*=3. Следовательно, потенциальный объем:
V* = (2 +h2*) log2( 2 + h2*) = (2+3) log2(2+3) = 11,6 бита
Как уже упоминалось выше, при переводе алгоритма с одного языка на другой его потенциальный объем V* не меняется, но действительный объем V увеличивается или уменьшается в зависимости от развитости рассматриваемых языков. Однако легко заметить, что не может быть гладкого перехода от выражения на потенциальном языке, для которого V = V* , к любому менее развитому языку, для которого V > V*. Такой резкий переход обусловлен тем, что для потенциального языка N*= h* , в то время как для всех других языков применяется уравнение длины и N > h.
Лекция 3. Уровень программ. Интеллектуальное содержание программы.
1. Уровень программы.
Понятие уровня программы известно с тех пор, как первые «языки высокого уровня» получили свое название. Однако, прежде чем это понятие сможет применяться в науке, оно должно быть выражено количественно или приведено к измеримому виду, так как в противном случае невозможно определить изменения уровня разных выражений какого либо алгоритма.
Прежде, чем вводить метрическую характеристику уровня программы, необходимо заметить, что уровень языка и уровень программы являются разными понятиями, хотя и тесно связанными. Функциональное соотношение между ними и способы измерения уровня языка будут рассмотрены позднее. Сейчас ограничимся измерением уровня отдельных программ. Ранее выведенные выражения для определения объема V программы и потенциального объема V* подсказывают простой метод количественного выражения данного понятия. Если записать уровень L программы, являющейся реализацией какого либо алгоритма, как
; (3.1)
то лишь наиболее сжатое выражение , какое только возможно для алгоритма, будет иметь уровень, равный единице.
Более объемные реализации будут иметь меньшие значения уровня, так что L£1.
Перестроив выражение (3.1) и выделив независящий от реализации член получим
Do'stlaringiz bilan baham: |