Вкрай кажучи, часова складність - це спосіб узагальнити те, як кількість операцій або час виконання алгоритму зростає зі збільшенням розміру вводу.
Як і більшість речей у житті, коктейль може допомогти нам зрозуміти.
O (N)
Коли ви приїдете на вечірку, вам потрібно потиснути руку всім (зробити операцію над кожним предметом). Зі збільшенням кількості відвідувачів Nзбільшується час / робота, яка потребує вас, щоб потиснути руку кожному O(N).
Чому O(N)і ні cN?
Час, який потрібно, щоб потиснути руку людям, є різним. Ви можете це оцінити середньою мірою і фіксувати це постійно c. Але основна операція тут - потиснути руку всім - завжди була б пропорційна O(N), незалежно від того, що cбуло. Під час дискусії про те, чи варто їхати на коктейль, нас часто більше цікавить той факт, що нам доведеться зустрітися з усіма, ніж у детальних деталях того, як виглядають ці зустрічі.
O (N ^ 2)
Ведуча коктейлю хоче, щоб ви пограли в дурну гру, де всі зустрічаються з усіма іншими. Тому ви повинні зустріти N-1інших людей, і тому, що наступна людина вже познайомилася з вами, вони повинні зустріти N-2людей тощо. Сума цієї серії становить x^2/2+x/2. Зі збільшенням кількості відвідувачів x^2термін швидко збільшується , тому ми просто кидаємо все інше.
O (N ^ 3)
Ви повинні зустрітися з усіма іншими, і під час кожної зустрічі ви повинні говорити про всіх інших у кімнаті.
O (1)
Ведучий хоче щось оголосити. Вони випивають келих і голосно розмовляють. Кожен їх чує. Виявляється, неважливо, скільки там відвідувачів, ця операція завжди займає однакову кількість часу.
O (журнал N)
Ведучий розклав усіх за столом в алфавітному порядку. Де Дан? Ви вважаєте, що він повинен бути десь між Адамом та Менді (звичайно, не між Менді та Заком!). Враховуючи це, він між Джорджем і Менді? Ні. Він повинен бути між Адамом та Фредом та між Сінді та Фредом. І так далі ... ми можемо ефективно знайти Дана, переглянувши половину, а потім половину цього набору. Зрештою, ми дивимось на O (log_2 N) осіб.
O (N журналу N)
Ви можете знайти, де сісти за стіл, використовуючи алгоритм, наведений вище. Якби велика кількість людей приходила до столу, по одному, і все це робило, це займе час O (N log N) . Виявляється, як довго потрібно сортувати будь-яку колекцію предметів, коли їх потрібно порівнювати.
Найкращий / гірший випадок
Ви приїжджаєте на вечірку і вам потрібно знайти Ініго - скільки часу це займе? Це залежить від того, коли ви приїдете. Якщо всі розмолоті, ви потрапили в найгірший випадок: це займе O(N)час. Однак якщо всі сідають за стіл, це займе лише O(log N)час. Або, можливо, ви можете скористатися потужністю кричущого хазяїна, і це займе лише O(1)час.
Припускаючи, що хост недоступний, можна сказати, що алгоритм пошуку Inigo має нижню O(log N)і верхню межу O(N), залежно від стану учасника, коли ви приїдете.
Простір та спілкування
Ті ж ідеї можна застосувати для розуміння того, як алгоритми використовують простір або комунікацію.
Кнут написав приємний документ про колишню назву "Складність пісень" .
Теорема 2: Існують довільно довгі пісні складності O (1).
ДОКАЗАННЯ: (завдяки Кейсі та Sunshine Band). Розглянемо пісні Sk, визначені (15), але з
V_k = 'That's the way,' U 'I like it, ' U
U = 'uh huh,' 'uh huh'
для всіх k.