ASD_Lecture02
.pdfТеорія алгоритмів
Загальні правила
•Мультиплікативні константи можуть бути опущені: 14n2 заміняються на n2.
•na росте швидше за nb для a > b: n2 домінує n
•Будь-яка експонента домінує над будь-яким поліномом: 3n росте швидше n5.
•Аналогічно будь-який поліном домінує над будьяким логарифмом: n росте швидше за (log n)3. З цього також випливає, наприклад, що n2 домінує n log n.
Лекція 2
Теорія алгоритмів
Сталий час: O(1)
Сталий час роботи не залежно від розміру задачі.
1.Звертання до пам’яті комп’ютера
2.Пошук в масиві
3.Очікуваний час пошуку в хеші
Лекція 2
Теорія алгоритмів
Лінійне зростання: O(N)
Кількість операцій пропорціна кількості вхідних даних, наприклад, подвоєння розміру задачі подвоїть і необхідний час.
1.Додавання/віднімання чисел з n цифр;
2.Лінійний пошук в масиві з n елементів;
3.Очікування в черзі в супермаркеті
Лекція 2
Теорія алгоритмів
Квадратичне зростання: O(N2)
Подвоєння розміру задачі вчетверо збільшує необхідний час.
1.Елементарні алгоритми сортування
2.Перемножити всі пари чисел
Що відбудеться, якщо в групі є сім чоловік?
Тоді буде 6 + 5 + 4 + 3 + 2 + 1 = 21
рукостискань. Якщо буде вісім чоловік? Буде
7 + 6 + ... + 2 + 1 = 28 рукостискань.
Якщо буде дев'ять чоловік? Ми отримуємо ідею: Кожного разу, коли розмір групи збільшується на одного, додаткова людина повинна потиснути руку кожній іншій людині.
Кількість рукостискань для групи розміру N складає:
Лекція 2
Теорія алгоритмів
Квадратичне зростання: O(N2)
Подвоєннярозміру задачі вчетверо збільшує необхідний час.
Лекція 2
Теорія алгоритмів
Поширені асимптотичні складності
Складність |
Коментар |
Приклади |
O(1)
O(log log n)
O(log n)
O(n)
O(n log n)
O(n²)
O(n³)
O(cn)
Сталий час роботи не залежно від розміру задачі
Дуже повільне зростання необхідного часу
Логарифмічне зростання — подвоєння розміру задачі збільшує час роботи на сталу величину
Лінійне зростання — подвоєння розміру задачі подвоїть і необхідний час
Лінеаритмічне зростання — подвоєння розміру задачі збільшить необхідний час трохи більше ніж вдвічі
Квадратичне зростання — подвоєння розміру задачі вчетверо збільшує необхідний час
Кубічне зростання — подвоєння розміру задачі збільшує необхідний час у вісім разів
Експоненціальне зростання — збільшення розміру задачі на 1 призводить до c-кратного збільшення необхідного часу; подвоєння розміру задачі підносить необхідний час у квадрат
Очікуваний час пошуку в хеші
Очікуваний час роботи інтерполюючого пошуку n елементів
Обчислення xn; двійковий пошук у масиві з n елементів
Додавання/віднімання чисел з n цифр; лінійний пошук в масиві з n елементів Сортування злиттям або купою n елементів; нижня границя сортування порівнянням n елементів
Елементарні алгоритми сортування
Звичайне множення матриць
Деякі задачі комівояжера, алгоритми пошуку повним перебором
Лекція 2
Теорія алгоритмів
Графіки функцій
Лекція 2
Теорія алгоритмів
Порівняння часу виконання N2 та N!
Лекція 2
Теорія алгоритмів
Порівняння часу виконання
Час |
Максимальний розмір задачі (n) |
||
виконання |
|
|
|
1 секунда |
1 хвилина |
1 година |
|
в s |
|
|
|
400n |
2500 |
150000 |
9000000 |
|
|
|
|
20n log n |
4096 |
166666 |
7826087 |
|
|
|
|
2n2 |
707 |
5477 |
42426 |
|
|
|
|
n4 |
31 |
88 |
244 |
|
|
|
|
2n |
19 |
25 |
31 |
Лекція 2
Теорія алгоритмів
Правила визначення складності
Послідовність операторів 1.Оператор 1; 2.Оператор 2; 3....
4.Оператор k;
Загальний час = час(Оператор 1) + час (Оператор 2) + ... + + час (Оператор k)
Якщо кожний оператор є простим (включає базові операції) тоді час виконання кожного оператора є сталим і загальний час є також сталим: O(1).
Лекція 2