В теории вычислительной сложности сложность алгоритма в среднем случае — это количество некоторого вычислительного ресурса (обычно времени), используемого алгоритмом, усредненное по всем возможным входам. Ее часто противопоставляют сложности в худшем случае , которая рассматривает максимальную сложность алгоритма по всем возможным входам.
Существует три основных мотива для изучения сложности в среднем случае. [1] Во-первых, хотя некоторые проблемы могут быть неразрешимыми в худшем случае, входные данные, которые вызывают такое поведение, могут редко встречаться на практике, поэтому сложность в среднем случае может быть более точной мерой производительности алгоритма. Во-вторых, анализ сложности в среднем случае предоставляет инструменты и методы для создания сложных примеров проблем, которые могут быть использованы в таких областях, как криптография и дерандомизация . В-третьих, сложность в среднем случае позволяет различать наиболее эффективный алгоритм на практике среди алгоритмов эквивалентной сложности в лучшем случае (например, быстрая сортировка ).
Анализ среднего случая требует понятия «среднего» входа в алгоритм, что приводит к проблеме разработки распределения вероятностей по входам. В качестве альтернативы можно использовать рандомизированный алгоритм . Анализ таких алгоритмов приводит к связанному понятию ожидаемой сложности . [2] : 28
Средняя производительность алгоритмов изучалась с тех пор, как в 1950-х годах были разработаны современные понятия вычислительной эффективности. Большая часть этой первоначальной работы была сосредоточена на проблемах, для которых уже были известны алгоритмы с наихудшим полиномиальным временем. [3] В 1973 году Дональд Кнут [4] опубликовал третий том «Искусства программирования» , в котором подробно рассматривается средняя производительность алгоритмов для задач, решаемых за наихудшее полиномиальное время, таких как сортировка и поиск медианы.
Эффективный алгоритм для NP -полных задач обычно характеризуется как тот, который выполняется за полиномиальное время для всех входных данных; это эквивалентно требованию эффективной сложности в худшем случае. Однако алгоритм, который неэффективен для «малого» числа входных данных, может быть все еще эффективен для «большинства» входных данных, которые встречаются на практике. Таким образом, желательно изучить свойства этих алгоритмов, где сложность в среднем случае может отличаться от сложности в худшем случае, и найти методы для связи между ними.
Фундаментальные понятия сложности в среднем случае были разработаны Леонидом Левиным в 1986 году, когда он опубликовал одностраничную статью [5], в которой дал определение сложности в среднем случае и полноты, а также привел пример полной задачи для distNP , аналога NP в среднем случае .
Первая задача — точно определить, что подразумевается под алгоритмом, который эффективен «в среднем». Первоначальная попытка может определить эффективный алгоритм в среднем случае как тот, который выполняется за ожидаемое полиномиальное время на всех возможных входных данных. Такое определение имеет различные недостатки; в частности, оно неустойчиво к изменениям в вычислительной модели. Например, предположим, что алгоритм A выполняется за время t A ( x ) на входных данных x , а алгоритм B выполняется за время t A ( x ) 2 на входных данных x ; то есть B квадратично медленнее, чем A . Интуитивно, любое определение эффективности в среднем случае должно отражать идею, что A эффективен в среднем тогда и только тогда, когда B эффективен в среднем. Предположим, однако, что входные данные выбираются случайным образом из равномерного распределения строк длиной n , и что A выполняется за время n 2 на всех входных данных, кроме строки 1 n , для которой A требуется время 2 n . Тогда можно легко проверить, что ожидаемое время выполнения A является полиномиальным, а ожидаемое время выполнения B является экспоненциальным. [3]
Чтобы создать более надежное определение эффективности в среднем случае, имеет смысл позволить алгоритму A работать дольше, чем полиномиальное время на некоторых входах, но доля входов, на которых A требует все большего и большего времени выполнения, становится все меньше и меньше. Эта интуиция отражена в следующей формуле для среднего полиномиального времени выполнения, которая уравновешивает полиномиальный компромисс между временем выполнения и долей входов:
для каждого n , t > 0 и полинома p , где t A ( x ) обозначает время работы алгоритма A на входе x , а ε — положительное постоянное значение. [6] В качестве альтернативы это можно записать как
для некоторых констант C и ε , где n = | x | . [7] Другими словами, алгоритм A имеет хорошую сложность в среднем случае, если после выполнения t A ( n ) шагов, A может решить все, кроме a н с/( т А ( н )) ε доля входов длины n , для некоторого ε , c > 0 . [3]
Следующий шаг — определить «средний» вход для конкретной проблемы. Это достигается путем связывания входов каждой проблемы с определенным распределением вероятностей. То есть, «средний случай» проблемы состоит из языка L и связанного с ним распределения вероятностей D , которые образуют пару ( L , D ) . [7] Два наиболее распространенных класса распределений, которые разрешены, это:
Эти две формулировки, хотя и похожи, не эквивалентны. Если распределение P -вычислимо, оно также P -выборочно, но обратное неверно, если P ≠ P #P . [7]
Распределительная задача ( L , D ) находится в классе сложности AvgP , если существует эффективный алгоритм среднего случая для L , как определено выше. Класс AvgP иногда называют distP в литературе. [7]
Распределительная задача ( L , D ) находится в классе сложности distNP , если L принадлежит NP и D является P -вычислимым. Когда L принадлежит NP и D является P -вычислимым, ( L , D ) принадлежит sampNP . [7]
Вместе AvgP и distNP определяют усредненные аналоги P и NP соответственно. [7]
Пусть ( L , D ) и ( L′ , D′ ) — две распределительные задачи. ( L , D ) в среднем сводится к ( L′ , D′ ) (записывается как ( L , D ) ≤ AvgP ( L′ , D′ ) ), если существует функция f , которая для каждого n на входе x может быть вычислена за время, полиномиальное относительно n и
Условие доминирования усиливает представление о том, что если задача ( L , D ) в среднем сложна, то ( L′ , D′ ) также в среднем сложна. Интуитивно, сокращение должно предоставить способ решения экземпляра x задачи L путем вычисления f ( x ) и подачи выходных данных в алгоритм, который решает L' . Без условия доминирования это может быть невозможно, поскольку алгоритм, который решает L за полиномиальное время в среднем, может потребовать сверхполиномиальное время на небольшом количестве входных данных, но f может отобразить эти входные данные в гораздо большее множество D' , так что алгоритм A' больше не будет работать за полиномиальное время в среднем. Условие доминирования позволяет таким строкам встречаться полиномиально только так часто, как в D' . [6]
Аналогом NP -полноты в среднем случае является distNP -полнота. Распределительная задача ( L′ , D′ ) является distNP -полной, если ( L′ , D′ ) принадлежит distNP и для каждого ( L , D ) из distNP , ( L , D ) сводится в среднем случае к ( L′ , D′ ) . [7]
Примером distNP -полной задачи является ограниченная задача остановки ( BH , D ) (для любого P -вычислимого D ), определяемая следующим образом:
[7]
В своей оригинальной статье Левин показал пример задачи распределения мозаики, которая в среднем является NP -полной. [5] Обзор известных distNP -полных задач доступен в сети. [6]
Одной из областей активных исследований является поиск новых distNP -полных задач. Однако поиск таких задач может быть затруднен из-за результата Гуревича, который показывает, что любая распределительная задача с плоским распределением не может быть distNP -полной, если только EXP = NEXP . [8] (Плоское распределение μ — это такое распределение, для которого существует ε > 0 такое, что для любого x , μ ( x ) ≤ 2 −| x | ε .) Результат Ливне показывает, что все естественные NP -полные задачи имеют DistNP -полные версии. [9] Однако цель поиска естественной распределительной задачи, которая является DistNP -полной, пока не достигнута. [10]
Как упоминалось выше, многие ранние работы, касающиеся сложности в среднем случае, были сосредоточены на проблемах, для которых уже существовали алгоритмы полиномиального времени, такие как сортировка. Например, многие алгоритмы сортировки, использующие случайность, такие как быстрая сортировка , имеют худшее время выполнения O( n 2 ) , но среднее время выполнения O( n log( n )) , где n — длина сортируемого ввода. [2]
Для большинства проблем анализ сложности в среднем случае проводится для поиска эффективных алгоритмов для проблемы, которая считается сложной в худшем случае. Однако в криптографических приложениях верно обратное: сложность в худшем случае не имеет значения; вместо этого мы хотим получить гарантию того, что сложность в среднем случае каждого алгоритма, который «ломает» криптографическую схему, неэффективна. [11]
Таким образом, все безопасные криптографические схемы полагаются на существование односторонних функций . [3] Хотя существование односторонних функций все еще остается открытой проблемой, многие кандидаты на роль односторонних функций основаны на сложных задачах, таких как факторизация целых чисел или вычисление дискретного журнала . Обратите внимание, что нежелательно, чтобы функция-кандидат была NP -полной, поскольку это гарантировало бы только то, что в худшем случае, скорее всего, не существует эффективного алгоритма для решения задачи; на самом деле мы хотим получить гарантию того, что ни один эффективный алгоритм не сможет решить задачу на случайных входных данных (т. е. в среднем случае). Фактически, как задачи факторизации целых чисел, так и задачи дискретного журнала находятся в NP ∩ coNP и, следовательно, не считаются NP -полными. [7] Тот факт, что вся криптография основана на существовании неразрешимых задач в среднем случае в NP, является одной из основных мотиваций для изучения сложности в среднем случае.
В 1990 году Импальяццо и Левин показали, что если существует эффективный алгоритм среднего случая для distNP -полной задачи при равномерном распределении, то существует алгоритм среднего случая для каждой задачи из NP при любом полиномиальном времени выборки распределения. [12] Применение этой теории к естественным распределительным задачам остается нерешенным открытым вопросом. [3]
В 1992 году Бен-Дэвид и др. показали, что если все языки в distNP имеют хорошие в среднем алгоритмы принятия решений, то они также имеют хорошие в среднем алгоритмы поиска. Кроме того, они показывают, что этот вывод справедлив при более слабом предположении: если каждый язык в NP в среднем прост для алгоритмов принятия решений относительно равномерного распределения, то он также в среднем прост для алгоритмов поиска относительно равномерного распределения. [13] Таким образом, криптографические односторонние функции могут существовать только в том случае, если существуют проблемы distNP над равномерным распределением, которые в среднем сложны для алгоритмов принятия решений.
В 1993 году Фейгенбаум и Фортнау показали, что невозможно доказать при неадаптивных случайных сокращениях, что существование хорошего в среднем алгоритма для distNP -полной задачи при равномерном распределении подразумевает существование эффективных алгоритмов в худшем случае для всех задач в NP . [14] В 2003 году Богданов и Тревизан обобщили этот результат на произвольные неадаптивные сокращения. [15] Эти результаты показывают, что маловероятно, что можно установить какую-либо связь между сложностью в среднем случае и сложностью в худшем случае посредством сокращений. [3]
Литература по случаям средней сложности включает следующие работы: