为什么NFA被称为不确定性?


14

我想到了这个(有点有趣)的问题。当我们定义输入的转换时,为什么不确定性有限自动机称为确定性自动机。好吧,即使存在多个和ε过渡,也定义了它们,这意味着机器对于这些过渡是确定的。这意味着它是确定性的。


12
理论计算机科学中使用的不确定性与随机性不同。
adrianN

10
不确定的是过渡之间的选择
reinierpost

什么是NFA?(对于我们中间的无
识之士

@DarcyThomas,我的第一个介绍是swtch.com/~rsc/regexp/regexp1.html。这是一本好书,不是介绍NFA 的目的,但在讨论正则表达式方面做得很好。
通配符

Answers:


22

“确定性”是指“如果两次将系统置于相同的情况,则可以确保两次都做出相同的选择”。

“非确定性”是指“不确定性”,换句话说,“如果两次将系统置于相同的情况,则可能会或可能不会两次都做出相同的选择”。

非确定性有限自动机(NFA)可以有多个状态转换。这意味着在这种情况下可以采取多种措施。不必强迫总是选择相同的选项。在一个输入上,它可能选择第一个转换,在另一个输入上,它可能选择相同的转换。

在这里,您可以将“状况”视为“ NFA处于什么状态,以及接下来要从输入中读取什么符号”。即使两者相同,NFA仍可能具有可以从该状态中取出的多个匹配转换,并且它可以任意选择哪个。相比之下,在这种情况下,DFA仅具有一个匹配的过渡,因此它别无选择-只要处于那种情况,它都会始终遵循相同的过渡。


“它可以任意选择哪一个。” 因此,它基本上具有概率性质吗?
Trilarion

@Trilarion,不,这取决于它是否导致接受状态。实际上,概率FA是NFA的概括。
rus9384

“非确定性”是指“不确定性”,换句话说,“如果两次将系统置于相同的情况,则可能会或可能不会两次都做出相同的选择”。这表示您的机器可以在两种不同情况下接受和拒绝相同的字符串。
Madhusoodan P

3
@MadhusoodanP根据您的直觉,您的直觉是正确的,这使我们得出此答案缺少的内容:在分析NFA时,我们始终考虑所有可能的执行路径。只要该机器上的任何路径都导致接受状态,我们就将输入视为接受状态。因此,这根本与概率无关,而仅与能否达到接受状态有关。在考虑如何将NFA简化为DFA时,这种直觉变得更加清晰:我们必须模拟NFA的所有可能执行方式,这会导致构造呈指数级爆炸。
ComicSansMS

3
可视化的一种方法是假设,在可以选择多个过渡的情况下,NFA会采用所有过渡。您将创建一个由输入字符串到达​​的所有状态的树状结构,如果任何分支以接受状态结束,则该字符串将被接受。换句话说,与DFA,你问“是国家通过我的投入达到接受状态?”,而与NFA,你问“是任何国家,可以通过我的输入来达到接受状态?”。
哈里森·潘恩

8

以这个自动机为例,它是一个NFA,它接受字符串。更加古怪的是,它接受以10结尾的字符串。011010

示例自动机,来源:/cs/61159/what-is-the-difference-between-following-two-finite-automata/61208

看到我们只需要检查它是否达到接受状态。

q01q00q11q20

现在,在红线还有另一种可能性,读取第二时是,我可以留在q 0,然后留在q 0读最后时0。自动机没有内存,因此无法“保存”状态并稍后检查我的字符串是否以10结尾,就像NFA一样,它在分支到可接受的状态之前猜测字符串是否以10结尾。这里的不确定性会做出很多选择,并且总是会做出正确的选择。1q0q001010

构造NFA比构造DFA容易,这是好事,两者都是等效的


是的,我知道NFA的理论部分。但是我要问的是,即使单个输入字符有多个转换,该机器也可以确定它可以到达的所有状态(例如通过创建线程)。因此,它实际上就是DFA。[或者您认为我在误解确定论的含义]
Madhusoodan P

1
通过稍微复杂一些的NFA可以改进该示例,因为出于相同目的的DFA将使用与NFA相同数量的状态,并且不会特别复杂。相反,匹配更复杂的正则表达式可能需要复杂且凌乱的DFA,但在NFA中却微不足道。
超级猫

@supercat,至少最好看到 transitions。ε
rus9384

1
@Aristu如果您以自己喜欢的编程语言实现NFA,则线程是一个糟糕的选择。相反,您应该仅在读取每个输入字符后跟踪自动机可能处于的状态集。生成的代码几乎与DFA的实现速度一样快。
David Richerby

1
ϵ

5

NFA的转换功能可在任何时间点指定允许的转换。可能有多个选择,并且NFA 不确定地选择过渡,目的是最终达到接受状态。

也许您应该等到了解非确定性图灵机之后再等。在两种情况下,不确定性意味着同一件事。


您能否强调一下“不确定的过渡”。另外,请查看我的回答
Madhusoodan P

我认为我们的两个答案都不是很好,尽管您的直觉是正确的。
Yuval Filmus

3

从有限自动机开始。它具有状态,接受状态和过渡。

现在,给它提供每个状态的多个转换规则,并说它接受是否存在在事实之后选择的一组转换规则给定输入字符串的情况下导致接受状态。

输入字符串后,将有一组固定的具体过渡,并声明(一次一个)接受该字符串。但是它选择的过渡仅在字符串的末尾选择。在读取字符串时,不确定要采取的路径。

这是不确定的。在给了整个问题之后,它就可以选择通过图表的路径,而不是在读取输入时。


现在,我们将这种形式化的方式与这种思想实验的形式不同,但是这使您有动力获得它的名字。

这解释了它最初是如何获得名称的。是的,您可以采用完全确定性的方式对NDFA进行建模,但是名称很粘。命名为Bob之后,将其重命名为其他名称会产生通信开销,因为当您将其命名为Alice时,没人知道您在说什么。


是!我同意您对NFA的解释。但是我的问题是,即使为单个输入定义了状态集,为什么它还是不确定的
Madhusoodan P

@MadhusoodanP由于它是如何发明/设想的,因此被称为不确定性。即使在我们定义了完全确定性的多模型建模方法之后,名称仍然具有粘性。
Yakk

1

维基百科来看,对此进行思考的最好方法是从确定性有限状态机(DFA)开始。对于DFA,每个过渡由当前状态和要处理的输入符号唯一地确定。非确定性有限状态机(NFA)就是您放宽此确定性规则以允许不唯一定义转换的结果。这是从DFA中删除确定性规则后得到的结果。


因为不确定性也是特定的接受条件,所以它有点复杂。
Yuval Filmus

1

NFA和DFA都用于(尤其是)识别某些字符串。

非确定性有限自动机的工作就像对其决策产生了影响-它可以“选择”是否遵循一条路径。

NFA example

在上图中,当我们处理字符串“ 00111”时,请注意,遇到第一个“ 1”时,有两种可能的跟随方式。一个人可以停留在“ p”或转到“ q”。如果自动机要移到“ q”,它将不接受字符串(因为没有边缘从“ q”中出来)。但是,通过仅使用最后一个1进入“ q”,同时将其他所有参数都保持在“ p”,字符串可以被此自动机接受(这就是发生的情况)。

NFA使自动机看起来“知道”前方的事物,并据此进行选择。

当然不是。DFA和NFA在功能上是等效的(您可以将NFA简化为DFA,并通过使用NFA使DFA(可能)更简单),但是NFA很有用,因为它可以定义与DFA相同的语言,同时又可以保持图形多更短,更易读。

那里没有随机的东西。非确定性部分强调要采取一些“选择”这一事实,但事实是自动机不做任何决定。


0

好吧,这是本书[Peter Linz 4E撰写的《形式语言和自动机简介》]中的一些内容和我的理解的结合。

考虑一个游戏程序,在该程序中,机器需要为下一步动作做出决定(例如井字游戏)。由于可能有多个动作,因此我们确定地选择每个动作并评估该动作并选择最佳动作。即使选择过程是确定性的,并且有很多可能的举动,但最终的举动是单个举动,并且被选择为最佳举动,同时隐藏了对手所有尝试过的举动计算。[这里我们假设对对手的每一个可能动作的评估过程都是隐藏的]。

因此,只做出了一个选择,对手被赋予了错觉,以至于此举是不确定的。

好吧,如果您还不确定要问最佳移动是否是确定性计算的结果,那么您必须考虑可以完全随机移动的机器(可能是机器松动,但它是NFA)。


1
另一种表达方式:对对手来说,您的选择是不确定的。从对手的角度对系统进行建模时,除非对手知道其背后的确定性过程,否则您的举动是不确定的选择。
reinierpost

@reinierpost正是我想告诉
Madhusoodan P

一个更有趣的例子可能是信息有限的移动游戏(例如“警察和强盗”风格)。一个玩家在迷宫附近移动强盗,而另一个玩家在移动警察。在任何时候警察看到强盗时,强盗的状态都是其所在位置,但是在任何情况下,当任何警察都没有看到强盗时,强盗可能会过渡到与其位置相邻的任何正方形,并且警察可以那时没有看到。
超级猫

@supercat不错,但是过渡总是一个单一的状态,如果您隐藏最佳移动的计算,则似乎不确定性
Madhusoodan P
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.