Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Измеримые свойства алгоритмов




Если задана реализация алгоритма на некотором языке можно идентифицировать все операнды, определенные как переменные или константы, используемые в этой реализации. Аналогично можно идентифицировать все операторы, определенные как символы или комбинации символов, влияющие на значение или на порядок операндов. Исходя из идентификации операторов и операндов, можно определить ряд измеримых категорий, обязательно присутствующих в любой версии любого алгоритма. Они определяются метриками, с помощью которых могут быть получены основные характеристики качества программ.В состав измеримых свойств любого представления алгоритма (или программы) могут быть включены следующие метрические характеристики:

- h1 - число простых (уникальных) операторов, появляющихся в данной реализации;

- h2 - число простых (уникальных) операндов, появляющихся в данной реализации;

- N1 - общее число всех операторов, появляющихся в данной реализации;

- N2 - общее число всех операндов, появляющихся в данной реализации;

- f1j - число вхождений j-го оператора, где j = 1,2,3... h1;

- f2j - число вхождений j-го операнда, где j = 1,2,3... h2.

 

Отправляясь от этих основных метрических характеристик для программы, удобно определить:

словарь h h = h1 + h2

и длину N N = N1 + N2

реализации программы.

В соответствии с данными определениями должны выполняться следующие три соотношения

Рассмотрим пример вычисления введенных метрик для программы, реализующей широко известный алгоритм Евклида нахождения наибольшего общего делителя (НОД) двух целых чисел. Возможные варианты программы на языках Паскаль приведены в таблице.
Программа на Паскале  
Function GCD (a,b: integer): integer; Label L1, L2; Var G, R: integer; Begin If (a=0) then L1: begin GCD:= b; return end; If (b=0) then Begin GCD:= a; return end; L2: G:= a/b; R:= a - b*G; If (R=0) GOTO L1; a:=b; b:=R; GOTO L2; End.

 

Результаты подсчета числа типов операторов и операндов и их общего количества сведены в таблицу. При подсчете использовались следующие соображения.

В отношении классификации операторов интуитивно ясно, что символы:

:= - знак присваивания;

= - знак равенства (или знак присваивания в программе на Си);

-- - знак вычитания;

/ -знак деления;

* - знак умножения

соответствуют их обычному определению.

Оператор I F1i Операнд J F2j
;     GCD    
:=     G    
=     R    
() или begin end     A    
If     B    
/          
*          
-          
GOTO L1          
GOTO L2          
Function GCD          
Return          
Пара, состоящая из открывающих и закрывающих скобок (), { } классифицируется как один оператор группировки. Поскольку пара слов Begin... End выполняет такую же группирующую функцию, она классифицируется как такой же оператор. Метки L1 и L2 - не переменные и не константы, поэтому они не являются операндами. Следовательно, они должны быть операторами или их составными частями. Комбинация GO TO и метки L1 определяет ход выполнения программы путем задания для нее счетчика или указателя кода; эта комбинация классифицируется как один оператор. Неиспользуемая метка трактуется всего лишь как комментарий, поэтому ее присутствие в программе необязательно. Ограничитель; ( точка с запятой) также определяет ход выполнения программы (простым продвижением счетчика), что позволяет классифицировать точку с запятой как оператор. По той же причине все управляющие структуры, например IF, IF... THEN... ELSE, DO... WHILE, классифицируются как операторы. Указатель вызова функции или оператор процедуры также являются операторами. Помимо того, возможность задания помеченных участков и введение новых функций устраняют какие-либо ограничения на рост величины h1 (числа типов операторов), которые в противном случае могли бы быть наложены набором команд машины или разработкой языка.

Соответственно, измеримые метрики программы на Паскале будут равны

η1 = 12; N1 = 40; η2 = 6; N2 = 21; η = 18; N = N1 + N2 = 61; 58,53




Поделиться с друзьями:


Дата добавления: 2014-11-16; Просмотров: 932; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.