Основные правила анализа алгоритмов
Основным критерием эффективности алгоритма является его временная сложность. При нахождении времени выполнения итеративных и рекурсивных алгоритмов используют различные методы и приемы, опирающиеся на некоторые базовые принципы.
Пусть и
‑ время выполнения двух фрагментов
и
,
имеет степень роста
, а
‑
. Тогда
, т.е. время последовательного выполнения фрагментов
и
, имеет степень роста
.
Правило сумм, данное выше, используется для вычисления времени последовательного выполнения программных фрагментов с циклами и ветвлениями. Пусть есть три фрагмента с временами выполнения соответственно ,
и
(под обозначением
мы будем понимать двоичный логарифм). Тогда время последовательного выполнения всех трех фрагментов имеет порядок
, это то же самое, что
. В общем случае время выполнения конечной последовательности фрагментов алгоритма, без учета констант, имеет порядок фрагмента с наибольшим временем выполнения. Иногда возможна ситуация, когда порядки роста времен нескольких фрагментов несоизмеримы (ни один из них не больше, чем другой, но они и не равны). Для примера рассмотрим два фрагмента с временем выполнения O(f(n)) и O(g(n)), где
В данном случае правило сумм можно применить непосредственно и получить время выполнения , т.е. п4 при п четном и п3, если п нечетно. Из правила сумм также следует, что если
для всех п, превышающих п0, то выражение
эквивалентно
. Например,
то же самое что
.
Правило произведений заключается в следующем. Если и
имеют степени роста
и
соответственно, то произведение
имеет степень роста
. Из правила произведений следует, что
эквивалентно
, если с — положительная константа. Например,
эквивалентно
.