Вообще говоря, для любого алгоритма верно следующее:
- Предположим, что - это алгоритм, который выполняется за время . Тогда не может занимать больше, чем места, так как для записи битов требуется время .Aе( н )Aе( н )е( н )е( н )
- Предположим, что - это алгоритм, требующий пространства . Тогда за времени может посетить каждое из его различных состояний, поэтому ничего не может получить, выполнив более времени.Af(n)2f(n)A2f(n)
Это следует из того:
NP ⊆PSPACE
Утверждение известно как часть отношений между классами, как показано на следующей диаграмме:
Объяснение простое: проблема имеет сертификат полиномиальной длины . Алгоритм, который проверяет все возможные сертификаты, является алгоритмом, который решает во времени .Q ∈ NPyQ2nO(1)
Требуемое пространство:
- y (многочлен от )n
- пространство, необходимое для проверки . Поскольку является полиномиальным сертификатом, его можно проверить за полиномиальное время, следовательно, он не может требовать больше, чем полиномиальное пространство.yy
Поскольку сумма двух полиномов также является полиномом, можно определить с помощью полиномиального пространства.Q
Пример:
Предположим, что является экземпляром 3-CNF для литералов с предложениями. Назначение - это некоторая функция .φx1…xnmff:{x1…xn}→{0,1}
Он гласит:
- Есть разных назначений.2n
- Дано задание , требуется время , чтобы вычислить значение , поэтому он не может требовать больше , чем пространства.fO(m)φO(m)
Таким образом, алгоритм который проверяет все возможные назначения, будет использовать полиномиальное пространство, работать в экспоненциальном времени и принимать решение 3-SAT.A
Это следует из того:
3-SAT , а так как 3-SAT является NP-Complete,∈PSPACENP ⊆PSPACE