自动机是数字计算机的抽象模型。数字计算机是完全确定的。根据输入和初始状态,可以随时预测其状态。
当我们尝试对真实系统建模时,为什么要在自动机理论中包括不确定性?
自动机是数字计算机的抽象模型。数字计算机是完全确定的。根据输入和初始状态,可以随时预测其状态。
当我们尝试对真实系统建模时,为什么要在自动机理论中包括不确定性?
Answers:
是的,您是对的,计算机是确定性的自动化。非确定性模型在理论上更有用,有时确定性解决方案对定义(或说问题陈述)不那么明显,因此很难找到解决方案。然后一种方法是,首先设计一个非确定性模型,该模型可能相对容易设计,然后尝试将其转换为确定性模型。下面,我试图通过一个例子来说明我的意思。考虑正则表达式:
(01)*01(0 + 1)*
现在假设,如果要求您为上述RE生成的语言绘制DFA。
以我设计FA的知识,我知道(1)当*
正则表达式中的内容表示我需要FA中的相应循环时 (2)串联操作之类的a.b
意思是:(q0)─a→(q1)─b→(q2)
。
因此,在我的拳头尝试下,我将绘制一个NFA,例如:
认为这不是确定性解决方案,而是看起来非常简单的FA,可以使用给定的正则表达式轻松进行设计。我想证明上述正则表达式与我的NFA之间有相似之处,如下:
(01)*
01
(之后(01)*
)给出(q0)─0→(q1)─1→(q2)
(0 + 1)*
在状态q 2处给出标签0、1 的自循环根据我的类比,我认为从给定的RE提取上面的FA比较容易。幸运的是,在有限自动机类中,每个非确定性模型都可以转换为等效的确定性模型。我们有将NFA转换为DFA的算法方法。因此,我可以轻松地将上述NFA转换为DFA:
不幸的是,另一部分并不总是可能将非确定性模型转换为确定性模型,例如,确定性下推自动化的类是确定性下推自动化的“ check venn diagram ” 类的子集,您不能总是转换将NPDA转换为PDA。
通常,当不可能将非确定性解决方案转换为确定性解决方案时,则借助非确定性解决方案,我们在子域(或称部分域)而非完整域中定义确定性解决方案。或者我们以其他方式(例如贪婪方式)定义解决方案,这当然可能无法为您提供最佳解决方案。
有时非确定性是精确有效地描述某些复杂问题/解决方案的有效机制,例如,非确定性机器可以用作搜索和回溯算法的模型(请参阅:如何使用回溯在非确定性模型中进行字符串处理)。相反,确定性模型可以更好地表示有效,最小化和较少冗余的解决方案。
在这里,我还要引用维基百科非确定性算法的使用:
在算法设计中,当由算法解决的问题固有地允许多个结果时(或当单个结果具有可发现结果的多个路径时,每个方法都同样可取),通常使用不确定性算法。至关重要的是,不确定性算法产生的每个结果都是有效的,无论该算法在运行时做出何种选择。
可以通过不确定性算法将大量问题概念化,包括计算理论中最著名的未解决问题,即P vs NP。
正如@keshlam在他的评论中也提到的那样:“非决定论”实际上是指某些过程结果中的任何不可预测性。例如,并发程序表现出不确定的行为-同一程序具有相同输入的两次执行会产生不同的结果(如果未应用并发控制机制)。在“非确定性的有用性”中阅读有关此内容的更多信息。。
我还建议您阅读以下链接:
1 .非确定性和随机性有什么区别?
2. 9.2.2非确定性模型与概率模型:(a)。不确定性:我不知道自然会做什么。(b)。概率:我一直在观察自然并收集统计数据。
3. 非确定性编程
反之则相反:自动机首先出现,是数学模型。而且不确定性是很自然的,您通常有数条未解决的道路。而不是采用某种混乱的方式来指定必须按照某种顺序将所有路径都遵循到底,并且可能会被无限分支所束缚,而...只是使用不确定性。
尽管不确定性编程语言并不是主流,但它们具有悠久的历史,也许始于Dijkstra的GCL。随着机器寻求越来越多的内核(独立处理器),某种形式的不确定性正在渗透到所有编程中。
NFA可能会在实践中使用,请在stackexchange上查看此答案。可以这么说,原因是可以实时模拟电源组构造。为了在确定性计算机上模拟NFA,我们只跟踪可能发生的情况。状态的NFA可能是,通常情况下,这个数目会很小,所以模拟会很快。这比运行实际的动力装置构造要实际得多:尽管实际上很少会达到大多数动力装置,但产生的自动机可能非常大。
非确定性对于计算复杂性也很重要,在非复杂性中用于定义NP类。(NP类还具有其他等效定义,例如使用见证人。)
(这是其他一些答案的改写,但我还是会贴出来:)
您写道:自动机是数字计算机的抽象模型。
我不同意!自动机可以模拟人类如何指定计算,而不仅仅是计算机如何执行计算。不确定性恰恰是区别。我们的规格通常是不确定的。
例如,采用merge sort。合并排序是通过将要排序的项目分成大小大致相等的两半进行排序,然后使用合并排序对每一半进行排序,然后合并排序的结果。这完全指定了合并排序的概念,但不是确定性的:它没有指定对两半进行排序的顺序(就我们而言,我们可以同时进行),也没有指定确切的方法确定拆分。这些细节将需要填写,以便确定确定的顺序版本的合并排序,该排序可以由单线程计算机程序实现,但是我想说它们是进行合并排序的一种特定方式的一部分,而不是合并排序本身的想法。
总体而言,算法也是如此-例如食谱。有人将算法定义为确定性的,在这种情况下,这种更笼统的方法,我认为更自然的“算法”概念需要一个不同的名称。
使用非确定性规范的想法是由Dijkstra的编程方法形式化的,该方法以仅给出程序要满足的前提条件和后置条件的规范开始,并从中系统地开发确定性的命令性程序。迪克斯特拉可能会说:排序是问题,我们要建立的前提条件和后置条件之间的关系;合并排序是一种在问题说明和确定性解决方案之间的中间位置进行此操作的方法;一种特定的确定性合并排序算法是一种具体的确定性解决方案。但是,可以使用相同的通用方法来开发并发程序,其中最终程序仍然是不确定的。这样的程序可以例如在分布式计算环境中运行。
没错,我们无法构建不确定的机器。因此,目标不是使用该概念来制造更好的机器。相反,当试图理解计算时,不确定性是一个有用的概念。例如,我们现在知道,从可计算性的角度来看,非确定性并不比确定性更强大,这意味着我们可以通过使用确定性机器来模拟非确定性机器。但是,从复杂性的角度来看,不确定性使我们能够推理和尝试理解找到问题的有效解决方案的难度与验证解决方案的难度之间的关系(著名的P对NP问题) 。等等。因此,研究不确定性的主要原因是理论上的。
图灵机的发明是图灵于1936年发明的。FSM样模型通过引入麦卡洛克和皮茨两个神经生理学家,为神经生物学活动在1943年从斯坦福CS模型的历史页面:
有限自动机如何成为计算机科学分支的激动人心的历史说明了其广泛的应用。最早考虑有限状态机概念的人包括生物学家,心理学家,数学家,工程师和一些第一批计算机科学家。他们都有共同的兴趣:模拟人类的思维过程,无论是在大脑中还是在计算机中。两位神经生理学家沃伦·麦卡洛克(Warren McCulloch)和沃尔特·皮茨(Walter Pitts)在1943年率先提出了有限自动机的描述。他们的论文《神经活动中固有的逻辑演算》为神经网络理论,神经网络理论的研究做出了重要贡献。自动机,计算理论和控制论。后来,两名计算机科学家GH Mealy和EF Moore,在1955-56年发表的单独论文中,将该理论推广到了功能更强大的机器上。命名有限状态机,Mealy机和Moore机是为了表彰其工作。
不是CS历史学家,而是怀疑McCulloch-Pitts模型不包含不确定性,而Mealy - Moore模型却包含了形式/理论概念的自然概括/抽象。请注意,DFA和NFA具有相同的表示能力,因此,如果希望对真实系统建模,则可以选择其中一种。一个基本的区别是NFA可能比等效的DFA 小得多(例如,存在数据/信息压缩的自然因素)。在NFA研究中,并行性也有自然的方面/类似物。
首先,我要感谢所有回答此问题的人。所有答案都很重要并添加了一些有用的信息。但是由于这对于初学者来说是一个棘手的问题,需要足够的时间来很好地理解它,会尝试总结我从所有答案和一些书中学到的东西:
实际上,我对不确定性模型的机制感到困惑。我一直想知道非确定性机器,因为它是在现实世界中不存在的非机械机器。我总是将Automata与当今的完全确定性的计算机进行比较。实际上,我并没有正确地理解不确定性模型。现在,我认为我已经很好地理解了非名词性模型:非确定性机器是始终遵循执行路径并导致接受字符串的机器(无回溯),但是在现实生活中怎么可能呢?:当今的计算机绝对不可能如此智能地预测未来。那么为什么非确定性呢?这个问题的答案很棘手,我得出的结论是:当计算机不存在时,自动机理论确实存在(先是理论,然后是实用的)。它纯粹是理论性的主题,非确定性的概念是凭直觉产生的。“自动机理论”主题的动机不是要处理实际的计算机。但是,当实际上计算机出现时,然后可以使用自动机理论来精确定义实用计算机:当今计算机的局限性是什么?算法问题对计算机来说非常复杂,因此不切实际(在这里,非derderminism的作用非常关键,因此我们可以区分两个复杂度类别P和NP。这些不切实际的问题的解决方案是什么,它可以比较快地执行。这就是不确定性的用处。它纯粹是理论性的主题,非确定性的概念是凭直觉产生的。“自动机理论”主题的动机不是要处理实际的计算机。但是,当实际上计算机出现时,然后可以使用自动机理论来精确定义实用计算机:当今计算机的局限性是什么?算法问题对计算机来说非常复杂,因此不切实际(在这里,非derderminism的作用非常关键,因此我们可以区分两个复杂度类别P和NP。这些不切实际的问题的解决方案是什么,它可以比较快地执行。这就是不确定性的用处。它纯粹是理论性的主题,非确定性的概念是凭直觉产生的。“自动机理论”主题的动机不是要处理实际的计算机。但是,当实际上计算机出现时,然后可以使用自动机理论来精确定义实用计算机:当今计算机的局限性是什么?算法问题对计算机来说非常复杂,因此不切实际(在这里,非derderminism的作用非常关键,因此我们可以区分两个复杂度类别P和NP。这些不切实际的问题的解决方案是什么,它可以比较快地执行。这就是不确定性的用处。但是,当实际上计算机出现时,然后可以使用自动机理论来精确定义实用计算机:当今计算机的局限性是什么?算法问题对计算机来说非常复杂,因此不切实际(在这里,非derderminism的作用非常关键,因此我们可以区分两个复杂度类别P和NP。这些不切实际的问题的解决方案是什么,它可以比较快地执行。这就是不确定性的用处。但是,当实际上计算机出现时,然后可以使用自动机理论来精确定义实用计算机:当今计算机的局限性是什么?算法问题对计算机来说非常复杂,因此不切实际(在这里,非derderminism的作用非常关键,因此我们可以区分两个复杂度类别P和NP。这些不切实际的问题的解决方案是什么,它可以比较快地执行。这就是不确定性的用处。这些不切实际的问题的解决方案是什么,它可以相对更快地执行。这就是不确定性的用处。这些不切实际的问题的解决方案是什么,它可以相对更快地执行。这就是不确定性的用处。
如果有任何问题,请纠正我。
非确定性很有用,因为它可以帮助您了解确定性,但反之则无济于事。您可以说不确定性是更大的主意。确定性的图腾机是非确定性的图腾机的一种特殊情况。-非确定性可以帮助我们理解为什么在当今平台上很难解决一些问题。许多计算问题在确定性计算平台上没有有效的解决方案,但是我们知道,在非确定性计算平台上可以有有效的解决方案。...状态,编码,不确定性都链接在一起http://people.cs.umass.edu/~rsnbrg/teach-eatcs.pdf
在确定性的图灵机中,规则集最多规定 对于任何给定情况要执行的一个动作。相反,非确定性图灵机(NTM)可能具有一组规则,该规则规定了给定情况下的多个动作。 http://en.wikipedia.org/wiki/Non-deterministic_Turing_machine 如果您可以构建一个软件盒,可以很好地管理状态转换,使其可以处理多个动作,那么您可以获得超越确定性机器的性能。
为什么非确定性概念很有用?
确定性很容易破坏对称性。对于顺序确定性来说,这种趋势甚至更强,但是无环有向图的概念和这种图的拓扑顺序允许忽略确定性和顺序确定性之间的差异。非确定性是确定性的超集,它可以保留更多的对称性。在设计问题的解决方案时,从不确定性解决方案开始可以保留有用的对称性,从而使解决方案的描述小而紧凑。然后可以将对称性的破坏委派给实施过程中的下一个阶段,同时将非确定性解决方案转换为确定性解决方案。
通常,非确定性意味着将部分功能的概念替换为关系的概念。在那种情况下,非确定性机器可以在时间上向前和向后运行,而对于确定性机器通常是不可能的。如果我们使用确定性的总函数和非确定性的多值总函数,对称性不再那么好,但仍然可以使它起作用。