2.4 有限状态自动机

有限状态自动机(FA)
在这里插入图片描述
从数学上来讲:我们可以把它看成一个有输入输出接口的模块或者系统它可以接受一个输入的字符串,作为输出的话,它可以回答 Yes 或者 No,也就是这个有限状态自动机它能不能接受或者识别你给他提供的这样一个字符串,如果能的话就回答Yes否则的话它就回答No

我们可以使用一个元组来描述这个有限状态自动机 M

自动机的数学概念

M = (∑,S,q0,F,ε)
∑  是字母表
S  状态集,它指的是里面有限自动机的状态
Q0 初始状态,自动机开始的时候是有什么状态
F  终结状态集
ε  转换函数,描述了这个有限状态自动机在给定这个串的驱动下是如何动作的

自动机例子

在这里插入图片描述
其中圆形的部分是这个自动机的状态为了对这些状态做区分我们给定一个编号,分别是0,1,2
我们可以把这样一个自动机 和刚刚的数学元组做一个对应

∑  是这个自动机所能识别的所有字符的集合 设定为 ∑ = {a,b}
S  是状态机 S = {0,1,2}
Q0 是起始状态,这个起始状态是只有一个单项箭头所指向的边是起始状态,这里 0 号节点有一个单独的指向边,所以0号节点是起始状态
F  终结状态(接受状态), F = {2}
ε 转移函数描述的事实:
读入 S = "abab"
    通过起始状态 0号 节点,进行状态转移到了 1号 状态,
    下一个字符是 b,在 1号 状态上我们可以顺着 b 的驱动在做一个状态转移,我们注意到这个状态上有一条回边指向自身,那么顺着这个回边
    做状态转移就会发现我们又回到了 1号状态,接下来我们还是在这个 1号 状态上 要处理字符 a ,顺着 a的驱动我们又做了状态转移
    此时就来到了状态2 ,以此类推我们最后接收到了字符b,顺着这个 a,b 的驱动,顺着回边,又回到了 2号状态。
    
    { (q0,a)->q1,(q0,b)->q0,
      (q1,a)->q2,(q1,b)->q1,
      (q2,a)->q2,(q2,b)->q2 }

(q0,a) 是一个元组, (q0,a)->q1 表示在q0(初始状态)上如果读入了一个字符a,会转移到目标状态q1
同理 在这样一个状态上(q1) 如果读入一个b 那么会做一个自循环,又回到了q0

状态转移函数是一个集合,他是所有的映射构成的这样一个集合
什么是接受:
就是刚刚做状态转移的过程,初始模式是处于状态0 上,然后给定的另外一个输入是一个串 S,然后拿着串S
的字符在当前的状态上根据转移函数 ε 做状态转移,如果把 S 完全已经读完并且顺着这个状态转移到最后的状态F(2号,终结状态)我们就叫当前的串S可以被整个有限状态自动机接受,如果这个串已经被读完,但我们状态转移没有到F而是到例如0,1这样一个非终结状态的话,那么这个串就不可以被有限状态自动机接受。
DFA 确定的有限状态自动机

自动机的第二个例子

在这里插入图片描述

在 0 号状态上 读入一个 a 这时候 有一个 a的回边,还有一个 a的向右边,转移到状态1,所以在这个状态转移函数ε 里面我们可以看到状态转移函数的值域发生变化在状态q0 上如果读入一个字符 a 的话不再是一个单独的状态了,而是由 q0 和 q1 构成的一个状态集,代表可以向下0 到达q0 也可以向上走到达q1

{(q0,a) -> {q0,q1},

在 q0 上读入一个字符b,还会向右走到达q1

在 q0 上读入一个字符b,还会向右走到达q1

在 q1 这个任务状态上读入一个字符b,它可以向左走重新回到q0,也可以向下走自身做一个循环 ,回到q1

(q1,b)->{q0,q1}}

它在给定的一个字符的转移函数是不确定的,可能构成一个集合,我们把这样一类自动机叫做非确定的有限状态自动机
NFA 非确定的有限状态自动机

有限状态自动机小结
确定状态的有限自动机 DFA
对于任意的字符,最多有一个状态可以转移

    ε : S *  ∑  -> S       注意:  * 是离散数学中经常被提到的笛卡尔积

非确定的有限状态自动机 NFA
对任意的字符,有多于一个状态可以转移
并集 = U

P = 是在这里插入图片描述离散数学中的幂集

幂集, 就是原集合中所有的子集(包括全集和空集)构成的集族

ε : S *(∑ 并集  ε) -> P(S)

ε 表示 : i – ε --> j ε 表示空转也就是我可以不消耗输入的串S中的任何一个字符。
幂集:

求: S = {a,b} 的幂集
P(S) = {ε,{a},{b},{a,b}}

DFA 的实现
在这里插入图片描述
零阶矩阵来表示:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值