Есть ли проблемы, у которых самый известный алгоритм имеет время выполнения


18

Я никогда раньше не видел алгоритм с логом в знаменателе, и мне интересно, есть ли какие-нибудь действительно полезные алгоритмы с этой формой?

Я понимаю много вещей, которые могут привести к умножению логарифмического коэффициента во время выполнения, например, сортировка или алгоритмы на основе дерева, но что может заставить вас делиться на логарифмический коэффициент?


24
Слияние, с . f(n)=nlog2N
Джефф

12
@ Jɛ ff E snarky Mcsnarkster
Суреш Венкат

5
Radix sort - это действительно . Что происходит, так это то, что из-за произвольного доступа вы можете сохранить логарифм ....O(nlogn/logn)
Сариэль Хар-Пелед

Интересно, можно ли использовать теорему об иерархии DTIME в качестве аргумента в пользу существования таких алгоритмов, учитывая, что в модели ОЗУ можно проделать аналогичный прием, позволяющий сэкономить место?
chazisop

Ответы:


41

Обычный ответ на вопрос «что может заставить вас делиться на бревно?» это сочетание двух вещей:

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

Я думаю, что есть много примеров, но классическим примером является Алгоритм четырех русских для самых длинных общих подпоследовательностей и т. Д. Он фактически заканчивается , потому что он использует идею упаковки битов, но затем сохраняет вторую логарифмический фактор, использующий другую идею: замена блоков O ( log 2 n ) битовых операций одним поиском в таблице.O(n2/log2n)O(log2n)


35

Кубик Рубика - очень естественный (и для меня неожиданный) пример. n×n×n куба требует Θ(n2/logn) шаги , чтобы решить. (Обратите внимание, что это тета-обозначение, так что это жесткая верхняя и нижняя граница).

Это показано в работе [1].

Возможно, стоит упомянуть, что сложность решения конкретных экземпляров кубика Рубика открыта, но предположительно является NP-трудной (обсуждается здесь, например) NP hard [2]. Θ(N2/журналN) алгоритм гарантирует решение, и это гарантирует , что все решения являются асимптотически оптимальными, но она не может решить конкретные случаи оптимально. Ваше определение полезности может применяться или не применяться здесь, поскольку кубики Рубика, как правило, не решаются с помощью этого алгоритма (алгоритм Коциембы обычно используется для маленьких кубов, поскольку он дает быстрые, оптимальные решения на практике).

[1] Эрик Д. Демейн, Мартин Л. Демейн, Сара Эйзенстат, Анна Любив и Эндрю Уинслоу. Алгоритмы решения кубиков Рубика. Материалы 19-го ежегодного Европейского симпозиума по алгоритмам (ESA 2011), 5–9 сентября 2011 г., стр. 689–700

[2] Эрик Д. Демейн, Сара Эйзенстат и Михаил Рудой. Решение кубика Рубика оптимально является NP-полным. Материалы 35-го Международного симпозиума по теоретическим аспектам информатики (STACS 2018), 28 февраля - 3 марта 2018 г., стр. 24: 1-24: 13.


16

Примером отображаемым в знаменателе без уловок упаковки битов, является недавняя статья Агарвала, Бена Авраама, Каплана и Шарира о вычислении дискретного расстояния Фреше между двумя многоугольными цепями во времени O ( n 2 log log n / log n ) , Хотя я не знаком с деталями алгоритма, один общий трюк состоит в том, чтобы разделить входные данные на относительно небольшие части, а затем умело объединить ответы (конечно, это звучит как «разделяй и властвуй», но вы не получите журнал n в знаменателе с некоторыми хитрыми хитростями)журналNО(N2журналжурналN/журналN)


5
Это более сложный пример техники «четырех русских», описанной в ответе Дэвида.
Джефф

13

Не совсем то, что вы просили, но ситуация «в дикой природе», в которой в знаменателе фигурирует логарифмический фактор, - это статья Стивена Кука, Пьера МакКензи, Дастина Вера, Марка Бравермана, « Галька и программы ветвления для оценки деревьев ». Рахул Сантханам.

Задача оценки дерева (TEP) такова: дано дневное дерево, аннотированное значениями в { 1 , , k } на листьях и функциях { 1 , , k } d{ 1 , , k }d{1,,k}{1,,k}d{1,,k} на внутренних узлах , оцените дерево. Здесь каждый внутренний узел получает значение своей аннотированной функции на значения своих дочерних элементов. Это простая проблема, и цель состоит в том, чтобы показать, что ее невозможно решить в логарифмическом пространстве (когда высота дерева является частью входных данных). В связи с этим нас интересует размер разветвляющихся программ, решающих ТЭП.

В разделе 5 представлены точные границы для деревьев высотой 3, как для TEP, так и для связанной задачи BEP, в которой выходные данные свернуты до каким-то произвольным образом. Для TEP граница равна Θ ( k 2 d - 1 ) , а для BEP граница равна Θ ( k 2 d - 1 / log k ) , т.е. вы получаете сохранение log k .{0,1}Θ(k2d1)Θ(k2d1/logk)logk


12

Несмотря на то, что речь не идет о времени выполнения, я подумал, что стоит упомянуть классический результат Хопкрофта, Пола и Валианта: [1], поскольку он все еще находится в дух «что может заставить вас сохранить логарифмический фактор».TIME[t]SPACE[t/logt]

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

[1] Хопкрофт, Пол и Валиант. По времени против пространства . J. ACM 24 (2): 332-337, 1977.



8

The best known algorithm for computing the edit (a.k.a. Levenshtein) distance between two strings of length n takes O((n/logn)2) time:

William J. Masek, Mike Paterson: A Faster Algorithm Computing String Edit Distances. J. Comput. Syst. Sci. 20(1): 18-31 (1980).


4
Again, this is a variation of the Four Russians algorithm, I think.
David Eppstein

7

Θ(n/logn) отображается как правильная оценка для проблемы, рассматриваемой Грегом и Полом Валиантом (без связи с хитростями):

Грегори Валиант и Пол Валиант, Мощность линейных оценок, 2011. В 52-м ежегодном симпозиуме IEEE по основам информатики, FOCS 2011.


7

Вот еще один пример жесткой границы, имеющей логарифмический фактор. (Это теорема 6.17 из Сложности булевых функций: достижения и границы Стасиса Юкны.)

Размер формулы (по полному двоичному базису или базису Де Моргана) проблемы отличимости элементов Θ(N2/журналN), где N количество бит на входе

The reason the log factor appears in the denominator is that representing m integers between 1 and poly(m) requires n:=O(mlogm) bits in total, since each integer requires O(logm) bits. So an upper bound that looks natural in terms of m, like Θ(m2logm), becomes Θ(n2/logn) when expressed in terms of n, where n is the number of bits in the input.


2

Finding the prime factors of n by trial division when the list of primes is already given. There are θ(nlog(n)) primes less than n so if these primes are given to you, then trial division of n by each of them takes θ(nlog(n)) time (assuming division is a constant-time operation)


3
In fact, it's enough to look at the roughly 2n/logn primes below n. But there are far better algorithms out there.
Yuval Filmus

-2

somewhat similar to JG's answer & "thinking outside the box", this seems like a related/relevant/apropos/fundamental negative result. based on diagonalization with a universal TM, there exists a O(f(n)) DTIME language that cannot run in O(f(n)logf(n)) DTIME, due to the time hierarchy theorem. so this applies to a linear DTIME algorithm that exists, f(n)=n, that runs impossibly in O(nlogn) DTIME.


2
on a TM, DTIME(n/logn) is trivial as it doesn't allow the machine to read the whole input. also, the DTIME notation makes the big-oh notation unnecessary.
Sasho Nikolov

?? there is still theory for sublinear time algorithms...
vzn

3
sublinear algorithms make sense in oracle & random access models. DTIME is standardly defined w.r.t. multitape TM, and that's the definition used in the hierarchy theorem for DTIME.
Sasho Nikolov

1
No, @SashoNikolov, DTIME(n/logn) is not trivial. Compare "Are the first n/lgn bits of the input all zeros?" with "Do the first n/lgn bits of the input encode a satisfiable boolean formula?"
Jeffε

5
@JɛffE: You cannot test “Are the first n/lgn bits of the input all zeros?” in O(n/logn) time on a TM, since you do not know what n is without first reading the whole input, which takes time n. It is a standard fact that if f(n)<n, then DTIME(f(n)) contains only languages the membership in which can be determined from the first k bits of input for a constant k (and therefore are computable in constant time).
Emil Jeřábek supports Monica
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.