Professional Documents
Culture Documents
Untitled
Untitled
АЛГОРИТМІВ
ГЛИБОВЕЦЬ М.М.
ЛЕКЦІЯ 2. МАТЕМАТИЧНА
СКЛАДОВА АНАЛІЗУ
АЛГОРИТМІВ
КЛАСИ ВХІДНИХ ДАНИХ
При аналізі алгоритму вибір вхідних даних може
істотно вплинути на його виконання.
Тому не будемо обмежуватися аналізом поведінки
алгоритмів на одному вхідному наборі даних.
Практично потрібно шукати такі дані, які
забезпечують як найшвидше, так і саме повільне
виконання алгоритму.
Крім того, корисно оцінювати і середню
ефективність алгоритму на всіх можливих наборах
даних.
КЛАСИ ВХІДНИХ ДАНИХ
Час виконання алгоритму в найкращому випадку дуже
часто виявляється маленьким або просто
постійним, тому подібний аналіз проводиться рідко.
Аналіз найгіршого випадку надзвичайно важливий,
оскільки він дозволяє представити максимальний час
роботи алгоритму.
При аналізі найгіршого випадку необхідно знайти вхідні
дані, на яких алгоритм буде виконувати найбільше роботи.
КЛАСИ ВХІДНИХ ДАНИХ
Аналіз середнього випадку є найскладнішим, оскільки
він вимагає обліку множини різноманітних деталей.
В основі аналізу лежить визначення різних груп, на які
слід розбити можливі вхідні набори даних.
На другому кроці визначається ймовірність, з якою
вхідний набір даних належить кожній групі.
На третьому кроці підраховується час роботи
алгоритму на даних з кожної групи.
Час роботи алгоритму на всіх вхідних даних однієї
групи має бути однаковим, в іншому випадку групу
слід подрібнити.
Середній час роботи обчислюється за формулою:
КЛАСИ ВХІДНИХ ДАНИХ
Середній час роботи обчислюється за формулою:
Найдовший шлях
у цьому дереві відповідає найгіршому випадку і
навпаки, найкоротший - кращому.
Середній випадок описується часткою від ділення
числа ребер в дереві на число листів.
Для перестановки 2-х елементів ми маємо 1 листок,
для N ел-тів, за правилами комбінаторики, N! листів.
Число листів на рівні k становить 2k-1, тому в
нашому дереві рішень буде L-рівнів, де L -
найменше ціле число, для якого N! ≤ 2L-1.
УТОЧНИМО СКАЗАНЕ
Дерево має шість листів,
відповідних 6 шляхам
упорядкування
початкового списку з трьох елементів.
У загальному випадку, якщо сортується список з n елементів, тоді
існує n! = 1*2 *...* (n - 2)*(n - 1) можливих результатів, які
відповідають різним упорядкованостям початкового списку
елементів.
Справді, на першу позицію можна поставити будь-який з
n елементів, на другу - будь-який з решти n - 1 елементів, на
третю - будь-який з n - 2 елементів і т.д., твір кількості всіх цих
окремих результатів дає n!
Таким чином, будь-яке дерево рішень, яке описує алгоритм
сортування списку з п елементів, повинно мати не менше n!
листя.
УТОЧНИМО СКАЗАНЕ
Фактично, якщо видалити
вузли і листя, відповідні
неможливим сполученням елементів, отримаємо в точності n!
листя.
Двійкові дерева, що мають багато листя, повинні мати і довгі
шляхи.
Довжина шляху від кореня до листа дорівнює кількості
порівнянь, які необхідно зробити, щоб отримати те
впорядкування, яке відповідає даному листу, виходячи з
певного початкового списку елементів.
Тому довжина найдовшого шляху від кореня до листа - це
нижня межа кількості кроків (кількість порівнянь ключів),
ви виконуваних алгоритмом сортування в найгіршому випадку.
УТОЧНИМО СКАЗАНЕ
Але також не треба забувати, що, крім порівняння ключів,
алгоритм виконує і інші операції.
Розглянемо, яка ж може бути довжина шляхів в двійковому
дереві з k листям.
Двійкове дерево, в якому всі шляхи мають довжину р або менше,
може мати: 1 корінь, 2 вузла на першому рівні, 4 вузли на
другому рівні і далі 2^i вузлів на рівні i.
Томунайбільше число листя 2^p на рівні р, якщо немає вузлів, що
перевищують цей рівень.
Звідси випливає, що двійкове дерево з k листям повинно мати
шлях довжиною не менше log k.
Якщо покласти k = n! то отримаємо, що будь-який алгоритм
сортування, який використовує для впорядкування n елементів
тільки порівняння значень ключів, в найгіршому випадку
повинен виконуватися за час, не менше
УТОЧНИМО СКАЗАНЕ
Як зростає величина log(n!) ?
За формулою Стірлінга n! можна достатньо точно
апроксимувати функцією (n/е)^n , де е — 2.7183... — основа
натурального логарифма.
Оскільки
Сумарна оцінка
ДРУГИЙ АЛГОРИТМ
…
Тепер підставляємо знайдені значення назад у вихідне
співвідношення:
АНАЛІЗ РЕКУРСИВНИХ АЛГОРИТМІВ
…
АНАЛІЗ РЕКУРСИВНИХ АЛГОРИТМІВ
Теперпідставляємо знайдені значення назад у
вихідне співвідношення:
http://seojam.ru/wp-content/uploads/2009/03/sherlock.gif