查看“︁自動機理論”︁的源代码
←
自動機理論
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{NoteTA |G1 = IT }} 在[[理论计算机科学]]中,'''自动机理论'''是对[[抽象機器|抽象机]]和它们能解决的问题的研究。自动机理论密切关联于[[形式语言]]理论,因为自动机经常按它们所能识别的[[形式语言]]类来分类。 ==基本描述== 自动机是[[有限状态自动机|有限状态机]](FSM)的数学模型。FSM是给定符号输入,依据(可表达为一个表格的)[[转移函数]]“跳转”过一系列状态的一种机器。在常见的FSM的“[[米利型有限状态机]]”(Mealy)变体中,这个转移函数告诉自动机给定当前状态和当前字符的时候下一个状态是什么。 逐个读取输入中的符号,直到被完全耗尽(把它当作有一个字写在其上的磁带,通过自动机的读磁头来读取它;磁头在磁带上前行移动,一次读一个符号)。一旦输入被耗尽,自动机被称为“停止”了。 依赖自动机停止时的状态,称呼这个自动机要么是“接受”要么“拒绝”这个输入。如果停止于“接受状态”,则自动机“接受”了这个字。在另一方面,如果它停止于“拒绝状态”,则这个字被“拒绝”。自动机接受的所有字的集合被称为“这个自动机接受的[[形式语言|语言]]”。 但要注意,自动机一般不必须有有限数目甚至[[可数集合|可数]]个状态。比如,[[量子有限自动机]]有[[不可数集合|不可数无限]]个状态,因为所有可能状态的集合是在[[复投影空间]]中所有点的集合。所以,量子有限自动机和有限状态机一样,都是更一般想法[[拓扑自动机]]的特殊情况,它的状态的集合是[[拓扑空间]],而状态转移函数取自在这个空间上的所有可能函数。拓扑自动机经常叫做 [[M-自动机]],简单是[[半自动机]]加上接受状态集合的补充,这里的集合交集确定初始状态是被接受还是被拒绝。 一般地说,自动机不需要严格的接受或拒绝一个输入;它可以按某个在零和一之间的[[概率]]接受它。还是用量子有限自动机作为展示例子,它只按某个概率接受输入。这个想法也是更一般情况[[几何自动机]]或[[度量自动机]]的特殊情况,它的状态的集合是[[度量空间]],一个语言被这个自动机接受如果在初始点和接受状态的集合之间的距离关于这个度量是足够的小。 ==术语== 自动机有如下基本概念: ; [[符号]] : 有某种意义或在这个机器上有效的任意数据(datum)。符号有时就叫做“字母”。 ; 字: 通过一些符号[[串接]]而形成的有限[[字符串]]。 ; [[字母表 (计算机科学)|字母表]] : 符号的有限集合。字母表经常指示为 <math>\Sigma</math>,它是在字母表中所有字母的[[集合 (数学)|集合]]。 ; [[形式语言|语言]] : 字的集合,由给定字母表中的符号形成。可以是也可以不是无限的。 ; [[Kleene星号|Kleene闭包]] : 一个语言可以被认为是所有可能字的子集。所有可能字的集合可以被认为是所有可能的字符串串接的集合。形式上说,所有可能字符串的集合叫做[[自由幺半群]]。它被指示为 <math>\Sigma^*</math>,上标 * 被称为 [[Kleene星号]]。 ==形式描述== '''自动机'''可以表示为[[多元组|5-元组]] <math>\langle Q, \Sigma, \delta, q_0, F\rangle</math>,这里的: *Q 是'''状态'''的集合。 *∑ 是符号的有限集合,我们称为这个自动机接受的语言的'''字母表'''。 *δ 是'''转移函数''',就是 ::<math>\delta:Q \times \Sigma \rightarrow Q</math>。 :(对于非确定自动机,空串是允许的输入)。 *q<sub>0</sub> 是'''开始状态''',就是说自动机在还未处理输入的时候的状态(明显的 q<sub>0</sub>∈ Q)。 *F 是叫做'''终止状态'''的 Q 中的状态的集合(就是 F⊆Q)。 给定一个输入字母 <math>a\in\Sigma</math>,可以使用简单的 [[currying]] 技巧写转移函数为 <math>\delta_a:Q\rightarrow Q</math>,就是说,写 <math>\delta(q,a)=\delta_a(q)</math> 对于所有<math>q\in Q</math>。这种方式下转移可以被更简单的看待: 它就是“动作”于 Q 中一个状态上的生成另一个状态的某种东西。你可以接着考虑重复的应用[[函数复合]]于各种函数 <math>\delta_a</math>, <math>\delta_b</math> 等等的结果。重复的函数复合形成一个[[幺半群]]。对于转移函数,这个幺半群叫做[[转移幺半群]],有时也叫做“变换半群”。 给定一对字母 <math>a,b\in \Sigma</math>,可以通过坚持 <math>\widehat\delta_{ab}=\delta_a \circ \delta_b</math> 定义一个新函数 <math>\widehat\delta</math>,这里的 <math>\circ</math> 指示函数复合。明显的,可以递归的继续这个过程,这样就有了为所有字 <math>w\in\Sigma^*</math> 定义的函数 <math>\widehat\delta_w</math> 的递归定义,因此有了映射 :<math>\widehat\delta:Q \times \Sigma^{\star} \rightarrow Q.</math> 这个构造也可以反过来: 给定 <math>\widehat\delta</math>,可以重新构造一个 <math>\delta</math>,因此两个描述是等价的。 三元组 <math>\langle Q, \Sigma, \delta \rangle</math> 被称为[[半自动机]]。半自动机位于自动机底下,它们就是忽略了开始状态和接受状态的自动机。开始状态和接受状态的补充概念允许自动机做半自动机不能做的事情: 它们可以识别[[形式语言]]。确定有限自动机 <math>\langle Q, \Sigma, \delta, q_0, F\rangle</math> 接受的语言 <math>L</math> 是: :<math>L= \{ w \in \Sigma^{\star}\,|\;\widehat\delta(q_0,w)\in F\}</math> 就是说,一个自动机所接受的语言是在字母表 <math>\Sigma</math> 之上所有字 ''w'' 的集合,当给定为自动机的输入的时候,将导致它停止于 <math>F</math> 中的某个状态。被自动机接受的语言叫做[[可识别语言]]。 当状态集合 ''Q'' 是有限的时候,自动机被称为[[有限状态自动机]],而所有可识别的语言是[[正则语言]]。事实上,有一个强等价: 对于所有正则语言,都有一个有限状态自动机,反之亦然。 如上所述,集合 ''Q'' 不必须是有限或可数的;它可以采用一般的[[拓扑空间]];这就得到了一般的[[拓扑自动机]]。另一种可能的推广是[[度量自动机]]或“几何自动机”。在这种情况下,改变了对语言的接受: 替代在 <math>\widehat\delta(q_0,w)\in F</math> 中的最终状态的集合包含,以在最终状态 <math>\widehat\delta(q_0,w)</math> 和集合 <math>F</math> 之间的[[度量距离]]的方式给出。特定类型的概率自动机是度量自动机,其度量空间是在[[概率空间]]上的[[测量]]。 ==有限自动机的分类== 下面是三类有限自动机 ;[[确定有限状态自动机|确定有限自动机]](DFA) : 对字母表中每个符号,自动机的状态都有且仅有一个转移。 [[File:Afd exemple.png|200px|center|frame|DFA]] ; [[非确定有限状态自动机|非确定有限自动机]](NFA): 自动机的状态对字母表中的每个符号可以有也可以没有转移,对一个符号甚至可以有多个转移。自动机接受一个字,如果存在至少一个从 ''q''<sub>0</sub> 到 F 中标记(label)着这个输入字的一个状态的路径。如果一个转移是“未定义”的,自动机因此不知道如何继续读取输入,则拒绝这个字。 [[File:Afn exemple.png|200px|center|frame|等价于前面例子 DFA 的 NFA]] ; [[非确定有限状态自动机|有ε转移的非确定有限自动机]](FND-ε或ε-NFA) : 除了有能力对任何符号跳转到更多状态或没有状态可以跳转之外,它们可以做根本不关于符号的跳转。就是说,如果一个状态有标记着 <math>\epsilon</math> 的转移,则 NFA 可以处在 <math>\epsilon</math>-转移可到达的任何状态中,直接或通过其他有 <math>\epsilon</math>-转移的状态。从一个状态 q 通过这种方法可到达的状态的集合叫做 q 的 <math>\epsilon</math>-闭包。 尽管可以证明所有这些自动机都“可以接受同样的语言”。你总是可以构造接受与给定的 NFA M 同样语言的某个 DFA M。 ===有限自动机的扩展=== 上述自动机接受的语言家族被称为[[正则语言]]家族。更强力的自动机可以接受更复杂的语言。比如: ; [[下推自动机]](PDA) : 这种机器等同于 DFA (或 NFA),除了它们额外的装备了[[堆栈|栈]]形式的[[内存]]。转移函数 <math>\delta</math> 也依赖于在栈顶的符号,并在每次转移时指定如何变更栈。非确定 PDA 接受[[上下文无关语言]]。 ; [[线性有界自动机]](LBA): LBA 是有限制的图灵机;不使用无限磁带,它的磁带有同输入字符串成正比的空间。LBA 接受[[上下文有关语言]]。 ; [[图灵机]] : 它们是最强力的计算机器。它们拥有磁带形式的无限内存,和可以读取和变更磁带的磁头,它可在磁带上向任何方向移动。图灵机等价于算法,是现代计算机的理论基础。图灵机判定[[递归语言]]并识别[[递归可枚举语言]]。 ==有限状态自动机的最小化== {{Main|确定有限状态自动机最小化}} 根据 [[Myhill-Nerode定理]],在同构意义下接受一个正则语言的最少状态的确定有限状态自动机是唯一的。同时我们还存在有效的算法(时间开销是O(n<sup>2</sup>)的)构造出与给定确定有限状态自动机等价的最小化的确定有限状态自动机。 == 计算能力与判定问题 == 确定有限状态自动机与非确定有限状态自动机识别的语言都是正则语言。由于正则语言的良好性质,许多为其他自动机([[下推自动机]]或[[图灵机]])不能判定的问题,在有限状态自动机的情形下,都可以得到判定,并且存在有效的算法。 对一个确定有限状态自动机,下述判定问题都可以判定,并且存在有效的算法。 * 该自动机识别的语言是否为空集。 * 该自动机识别的语言是否为有限集。 * 该自动机是否与另一个确定有限状态自动机识别同一个的语言。 == 外部链接 == *[http://www.versiontracker.com/dyn/moreinfo/win/35508 Visual Automata Simulator] {{Wayback|url=http://www.versiontracker.com/dyn/moreinfo/win/35508 |date=20071010053937 }} *[http://www.jflap.org JFLAP] {{Wayback|url=http://www.jflap.org/ |date=20201114003806 }} *[http://www.ucse.edu.ar/fma/sepa/ Proyecto SEPa (in Spanish)] {{Wayback|url=http://www.ucse.edu.ar/fma/sepa/ |date=20191118172644 }} *[http://www.swisseduc.ch/informatik/exorciser/index.html Exorciser (in German)] {{Wayback|url=http://www.swisseduc.ch/informatik/exorciser/index.html |date=20181021220246 }} ==引用== * [[John E. Hopcroft]], Rajeev Motwani, [[Jeffrey D. Ullman]] - ''Introduction to Automata Theory, Languages, and Computation (2nd Edition)'' * {{cite book|author = [[Michael Sipser]] | year = 1997 | title = Introduction to the Theory of Computation |url = https://archive.org/details/introductiontoth00sips | publisher = PWS Publishing | id = ISBN 0-534-94728-X}} Part One: Automata and Languages, chapters 1–2, pp.29–122. Section 4.1: Decidable Languages, pp.152–159. Section 5.1: Undecidable Problems from Language Theory, pp.172–183. {{形式语言与形式文法}} {{Computer Science}} {{应用数学}} {{Authority control}} [[Category:自动机|*]] [[Category:形式语言|Z]] [[Category:计算模型]] [[Category:计算机科学]] [[Category:理论计算机科学]]
该页面使用的模板:
Template:Authority control
(
查看源代码
)
Template:Cite book
(
查看源代码
)
Template:Computer Science
(
查看源代码
)
Template:Main
(
查看源代码
)
Template:NoteTA
(
查看源代码
)
Template:Wayback
(
查看源代码
)
Template:应用数学
(
查看源代码
)
Template:形式语言与形式文法
(
查看源代码
)
返回
自動機理論
。
导航菜单
个人工具
登录
命名空间
页面
讨论
不转换
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
工具
链入页面
相关更改
页面信息