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

13

Знаете ли вы о каких-либо проблемах (предпочтительно, по крайней мере, несколько хорошо известных), где для практического размера задачи экспоненциальный алгоритм работает намного быстрее, чем самый известный аналог полиномиального времени.

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

* Я думаю, что практический размер будет означать что-то, что обычно встречается в реальном мире. Как и количество поездов в сети.

Ozzah
источник
1
Я думаю, вы можете найти то, что вы ищете в литературе по параметризованной сложности.
Каве
для линейных алгоритмов, как правило, существует постоянный множитель, который, как правило, не имеет существенного значения и часто исключается из сложности, но я помню, что очень высоким показателем было слияние на месте, которое было линейным, но в худшем случае что-то вроде 5000 Н ... так что в в этих сценариях есть большая полезная область, где N ^ 2 будет меньше 5000 N, где размер меньше sqrt (5000), и меньший домен, где 2 ^ n все равно будет быстрее, где n меньше log 5000
Grady Player

Ответы:

13

Как насчет симплексного алгоритма для линейного программирования? Во многих случаях это используется на практике.

Отредактированный , чтобы добавить: Я думаю , что это более «хуже случая экспоненциального алгоритма» , который работает эффективно на практике инстанций / распределения , а не бежит быстрее на практике размера состязательного экземпляров.

RB
источник
4
@diesalbla - это зависит от точного формулировки. Ссылаясь на Википедию, «в 1972 году Клее и Минти [32] привели пример, показывающий, что сложность симплекс-метода в худшем случае, сформулированная Данцигом, является экспоненциальным временем».
РБ
12

O(n3)

Питер Шор
источник
5
2222|H|O(n3)H
1
O(n2)|H|
1
HG|H|
-3

Есть несколько примеров с (непробиваемым / точным) обнаружением / тестированием первичности . Алгоритм AKS был первый алгоритм проверки простоты показано, что в Р. Он не конкурирует благоприятно по сравнению с некоторыми экспоненциальных алгоритмов времени для «малых» входов. Детали несколько хитры, потому что для демонстрации этого обычно требуется реализация алгоритмов, что является сложным делом и может зависеть от аспектов, связанных с реализацией.

Больше информации / деталей / ссылок на этот вопрос cs.se:

ВЗН
источник
6
Насколько мне известно, алгоритмы, с которыми AKS конкурирует на практике, являются либо рандомизированным полиномом (Миллер-Рабин, ECPP), либо детерминированным квазиполиномом (Адлеман-Померанс-Румли). Нигде не экспоненциальное время.
Эмиль Йержабек 3
6
Рандомизированная версия Миллера-Рабина, которая используется на практике, не зависит от относительной влажности.
Эмиль Йержабек 3
5
Это все очень верно, но не имеет ничего общего с первоначальным вопросом.
Эмиль Йержабек 3
2
Да, я все это знаю. И в третий раз это не имеет значения. Вопрос требует алгоритмов экспоненциального времени , которые на практике конкурируют с известным алгоритмом полиномиального времени (здесь, AKS). Единственный алгоритм тестирования простоты экспоненциального времени, используемый на практике, является пробным делением, которое не является конкурентоспособным для чисел любого нетривиального размера. Конкурентные алгоритмы, используемые на практике, намного эффективнее экспоненциальных, даже если они не являются полиномиальными (или детерминированными, или безусловными).
Эмиль Йержабек 3
3
Что такое яблоки и апельсины, так это сравнение AKS (алгоритм тестирования простоты) с GNFS (алгоритм факторинга).
Эмиль Йержабек 3