理论计算机科学中常见的错误信念


62

在08年10月12日编辑:

我将尝试修改该问题,以使更多的人感兴趣并分享他们的观点。我们需要您的贡献!

这篇文章的灵感来自于MO:数学中常见的错误信念的例子。大列表有时会产生大量难以控制的答案,但是在MO上的相关文章成功之后,我相信列出一些在TCS中常见的错误信念会有所帮助。

不过,由于该网站是专为回答研究级别的问题而设计的,因此代表非多项式时间之类的示例应不在列表中。同时,我们确实想要一些可能并不难的示例,但如果不仔细考虑,它看起来也很合理。我们希望这些示例具有教育意义,并且通常在第一次学习该主题时出现。NP

在该领域研究的人们会想到哪些(非平凡的)理论计算机科学中常见的错误信念的例子?

确切地说,我们想要的示例不同于TCS中令人惊讶的结果违反直觉的结果。这些结果使人们难以置信,但它们是正确的。在这里,我们要求提供令人惊讶的示例,人们乍一看可能会认为它是正确的,但是经过更深入的思考之后,内部的错误才暴露出来。


作为列表上正确答案的一个示例,该答案来自算法和图论领域:

对于节点图,边缘分隔符是大小为的边的子集,其中的节点可以划分为两个不相邻的部分,每个部分最多包含节点。我们有以下“引理”:G k S k G S 3 n / 4nGkSkGS3n/4

一棵树有一个1边分隔符。

对?


该职位已被标记为要求成为CW。
张显治张显之

Answers:


59

这是计算几何中常见的一种,但在其他地方却很普遍:可以将实RAM的算法转移到整数RAM(用于问题的整数限制)而不会降低效率。 一个典型的例子是“高斯消除在时间内运行”的说法。实际上,粗心的消除阶数会产生具有成倍增长位数的整数。O(n3)

更糟糕的是,但是仍然很不幸地很常见:具有下限功能的实数RAM的算法可以转移到整数RAM中,而不会降低效率。 实际上,real-RAM + floor可以多项式步数解决PSPACE或#P中的任何问题


5
高斯消除误解是非常普遍的。问题的一部分可能是我们经常在有限域上工作,并且由于那里没有问题,所以我们忘记了。
slimton 2010年

“完成整数高斯消除后,我们知道如何找到解决方案。”
艾伯特·亨德里克斯

40

我刚刚打破了另一个神话,这是@XXYYXX 对这篇文章回答所致:

  • 如果从所有问题到X 都有多项式时间(或对数空间)减少,那么问题X是难。ñ PNPNP
  • 假设指数时间假设,则3-SAT没有次指数时间算法。另外,3-SAT在。NP
  • 因此,没有难题X具有次指数时间算法。否则,用于X的亚指数时间算法+多项式时间约简=用于3-SAT的亚指数时间算法。NP

但是,对于某些NP难题,我们确实有次指数时间算法。


我有相同的印象。
Mohammad Al-Turkistany 2010年

那么,这告诉我们关于指数时间假说的什么呢?还是我错过了这种推理方式的某些缺陷?
Mikhail Glushenkov

2
第3点有一个缺点。这正是我很长一段时间以来一直误解的内容:)
张显之张显之

我不确定是否找不到故障。是不是因为,所以归约不一定一定是多项式,而是可以是时间上的指数,因为这两个问题都将发生在EXPTIME中(由于ETH?)PNP
chazisop 2010年

43
多项式时间的减少可以使输入大小改变多项式量。所以,如果您减少一个大小为Q的实例大小P的一个实例ñ平方,2到根ñ算法对于P只给你一个2为Q. n个算法
拉塞尔·因帕吉利亚扎索

29

一种错误的信念,今年流行开来,并在人们试图解释整个问题时被多次告知,因为被解释为有效的:PPNPP

“如果,那么我们可以有效地解决大量问题。否则,我们将无法解决”P=NP

如果可以在求解,则。我认为没有人会想到运行此算法。O n g o o g o l p l e xP = N P3SATO(ngoogolplex)P=NP

如果,我们仍然可以有一种算法,在运行,这是小于为。大多数人会为能够快速解决40亿个城市的而高兴。Ť 小号P Ñ 日志日志Ñ ñ 5 Ñ 2 32 Ť 小号PPNPTSPnlog(logn)n5n232TSP



6
“对于您拥有的每个多项式时间算法,都有一个我宁愿运行的指数算法”-Alan Perlis,通过Gödel的Lost Letter和P = NP
2013年

24

这实际上是对数学的错误信念,但通常在TCS上下文中出现:如果随机变量和是独立的,则以条件,它们将保持独立。(即使独立于和,也为false 。)XYZZXY


2
您是否会推荐一个最喜欢的简单示例,以帮助人们快速识别为什么它是错误的?
DW

21
假设和是独立且一致的随机位,并且(mod 2)。然后,独立于且独立于,但以条件,知道揭示了,反之亦然。XYZ=X+YZXYZXY
MCH

22

分布式计算=分布式高性能计算(集群,网格,云,seti @ home等)。

分布式算法=这些系统的算法。


剧透:如果这听起来不像是“错误的信念”,那么我建议您看看PODC和DISC之类的会议,看看人们在研究分布式计算的理论方面实际上在做什么工作。

n{1,2,...,poly(n)}nn/1000Θ(logn)

也就是说,人们通常会从集中式算法的角度研究完全无关紧要的问题,而这些问题与任何类型的超级计算或高性能计算都几乎没有共同之处。重点当然不是通过使用更多的处理器或类似的东西来加速集中计算。

目的是通过根据基本图问题的计算复杂性(例如,需要多少个同步回合;传输多少位)来对基本图问题进行分类,从而建立复杂性理论。诸如周期中的独立集之类的问题看似毫无意义,但它们在集中式计算中的作用类似于3-SAT:这是减少中非常有用的起点。对于具体的实际应用,更有意义的是查看通信网络中的路由器和交换机等设备,而不是网格和群集中的计算机。

这种错误的信念并非完全无害。实际上,将与分布式算法理论相关的工作出售给普通TCS受众相当困难。我收到了来自TCS会议的热闹的裁判报告...


1
关于计算,我不会说这不是错误的信念,而是过时的信念。除多核处理器外,小型分布式计算是高性能处理器的一个小例子(至少据我所知)。由于核心是“计算机”,但距离很小,而且它们之间没有网络,因此出现了新问题。但是我同意将分布式算法用于m> = 2个节点。
chazisop 2010年

因此,您只是在说人们将并行计算与分布式计算混淆了?
Sasho Nikolov 2013年

我认为您的主张不适用于理论计算机科学家,尽管它可能适用于没有理论背景的自言自语者。正如Sasho Nikolov指出的那样,在该领域工作的人们都非常了解并行计算和分布式计算之间的区别。群集,网格,云等中出现的问题严格取决于上下文。例如,当使用集群或云时,我们不假定出现故障,但是对于网格,则假定失败。等等。
2013年

此外,对于这个科学界来说,分布式算法是解决问题的算法,例如在南希·林奇(Nancy Lynch),哈吉特·阿蒂亚(Hagit Attiya)和詹妮弗·韦尔奇(Jennifer Welch)以及杰拉德·特尔(Gerard Tel)等人的书中经常发现的问题。并且,因此,这些算法是为特定的理论分布式计算模型设计的,并根据使用的资源(时间复杂度,消息复杂度,位复杂度,回合数等)按要求进行了分析。
2013年

@MassimoCafaro:当然,从事分布式计算领域的人们都知道什么是分布式计算。但是,我的经验是,理论上的计算机科学家一般都不知道什么是分布式计算。
Jukka Suomela

20

一个基本的,但在我们第一次处理渐近符号时很常见。考虑以下针对递归关系和 “证明” :T(n)=2T(n/2)+O(nlogn)T(1)=1

我们通过归纳证明。对于基本情况,它适用于。假设该关系适用于所有小于数字,n=1n

T(n)=2T(n/2)+O(nlogn)=2O(n/2logn/2)+O(nlogn)=O(nlogn/2)+O(nlogn)=O(nlogn)

QED(是吗?)


16
我见过学生这样做。这是滥用表示法并写而不是的陷阱之一。f(x)=O(g(x))f(x)O(g(x))
亚伦·罗斯

我也看到理论计算机科学领域的研究人员也做了此错误的变体;)
杰里米

12

直到最近,我还认为可以在时间中通过两带不通的图灵机来模拟每个在时间运行的多带图灵机感:MT(n)MoO(T(n)logT(n))

  • 头部的运动仅取决于输入长度Mo
  • 对于相同长度的所有输入,停止(这是)。MoΘ(T(n)logT(n))

(例如,请参阅rjlipton的这篇文章

好吧,如果,那么第二行通常不成立。我们需要的顺序完全时间constructible功能(见为(完全)时constructible函数的定义问题),或者,我们需要允许为无限运行时间(我们允许在达到接受状态后运行)。问题在于,对于一​​般的时间可构造的我们无法“测量”在时间除非。EXPTIMENEXPTIMEΘ(T(n)logT(n))MoMoO(T(n)logT(n))T:NNΘ(T(n)logT(n))O(T(n)logT(n))EXPTIME=NEXPTIME

该声明的证明与此处 Q1的答案中的证明非常相似,因此我们仅给出关键思想。

以任意的问题,。然后存在一个,st可以通过NDTM以步长求解。为了简单起见,我们可以假设在每个步骤最多进入两个不同的状态。接下来定义函数 可以证明是时间可解的。LNEXPTIMEL{0,1}kNLM2nkM

f(n)={(8n+2)2if (first logn+1k bits of bin(n))L8n+1else
f

现在假设一些图灵机在时间。那么是完全时间可构造的。g(n)=Θ(f(n)logf(n))g

现在,以下算法解决了:L

  • 在输入,令为具有二进制表示形式(零)的数字。因此,。xnx000|x|k1x=(first logn+1k bits of bin(n))
  • 在时间计算。如果是足够大的,则,否则。(这仅适用于足够大的。多少取决于。)g(n)g(n)g(n)xLxLng

该算法以指数时间运行,并解决了。由于是任意的,因此。LLNEXPTIMEEXPTIME=NEXPTIME


11

这是我的两分钱:

复杂度类(随机化的日志空间)被定义为的类似物,也就是说,可以由非确定性日志空间机器解决的决策问题,其中RLRPM

  • 对于一个积极的例子,接受概率至少为;M1/2
  • 对于否定的实例,以概率拒绝。M1

此外,机器始终停机。

定义正确吗?(没有)


9

令和为完全时间可构造的函数(即,存在一个DTM,在输入上精确地执行(分别为)步),令。fg1nf(n)g(n)f(n+1)=o(g(n))

非确定性时间层次结构多次(表面上)表示为。(证明:向Google查询不确定的时间层次)。NTIME(f(n))NTIME(g(n))

好吧,层次结构实际上只给出。对于我们需要例如。对于函数使得,很常见。但是严格来说,不确定的时间层次是表面上多次陈述的。NTIME(g(n))NTIME(f(n))f(n)g(n)NTIME(f(n))NTIME(g(n))f,gf(n+1)=o(g(n))f(n)g(n)

为了显示并不适用于所有完全时间可构造的 st,定义 和。很容易看出和是完全时间可构造的,并且。从非确定性的时间层次结构,我们知道有一些语言在。定义 NTIME(f(n))NTIME(g(n))f,gf(n+1)=o(g(n))

f(n)={n+1n odd(n+1)3else
g(n)=f(n+1)2fgf(n+1)=o(g(n))LNTIME((n+1)3)NTIME((n+1)2){0,1}
L1={0x10x20xn;  x1x2xnL}.

因此,。很容易看出,从跟随,这是不正确的。因此,。L1NTIME(f(n))L1NTIME(g(n))LNTIME((n+1)2)L1NTIME(f(n))NTIME(g(n))


9

我经常听到有人说Valiant-Vazirani说随机减少为或,或那个。特别是,这意味着如果可以对Valiant-Vazirani进行随机化,则。但实际上Valiant-Vazirani说。NPUPNPRPUPNPRUPNP=UPNPRPPromiseUP

紧密相关的错误信念:是具有不确定的多重时间验证器的语言,因此,如果存在唯一的见证人,则 inL。纠正是验证者必须满足在所有实例上最多有一个见证人的语义属性。上面的定义(未经更正)是的定义。但是与有很大不同:例如,。UPLxLUSUSUPcoNPUS


“在所有实例上的语义属性”是什么意思?
T ....

1
@ 777:语义属性意味着:无法直接从TM /算法本身的结构(即语法)进行验证。如果您继续使用逗号,则该短语更有意义,即:“在所有情况下最多有一位证人”的属性
Joshua Grochow

-2

如果是的期望值,我们期望实际上会发生。X { X = μ }μX{X=μ}


9
这当然是理论计算机科学专业学生中普遍的错误信念,但在理论计算机科学研究人员中并不普遍。
杰夫·2013年
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.