Простий і практичний детермінований алгоритм, складний час роботи


18

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

Чи є у нас яскраві приклади, коли це правило не вдається?

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

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

Зверніть увагу на ключові слова "детермінований" та "найгірший"; аналіз простих рандомізованих алгоритмів досить легко призводить до складних виразів.

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


PS. Я думав, що не ставлю це питання "великого списку", а не CW. Я хотів би знайти єдиний відмінний приклад (якщо він взагалі існує). Тому, будь ласка, опублікуйте іншу відповідь, лише якщо ви вважаєте, що вона "краща", ніж будь-яка відповідь на даний момент.


2
Чи кваліфікується алгоритм тестування первинності AKS як відповідь? Я вагаюся, бо "складність" його тривалості в деякому сенсі є результатом псевдовипадковості розподілу простих чисел ...
arnab

Я відчуваю, що найгірший випадок - це у більшості випадків те, що спричиняє "перебіг всього", і все - це те, за що ми вимірюємо час виконання. Отже, природно, прості алгоритми мають легкі WC-режими. Складні умови роботи з’являються, якщо ми спробуємо відголити один маленький шматочок якоюсь хитрістю. Але ваше запитання цікаве; Мені, безумовно, цікаво бачити, як сильніше почуття моє.
Рафаель

@arnab: Дякую, AKS - хороша ідея. Але я не впевнений, чи можна це назвати "практичним"?
Jukka Suomela

Чи вважають схеми передачі повідомлень, такими як поширення опитування, поширення обмежень або послідовне TRW як "алгоритми"? Легкий у виконанні, час виконання складно передбачити
Ярослав Булатов

На жаль, мені завжди подобається метод rho Полларда, він простий і практичний, і аналіз справді важкий, але випадковість алгоритму робить його некваліфікованим як відповідь на пост ...
Hsien-Chih Chang 張顯 之

Відповіді:


20

Найкращий приклад, про який я можу придумати, - це алгоритм (описаний нижче) для обчислення рівня до розташування n ліній у площині, тобто полігональної лінії, утвореної точками, що мають точно k вертикалі над нею. Це не найефективніший алгоритм, відомий для проблеми. Є більш ефективні алгоритми з більш простими складностями, але я вважаю, що цей більш практичний, ніж більшість (якщо не всі) з них. Аналіз, ймовірно, не є жорстким, оскільки він використовує складність k -рівень, що є відомою відкритою проблемою (я думаю, що всі інші терміни в аналізі є жорсткими). Навіть все ж, я сумніваюся, покращення меж для k- level зробить час роботи набагато простішим. Я припускаю k =knkkk записати складність як функцію лише n .k=n/2n

Алгоритм заснований на парадигмі розгортання рядків і використовує два -ary кінетичні турніри як черги пріоритетності кінетики. Вставки та вилучення виконуються, коли лінія йде вище або нижче k- рівня, переміщуючи лінію від одного кінетичного турніру до іншого. Таким чином, є O ( п 4 / 3 ) вставки і делеції ( з використанням пов'язаного для Dey по до -level складності). Кожна подія обробляється в O ( журнал N ) раз і є Про ( п 4 / 3 α ( п(logn)kO(n4/3)kO(logn) події ( α ( n ) походить від складності верхньої оболонки розташування сегментів рядків, тоді як log n / log log n походить з висотидерева ( log n ) -ary ). Загальний час роботиO(n4/3α(n)logn/loglogn)α(n)logn/loglogn(logn)

O(n4/3α(n)log2n/loglogn).

Будь ласка, перегляньте рукопис Тімоті Чана http://www.cs.uwaterloo.ca/~tmchan/lev2d_7_7_99.ps.gz для отримання більш детальної інформації та посилань. фактор може бути видалений за допомогою двійкового коду (Intead з ( балки - п ) -ічний) кінетичного турніру, але на самому справі прискорює кінетичні черзі пріоритету в тестах , які я виконаний. Складність повинна стати трохи гіршою і гіршою (хоча алгоритм все ще буде практичним), якщо замість кінетичного турніру використовується кінетична купа ( журнал всередині квадратного кореня повинен відображатися).1/loglogn(logn)log


Відмінний приклад, дякую! Це не буде легко перемогти. :)
Jukka Suomela

1
Цей алгоритм є більш повільним на практиці, ніж рандомізовані алгоритми, які досить легко реалізувати (як хтось, хто реалізував один із цих алгоритмів (див. Мою роботу "Прогулянка по планарному розташуванню".)
Саріель Хар-Пелед

Я прийняв цю відповідь, оскільки, здається, найближчий до того, що мав на увазі. Але якщо у когось є якісь свіжі ідеї, я був би радий почути!
Юкка Суомела

24

Очевидно, що операції зі структурою даних пошуку об'єднання відповідають вашим критеріям:

http://en.wikipedia.org/wiki/Disjoint-set_data_structure


2
Дійсно, я опублікував ту саму відповідь, але видалив її після того, як я помітив, що ти побив мене. :) Простий і елегантний алгоритм, який може не виявити нетеоретик, але зворотний Аккерман амортизує складність.
Воррен Шуді

Ну, O(α(n)) час не виглядає , що "складно" , якщо порівняти його з у відповідь Гільєрме в. :)O(n4/3α(n)log2n/loglogn)
Jukka Suomela

Співвідношення довжини алгоритму до складності доказів для об'єднання-пошуку, мабуть, є неперевершеним - всі три операції - це дев'ять рядків коду?
Ніл Крішнасвамі

1
Я не думаю, що питання стосується простого і практичного алгоритму зі складним аналізом . Я думаю, що питання стосується простого і практичного алгоритму зі складним часом виконання , тобто власне вираження, отриманого для верхньої межі.
Гільгерме Д. да Фонсека

6

Простий алгоритм. Легкий у здійсненні та чудово працює на практиці, але це безлад для теоретичного аналізу.


n

насправді симплекс, як відомо, займає експоненціальний час у найгіршому випадку через конструкцію Клі-Мінти. Думаю, це не приклад того, про що питає Юкка
Суреш Венкат

1
Можливо, я мав би сказати симплексний метод, а не симплексний алгоритм. Куб Klee-Minty та його варіації працюють за деякими правилами обертання ванілі. Але, наприклад, правило випадкового повороту має божевільну верхню та (недавню) нижню межу. Гіл Калай мав приємний запис у блозі про останні результати. gilkalai.wordpress.com/2010/11/09/…
Сінгх

хороший момент, Мохіт. Я також розгубився.
Суреш Венкат

2

Я не впевнений, чи вважаєте ви це "практичним", але це відома відкрита проблема. Пол Ердос сказав про гіпотезу Колатца: "Математика ще не готова до таких проблем"

x=1


І яку проблему вирішує цей алгоритм ...?
Jukka Suomela

Він пропонує шукати нові методи аналізу часу виконання.
Мохаммед Аль-Туркстані

2
потім можна сказати, що жорстокий пошук доказів гіпотези Колатца також мотивує "нові методи аналізу часу виконання"; в обох випадках алгоритм просто бездумно вивчає диграф. Гіпотеза Колатца весела, але я не думаю, що це цікавий приклад "алгоритму".
Ніль де Бодорап

2

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

http://en.wikipedia.org/wiki/Pancake_sorting

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

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