
1.4 Основні параметри, що характеризують роботу алгоритму
Для оцінки ефективності
роботи алгоритму необхідно мати певні
критерії. Одним із таких критеріїв –
час роботи алгоритму, але він не єдиний.
Іншою важливою характеристикою алгоритму
є асимптотична складність
алгоритму. Як раз
асимптотична складність алгоритму
визначає у підсумку розмір задачі, яку
можна розв’язати за допомогою такого
алгоритму. Якщо алгоритм обробляє вхідні
дані розміром
за
час
,
де
- деяка постійна величина, то складність
такого алгоритму буде
(читається «порядку
).
Можна подумати, що ріст швидкості обчислень знімає проблему розробки ефективних алгоритмів. Насправді маємо протилежну ситуацію: саме складність алгоритму визначає то збільшення розміру задачі, яке можна досягти зі збільшенням швидкодії ЕОМ.
Допустимо, що у нашому
розпорядженні є п’ять алгоритмів
з наступними складностями:
-
Алгоритм
Складність алгоритму
Складність алгоритму – це
кількість кроків, які необхідно виконати,
щоб досягти заданого результату. Часова
складність алгоритму - це затрати часу
на обробку входу розміром
.
Допустимо, що затрати часу на виконання
однієї операції -
с.
Тоді асимптотична складність
алгоритму -
.
При часовій складності
алгоритм
може обробити масив розміру, який
визначиться за формулою
.
Для
с і
с
розмір вхідного масиву
,
а для алгоритму
і відповідно
,
тобто алгоритм
за одну секунду може обробляти масив
розмірністю не більше десяти.
Допустимо, що швидкодія ЕОМ
збільшилась у десять раз. Тоді
.
У табл. 1.1 показано як виростуть розміри
задач, які можна розв’язати за одну
секунду одну хвилину і за одну годину.
Таблиця 1.1 – Границі розмірів задач, що визначаються швидкістю росту складності
Алгоритм |
Часова складність |
Максимальний розмір задачі |
||
1 с |
1 хв. |
1 год. |
||
|
|
|
|
|
|
|
|
|
|
|
|
100 |
775 |
|
|
|
22 |
85 |
330 |
|
|
14 |
20 |
26 |
Замість ефекту збільшення швидкості обчислень розглянемо ефект від вибору дієвішого алгоритму.
Якщо за базу порівняння вибрати 1 хв., то, замінивши на можна розв’язати задачу у 46 раз швидше. У той же час десятикратне збільшення швидкості обчислень дає виграш у часі для алгоритму лише у два рази.
Таким чином, ефективні алгоритми дають значно більші виграші у часі, ніж збільшення швидкодії обчислювальних машин.