Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ASD_Lecture02

.pdf
Скачиваний:
21
Добавлен:
12.02.2016
Размер:
1.02 Mб
Скачать

Теорія алгоритмів

Загальні правила

Мультиплікативні константи можуть бути опущені: 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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]