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


13

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

Наприклад, припустимо, що проблема має практичний розмір * і є два відомих алгоритми: Один дорівнює 2 n, а другий n c для деякої постійної c . Зрозуміло, що для будь-якого c > 15 кращим є експоненціальний алгоритм.n=1002nnccc>15

* Я думаю, що практичний розмір означатиме щось, що зазвичай зустрічається в реальному світі. Як і кількість поїздів у мережі.


1
Я думаю, ви можете знайти те, що ви шукаєте, в літературі, що параметризує складність.
Kaveh

для лінійних алгоритмів, як правило, є постійний множник, який, як правило, не є значним і часто пропускається зі складності, але той, який, як я пам'ятаю, здався дуже високим, був об'єднанням на місці, яке було лінійним, але в гіршому випадку чимось на зразок 5000 Н ... так у у цих сценаріїв є велика корисна область, де N ^ 2 буде менше 5000 N, де розмір менше sqrt (5000), і менший домен, де 2 ^ n все одно буде швидше, де n менше, ніж log 5000
Граді програвач

Відповіді:


13

Як боротися з симплексним алгоритмом лінійного програмування? У багатьох випадках він використовується на практиці.

Відредагований , щоб додати: Я думаю , що це більш «гірше випадку експоненціального алгоритму» , який працює ефективно на практиці інстанцій / розподілу , а не біжить швидше на практиці розміру змагального примірників.


4
@diesalbla - це залежить від точного форуму. Посилаючись на Вікіпедію, "у 1972 році Клі та Мінті [32] дали приклад, що показує, що найгірша складність симплексного методу, сформульованого Данцигом, є експоненціальним часом".
RB


-3

Є кілька прикладів (немовірні / точні) виявлення / тестування первинності . Алгоритм AKS був першим алгоритмом для тесту на первинність, показаний у P. Він не конкурує сприятливо проти деяких експоненціальних часових алгоритмів для "малих" входів. Деталі дещо складні, тому що для показу цього, як правило, потрібна реальна реалізація алгоритмів, що є складним завданням і може залежати від конкретних аспектів реалізації.

Більше інформації / деталей / рефератів на це питання cs.se:


6
Наскільки мені відомо, алгоритми, з якими конкурує АКС на практиці, є або рандомізованим многочленом (Міллер-Рабін, ECPP), або детермінованим квазиполіноміальним (Адлеман – Померанж – Румелі). Ніде поруч експоненціальний час.
Emil Jeřábek

6
Рандомізована версія Міллера-Рабіна, яка використовується на практиці, не залежить від РЗ.
Emil Jeřábek

5
Це все дуже правда, але не має нічого спільного з початковим питанням.
Emil Jeřábek

2
Так, я все це знаю. І втретє це не має значення. Питання задає алгоритми експоненціального часу , які на практиці є конкурентоспроможними відомому алгоритму багаточленного часу (тут, AKS). Єдиний алгоритм тестування експоненціальної первинності, який використовується на практиці, - це пробний поділ, який не є конкурентоспроможним для чисел будь-якого нетривіального розміру. Конкурентні алгоритми, що застосовуються на практиці, набагато ефективніші, ніж експоненціальні, хоча вони не є поліноміальними (або детермінованими, або безумовними).
Emil Jeřábek

3
Що таке яблука та апельсини, це порівняння AKS (алгоритм тестування первинності) з GNFS (алгоритм факторингу).
Emil Jeřábek
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.