Асимптотичний аналіз
Цей термін відноситься до аналізу роботи алгоритму за припущення, що дані, на яких працює алгоритм ( вхідні дані ), кажучи простою мовою, "достатньо великі, щоб їх збільшення не змінило висновок". Хоча точний розмір входу не потрібно вказувати (нам потрібно тільки верхня межа), набір даних , сам повинен бути вказаний.
Зауважимо, що досі ми говорили лише про метод аналізу; ми точно не вказали, яку величину ми аналізуємо (складність часу? складність простору?), і також не вказали, яка метрика нас цікавить (найгірший випадок? найкращий випадок? середній?).
На практиці термін асимптотичний аналіз зазвичай позначає складність часу верхньої межі алгоритму, тобто найгірший випадок, виміряний загальним часом роботи, який представлений позначенням великих О (наприклад, може бути алгоритм сортування O(nlogn)
).
Амортизований аналіз
Цей термін позначає аналіз продуктивності алгоритму, заснований на конкретній послідовності операцій, яка націлена на найгірший сценарій - тобто амортизований аналіз означає, що показник є найгіршим показником (хоча в ньому все ще не сказано, яка величина вимірюється ). Для проведення цього аналізу нам потрібно вказати розмір вхідних даних, але нам не потрібно робити жодних припущень щодо його форми.
Кажучи простою мовою, амортизований аналіз - це вибір довільного розміру для вхідних даних, а потім "відтворення" алгоритму. Щоразу, коли має бути прийнято рішення, яке залежить від вкладених даних, йдеться найгіршим шляхом¹. Після завершення роботи алгоритму ми ділимо обчислену складність на розмір вхідних даних для отримання кінцевого результату.
Примітка: Якщо бути точним, найгірший шлях, який теоретично можливий . Якщо у вас є вектор, який динамічно подвоюється в розмірі кожного разу, коли його потужність вичерпується, "найгірший випадок" не означає припускати, що йому доведеться подвоюватись при кожному вставці, оскільки вставки обробляються як послідовність. Нам дозволено (і справді потрібно) використовувати відомий стан для математичного усунення якомога більшої кількості "ще гірших" випадків, навіть якщо введені дані залишаються невідомими.
Найголовніша відмінність
Критична різниця між асимптотичним та амортизованим аналізом полягає в тому, що перший залежить від самого введення, тоді як другий залежить від послідовності операцій, які буде виконувати алгоритм.
Тому:
- асимптотичний аналіз дозволяє стверджувати, що складність алгоритму, коли йому дається найкращий / найгірший / середній випадок введення розміру, що наближається до N , обмежена якоюсь функцією F (N) - де N - змінна
- амортизований аналіз дозволяє стверджувати, що складність алгоритму, коли йому вводять невідомі характеристики, але відомий розмір N не гірше значення функції F (N) - де N - відоме значення