Простой и практичный детерминированный алгоритм, сложное время выполнения


18

Очень часто, если время выполнения алгоритма является сложным выражением, сам алгоритм также является сложным и непрактичным. Каждый из корней куба и факторов в асимптотическом времени выполнения имеет тенденцию увеличивать сложность алгоритма, а также скрытые постоянные факторы для времени выполнения.loglogn

У нас есть яркие примеры, в которых это правило не выполняется?

Конечно, легко найти примеры алгоритмов, которые очень сложно реализовать, даже если у них очень простое время выполнения в худшем случае. Но как насчет обратного?

Есть ли у нас примеры очень простых и практичных детерминированных алгоритмов, которые легко реализовать, но которые имеют очень сложное выражение в качестве асимптотического времени выполнения в худшем случае?

Обратите внимание на ключевые слова «детерминированный» и «наихудший случай»; Анализ простых рандомизированных алгоритмов довольно легко приводит к сложным выражениям.

Конечно, то, что «сложно», - дело вкуса. В любом случае, я бы предпочел увидеть выражение, которое слишком уродливо, чтобы вставить название вашей статьи. И я бы предпочел сложную функцию одного естественного параметра (размер ввода, количество узлов и т. Д.).


PS. Я думал, что я не сделаю это «вопросом большого списка», а не CW. Я хотел бы найти один отличный пример (если он вообще существует). Поэтому, пожалуйста, публикуйте другой ответ, только если вы думаете, что он «лучше», чем любой из ответов на данный момент.


2
Соответствует ли алгоритм тестирования простоты AKS ответом? Я сомневаюсь, потому что «сложность» его времени выполнения, в некотором смысле, является результатом псевдослучайности распределения простых чисел ...
Арнаб

Я чувствую, что в худшем случае в большинстве случаев то, что вызывает «пробегает все», и все - это то, в чем мы измеряем время выполнения. Поэтому, естественно, простые алгоритмы имеют легкое время выполнения WC. Сложные времена выполнения появляются, если мы пытаемся сбить один маленький кусочек какой-то хитростью. Но ваш вопрос интересен; Мне, конечно, любопытно видеть, правильно ли я себя чувствую.
Рафаэль

@arnab: Спасибо, AKS - хорошая идея. Но я не уверен, что мы можем назвать это «практичным»?
Юкка Суомела

Схемы передачи сообщений, такие как распространение опроса, распространение ограничений или последовательное TRW, считаются «алгоритмами»? Легко реализовать, время выполнения сложно предсказать
Ярослав Булатов

Ой, мне всегда нравится метод Ро Полларда, он прост и практичен, и анализ действительно сложен, но случайность алгоритма делает его безоговорочным в качестве ответа на пост ...
Сянь-Чжи Чанг 之 之

Ответы:


20

Лучший пример, который я могу придумать, - это алгоритм (описанный ниже) для вычисления в расположении n линий на плоскости, то есть многоугольной линии, образованной точками, которые имеют точно k линий вертикально над ней. Это не самый эффективный алгоритм, известный для этой проблемы. Существуют более эффективные алгоритмы с более простыми сложностями, но я считаю, что этот более практичен, чем большинство (если не все) из них. Анализ, вероятно, не является строгим, потому что он использует сложность k-уровня , которая является известной открытой проблемой (я думаю, что все другие термины в анализе являются жесткими). Даже несмотря на это, я сомневаюсь, что улучшенные оценки для k-уровня значительно упростят время выполнения. Я буду считать, что к =knkkk чтобы написать сложность как функцию от n .k=n/2n

Алгоритм основан на парадигме развертки линии и использует два -арематических турнира в качестве очередей с кинетическим приоритетом. Вставки и удаления выполняются, когда линия поднимается выше или ниже уровня k , перемещая линию из одного кинетического турнира в другой. Таким образом, есть O ( п 4 / 3 ) вставки и делеции ( с использованием связанного для Dey по к -level сложности). Каждое событие обрабатывается в O ( журнал N ) раз и есть О ( п 4 / 3 α ( п(logn)kO(n4/3)kO(logn) события ( α ( n ) определяется сложностью верхнего огибающего расположения отрезков, а log n / log log n - высотой ( log n ) -ного дерева) ). Общее время работы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 of ( log n ) -ary) кинетического турнира, но он фактически ускоряет очередь с кинетическим приоритетом в тестах, которые я выполнил. Сложность должна стать немного страшнее и хуже (хотя алгоритм все еще будет практичным), если вместо кинетического турнира используется кинетическая куча (должен появиться журнал внутри квадратного корня).1/журналжурналN(журналN)журнал


Отличный пример, спасибо! Это не будет легко победить. :)
Юкка Суомела

1
Этот алгоритм медленнее на практике, чем рандомизированные алгоритмы, которые довольно легко реализовать (как кто-то, кто реализовал один из этих алгоритмов (см. Мою статью «Прогулка в плоском расположении».)
Сариэль Хар-Пелед

Я принял этот ответ, так как он кажется наиболее близким к тому, что я имел в виду. Но если у кого-то есть свежие идеи, я буду рад их услышать!
Юкка Суомела

24

Кажется, что операции со структурой данных union-find соответствуют вашим критериям:

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


2
Действительно, я отправил тот же ответ, но удалил его после того, как заметил, что вы меня опередили. :) Простой и элегантный алгоритм, который не теоретик мог бы даже обнаружить, но обратная Аккерманну амортизировала сложность.
Уоррен Шуди

Ну, время не выглядит , что "сложно" , если сравнить его с O ( п 4 / +3 α ( п ) журнал 2 н / журнал журнал N ) в ответ Гильерме в. :)O(α(n))O(n4/3α(n)log2n/loglogn)
Юкка Суомела

Отношение длины алгоритма к сложности доказательства для объединения-поиска, вероятно, непобедимо - все три операции - что, девять строк кода?
Нил Кришнасвами

1
Я не думаю, что речь идет о простом и практичном алгоритме со сложным анализом . Я думаю, что вопрос заключается в простом и практичном алгоритме со сложным временем выполнения , то есть фактическом выражении, полученном для верхней границы.
Гильерме Д. да Фонсека

6

Симплексный алгоритм. Легко реализовать и прекрасно работает на практике, но теоретически это беспорядок.


n

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

1
Возможно, я должен был сказать симплекс-метод, а не симплекс-алгоритм. Куб Кли-Минти и его вариации работают для некоторых ванильных правил поворота. Но, например, правило случайного поворота фасета имеет сумасшедшую верхнюю и (недавнюю) нижнюю границу. У Гила Калаи была хорошая запись в блоге о последних результатах. gilkalai.wordpress.com/2010/11/09/…
Мохит Сингх

хорошая мысль, Мохит. Я был смущен также.
Суреш Венкат

2

Я не уверен, если вы считаете это "практичным", но это известная открытая проблема. Пол Эрдос сказал о гипотезе Коллатца: «Математика еще не готова к таким проблемам»

x=1


И что за проблема решается этим алгоритмом ...?
Юкка Суомела

Он предлагает искать новые методы анализа во время выполнения.
Мухаммед Аль-Туркистани

2
тогда вы могли бы сказать, что грубый поиск доказательства гипотезы Коллатца также мотивирует «новые методы анализа во время выполнения»; в обоих случаях алгоритм просто бездумно исследует орграф. Гипотеза Коллатца забавная, но я не думаю, что это интересный пример «алгоритма».
Ниль де Бодрап,

2

Этот пример, хотя и не соответствует букве вашего запроса, может быть интересен, поскольку он имеет некоторую духовную близость. В частности, вопрос сортировки стопок блинов и сгоревших блинов путем обращения.

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.