NL-完备性和 PSPACE-完备性
为了解决复杂的问题,我们需要高效的算法。我们面临着很多问题,其中一些问题可以通过使用算法来解决,而每个算法都需要一些空间和时间。为了获得更好的程序性能,我们需要降低算法的空间和时间复杂度。
在本文中,我们将简要讨论 NL-completeness 和 PSPACE-Completeness 以及一些基本定义。
需要更多内存的示例:网络图、基因组等。
我们想要使用少量内存的算法,以便可以处理大量数据,而无需一次将所有数据存储到计算机硬盘中。算法占用次线性空间,因为输入 n 位占用线性空间。
这里使用了两带图灵机——
- 包含输入的只读磁带
- 可自由使用的工作带
工作磁带占用的空间有助于空间复杂性。
我们有,
L = SPACE ( log n ) , and
NL = NSPACE ( log n )
空间复杂性:
它被定义为解决任何给定计算问题所需的计算机内存空间量,作为输入的函数,或者我们可以说它是算法所需的内存量,直到其执行完成。如果一个算法将终止并且如果它的解决方案存在,它就被称为完整的。
NL-完整性:
NL 包含决策问题,由非确定性图灵机解决。在了解 NL 完备性之前,我们先了解 Log space-Reducibility。
日志空间-可约性:
如果对于所有函数f ,A 是可简化为 B 的对数空间:
{0, 1}* → {0, 1}* such that x ∈ A if f (x) ∈ B for every x ∈ {0, 1}*
为了定义 NL 完整性,我们需要适当的归约。 L = NL 是否是复杂性理论问题。因此缩减是对数空间缩减,即给定输入字符串x ,我们有一个函数f(x) 使得 f(x) 可以由 DTM 通过使用工作磁带中的最多 O(log |x|) 个单元来计算。
如果语言“A”满足以下两个条件,则它是 NL 完全的——
- “A”在荷兰。 (A∈NL)
- 属于 NL 的语言可以将日志空间缩减为“A”
(对于NL中的所有B,存在B≤LA)。
应用:
- ST-连接
- 命题逻辑
- 2-可满足性
PSPACE-完整性:
所有可以在多项式输入长度中解决的决策问题,以及是否在多项式空间中解决的所有其他问题都可以转换为多项式时间。确定性上下文相关语法的“单词问题”是第一个 PSPACE 完全问题。
如果语言“A”满足以下两个条件,则它是 PSPACE 完备的
- “A”在 PSPACE 中。 (A ∈ PSPACE)
- 属于 PSPACE 的语言可以多项式时间可归约为“A”
(对于 PSPACE 中的所有 B,存在 B ≤LA)。
请注意,如果“A”仅遵循第二个条件,那么我们说它是 PSPACE 难的。
应用:
- 十六进制(棋盘游戏)。
- 一阶相等逻辑
- 良序集的一阶理论
- Lambda演算等
为什么日志空间缩减用于 NL 完整性,而 PSPACE 缩减不用于 PSPACE 完整性?
作为 L ⊆ NL ⊆ P 。因此,对 NL 完整性使用多项式时间缩减是没有意义的,因为多项式时间缩减比 L 类更强大。因此我们使用对数空间缩减来实现 NL 完整性。
使用较弱的归约,完整性结果更令人印象深刻,因为归约能够做的工作更少,因此归约实际上完成了所有工作,因此我们使用多项式时间归约而不是多项式空间归约。