非确定性和随机性有什么区别?


38

最近,我听到了这样的声音:
“非确定性机器与概率机器不同。从广义上讲,非确定性机器是其中不知道转移概率的概率机器”。

我觉得我明白了,但我真的没有。有人可以向我解释(在机器环境中还是一般情况下)?

编辑1:
只是为了澄清,报价是在有限自动机的上下文中,但是这个问题对图灵机也很有意义,正如其他人回答的那样。

另外,我听到人们说-“ ...然后我不确定地从集合中选择对象x”。我曾经以为它们的意思是“随机”。因此造成混乱。


5
在计算机科学中,人们偶尔会使用“确定性”一词来强调算法不是随机的。因此,困惑:确定性意味着非随机的,但是不确定性并不意味着随机的。
Jukka Suomela 2010年


这个问题将我引向SE的这个角落...
Troy Woo 2015年

Answers:


27

重要的是要了解,计算机科学家使用的“不确定性”一词与其他科学中通常使用的方式不同。非确定性TM实际上在物理学意义上是确定性的-也就是说,NTM总是在给定的输入上产生相同的答案:它要么总是接受,要么总是拒绝。概率TM将以一定的概率接受或拒绝输入,因此在一次运行中它可能接受,而在另一次运行中它可能拒绝。

更详细地:在NTM执行的计算的每个步骤中,可以使用多个规则来代替单个过渡规则。要确定NTM是接受还是拒绝,您可以查看计算的所有可能分支。(因此,例如,如果每个步骤有2个转换可供选择,并且每个计算分支总共有N个步骤,则将考虑总余额。)对于标准NTM,接受输入如果有任何计算分支接受。2N

可以修改定义的最后一部分,以获取其他相关类型的图灵机。如果您对具有独特解决方案的问题感兴趣,那么只要有一个分支接受,就可以让TM接受。如果您对多数行为感兴趣,则可以将TM定义为接受一半以上的分支。而且,如果您随机(根据某种概率分布)选择一个可能的分支,并根据该分支的作用接受或拒绝,那么您就有了概率TM。


Kurt,请您解释一下2 ^ N的数字是如何得出的。如果对于每个分支都有2种可能性,并且有N个阶段到达解决方案,则不会使它成为2 ^(N + 1)-1。我试图将其视为图表,但我可能是错的。您能否解释一下您是如何得出2 ^ N的数字。谢谢。
Gangadhar

好吧,如果您将计算表示为一棵树,而根表示初始配置为步骤0,那么在N个步骤之后,您将获得2 ^ N个叶子,而我所说的分支是从根到一片树叶。的确,您总共将有2 ^(N + 1)-1个节点,这些节点表示计算中某个时刻的所有可能配置。希望我的术语还可以!
库尔特(Kurt)2010年

所有科学都使用统一的无确定性定义,统一定义为无穷大的熵。在所有科学中,无法预测的结果是由于无法接受算法(或系统)的所有可能输出的先验性,因为它接受无限状态,即NP复杂度类。在其他科学中,指定一个特定的输入以观察它是否停止并注意结果是等幂的,这在其他科学中等同于在重复相同的状态变化时使其余的宇宙熵保持恒定。计算允许这种熵隔离,而自然科学则不允许。
谢尔比·摩尔三世

1
@ShelbyMooreIII不。您误解了计算机科学中出现的非确定性概念。
David Richerby 2015年

@DavidRicherby,对不起大卫。转到另一个线程,看看我已经强烈驳斥了您。您可以尝试反驳我在此处提出的逻辑。断言没有证据和解释并不能赢得任何真理。
谢尔比·摩尔三世

18

在图灵机的上下文中,“不确定”实际上是指“并行”。随机算法可以随机浏览非确定性Turing机器的计算树的分支,但是非确定性Turing机器可以同时(全部)浏览它们,这就是它的强大功能。

在其他情况下(如果您正在谈论图灵机,我无法从您的报价中得知),随机算法可能有意使用随机性,而您想要确定性的算法可能由于错误而最终表现出不确定性...

响应您的编辑,当人们说“不确定地选择一个元素”时,可能只是“随机”。但是,它们的含义也可能是“从集合中神奇地选择-right-元素”。查看非确定性图腾机的一种常见方法是,它们首先神奇地“猜测”解决方案,然后检查其正确性。当然,您可以将这种神奇的猜测视为并行检查所有可能性的结果。


与“神奇地选择正确的元素”相关:当以这种方式使用“不确定性”一词时,人们有时会用“天使”来修饰它。还有“恶魔般的”不确定性。(不过,正如您所说,本质是事情是并行发生的。)
Radu GRIGore 2010年

13

在几种不同的上下文中,“确定性”,“随机”和“非确定性”意味着三件事。在有多个参与者的情况下,例如安全性和并发性,直觉通常类似于:

  • 确定性意味着“我可以选择”

  • 非确定性意味着“其他人可以选择”

  • 随机意味着“没有人可以选择”

一些例子:

  1. [并发性,随机性]考虑一个网络协议,例如Ethernet,其中多个节点可以随时发送消息。如果两个节点以非常接近的间隔发送消息,则会发生冲突:消息重叠并且不可读。如果发生冲突,则两个节点都必须稍后尝试再次发送消息。想象一下您正在编写以太网规范。您如何指定重试之间的延迟?(延迟最好有所不同,否则会再次发生碰撞!)

    • 确定性的:定义两个节点都必须使用的算法。这样做不是针对以太网的,因为为了给出不同的结果,该算法将必须使一个节点相对于另一节点具有特权(对于任何给定的消息内容),并且以太网避免这样做。

    • 非确定性:让每个实施者决定。这不好,因为两个节点上的实现者可能选择相同的算法。

    • 随机:每个节点必须随机选择一个延迟值(具有指定的分布)。就是这样。这两个节点选择相同的延迟的可能性很小,并且还会发生另一次冲突,但是随着重试次数的增加,成功的概率会渐近地朝着1增加。

  2. [并发性,不确定性]您编写了一个并发算法。在特定情况下,可能会出现死锁。如何防止死锁的发生?这取决于您的并发环境的调度类型。

    • 确定性的:调度程序总是在某些明确定义的点(例如仅在代码明确产生时)在线程之间切换。然后,您只需安排线程在不好的时候不屈服。

    • random:保证调度程序可以随机切换线程。然后,可行的策略是检测死锁(如果发生),并从头开始重新启动算法。

    • 非确定性的(大多数调度程序都是这样的):您不知道调度程序何时在线程之间切换。因此,您确实必须避免僵局。如果您尝试像随机情况一样检测并重新启动,则可能会导致调度程序一次又一次地以完全相同的方式调度线程。

  3. [安全,随机]您使用密码提示编写应用程序。您如何模拟攻击者?

    • 确定性的:攻击者始终尝试使用相同的密码。这根本不是一个有用的攻击者模型-定义上无法预测攻击者。

    • 不确定:攻击者以某种方式知道您的密码并输入。这显示了密码的局限性:必须将其保密。如果您的密码是秘密的,则此攻击者是不现实的。

    • 随机:攻击者随机尝试输入密码。在这种情况下,这是攻击者的现实模型。您可以研究攻击者需要多长时间才能猜测出您的密码,具体取决于他所使用的随机分布。好的密码对于任何实际的分发来说都需要很长时间。

  4. [安全性,不确定性]您编写了一个应用程序,并且担心它可能存在安全漏洞。您如何模拟攻击者?

    • 确定性的:攻击者知道您所知道的一切。同样,这不是攻击者的有用模型。

    • 随机:攻击者抛出随机垃圾,并希望使您的程序崩溃。有时这很有用(模糊),但是攻击者可能比这更聪明。

    • 非确定性:如果有漏洞,攻击者最终会找到它。因此,您最好加强您的应用程序(提高攻击者的智能要求;请注意,由于这是一种智能要求而不是计算要求,因此在AI出现之前,它就属于不确定性),或者更好地证明没有安全漏洞,因此不存在这样的攻击者。


更正围绕您陈述中缺少的单词证明:确定性是“我可以证明我正在选择(即,完全指定要在P复杂度类中的输入终止的结果)”,不确定性是“我无法证明我正在选择” (即,终止证明在NP复杂度等级中是无法确定的)”,随机是“我可以证明我有选择时间的1/2(即ZPP复杂度等级)”。
谢尔比·摩尔

@ShelbyMooreIII我不明白你要去哪里。一般而言,确定性不是要证明某件事确实是确定性的,也不是某个复杂性类别中的某些问题。此外,复杂度类并不是关于系统本身能够证明其确定性的东西(大多数问题甚至都没有在系统内部进行证明的概念!)。
吉尔斯(Gilles)'所以

非确定性始终是无限熵的结果,因此另一种说法是,我无法证明自己正在选择结果(因为我无法证明自己的选择会终止)。我所能做的就是尝试,这意味着我必须枚举要做出的每个选择,然后才能知道它是否会终止。鉴于确定性,我可以证明我选择了必须终止的结果。我可以证明随机化只能选择随机的时间,因为某些熵不受我的控制。如果我知道不受控制的金额,则可以证明其准确的统计信息。
谢尔比·摩尔三世

引起非确定性的不是复杂性类别NP,而是NP是依赖性。图灵完备是不确定性的一个例子。请在Kurt的回答下看到我的评论,以及在相关主题上的回答。我的意思是关于确定性,非确定性和随机性这些术语的确切证明和不可预测的内容。这全与熵有关(与低音无关
Shelby Moore III

9

一个使事情更清楚的例子:

假设您必须挑选一扇要在10000门中打开的门(例如其中一扇门后面有奖品)。随机选择意味着您将在10000门中选择一个并输入。如果只有一扇门后面有奖品,您很可能找不到。一台不确定的机器将同时进入所有10000门。如果任何地方都有奖品,则不确定性机器会找到它。


8
或者,一台不确定的机器只会打开一扇门,但永远是正确的一扇门。
杰夫斯

3
对,就是这样。那将是非确定性机器的“最幸运的猜测者”特征。
罗宾·科塔里

@RobinKothari:“或者,一台不确定的机器只会打开一扇门,但永远是正确的一扇门。”而“一台不确定的机器会同时进入所有10000门”?–哪一个是正确的?
tanmoy 2014年

3
@tan:都是正确的解释。与可物理实现的确定性和随机化机器不同,非确定性机器是一个虚构的对象。因此,您可以随心所欲地想象它,关键是它总能找到正确的门。也许这是最好的猜测者,也许有人偷偷告诉所在的机器奖品是的,也许它只是检查所有的门神奇,等等
罗宾·科塔里


5

我更喜欢以下定义:

根本没有概率的图灵机!只有确定性机器(在每个步骤中都有一个可能的跟踪状态)和非确定性机器(在每个步骤中都有一定数量的可能的跟踪状态)。

非确定性的工作原理如下:考虑一个非确定性的机器,它会在每个输入上停止(如果问题可以确定,则可以停止),其中每个可能的计算使用相同数量的步骤,并且每个步骤恰好具有2个可能的跟踪状态(两者都不是真正的限制)。如NP的定义,如果存在至少一个可能的接受计算,则不确定性机器将接受输入,如果所有计算都被拒绝,则不确定机器将拒绝输入。

随机性发挥如下作用:您可以从如上所述的这种不确定性机器中随机选择一个统一的计算路径。仅当此随机选择的计算路径接受时,您才接受。如果这种可能性是正确的,那么这种随机方法可以“解决”您的问题。

因此,非确定性和随机性之间的区别在于是否你正在寻找的仅仅存在一个正确的是应答(和可靠的无答案)的,或者您是否有兴趣解决您的问题“大部分时间”


-1您的第一段中有错误。存在概率图灵机,并根据ZPP复杂度类别对来自外部熵的抛硬币进行采样。与NP复杂度类别相比,非确定性具有无限数量的替代状态。确定性是P复杂度类别,您的确是正确的。
谢尔比·摩尔

我认为您在误解我的答案。我认为与定义“普通”非确定性TM的机器相比,您不需要任何其他机器(具有投掷硬币或其他功能)来定义概率复杂性类。您可能同样会利用NTM,而只是使用不同的接受定义,即“大多数计算路径接受输入”的定义,而不是“对于输入至少存在一条接受路径”的定义。
MRA 2015年

3

为简单起见:非确定性机器可以最佳地选择每次掷硬币的结果(如果您喜欢概率机器的类比)。您可能还想象到,它将并行执行硬币翻转的每个结果的计算。


1

在调试过程中向后退步,以激发不确定性

当您希望在调试时(及时)向后退步时,非确定性机器的概念会提示自己。在典型的计算机中,每个步骤仅修改有限数量的内存。如果您始终在前10000个步骤中保存此信息,则可以在程序中向前和向后步进,并且这种可能性不仅限于玩具程序。如果您尝试消除前进和后退步幅之间的不对称性,那么最终将出现不确定性机器的概念。

非确定性与随机性之间的异同

尽管概率机器与非确定性机器具有某些特征,但是前进和后退步之间的这种对称性是不共享的。为了看到这一点,让我们通过(全部或部分)函数对确定性机器的步或转移进行建模,通过(有限)关系对非确定性机器的转移进行建模,并通过(子)随机矩阵对概率性机器的转移进行建模。例如,这是有限自动机的相应定义

  • Q
  • Σ
  • δ:Q×ΣQ
  • Δ:Q×ΣP(Q)
  • ΔQ×Σ×Q
  • Δ:ΣP(Q×Q)
  • δ:ΣssM(Q)

P(Q)QssM(Q)Q

有许多不同的合理接受条件

过渡仅是机器的一部分,初始和最终状态,可能的输出和接受条件也很重要。但是,确定性机器的非等价接受条件非常少,非确定性机器的许多合理接受条件(NP,coNP,#P等)以及概率机的许多可能接受条件。因此,这个答案主要集中在过渡上。

对于概率机器而言,可逆性是不平凡的

PPTPPPBAkABk

即使对于不确定的机器,可逆性也是棘手的

PPTPPRRopRRRRRRopR=RRopRRop=RopPQPQ

这些考虑因素对于下推式自动机也很有意义

这篇文章表明,不确定性的动机之一是消除前进和后退步骤之间的不对称性。这种不确定性的对称性是否仅限于有限自动机?这是下推自动机的相应对称定义

  • Q
  • Σ
  • Γ
  • δ:Q×Γ×(Σ{ϵ})Q×Γ{0,2}δ(q,γ,ϵ)ϵδ(q,γ,σ)=ϵσΣ
  • Δ:Q×Γ{0,1}×(Σ{ϵ})P(Q×Γ{0,1})
  • ΔQ×Γ{0,1}×(Σ{ϵ})×Q×Γ{0,1}
  • Δ:Σ{ϵ}P(Q×Γ{0,1} × Q×Γ{0,1})
  • δ:Σ{ϵ}ssM(Q×Γ{0,1})δ(ϵ)+δ(σ)ssM(Q×Γ{0,1})σΣ

ϵΓ{0,2}={ϵ}Γ(Γ×Γ)Γ{0,1}={ϵ}ΓΓ

对(非)高级输入和堆栈操作进行反转的图解验证

bΣΣ{ϵ}

a|bca|bcab|c
a|bcab|cab|c
c|bac|bacb|a

ϵΣ{ϵ}

a|bca|bca|bc
a|bca|bca|bc
cb|acb|acb|a

这是一个高级输入操作的示意图,其反转看起来很糟糕

a|bca|bcab|ca|bcab|cab|cc|bac|bacb|a

(s,t)Γ{0,1}×Γ{0,1}(s,t)=(a,ϵ)(s,t)=(ϵ,a)(s,t)=(a,b)(a,ϵ)(ϵ,a)

abab|b
ab|bb
b|bab

(a,b)(b,a)

acacbc
acbcbc
bcbcac

(ab,cde)Γ×Γ(cde,ab)

abfabfcdef
abfcdefcdef
cdefcdefabf

图灵机的可逆性

具有多于一个堆栈的机器等效于图灵机,并且堆栈操作很容易反转。一开始的动机还表明,(图灵机的)逆转应该不难。具有典型指令集的Turing机器不太适合反转,因为头部下方的符号会影响磁带向左或向右移动。但是,如果对指令集进行了适当的修改(而又不降低机器的计算能力),那么反转将再次变得微不足道。

也可以在不修改指令集的情况下构造反转,但这不是规范的并且有点丑陋。似乎存在逆转的难度很难决定与图灵机相关的其他许多问题,但是逆转是本地结构,困难的问题通常具有全球性,因此悲观主义在这里可能是不合理的。

转换为等效指令集的冲动(更容易逆转)表明,这些问题并不像它们最初出现时那么明显。以前,此功能发生了更细微的变化,当时总功能和随机矩阵被部分功能和亚随机矩阵所替代。严格来说,此切换不是必需的,但相反的话则很难进行。切换到亚随机矩阵实际上是很明显的一点,即可逆性毕竟并不那么琐碎,人们应该写下细节(如上所述),而不是仅仅从较高的角度(如动机所述)。开始)。Niel de Beaudrap提出的问题也使人们认识到,高层观点有些不稳定。

结论

非确定性机器在每个步骤中允许有限数量的确定性转换。对于概率机器,这些过渡还具有可能性。这篇文章表达了关于不确定性和随机性的不同观点。忽略全局接受条件,它专注于局部可逆性(作为局部对称性)。由于随机性保留了确定性无法保留的某些局部对称性,因此这种观点揭示了不确定性和概率性机器之间的重要差异。


您是否假设非确定性转换是一对多关系?如果其中两个不同的配置可以过渡到通用配置怎么办?—在我看来,随机性和不确定性之间的区别不是可逆性(两者都不是,没有进一步的限制),而是根据结果如何将重要性赋予分支机构:对随机性完全民主,或者对“是”优先敏感;或者对于不确定性,答案为“否”。
Niel de Beaudrap 2015年

@NieldeBeaudrap我假设非确定性转换是“任意”关系(输入字母中的每个符号对应一个)。我可以颠倒它们,交换开始和结束状态,然后再次获得一个不确定的有限状态机,该机器接受颠倒的输入字符串。这就是我所谓的“及时倒退机器”。(在不确定的情况下,机器接受从开始状态到结束状态是否至少有一条路径,并且在倒转时间时此条件不会改变。)请尝试说服自己,这至少对有限状态机有效。
托马斯·克里姆贝尔

因此,您指的是机器的对偶。对于NFA来说,这似乎是一个有意义的可逆性概念。同样很明显,NTM的对偶(具有单个接受状态)是另一个NTM,但我会毫不犹豫地说,它是同一台机器正在反向运行。您的答案是否仅相当于“非确定性使您无法在对偶,随机(和确定性)机器下获得封闭”?
Niel de Beaudrap

@NieldeBeaudrap我的想法当然是在时间上向后运行,但是我知道这不能完全满足(因为不满足逆半群的广义逆的条件)。但是我试图传达的是,随机(确定性)的机器并不总是允许这种逆转。
Thomas Klimpel,2015年

我在有关二元关系,亚随机矩阵和偏函数的可逆性的博客文章中写了这个答案。
Thomas Klimpel

0

n2n 状态(指数)),考虑状态的等价类,无论机器中实现的算法是否涉及随机化或概率(参见下文)。

但是,如果在机器中实现的算法涉及随机化或概率(算法固有),则它是随机化(或概率性)机器。

通常,总是有可能从机器上消除不确定性并构造确定性等价物(请参见上面的算法),但是(通常)无法消除随机性(在上述情况下),因为这样做是可以做到的。算法固有的

请注意,鉴于上述情况,如果算法(所涉及的)以这种方式使用随机化(或概率),则确定性机器和非确定性机器都可能是概率性的。

综上所述,自动机中的不确定性(在此情况下)指的是类似自动机的类别,而随机化或概率机器指的是这些自动机实现的(实际在随机应用中的)实际算法。

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.