Answers:
“确定性”是指“如果两次将系统置于相同的情况,则可以确保两次都做出相同的选择”。
“非确定性”是指“不确定性”,换句话说,“如果两次将系统置于相同的情况,则可能会或可能不会两次都做出相同的选择”。
非确定性有限自动机(NFA)可以有多个状态转换。这意味着在这种情况下可以采取多种措施。不必强迫总是选择相同的选项。在一个输入上,它可能选择第一个转换,在另一个输入上,它可能选择相同的转换。
在这里,您可以将“状况”视为“ NFA处于什么状态,以及接下来要从输入中读取什么符号”。即使两者相同,NFA仍可能具有可以从该状态中取出的多个匹配转换,并且它可以任意选择哪个。相比之下,在这种情况下,DFA仅具有一个匹配的过渡,因此它别无选择-只要处于那种情况,它都会始终遵循相同的过渡。
以这个自动机为例,它是一个NFA,它接受字符串。更加古怪的是,它接受以10结尾的字符串。
看到我们只需要检查它是否达到接受状态。
现在,在红线还有另一种可能性,读取第二时是,我可以留在q 0,然后留在q 0读最后时0。自动机没有内存,因此无法“保存”状态并稍后检查我的字符串是否以10结尾,就像NFA一样,它在分支到可接受的状态之前猜测字符串是否以10结尾。这里的不确定性会做出很多选择,并且总是会做出正确的选择。
构造NFA比构造DFA容易,这是好事,两者都是等效的。
NFA的转换功能可在任何时间点指定允许的转换。可能有多个选择,并且NFA 不确定地选择过渡,目的是最终达到接受状态。
也许您应该等到了解非确定性图灵机之后再等。在两种情况下,不确定性意味着同一件事。
从有限自动机开始。它具有状态,接受状态和过渡。
现在,给它提供每个状态的多个转换规则,并说它接受是否存在在事实之后选择的一组转换规则给定输入字符串的情况下导致接受状态。
输入字符串后,将有一组固定的具体过渡,并声明(一次一个)接受该字符串。但是它选择的过渡仅在字符串的末尾选择。在读取字符串时,不确定要采取的路径。
这是不确定的。在给了整个问题之后,它就可以选择通过图表的路径,而不是在读取输入时。
现在,我们将这种形式化的方式与这种思想实验的形式不同,但是这使您有动力获得它的名字。
这解释了它最初是如何获得名称的。是的,您可以采用完全确定性的方式对NDFA进行建模,但是名称很粘。命名为Bob之后,将其重命名为其他名称会产生通信开销,因为当您将其命名为Alice时,没人知道您在说什么。
从维基百科来看,对此进行思考的最好方法是从确定性有限状态机(DFA)开始。对于DFA,每个过渡由当前状态和要处理的输入符号唯一地确定。非确定性有限状态机(NFA)就是您放宽此确定性规则以允许不唯一定义转换的结果。这是从DFA中删除确定性规则后得到的结果。
NFA和DFA都用于(尤其是)识别某些字符串。
非确定性有限自动机的工作就像对其决策产生了影响-它可以“选择”是否遵循一条路径。
在上图中,当我们处理字符串“ 00111”时,请注意,遇到第一个“ 1”时,有两种可能的跟随方式。一个人可以停留在“ p”或转到“ q”。如果自动机要移到“ q”,它将不接受字符串(因为没有边缘从“ q”中出来)。但是,通过仅使用最后一个1进入“ q”,同时将其他所有参数都保持在“ p”,字符串可以被此自动机接受(这就是发生的情况)。
NFA使自动机看起来“知道”前方的事物,并据此进行选择。
当然不是。DFA和NFA在功能上是等效的(您可以将NFA简化为DFA,并通过使用NFA使DFA(可能)更简单),但是NFA很有用,因为它可以定义与DFA相同的语言,同时又可以保持图形多更短,更易读。
那里没有随机的东西。非确定性部分强调要采取一些“选择”这一事实,但事实是自动机不做任何决定。
好吧,这是本书[Peter Linz 4E撰写的《形式语言和自动机简介》]中的一些内容和我的理解的结合。
考虑一个游戏程序,在该程序中,机器需要为下一步动作做出决定(例如井字游戏)。由于可能有多个动作,因此我们确定地选择每个动作并评估该动作并选择最佳动作。即使选择过程是确定性的,并且有很多可能的举动,但最终的举动是单个举动,并且被选择为最佳举动,同时隐藏了对手所有尝试过的举动计算。[这里我们假设对对手的每一个可能动作的评估过程都是隐藏的]。
因此,只做出了一个选择,对手被赋予了错觉,以至于此举是不确定的。
好吧,如果您还不确定要问最佳移动是否是确定性计算的结果,那么您必须考虑可以完全随机移动的机器(可能是机器松动,但它是NFA)。