为什么在复杂性理论中使用语言


10

我刚刚开始涉足计算理论,该理论研究可计算的内容,速度,使用多少内存以及使用哪种计算模型。

我有一个非常基本的问题,但我确实希望你们中的一些人可以帮助我理解其背后的概念:

为什么一切都围绕语言的概念和定义(即常规语言和上下文无关语言)进行?以及它们如何关联和描述算法的复杂性以及解决这些问题的可能的计算模型?

我阅读了以下相关问题:

但是我仍然无法回答我的疑问,因为它们为它们为什么重要(我确实理解)提供了实际的辩护,但并不能帮助我理解为什么复杂性理论基于它们。


1
这不是我们的参考问题所涵盖的吗?
拉斐尔

@Raphael-感谢您向我指出该问题,这是一个很好的参考!我现在正在阅读,但是目前我认为这可能是问题cs.stackexchange.com/questions/13669/…的附录。在我看来,它还没有得到答复,否则请让我知道
Matteo 2014年

3
语言只是一组有限长度的字符串,与将有限字符串映射到1或0的函数相同。所以您实际上是在问“为什么决策问题的复杂性理论如此之多”,答案是最简单(非平凡)的计算任务,通常将更复杂的计算任务简化为决策问题。
Sasho Nikolov 2014年

Answers:


10

这是因为语言是形式化“问题”概念的最佳方式(唯一的方式)。

一种算法(Turing Machine)具有性能,我们通过big-O复杂度来表示。问题(语言)属于复杂性类别。这些通常由存在来定义:如果存在接受以给定性能(空间或时间)运行的语言的机器,则该语言属于相应的复杂度类。L

有几个原因。首先是语言是平台无关的。您不必担心整数是32位还是64位,或者浮点运算是否与其他运算并行运行。这些东西可以在微观级别提高性能,但是复杂性分析对宏观级别很感兴趣。当您从100扩展到到扩展到输入时,算法性能如何变化?它是从使用100万个带状细胞增加到10亿个,还是从100万个增加到比宇宙中原子更多的细胞?10 9 10 121061091012

第二个是语言只是数据的一种很好的抽象。您需要一些可以证明的东西,可以正式建模的东西。将输入和输出编码为字符串意味着您现在不再处理内存中的位,而是处理具有特定属性的数学对象。您可以对它们进行推理,并以正式,非常简单的方式证明它们的证据。

复杂性理论倾向于集中在决策问题上,因为它们最终很困难。当旅行推销员的决策版本为NP完全时(即,行程短于长度),则显然最难找到最短路径的难度更大。由于功能/优化问题没有太多关注,因为关于简单决策问题仍然存在很多未解决的问题和未解决的问题。k

我想这是您面临的挑战:找到一种方法来数学描述非语言问题。我不知道语言是否特殊,但是我认为它们是我们拥有的最简单的工具,也是最容易使用的工具。


7
语言当然不是解决问题的唯一方法。例如,您可以将诸如色数之类的形式化为从图到自然数的函数。而且,实际上,在功能和优化问题上还有很多工作要做。
David Richerby

2
是的,但是如果没有某种语言或机器的概念,您将如何处理计算色度数的复杂性?
jmite 2014年

1
感谢您的回答,我明白您的意思。但是,我仍然有两个问题:1)我们使用语言的事实是否会影响问题的复杂性或可判定性的结果?即问题可以在浮点算法中解决,但不能在整数算法(即整数编程)中解决吗?2)我们如何从任何类型的数据映射到描述所有数据的独特语言(因为我们要评估问题的复杂性并从特定输入中抽象出来)?再次感谢!
Matteo

3
@jmite您需要一台机器,是的,但不一定是一种语言。
拉斐尔

2
@Raphael许多通常根据机器的运行时间定义的复杂度类可以根据描述性复杂度来表征。
Sasho Nikolov 2014年

7

您的问题有两个基本答案:

  1. 复杂度理论比语言要多得多,例如函数类,算术复杂度,近似算法的子区域和不可近似性。

  2. 历史原因:可计算性理论的基础论文之一是讨论希尔伯特的Entscheidungsproblem(停顿问题的一种形式)。

不幸的是,我对后者知之甚少,但让我扩展一下前者。

语言之外的复杂性

每个计算复杂度类都有一个关联的函数类。例如,在多项式时间内可确定的所有问题的类别P与FP关联,在多项式时间内可计算的所有函数的类别。因为它是用来定义NP-FP硬度是很重要的:一个语言是NP难解,若对所有语言在NP有一个函数在FP使得当且仅当。函数的另一种复杂度类别#P通过Toda定理与所谓的多项式层次结构相关。中号˚F 中号 X 中号˚F 中号X 大号LMfMxMfM(x)L

算术电路复杂度(或代数复杂度理论)处理计算各种多项式的复杂度。这里重要的复杂度类别是VP和VNP,几何复杂度理论是一个重要的项目,试图使用代数几何和表示理论将VP和VNP(以及后来的P和NP)分开。

代数复杂度的另一个重要示例是快速矩阵乘法。这里的基本问题是我们可以将两个矩阵相乘多快?类似的问题也问到我们可以将整数相乘的速度有多快,我们可以对整数进行素数测试的速度有多快(这是一个决策问题!),以及可以分解整数的速度有多快。

凸优化处理可以有效解决(或几乎解决)的优化问题。例子是线性规划和半定规划,它们都具有有效的算法。在这里,我们对最优和最优解决方案本身都感兴趣。由于通常存在多个最佳解决方案,因此无法将计算最佳解决方案很好地表示为决策问题。

逼近度是研究多项式时间内优化问题的逼近程度的领域。例如,考虑一下经典的集合覆盖问题:给定集合的集合,我们需要覆盖整个宇宙中的几个集合?找到最佳数量是NP难的,但是也许可以计算出一个近似值吗?近似算法是用于计算近似值的子区域研究算法,而不可近似性则研究近似算法的极限。在Set Cover的特定情况下,我们有一个算法给出近似值(贪婪算法),并且很难做得更好。lnn


3

让我们从范畴论的角度来看这个问题。决策问题(或语言)于是将与类别的对象相对应,并且两个问题之间允许的减少将与类别的态射(箭头)相对应。

谈论语言的优点是可以很好地定义语言的对等(即通过扩展等式)。两个不相关的问题可能导致使用相同的语言,然后我们可以将它们视为等效。如果我们想谈论同构问题,则必须定义两个问题之间允许的同构。但是允许的态射取决于所考虑的实际复杂度类别,这使得该方法不太适合比较不同的复杂度类别。

同构问题的概念通常比等效语言的概念粗糙,即,即使两个问题的关联语言不相同,两个问题也可能是同构的。更糟糕的是,对于允许的同态常常有不同的合理概念,这些概念仅在允许的同构方面是一致的。专注于语言可以推迟此类问题,直到我们感觉要谈论一些不同的合理化还原概念(如Karp还原与Cook还原)。


这似乎无法回答问题。无论是用作相应类别中的对象,还是可以谈论问题之间的态射。
David Richerby

@DavidRicherby我想说明的一点是,确定适当的词素比确定适当的对象(=语言)更具挑战性。(特别是因为通常有不止一个适当的词素概念。)没有词素,您就无法谈论同构问题(或算法)。但是,语言为您提供了一种方式来谈论问题的等效性。也许我没有正确解释这一点,但是(对我而言)这是“在复杂性理论中使用语言”的充分理由。
Thomas Klimpel
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.