Какие проблемы, когда мы знаем, что у нас есть оптимальный алгоритм?


15

Каковы некоторые нетривиальные задачи, в которых мы знаем, что текущий алгоритм, который у нас есть, является асимптотически оптимальным? (Для машин Тьюринга)

И как это доказано?


11
Машина Тьюринга - сложная модель для нижних границ. Изменение defn может изменить полином во время выполнения, поэтому вам нужно быть немного более конкретным.
Суреш Венкат

Как вы определяете нетривиально?
Funkstar

1
Как говорит Суреш, вид ТМ, который вы используете, оказывает влияние. Я предполагаю, что для языка палиндромов (слов, которые вы можете читать задом наперед), у нас есть оптимальная ТМ с одной лентой, которая делает шагов, чтобы выбрать язык. А для 2-лентных ТМ это разрешимо за линейное время, и, следовательно, в значительной степени оптимально. O(n2)
Бруно

Ответы:


18

Любой алгоритм, который требует линейного времени и должен считывать весь ввод, должен быть асимптотически оптимальным. Точно так же, как комментирует Рафаэль, любой алгоритм, время выполнения которого имеет тот же порядок, что и размер вывода, является оптимальным.


10
Аналогично, любой алгоритм, время выполнения которого имеет тот же порядок, что и размер вывода, является оптимальным.
Рафаэль

9
Я полагаю, что этот ответ и комментарий, который следует за ним, являются полным состоянием искусства.
Джефф

9
Ну, это было неутешительно
sture

1
Для записи, комментарий Jɛ ff E, кажется, ссылается на ответ Шира ниже.
Андрас Саламон

1
Я имел в виду ответ Макса, а не Шира, и комментарий Рафаэля к ответу Макса.
Джеффс

8

Если мера сложности, которую вы рассматриваете, - это сложность запроса, т. Е. Количество раз, которое машина должна посмотреть на входные данные для решения конкретной проблемы, то существует много проблем, для которых у нас есть оптимальные алгоритмы. Причина этого заключается в том, что нижние границы сложности запросов легче достичь, чем нижние границы сложности времени и пространства, благодаря некоторым популярным методам, включая метод противника .

Недостатком, однако, является то, что эта мера сложности почти исключительно используется в квантовой обработке информации, поскольку она обеспечивает простой способ доказать разрыв между квантовой и классической вычислительной мощью. Наиболее известным квантовым алгоритмом в этой структуре является алгоритм Гровера . Для заданной двоичной строки для которой существует один i такой, что x i = n , необходимо найти i . Классически (без квантового компьютера) наиболее тривиальный алгоритм является оптимальным: вам нужно запросить эту строку в среднем n / 2 раза, чтобы найтиx1,,xNяxi=Nяn/2 . Гровер представил квантовый алгоритм, который делает это в O ( язапросы к строке. Это также оказалось оптимальным.O(n)


2
Действительно, сложность запроса лежит в основе ответа Макса. Для большинства задач любой алгоритм доказуемо «должен прочитать весь ввод» или хотя бы постоянную часть ввода.
Джеффс

6
  • Если вы хотите изменить свою модель, довольно мало нижних границ в структурах данных. См. Нижние границы для структур данных для получения указателей на хорошие ссылки для нижних границ в структурах данных.
  • Из для сортировки в модели сравнения, о которой упоминали некоторые люди, можно получить аналогичную оценку для задачи выпуклой оболочки, рассмотрев случай, когда вход составлен из точек на графике возрастающая функция в первом квадранте плоскости.Ω(nlogn)

2
+1 за упоминание структур данных. Но я не думаю, что можно получить полезную нижнюю оценку для выпуклых оболочек через сравнение нижних границ для сортировки. Причина в том, что модель сравнения не достаточно мощна, чтобы вычислять выпуклые оболочки вообще. Вместо этого лучше использовать более мощную модель, такую ​​как алгебраические деревья решений, в которой можно вычислить оболочки, а затем адаптировать нижнюю границу для сортировки к этой более мощной модели.
Дэвид Эппштейн

Имеет смысл, спасибо за разъяснения!
Абель Молина

3
  1. Сортировка сравнений с использованием сравнений (сортировка слиянием, чтобы назвать одно) является оптимальной, доказательство заключается в простом вычислении высоты дерева с помощью n ! уходит.O(nlogn)n!

  2. Предполагая гипотезу об уникальных играх, Хот, Киндлер, Моссель и О'Доннелл показали, что NP-завершено, чтобы приблизить Max-Cut лучше, чем алгоритм Гоманса и Уильямсона. Таким образом, в этом смысле G & W является оптимальным (при условии, что ).PNP

  3. Можно показать, что некоторые распределенные алгоритмы оптимальны по отношению к некоторым условиям (например, доля состязательных процессоров), но, поскольку вы упомянули машины Тьюринга, я думаю, это не тот тип примеров, которые вы ищете.


2
Отвечает ли вопрос 2 на вопрос или нет, зависит от того, что спрашивающий имеет в виду под «оптимальным», хотя я сомневаюсь, что спрашивающий задает вопрос в этом смысле (в противном случае существует много, много жестких результатов приближаемости, которые даже не требуют UGC). Более того, я не думаю, что пункт 1 или 3 отвечает на вопрос.
Цуёси Ито

@TsuyoshiIto, трудно догадаться, что именно имел в виду Аскер, и именно это заставило меня попробовать ответы в разных направлениях в надежде найти что-то полезное для него / нее. Что заставляет вас говорить, что (1), кстати, неверный ответ?
Шир

2
Аскер специально спрашивает алгоритм, оптимальный для машины Тьюринга .
Цуёси Ито

6
Является ли «сортировка сравнений» на самом деле «проблемой»? Или это проблема и ограничение модели вычислений?
Джеффс

3

Предположим , вы получаете вход и просят решить , если RAM машина M Завершает на входе х после т шагов. Согласно теореме временной иерархии, оптимальный алгоритм для решения этой проблемы состоит в том, чтобы моделировать выполнение M ( x ) для t шагов, что можно сделать за время O ( t ) .w=M,x,tMxtM(x)tO(t)

(Примечание: для машин Тьюринга моделирование выполнения занимает O ( t log t ) шагов; мы знаем только нижнюю границу Ω ( t ) . Таким образом, это не совсем оптимально для машин Тьюринга конкретно).MO(tlogt)Ω(t)

Есть некоторые другие проблемы, которые содержат версию проблемы остановки в качестве дополнительного случая. Например, решение, является ли предложение следствием WS1S, занимает время 2 O ( | θ | ), и это оптимально.θ2↑↑O(|θ|)


3

Я не уверен, что вы подразумеваете под "нетривиальным", но как насчет этого? . Этот язык не является регулярным, поэтому любой TM, решающий, что он должен работать в Ω ( n log n ) . Простой алгоритм (пересекающий все остальные 0) является оптимальным.L={02k|k0}Ω(nlogn)


3

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

Одним из примеров является хранение сумм префиксов при динамическом обновлении. Мы начнем с массива чисел , и цель состоит в том, чтобы сохранить структуру данных, которая позволяет выполнять следующие операции:A[1],,A[n]

  • Добавить к A [ i ] , учитывая i и ΔΔA[i]iΔ
  • j=1iA[i]i

O(logn)A[i]nΩ(nlogn)

{1,n}

  • ijij
  • ii

O(α(n))αnΩ(nα(n))


1

Многие потоковые алгоритмы имеют верхние границы, совпадающие с их нижними границами.


0

Есть два схожих алгоритма поиска, которые, насколько я понимаю, являются оптимальными, основаны на конкретных ограничениях на порядок / распределение входных данных. однако представления алгоритмов обычно не подчеркивают эту оптимальность.

  • поиск золотого сечения для нахождения максимума или минимума (экстремума) унимодальной функции. предполагает, что ввод является унимодальной функцией. находит его в среднем в логарифмическом времени. насколько я помню, в книге « Структура и интерпретация компьютерных программ » Абельсона и Сассмана, возможно, было доказательство оптимальности .

  • Бинарный поиск находит точку в логарифмическом времени в среднем в отсортированном списке, но требует сортировки входных данных.

Я цитирую Википедию выше, но у нее нет доказательств того, что они оптимальны, может быть, некоторые другие ссылки, которые доказывают оптимальность, могут быть найдены аудиторией.


-1

Многие сублинейные алгоритмы времени имеют верхние границы, соответствующие их нижним границам.


3
Помечено как дубликат.
Джефф

Алгоритм сублинейного времени и алгоритм потоковой передачи - это разные области.
Бин Фу

1
Это правда, но вы должны объединить ответы в один.
Суреш Венкат

Некоторые примеры оптимальных сублинейных алгоритмов времени могут быть
Бин Фу

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