形式语言与编译 DFA

形式语言与自动机

期末考试复习,太难了,感觉写出来会好点

有穷自动机(有限自动机Finite Autometa)

自动机通常用 状态转移图 来表示。

从一个状态输入一个刺激得到另一个状态的过程。

软件工程里面的实时系统、复杂系统也用状态转移图来表示,因此状态转移图非常有用。

通过状态转移图,可以明确的描述某个系统

有穷自动机表示状态转移:

上图有13个状态转移函数,也就是有13个转移

状态机的应用:

TCP发送数据协议用状态转移图也可以表示:

老师讲TCP状态转移图应该有7个状态,这里只是部分,4个状态

确定的有穷自动机 与 不确定的有穷自动机

有穷自动机通常分为两类,一类是确定的有穷自动机,另一类是不确定的有穷自动机。

确定的有穷自动机(DFA)是指 一个状态接受一个输入,会指向唯一一个状态

非确定的有穷自动机(NFA)是指 一个状态接受一个输入,会转向多个状态,具体转向哪一个状态并不确定;还有一种就是输入里有多个连续输入字符,这也是NFA

DFA的数学定义:

除了状态转移图和数学定义DFA,还可以用一种叫做迁移表的工具表示DFA

至此,我们共有 状态转移图、数学定义五元组、迁移表三种表示自动机的方法。

通常我们是输入一个串到DFA,当这个串完了并且当前状态输入我们提前规定好的接受状态,那么我们就说我们设计的自动机接受了我们输入的串 ,其他情况就说是,自动机拒绝了串!

串是否被DFA接受,就是上述判定(处理)过程 。

怎样把DFA用程序表示出来??

原则:状态机中的一个状态就是一个函数;对于迁移函数,处理完状态和输入字符两部分就跳转到新状态的起始部分。

比如上图,2状态处理完n,跳转到3状态;2状态处理完i,跳转到2状态;2状态处理完 除了i和n之外的字符,跳转到1状态。

扩展的转移函数

将 状态+字符 变为 状态+ 串的长度由原来的1,扩展成为[0,1,2,3,4……]

基础: \(\delta(q,\varepsilon) = q\)

归纳: \(\delta(q,wa) = \delta((\delta(q,w)),a)\)

由10个字符,可以得到11个字符,就是这样的作用

确实是从原来的一个字符拓展成为长度大于1的串。

我的理解:引入扩展转移函数也就是可以处理句子了,不仅仅是单个字符

可以做做五元组、迁移表、自动机之间的两两转换

自动机可以判断w串能否被接受

DFA定义语言

  • 若A是个自动机,L(A)是它定义的语言
  • L(A)是串的集合,这个串是从开始状态到结束状态 弧标记依次组成的串
  • A识别的L(A)

\(L(A)={ \{ w|\delta`(q0,w)\subset F \}}\)

L(A)也就是一组w(句子串)的集合

posted @ 2020-06-14 17:29  _Sandman  阅读(518)  评论(0编辑  收藏  举报