Существует ли широко используемый алгоритм, который имеет временную сложность хуже, чем у другого известного алгоритма, но это лучший выбор во всех практических ситуациях ( хуже, но лучше в противном случае)?
Допустимый ответ может быть в форме:
Существуют алгоритмы
A
иB
, которые имеютO(N**2)
иO(N)
время сложность соответственно, ноB
имеет такую большую константу, что у нее нет преимущества по сравнению сA
для входов меньше то число атомов в Вселенная.
Примеры из ответов:
-
Алгоритм Simplex - наихудший случай - экспоненциальное время - по сравнению с известными алгоритмами полиномиального времени для задач выпуклой оптимизации.
-
Наивная медиана алгоритма медианов - наихудший случай O (N ** 2) по сравнению с известным алгоритмом O (N).
-
Двигатели регулярного выражения Backtracking - наихудшие экспоненциальные и O (N) двигатели на основе NFA Thompson.
Все эти примеры используют сценарии наихудшего и среднего сценариев.
Есть ли примеры, которые не зависят от разницы между сценарием наихудшего случая и средним случаем?
по теме:
-
Повышение "Хуже лучше" . (Для целей этого вопроса фраза "Хуже лучше" используется в более узком (а именно - алгоритмическом временном) смысле, чем в статье).
-
Группа ABC стремилась к совершенству. Например, они использовали древовидные данные структурные алгоритмы, которые были доказаны быть оптимальным для асимптотически больших коллекции (но были не очень хороши для небольшие коллекции).
Этот пример был бы ответом, если бы не было компьютеров, способных хранить эти большие коллекции (другими словами, большой размер в этом случае невелик).
-
Алгоритм Coppersmith-Winograd для умножения квадратной матрицы - хороший пример (это самый быстрый (2008), но он уступает худшие алгоритмы). Любые другие? Из статьи в википедии: "Она не используется на практике, потому что она обеспечивает преимущество только для таких матриц, что они не могут обрабатываться современным оборудованием (Robinson 2005)".