Работать напрямую со сложностью времени или нижними границами схемы страшно. Следовательно, мы разрабатываем такие инструменты, как сложность запросов (или сложность дерева решений), чтобы справиться с нижними границами. Поскольку каждый запрос занимает по крайней мере один блок-шаг, а вычисления между запросами считаются бесплатными, сложность времени по меньшей мере столь же высока, как и сложность запроса. Однако можем ли мы что-нибудь сказать об увольнениях?
Мне интересно работать в классической или квантовой литературе, но я привожу примеры из КК, так как я более знаком.
В некоторых известных алгоритмах, таких как поиск Гровера и нахождение периода Шора, сложность времени находится в пределах логарифмических факторов сложности запроса. Для других, таких как проблема скрытой подгруппы, мы имеем сложность полиномиального запроса , но алгоритмы полиномиального времени не известны.
Поскольку существует потенциальный разрыв между временем и сложностью запроса, не ясно, что алгоритм оптимальной сложности времени должен иметь ту же сложность запроса, что и алгоритм оптимальной сложности запроса.
Есть ли примеры компромиссов между временем и сложностью запроса?
Существуют ли проблемы, когда самый известный алгоритм сложности времени отличается по сложности от лучшего алгоритма сложности запроса? Другими словами, можем ли мы выполнить больше запросов, чтобы упростить операции между запросами?
Или есть аргумент, который показывает, что всегда существует версия асимптотически оптимального алгоритма запроса, имеющая реализацию с асимптотически лучшей временной сложностью?
источник
Ответы:
Вот попытка создания искусственной функции со следующим свойством:
Пусть размер ввода будет . Пусть первые log n битов (назовем эту строку x) кодируют входные данные для задачи, завершенной для EEXP. Следующие n битов (давайте назовем эту строку y) обладают свойством того, что все они равны нулю тогда и только тогда, когда x является НЕТ экземпляром задачи, полной EEXP.n+logn logn n
На словах первого биты кодируют нелегкую задачу, а следующий п бит дать вам подсказку о решении этой проблемы. Однако, чтобы найти решение, взглянув на n- битную строку, вы сделаете Ω ( n ) запросов.logn n n Ω(n)
Таким образом, эта проблема может быть решена либо чтением только первых битов n и затрачиванием времени exp (n), либо считыванием n битов и использованием только линейного времени.logn n
Эта же функция выполняется для сложности квантовых запросов. При необходимости вставляйте знаки квадратного корня.
источник
Более экстремальная версия примера Робина:
Пусть входной размер равен , а первые n - 1 бит (назовите эту строку x ) кодируют машину Тьюринга T x . Исправьте некоторую функцию f ( n ) . Пусть последний бит строки равен 1, если машина Тьюринга T x останавливается менее чем за f ( n ) шагов. Задача состоит в том, чтобы определить, останавливается ли T x менее чем за f ( n ) шагов и четность x четна.n n−1 x Tx f(n) 1 Tx f(n) Tx f(n) x
Таким образом, с помощью запросов проблема может быть решена за время O ( f ( n ) ) , а с помощью n запросов проблема может быть решена за время O ( n ) .n−1 O(f(n)) n O(n)
источник
Мне нравится ответ Робина Котари и модификация Джо Фицсимона. В очевидном расширении своих ответов они могут достичь любого отношения разделения (кроме константы и константы) между меньшей и большей сложностью запроса и большей и меньшей временной сложностью. Однако не существует очевидного способа сделать их функции не частичными. Я хочу указать на естественную проблему, когда у нас есть разделение, и показать, что большие разделения сложнее для полных функций.
Естественная проблема
Всего функций сложнее разделить?
Мне кажется, что сложнее найти полные функции с доказуемым разделением. Чтобы показать, что случай общих и частичных функций различен, я приведу аргумент о наибольшем разделении между сложностями запросов оптимальных по запросу и оптимальных по времени алгоритмов для полной функции.
Используя нижнюю границу [1] Саймона, мы можем видеть, что если функция зависит отm Ω(logm) m n n−m m 0
, то для полной функции, учитывая оптимальный по запросу алгоритм со сложностью ( q 1 ( n ) , t 1 ( n ) ) , существует оптимальный по времени алгоритм со сложностью ( q 2 ( n ) , t 2(query complexity,time complexity) (q1(n),t1(n)) (q2(n),t2(n)) q2(n)≤f(q1(n)) f(n)=O(2n)
[1] Х. У. Саймон, «Жесткая Z (loglogn) привязанная ко времени параллельная память RAM для вычисления невырожденных булевых функций», в: Symp. Основы теории вычислений. Конспект лекций по информатике. 158, Springer, Berlin, 1983, pp. 439–444.
источник