Сложность времени - Time complexity

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

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

Поскольку время работы алгоритма может различаться для разных входов одного и того же размера, обычно считается сложность времени наихудшего случая, который представляет собой максимальное количество времени, необходимое для ввода заданного размера. Менее распространенным и обычно указываемым явным образом является средняя сложность, который представляет собой среднее время, затрачиваемое на входы заданного размера (это имеет смысл, поскольку существует только конечное число возможных входов заданного размера). В обоих случаях временная сложность обычно выражается как функция размера входа.[1]:226 Поскольку эту функцию, как правило, трудно вычислить точно, а время выполнения небольших входных данных обычно не имеет значения, обычно сосредотачиваются на поведении сложности при увеличении размера входных данных, т. Е. асимптотическое поведение сложности. Следовательно, временная сложность обычно выражается с помощью нотация большой O обычно и т.д., где п размер ввода в единицах биты необходимо для представления ввода.

Алгоритмические сложности классифицируются в соответствии с типом функции, обозначенной большой нотацией O. Например, алгоритм с временной сложностью это алгоритм линейного времени и алгоритм с временной сложностью для некоторой постоянной это алгоритм полиномиального времени.

Таблица общих временных сложностей

В следующей таблице приведены некоторые классы часто встречающихся временных сложностей. В таблице poly (Икс) = ИксО(1), т.е. полином от Икс.

имяКласс сложностиПродолжительность (Т(п))Примеры времени работыПримеры алгоритмов
постоянное времяО(1)10Нахождение среднего значения в отсортированном массив чисел

Расчет (−1)п

обратный Аккерман времяО(α(п))Амортизированное время за операцию с использованием непересекающееся множество
повторный логарифмический времяО(бревно*  п)Распределенная раскраска циклов
логарифмическийО(журнал журнала п)Амортизированное время на операцию с использованием ограниченного приоритетная очередь[2]
логарифмическое времяDLOGTIMEО(бревноп)бревноп, бревно(п2)Бинарный поиск
полилогарифмическое времяполи (журналп)(бревноп)2
дробная мощностьО(пc) где 0 п1/2, п2/3Поиск в kd-дерево
линейное времяО(п)п, 2n + 5Поиск самого маленького или самого большого предмета в несортированном массив, Алгоритм Кадане, линейный поиск
"n log-star n" разО(п бревно*  п)Зайдель с триангуляция многоугольника алгоритм.
линейное времяО(п бревноп)п бревноп, бревно п!Максимально быстро сортировка сравнения; Быстрое преобразование Фурье.
квазилинейное времяп поли (журналп)
квадратичное времяО(п2)п2Пузырьковая сортировка; Вставка сортировки; Прямая свертка
кубическое времяО(п3)п3Наивное умножение двух п×п матрицы. Расчет частичная корреляция.
полиномиальное времяп2О(бревноп) = поли (п)п2 + п, п10Алгоритм Кармаркара за линейное программирование; Тест на простоту AKS[3][4]
квазиполиномиальное времяQP2поли (журналп)пжурнал журналп, пбревнопСамый известный O (журнал2 п)-алгоритм аппроксимации для направленного Проблема дерева Штейнера.
субэкспоненциальное время
(первое определение)
СУБЭКСПО(2пε) для всех ε > 0Содержит BPP если EXPTIME (см. ниже) равно MA.[5]
субэкспоненциальное время
(второе определение)
2о(п)2п1/3Самый известный алгоритм за целочисленная факторизация; ранее лучший алгоритм для изоморфизм графов
экспоненциальное время
(с линейным показателем)
E2О(п)1.1п, 10пРешение задача коммивояжера с помощью динамическое программирование
экспоненциальное времяEXPTIME2поли(п)2п, 2п2Решение умножение цепочки матриц через перебор
факториальное времяО(п!)п!Решение задача коммивояжера через перебор
двойное экспоненциальное время2-EXPTIME22поли(п)22пРешая истинность данного утверждения в Арифметика пресбургера

Постоянное время

Алгоритм называется постоянное время (также пишется как О (1) время), если значение Т(п) ограничен значением, которое не зависит от размера ввода. Например, доступ к любому элементу в массив занимает постоянное время как только один операция необходимо выполнить, чтобы найти его. Аналогичным образом поиск минимального значения в массиве, отсортированном по возрастанию; это первый элемент. Однако поиск минимального значения в неупорядоченном массиве - это не операция с постоянным временем, так как сканирование каждого элемент в массиве нужен для определения минимального значения. Следовательно, это операция с линейным временем, занимающая время O (n). Однако, если количество элементов известно заранее и не меняется, можно сказать, что такой алгоритм работает в постоянное время.

Несмотря на название «постоянное время», время выполнения не обязательно должно зависеть от размера проблемы, но верхняя граница времени выполнения должна быть ограничена независимо от размера проблемы. Например, задача «обменять значения а и б если необходимо, чтобы аб"называется постоянным временем, хотя время может зависеть от того, верно ли, что аб. Однако есть некоторая постоянная т так что необходимое время всегда в большинстве т.

Вот несколько примеров фрагментов кода, которые выполняются в постоянное время:

int index = 5; int item = список [индекс];если (условие верно) тогда    выполнить некоторую операцию, которая выполняется в постоянное времяеще    выполнить другую операцию, которая выполняется в постоянное времяза я = 1 к 100    за j = 1 к 200 выполнить некоторую операцию, которая выполняется в постоянное время

Если Т(п) равно O (любое постоянное значение), это эквивалентно и указано в стандартных обозначениях как Т(п) равный O (1).

Логарифмическое время

Говорят, что алгоритм принимает логарифмическое время когда Т(п) = O (журнал п). Поскольку журнала п и журналб п связаны постоянный множитель, и такой множитель не имеет значения для классификации большого O стандартное использование алгоритмов логарифмического времени - O (log п) независимо от основания логарифма в выражении Т.

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

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

Пример логарифмического времени дает поиск по словарю. Рассмотрим толковый словарь D который содержит п записи, отсортированные по Алфавитный порядок. Мы предполагаем, что для 1 ≤ kп, можно получить доступ к k-я запись словаря в постоянное время. Позволять D(k) обозначить это k-я запись. В соответствии с этими гипотезами тест, чтобы увидеть, ш в словаре может быть выполнено за логарифмическое время: рассмотрим где обозначает функция пола. Если тогда мы закончили. Иначе, если продолжите поиск таким же образом в левой половине словаря, в противном случае продолжите аналогично с правой половиной словаря. Этот алгоритм похож на метод, который часто используется для поиска статьи в бумажном словаре.

Полилогарифмическое время

Говорят, что алгоритм работает в полилогарифмический время если его время Т(п) является О((журнал п)k) для некоторой постоянной k. Другой способ написать это: О(бревноk п).

Например, порядок цепочки матриц можно решить за полилогарифмическое время на параллельная машина с произвольным доступом,[6] и график возможно определяется как плоский в полностью динамичный путь в O (журнал3 п) время на операцию вставки / удаления.[7]

Сублинейное время

Говорят, что алгоритм работает в сублинейное время (часто пишется сублинейное время) если Т(п) = o (п). В частности, это включает алгоритмы с временной сложностью, определенной выше.

Типовые алгоритмы, которые являются точными, но работают в сублинейном времени параллельная обработка (как NC1 вычисление детерминанта матрицы), или, альтернативно, имеет гарантированные предположения о входной структуре (как логарифмическое время бинарный поиск и многие алгоритмы обслуживания деревьев делают). Однако, формальные языки например, набор всех строк, которые имеют 1-бит в позиции, указанной первыми log (n) битами строки, может зависеть от каждого бита ввода и при этом быть вычислимым за сублинейное время.

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

Поскольку такой алгоритм должен давать ответ без чтения всего ввода, его особенности сильно зависят от доступа, разрешенного для ввода. Обычно для ввода, представленного в виде двоичной строки б1,...,бk предполагается, что алгоритм может за время O (1) запросить и получить значение бя для любого я.

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

Линейное время

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

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

Квазилинейное время

Говорят, что алгоритм работает в квазилинейное время (также называемый лог-линейное время) если Т(п) = O (п бревноk п) для некоторой положительной постоянной k;[9] линейное время это случай k = 1.[10] С помощью мягкое обозначение O эти алгоритмы (п). Алгоритмы квазилинейного времени также O (п1 + ε) для любой константы ε> 0 и, таким образом, работает быстрее, чем любой алгоритм с полиномиальным временем, чья временная граница включает член пc для любого c > 1.

Алгоритмы, работающие в квазилинейном времени, включают:

Во многих случаях п · бревно п время работы - это просто результат выполнения Θ (log п) операция п раз (обозначения см. Обозначение Big O § Семейство обозначений Бахмана – Ландау ). Например, двоичная сортировка дерева создает двоичное дерево вставив каждый элемент п-размерный массив один за другим. Поскольку операция вставки самобалансирующееся двоичное дерево поиска берет О(бревно п) времени, весь алгоритм занимает О(п бревно п) время.

Сортировки сравнения требуется по крайней мере Ω(п бревно п) сравнения в худшем случае, потому что log (п!) = Θ (п бревно п), от Приближение Стирлинга. Также они часто возникают из отношение повторения Т(п) = 2Т(п/2) + О(п).

Субквадратичное время

An алгоритм как говорят субквадратичное время если Т(п) = o (п2).

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

Полиномиальное время

Алгоритм называется полиномиальное время если его время работы ограниченный сверху по полиномиальное выражение размером входа для алгоритма, т. е. Т(п) = O (пk) для некоторой положительной постоянной k.[1][11] Проблемы для которых существует детерминированный алгоритм полиномиального времени, принадлежат класс сложности п, что является центральным в области теория сложности вычислений. Тезис Кобэма заявляет, что полиномиальное время является синонимом «послушный», «выполнимый», «эффективный» или «быстрый».[12]

Некоторые примеры алгоритмов с полиномиальным временем:

  • В сортировка выбора алгоритм сортировки по п целые числа выполняет операции для некоторой постоянной А. Таким образом, он бежит во времени и является алгоритмом с полиномиальным временем.
  • Все основные арифметические операции (сложение, вычитание, умножение, деление и сравнение) могут быть выполнены за полиномиальное время.
  • Максимальное соответствие в графики можно найти за полиномиальное время.

Сильно и слабо полиномиальное время

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

Сильно полиномиальное время определяется в арифметической модели вычислений. В этой модели вычислений основные арифметические операции (сложение, вычитание, умножение, деление и сравнение) выполняются за единичный временной шаг, независимо от размеров операндов. Алгоритм работает за сильно полиномиальное время, если[13]

  1. количество операций в арифметической модели вычислений ограничено полиномом от количества целых чисел во входном экземпляре; и
  2. пространство, используемое алгоритмом, ограничено полиномом от размера входных данных.

Любой алгоритм с этими двумя свойствами можно преобразовать в алгоритм с полиномиальным временем, заменив арифметические операции подходящими алгоритмами для выполнения арифметических операций над Машина Тьюринга. Если второе из вышеперечисленных требований не выполняется, то это уже неверно. Учитывая целое число (который занимает место пропорционально п в модели машины Тьюринга) можно вычислить с п умножения с использованием повторное возведение в квадрат. Однако пространство, используемое для представления пропорционально , и, следовательно, экспоненциально, а не полиномиально в пространстве, используемом для представления входных данных. Следовательно, невозможно выполнить это вычисление за полиномиальное время на машине Тьюринга, но можно вычислить его полиномиальным числом арифметических операций.

И наоборот, есть алгоритмы, которые выполняются в количестве шагов машины Тьюринга, ограниченных полиномом от длины двоично-кодированных входных данных, но не выполняют количество арифметических операций, ограниченных полиномом по количеству входных чисел. В Евклидов алгоритм для вычисления наибольший общий делитель из двух целых чисел является одним из примеров. Учитывая два целых числа и , алгоритм выполняет арифметические операции над числами с не более чем В то же время количество арифметических операций не может быть ограничено количеством целых чисел во входных данных (которое в данном случае является константой, во входных данных всегда только два целых числа). Из-за последнего наблюдения алгоритм не работает за строго полиномиальное время. Его реальное время работы зависит от величины и и не только от количества целых чисел на входе.

Алгоритм, который выполняется за полиномиальное время, но не является сильно полиномиальным, называется выполняющимся за слабо полиномиальное время.[14]Хорошо известным примером проблемы, для которой известен алгоритм со слабо полиномиальным временем, но не известно, что он допускает алгоритм с сильно полиномиальным временем, является линейное программирование. Слабополиномиальное время не следует путать с псевдополиномиальное время.

Классы сложности

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

пВ класс сложности из проблемы решения это может быть решено на детерминированная машина Тьюринга за полиномиальное время
НПКласс сложности решения задач, которые могут быть решены на недетерминированная машина Тьюринга за полиномиальное время
ЗППКласс сложности задач решения, которые могут быть решены с нулевой ошибкой на вероятностная машина Тьюринга за полиномиальное время
RPКласс сложности задач решения, которые могут быть решены с односторонней ошибкой на вероятностной машине Тьюринга за полиномиальное время.
BPPКласс сложности задач решения, которые могут быть решены с двусторонней ошибкой на вероятностной машине Тьюринга за полиномиальное время
BQPКласс сложности решения задач, которые могут быть решены с двусторонней ошибкой на квантовая машина Тьюринга за полиномиальное время

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

Суперполиномиальное время

Говорят, что алгоритм принимает суперполиномиальное время если Т(п) не ограничена сверху никаким многочленом. С помощью небольшое обозначение омега, это ω (пc) время для всех констант c, где п - входной параметр, обычно количество битов во входных данных.

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

Алгоритм, использующий экспоненциальные ресурсы, явно суперполиномиален, но некоторые алгоритмы лишь очень слабо суперполиномиальны. Например, Тест на простоту Адлемана – Померанса – Рамли бежит за пO (журнал журнал п) время на п-битовые входы; это растет быстрее, чем любой многочлен для достаточно больших п, но размер ввода должен стать непрактично большим, прежде чем в нем нельзя будет доминировать полином с малой степенью.

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

Квазиполиномиальное время

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

Квазиполиномиальные временные алгоритмы обычно возникают в сокращение из NP-жесткий проблема к другой проблеме. Например, можно взять пример сложной задачи NP, скажем 3СБ, и преобразовать его в экземпляр другой задачи B, но размер экземпляра станет . В этом случае эта редукция не доказывает, что задача B NP-трудна; это сокращение показывает только то, что не существует алгоритма полиномиального времени для B, если нет алгоритма квазиполиномиального времени для 3SAT (и, следовательно, всех НП ). Точно так же есть некоторые проблемы, для которых мы знаем алгоритмы квазиполиномиального времени, но не известны алгоритмы полиномиального времени. Такие проблемы возникают в приближенных алгоритмах; известный пример - направленный Проблема дерева Штейнера, для которого существует алгоритм аппроксимации квазиполиномиального времени, обеспечивающий коэффициент аппроксимации (n - количество вершин), но показать существование такого алгоритма с полиномиальным временем - открытая проблема.

Другие вычислительные задачи с решениями с квазиполиномиальным временем, но без известного решения с полиномиальным временем, включают посаженная клика проблема, цель которой - найти большую группу в союзе клики и случайный граф. Хотя квазиполиномиально разрешима, было высказано предположение, что проблема насаждаемой клики не имеет решения за полиномиальное время; эта насаждаемая клика гипотеза использовалась как предположение о вычислительной сложности доказать сложность ряда других задач вычислительной теория игры, проверка собственности, и машинное обучение.[15]

Класс сложности QP состоит из всех задач, которые имеют квазиполиномиальные алгоритмы времени. Его можно определить в терминах DTIME следующим образом.[16]

Отношение к NP-полным задачам

В теории сложности нерешенные P против NP Задача спрашивает, все ли задачи в NP имеют алгоритмы с полиномиальным временем. Все самые известные алгоритмы для НП-полный такие проблемы, как 3SAT и т. д., занимают экспоненциальное время. В самом деле, для многих естественных NP-полных задач предполагается, что они не имеют алгоритмов с субэкспоненциальным временем. Здесь «субэкспоненциальное время» означает второе определение, представленное ниже. (С другой стороны, многие задачи о графах, представленные естественным образом матрицами смежности, разрешимы за субэкспоненциальное время просто потому, что размер входных данных равен квадрату числа вершин.) Эта гипотеза (для задачи k-SAT) известна как гипотеза экспоненциального времени.[17] Поскольку предполагается, что NP-полные задачи не имеют алгоритмов квазиполиномиального времени, некоторая несовместимость приводит к аппроксимационные алгоритмы сделать предположение, что NP-полные задачи не имеют алгоритмов квазиполиномиального времени. Например, см. Известные результаты о несовместимости установить обложку проблема.

Субэкспоненциальное время

Период, термин субэкспоненциальный время используется для выражения того, что время работы некоторого алгоритма может расти быстрее, чем любой многочлен, но все же значительно меньше экспоненты. В этом смысле проблемы, которые имеют алгоритмы субэкспоненциального времени, несколько более разрешимы, чем те, которые имеют только экспоненциальные алгоритмы. Точное определение понятия «субэкспоненциальный» не является общепринятым,[18] и мы перечисляем два наиболее широко используемых ниже.

Первое определение

Проблема называется субэкспоненциальной разрешимой во времени, если ее можно решить за время выполнения, логарифмы которого становятся меньше любого заданного полинома. Точнее, проблема находится в субэкспоненциальном времени, если для любого ε> 0 существует алгоритм, который решает задачу за время O (2пε). Набор всех таких задач - класс сложности СУБЭКСП который можно определить в терминах DTIME следующим образом.[5][19][20][21]

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

Второе определение

Некоторые авторы определяют субэкспоненциальное время как время работы за 2о (п).[17][22][23] Это определение допускает большее время работы, чем первое определение субэкспоненциального времени. Примером такого алгоритма субэкспоненциального времени является самый известный классический алгоритм целочисленной факторизации, общее числовое поле сито, который бежит во времени около , где длина входа равна п. Другой пример - проблема изоморфизма графов, где алгоритм Люкса работает во времени . (В 2015–2017 годах Бабай сократил сложность этой задачи до квазиполиномиального времени.)

Имеет значение, разрешено ли алгоритму быть субэкспоненциальным по размеру экземпляра, количеству вершин или количеству ребер. В параметризованная сложность, это различие становится явным, если рассматривать пары из проблемы решения и параметры k. ПОДПИСАТЬСЯ - это класс всех параметризованных задач, которые выполняются субэкспоненциально во времени в k и полином по входному размеру п:[24]

Точнее, SUBEPT - это класс всех параметризованных задач. для которого есть вычислимая функция с и алгоритм, который решает L во время .

Гипотеза экспоненциального времени

В гипотеза экспоненциального времени (ETH) в том, что 3СБ, проблема выполнимости булевых формул в конъюнктивная нормальная форма максимум с тремя литералами на предложение и с п переменные, не могут быть решены за время 2о(п). Точнее, гипотеза состоит в том, что существует некоторая абсолютная постоянная c>0 таким образом, что 3SAT не может быть решено вовремя 2сп любой детерминированной машиной Тьюринга. С участием м обозначающий количество пунктов, ETH эквивалентен гипотезе о том, что kSAT не может быть решен за время 2о(м) для любого целого числа k ≥ 3.[25] Гипотеза экспоненциального времени подразумевает P ≠ NP.

Экспоненциальное время

Алгоритм называется экспоненциальное время, если Т(п) ограничена сверху числом 2поли(п), где poly (п) - некоторый полином от п. Более формально, алгоритм является экспоненциальным, если Т(п) ограничена O (2пk) для некоторой постоянной k. Задачи, которые допускают алгоритмы экспоненциального времени на детерминированной машине Тьюринга, образуют класс сложности, известный как EXP.

Иногда экспоненциальное время используется для обозначения алгоритмов, которые Т(п) = 2O (п), где показатель степени является не более чем линейной функцией п. Это порождает класс сложности E.

Факториальное время

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

Двойное экспоненциальное время

Алгоритм называется двойная экспонента время, если Т(п) ограничена сверху числом 22поли(п), где poly (п) - некоторый полином от п. Такие алгоритмы относятся к классу сложности 2-EXPTIME.

Хорошо известные алгоритмы двойной экспоненциальной зависимости включают:

Смотрите также

Рекомендации

  1. ^ а б Сипсер, Майкл (2006). Введение в теорию вычислений. Курс Technology Inc. ISBN  0-619-21764-2.
  2. ^ Мельхорн, Курт; Нахер, Стефан (1990). «Ограниченные упорядоченные словари во времени O (log log N) и O (n) пространстве». Письма об обработке информации. 35 (4): 183–189. Дои:10.1016 / 0020-0190 (90) 90022-П.
  3. ^ Тао, Теренс (2010). «1.11 Тест на простоту AKS». Эпсилон комнаты, II: страницы третьего курса математического блога. Аспирантура по математике. 117. Провиденс, Род-Айленд: Американское математическое общество. С. 82–86. Дои:10,1090 / г / м2 / 117. ISBN  978-0-8218-5280-4. Г-Н  2780010.
  4. ^ Ленстра-младший, Х.В.; Померанс, Карл (11 декабря 2016 г.). «Проверка примитивности с гауссовыми периодами» (PDF). Цитировать журнал требует | журнал = (Помогите)
  5. ^ а б Бабай, Ласло; Фортноу, Лэнс; Нисан, Н.; Вигдерсон, Ави (1993). «BPP имеет субэкспоненциальное моделирование времени, если EXPTIME не имеет опубликованных доказательств». Вычислительная сложность. Берлин, Нью-Йорк: Springer-Verlag. 3 (4): 307–318. Дои:10.1007 / BF01275486.
  6. ^ Брэдфорд, Филип Дж .; Роулинз, Грегори Дж. Э .; Шеннон, Грегори Э. (1998). «Эффективное упорядочение цепочки матриц во времени полилога». SIAM Журнал по вычислениям. Филадельфия: Общество промышленной и прикладной математики. 27 (2): 466–490. Дои:10.1137 / S0097539794270698. ISSN  1095-7111.
  7. ^ Холм, Джейкоб; Ротенберг, Ева (2020). «Полностью динамическое тестирование планарности в полилогарифмическом времени». СТОК 2020: 167–180. Дои:10.1145/3357713.3384249.
  8. ^ Кумар, Рави; Рубинфельд, Ронитт (2003). «Алгоритмы сублинейного времени» (PDF). Новости SIGACT. 34 (4): 57–67. Дои:10.1145/954092.954103.
  9. ^ Naik, Ashish V .; Regan, Kenneth W .; Сивакумар, Д. (1995). «О теории сложности квазилинейного времени» (PDF). Теоретическая информатика. 148 (2): 325–349. Дои:10.1016 / 0304-3975 (95) 00031-кв. Получено 23 февраля 2015.
  10. ^ Седжвик Р. и Уэйн К. (2011). Алгоритмы, 4-е изд.. п. 186. Pearson Education, Inc.
  11. ^ Пападимитриу, Христос Х. (1994). Вычислительная сложность. Ридинг, Массачусетс: Эддисон-Уэсли. ISBN  0-201-53082-1.
  12. ^ Кобэм, Алан (1965). «Внутренняя вычислительная сложность функций». Proc. Логика, методология и философия науки II. Северная Голландия.
  13. ^ Грётшель, Мартин; Ласло Ловас; Александр Шрайвер (1988). «Сложность, оракулы и числовые вычисления». Геометрические алгоритмы и комбинаторная оптимизация. Springer. ISBN  0-387-13624-X.
  14. ^ Шрайвер, Александр (2003). «Предварительные сведения об алгоритмах и сложности». Комбинаторная оптимизация: многогранники и эффективность. 1. Springer. ISBN  3-540-44389-4.
  15. ^ Браверман, Марк; Ко, Ён Кун; Рубинштейн, Авиад; Вайнштейн, Омри (2015), Твердость ETH для самых плотныхk-подграф с идеальной полнотой, arXiv:1504.08352, Bibcode:2015arXiv150408352B.
  16. ^ Зоопарк сложности: Класс QP: квазиполиномиальное время
  17. ^ а б Impagliazzo, R .; Патури, Р. (2001). «О сложности k-SAT». Журнал компьютерных и системных наук. Эльзевир. 62 (2): 367–375. Дои:10.1006 / jcss.2000.1727. ISSN  1090-2724.
  18. ^ Ааронсон, Скотт (5 апреля 2009 г.). "Не совсем экспоненциальная дилемма". Штетл-Оптимизированный. Получено 2 декабря 2009.
  19. ^ Зоопарк сложности: Класс SUBEXP: детерминированный субэкспоненциальный-временной
  20. ^ Мозер, П. (2003). «Категории Бэра по классам малой сложности». В Анджей Лингас; Бенгт Дж. Нильссон (ред.). Основы теории вычислений: 14-й Международный симпозиум, FCT 2003, Мальмё, Швеция, 12-15 августа 2003 г., Труды. Конспект лекций по информатике. 2751. Берлин, Нью-Йорк: Springer-Verlag. С. 333–342. Дои:10.1007/978-3-540-45077-1_31. ISBN  978-3-540-40543-6. ISSN  0302-9743.
  21. ^ Милтерсен, П. (2001). «Дерандомизация классов сложности». Справочник по рандомизированным вычислениям. Комбинаторная оптимизация. Kluwer Academic Pub. 9: 843. Дои:10.1007/978-1-4615-0013-1_19. ISBN  978-1-4613-4886-3.
  22. ^ Куперберг, Грег (2005). "Субэкспоненциальный квантовый алгоритм для проблемы диэдральной скрытой подгруппы". SIAM Журнал по вычислениям. Филадельфия. 35 (1): 188. arXiv:Quant-ph / 0302112. Дои:10.1137 / s0097539703436345. ISSN  1095-7111.
  23. ^ Одед Регев (2004). "Субэкспоненциальный алгоритм по времени для задачи о диэдральной скрытой подгруппе с полиномиальным пространством". arXiv:Quant-ph / 0406151v1.
  24. ^ Флум, Йорг; Grohe, Мартин (2006). Параметризованная теория сложности. Springer. п. 417. ISBN  978-3-540-29952-3.
  25. ^ Импальяццо, Р.; Paturi, R .; Зейн, Ф. (2001). «Какие задачи имеют сильно экспоненциальную сложность?». Журнал компьютерных и системных наук. 63 (4): 512–530. Дои:10.1006 / jcss.2001.1774.
  26. ^ Майр, Э. & Майер, A .: Сложность проблемы слова для коммутативных полугрупп и полиномиальных идеалов. Adv. по математике. 46 (1982) стр. 305–329
  27. ^ J.H. Дэвенпорт и Дж. Хайнц: Исключение реального квантификатора является вдвойне экспоненциальным.J. Symbolic Comp. 5 (1988) стр. 29–35.
  28. ^ G.E. Коллинз: Исключение квантора для действительных замкнутых полей с помощью цилиндрической алгебраической декомпозиции. Proc. 2-й. GI Conference Automata Theory & Formal Languages ​​(Springer LectureNotes in Computer Science 33) стр. 134–183