Асимптотический анализ оценки сложности алгоритмов
Для заданного алгоритма точное определение величины может быть сложно или вообще невозможно, так как:
1. Количество операторов, выполняемых алгоритмом при решении данной задачи различно в зависимости от того, какая алгоритмическая модель применяется при реализации алгоритма.
2. Операторы неравносильны друг другу по времени их выполнения, затрачиваемым объемам памяти и т.д., что зависит так же от особенностей конкретной машины.
Поэтому в качестве основной меры эффективности алгоритма принимается асимптотическая временная сложность в худшем случае.
Определение.1 Пусть и – функции, определенные на некотором бесконечном множестве значений аргумента , .
Говорят, что имеет верхний порядок роста при и записывают , если .
Требования определения 1 означают, что начиная с некоторого, достаточно большого по модулю выполняется , т.е. график функции лежит между графиками и .
По определению 1 запись может означать любую функцию , удовлетворяющую условиям определения 1.
Определение.2Говорят, что алгоритм имеет эффективность (т.е. асимптотическую временную сложность в худшем случае) или порядка , если для него .
Пример 1.Предположим, известна точно временная сложность . Покажем, что . Согласно определению 1, выбирая и , получаем .
Неравенство верно т.к., например, – убывающая функция натурального аргумента и имеет наибольшее значение при .
Таким образом, .
Согласно определению 2, говоря об эффективности алгоритма, достаточно указать лишь верхний порядок роста его функции . При этом игнорируется мультипликативная константа , из неравенства в определении 1. То есть, например, с точки зрения определения 2 алгоритмы, для которых и имеют одинаковую эффективность .
Это оправдано, так как функция большей степени, чем константа , определяет относительное увеличение размера задачи, решаемой данным алгоритмом при увеличении ресурса времени. (см. далее пример 2 и замечание 1).
Однако, при сравнении времени работы различных алгоритмов над задачами небольшого размера n константы могут играть важную роль (см. пример 3).
Пример 2. Предположим, известны точно временные сложности алгоритмов , решающих некоторую задачу.
В таблице показан максимальный размер задачи , решаемой алгоритмом за время . При этом находится из условия .
Например, .
Аналогично находится максимальный размер задачи из условия .
Таким образом, за счет десятикратного увеличения времени работы (или 10-кратного повышения быстродействия компьютера) при использовании алгоритма максимальный размер решаемой задачи увеличивается в раз.
Алгоритм | Временная сложность | Эффективность | max объём задачи решаемой за | max объём задачи | Увеличение max объема |