Обычно алгоритмы классифицируют в соответствии с их временной сложностью. Можно выделить следующие их типы:
1. Постоянный – сложность оценивается как O(1).
2. Линейный – оценка равна O(n).
3. Квадратный – O(n2)
4. Кубический, полиноминальный – O(n3),O(nm).
5. Экспоненциальный – O(tp(n)), t- константа, p(n) – некоторая полиномиальная функция.
6. Факториальный - O(n!). Обладает наибольшей временной сложностью среди всех известных типов.
С ростом n временная сложность может стать настолько огромной, что это повлияет на практическую реализуемость алгоритма. Рассмотрим таблицу, в которой сравнивается время выполнения алгоритмов разных типов при n = 106, при условии, что единицей времени для компьютера является микросекунда.
Тип Сложность Кол-во операций Время при 106 операций в сек.
Постоянные O(1) 1 1мкс
Линейные O(n) 106 1 с
Квадратичные O(n2) 1012 11.6 дн.
Кубические O(n3) 1018 32000 лет
Экспоненциальные O(2n) 10301030 в 10301006 раз больше времени существования Вселенной
Похожие записи
No user прокомментировали сообщение
Оставить комментарий