Два способа анализа эффективности алгоритма:
- поставить асимптотическую верхнюю границу времени выполнения и
- запустить его и собрать экспериментальные данные.
Интересно, известны ли случаи, когда между (1) и (2) существует значительный разрыв. Под этим я подразумеваю, что либо (а) экспериментальные данные предполагают более жесткую асимптотику, либо (б) существуют алгоритмы X и Y, такие, что теоретический анализ предполагает, что X намного лучше, чем Y, а экспериментальные данные предполагают, что Y намного лучше, чем ИКС.
Поскольку эксперименты обычно показывают поведение в среднем случае, я ожидаю, что наиболее интересные ответы относятся к верхним границам среднего случая. Однако я не хочу исключать, возможно, интересные ответы, которые говорят о разных границах, такие как ответ Ноама о Simplex.
Включить структуры данных. Пожалуйста, поставьте один алгоритм / DS за ответ.
источник
Ответы:
Самым ярким примером является, конечно, метод Simplex, который быстро работает на практике, предполагает многозначность, но в теории требует экспоненциального времени. Дэн Спилман только что получил Неванлинну в значительной степени за объяснение этой тайны.
В более общем смысле, многие случаи целочисленного программирования могут быть достаточно хорошо решены с использованием стандартных IP-решателей, например, могут быть решены комбинаторные аукционы для большинства распределений, предпринятых на входах значительного размера - http://www.cis.upenn.edu/~mkearns /teaching/cgt/combinatorial-auctions-survey.pdf
источник
Основания Гребнера . Время работы в худшем случае является двукратно экспоненциальным (по числу переменных). Однако на практике, особенно для хорошо структурированных задач, алгоритмы F4 и F5 эффективны (т.е. завершаются довольно быстро). По-прежнему остается активной областью исследований, чтобы выяснить, какой должна быть правильная гипотеза относительно среднего или ожидаемого времени работы. Предполагается, что это каким-то образом связано с объемом многогранника Ньютона базового идеала.
источник
Я не знаю, есть ли формальный результат в среднем / сглаженная сложность проблемы, но я помню, что читал, что она существовала - возможно, кто-то другой может поспешно указать на формальный результат. Конечно, есть много экспериментальных свидетельств и много быстрых решателей. Мне также любопытно, распространяется ли это свойство на других членов семейства с полным GI.
источник
От Дэвида Джонсона, расхождение в теоретических и экспериментальных соотношениях аппроксимации: проблема коммивояжера: пример локальной оптимизации, Д.С. Джонсон и Л.А. МакГеох . В этой статье они приводят экспериментальные доказательства асимптотики (поскольку эксперименты достигают размера N = 10 000 000!), Которые не поддаются теоретической асимптотике: алгоритм Джона Бентли «Жадность» или «Многофрагментный» (отношение аппроксимации в худшем случае, по крайней мере, logN / loglogN) побеждает Nearest Insertion и Double MST, оба из которых имеют коэффициенты аппроксимации наихудшего случая 2.
источник
Другим примером, который до недавнего времени не был хорошо понят, является время работы алгоритма k-средних Ллойда , который (с практической точки зрения) был предпочтительным алгоритмом кластеризации в течение более 50 лет. Только недавно, в 2009 году, было доказано ( Ваттани ), что в худшем случае алгоритм Ллойда требует некоторого числа итераций, которое экспоненциально по числу входных точек. С другой стороны, в то же время сглаженный анализ ( Артуром, Манти и Рёглином ) доказал, что сглаженное число итераций является просто полиномиальным, что объясняет эмпирическую эффективность.
источник
Примерами таких пробелов являются обходные, обратные и расщепленные следствия гипотезы динамической оптимальности для деревьев сплайнов. Эксперименты подтверждают утверждение о линейном времени, но нет никаких известных доказательств.
источник
Есть небольшая проблема с вопросом. На самом деле существует более двух способов анализа алгоритма, и одним из теоретических способов, которым пренебрегали, является ожидаемое время выполнения, а не время выполнения в худшем случае. Это действительно среднее поведение в случае, которое имеет отношение к проведению экспериментов. Вот очень простой пример: представьте, что у вас есть алгоритм для ввода размера n, который занимает время n для каждого возможного ввода размера n, за исключением одного конкретного ввода каждой длины, который занимает время 2 ^ n. Слышать, что время выполнения в худшем случае является экспоненциальным, но средний случай равен [(2 ^ n -1) n + (2 ^ n) 1] / (2 ^ n) = n - (n-1) / 2 ^ n, который ограничения на п. Очевидно, что два типа анализа дают очень разные ответы, но этого следует ожидать, так как мы рассчитываем разные величины.
Выполняя эксперимент несколько раз, даже если мы берем самое большое время прогона для выборки, мы все еще отбираем только небольшую часть пространства возможных входных данных, и поэтому, если трудные случаи редки, то мы, вероятно, пропустим их ,
Относительно легко построить такую проблему: если все первые n / 2 бита равны нулю, то решить экземпляр 3SAT, закодированный с последними n / 2 битами. В противном случае отклонить. Когда n становится большим, проблема имеет примерно то же время выполнения в худшем случае, что и наиболее эффективный алгоритм для 3SAT, где среднее время выполнения гарантированно будет очень низким.
источник
Вывод типа Дамаса-Милнера доказан полным за экспоненциальное время, и есть легко построенные случаи с экспоненциальным увеличением в размере результата. Тем не менее, на большинстве реальных данных он ведет себя эффективно линейно.
источник
PTAS для дерева Штейнера в плоских графах смешно зависит от эпсилона. Однако есть реализация, которая демонстрирует удивительно хорошую производительность на практике.
источник
Кучи сопряжения из [1] - они реализуют кучи, где вставка и объединение имеют амортизированную сложность O (log n), но предполагаются равными O (1). На практике они чрезвычайно эффективны, особенно для пользователей слияния.
Я только что обнаружил их только сегодня, читая гл. 5.5 из книги К. Окасаки «Чисто функциональные структуры данных», поэтому я решил поделиться информацией о них.
[1] Fredman, ML, Sedgewick, R., Sleator, DD, и Tarjan, RE 1986. Куча спаривания: новая форма саморегулирующейся кучи. Algorithmica 1, 1 (январь 1986), 111-129. DOI = http://dx.doi.org/10.1007/BF01840439
источник
В связи с замечанием Ильяраза о ветвлении и связке, Pataki et al. покажите, что уменьшение числа ветвей и границ плюс решетки решает почти все случайные IP-адреса в политизме.
источник
Эвристика Лин-Кернигана для TSP («Эффективная эвристика для задачи коммивояжера», Operations Research 21: 489–516, 1973) очень успешна на практике, но все еще не имеет среднего случая или сглаженного анализа для объяснения ее эффективности. , В отличие от этого, существует сглаженный анализ двухэтапной эвристики для TSP, выполненный Матиасом Энглертом, Хейко Рёглином и Бертольдом Вёкингом (Algorithmica, чтобы появиться).
источник
Существует много очень быстрых и эффективных на практике алгоритмов ветвления и связывания для различных NP-сложных задач, которые мы не можем тщательно проанализировать: TSP, дерево Штейнера, упаковка бинов и так далее.
источник