Алгоритмическая сложность
Алгоритмическая сложность связана с тем, насколько быстро или медленно работает конкретный алгоритм. Мы определяем сложность как числовую функцию T(n) - время против входного размера n. Мы хотим определить время, затраченное алгоритмом, не завися от деталей реализации. Но T(n) зависит от реализации. Данный алгоритм будет занимать различное количество времени на одних и тех же входах в зависимости от таких факторов, как: скорость процессора, набор команд, скорость диска, версия и тип компилятора и т. д. Обходной путь - асимптотически оценивать эффективность каждого алгоритма. Мы будем измерять время T(n) как количество элементарных "шагов" (определенных любым образом), при условии, что каждый такой шаг занимает постоянное время. Рассмотрим два классических примера: сложение двух целых чисел. Мы добавим два целых числа цифра за цифрой (или бит за битом), и это определит "шаг" в нашей вычислительной модели. Поэтому мы говорим, что сложение двух n-битных целых чисел