Парадигми для аналізу складності алгоритмів


16

Аналіз найгіршого та середнього випадку - це добре відомі заходи складності алгоритму. Нещодавно згладжений аналіз з'явився ще однією парадигмою для пояснення того, чому деякі алгоритми, які є експоненціальними в гіршому випадку, так добре працюють на практиці, наприклад алгоритм симплекс.

Моє запитання - чи є інші парадигми для вимірювання складності алгоритму? Мене особливо цікавлять ті, хто намагається пояснити, чому деякі алгоритми, які мають найгіршу складність, добре працюють на практиці.

Відповіді:


21

Існують природні варіанти аналізу в гіршому випадку, які також є корисними. Мабуть, найвідоміший - параметризована складність. Тут ми розглянемо «двовимірну» міру: звичайна вхідна довжина та деяке додаткове невід'ємне ціле число k , параметр. Навіть незважаючи на те, що алгоритм може працювати жахливо в гіршому випадку (для всіх значень n і k ), можливо, що у всіх випадках застосування, які потрібно вирішити, цей параметр k виявляється низьким, тому алгоритм працює добре у тих випадках.нкнкк

Наприклад, припустимо, що ви хочете вирішити Максимальний незалежний набір для деякого класу графіків і розробити цікавий алгоритм, який дивно швидкий. Далі досліджуючи клас самих графіків, ви виявляєте, що всі досліджувані графіки просто мають ширину ширини не більше . Ну, Бодлендер (пор. Нейдермайєр [1]) показав, що коли ширина пропускної здатності дорівнює k, максимум незалежного набору фіксується параметром, який можна відстежувати : його можна вирішити за час O ( 2 k ( | E | + | V | ) ) . Це дає певне пояснення, чому алгоритм працює добре.10О(2к(|Е|+|V|))

[1] Р. Нідермайєр, Запрошення до алгоритмів з фіксованим параметром. Оксфордська лекційна серія з математики та її застосування, Oxford University Press, Оксфорд, 2006.


15

Існує амортизована складність - чому деякі операції можуть бути дорогими в гіршому випадку, але якщо врахувати багато операцій, середня вартість за одну операцію хороша.

Класичний приклад - структура даних, яка спорожняється, коли вона заповнена, копіюючи всі її елементи в деякий сховище. Операція копіювання може бути дорогою, але це трапляється не часто - вам потрібно вставити достатню кількість елементів у структуру даних, щоб спровокувати це.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.