有限自动机和右线性文法笔记

有限自动机和右线性文法笔记

有限自动机

有限状态系统和有限自动机

有限状态自动机简称有限自动机,是一种具有离散输入输出系统的数学模型
有限状态系统具有任意有限数目内部状态
状态转换:每当在某个状态读入一个字符时,便使状态改变为另一个状态,改变后的状态称为后继状态
状态转换的三种情况:(1)转换到自身;(2)转换的后继状态只有一个;(3)转换的后继状态有若干个
根据不同状态转换情况,将有限自动机分为确定的有限自动机DFA(Deterministic Finite Automaton)和不确定的有限自动机NFA(Non-deterministic Finite Automaton)
DFA:每次转换的后继状态都唯一的有限状态自动机
NFA:转换的后继状态不是唯一的有限状态自动机

形式定义确定的有限自动机

一台有限自动机可以由形式定义描述成以下五部分的表:
(1)状态集 Q Q Q 有限状态的集合
(2)输入字母表 T T T 允许的输入符号
(3)动作规则 δ \delta δ 状态转换的规则
(4)起始状态 q 0 q_0 q0
(5)接收状态集 F F F
形式定义确定的有限自动机DFA
确定的有限自动机DFA是一个五元组 M = ( Q , T , δ , q 0 , F ) M=(Q,T,\delta,q_0,F) M=(Q,T,δ,q0,F)
其中,

  • Q Q Q:有限状态的集合;
  • T T T:有限的输入字母表;
  • δ \delta δ:转换函数,从 Q Q Q × \times × T T T Q Q Q的映射;
  • q 0 q_0 q0 :初始状态, q 0 q_0 q0 ∈ \in Q Q Q
  • F F F:终止状态集, F F F ⊆ \subseteq Q Q Q

需要注意,以上讨论的转换函数 δ \delta δ实在一个状态下仅仅输入一个字符的转换函数
当输入一个字符串时,转换函数用 δ ′ \delta' δ表示,显然 δ ‘ \delta‘ δ是从 Q Q Q × \times × T ∗ T^* T Q Q Q的映射
δ ‘ \delta‘ δ的定义:

  • ϵ \epsilon ϵ ∈ \in T ∗ T^* T,有 δ ′ \delta' δ ( ( ( q q q, ϵ \epsilon ϵ) = = = q q q;
  • 对任意 a a a ∈ \in T T T ω \omega ω ∈ \in T ∗ T^* T,有 δ ′ \delta' δ ( ( ( q q q, ω \omega ω a a a) = = = δ \delta δ ( ( ( δ ′ \delta' δ ( ( ( q q q, ω \omega ω ) ) ), a a a ) ) )

如果有 δ ′ \delta' δ ( ( ( q 0 q_0 q0, ω \omega ω ) ) )= p p p p p p ∈ \in F F F,那么称字符串 ω \omega ω被有限自动机 M M M接受,而 L L L ( ( ( M M M ) ) )则表示 M M M接受的语言,表示为 L ( M ) = { ω ∣ δ ′ ( q 0 , ω ) ∈ F } L(M)=\{ {\omega|\delta'(q_0,\omega)\in{F}}\} L(M)={ ωδ(q0,ω)F}

确定的有限自动机转换函数的描述方法

状态转换图
在这里插入图片描述

直接描述转换函数

δ \delta δ ( ( ( q 0 q_0 q0 , , , a a a ) ) ) = = = q 1 q_1 q1, δ \delta δ ( ( ( q 0 q_0 q0 , , , b b b ) ) ) = = = q 2 q_2 q2
δ \delta δ ( ( ( q 1 q_1 q1 , , , a a a ) ) ) = = = q 3 q_3 q3 , , , δ \delta δ ( ( ( q 1 q_1 q1 , , , b b b ) ) ) = = = q 1 q_1 q1
δ \delta δ ( ( ( q 2 q_2 q2 , , , a a a ) ) ) = = = q 2 q_2 q2, δ \delta δ ( ( ( q 2 q_2 q2 , , , b b b ) ) ) = = = q 3 q_3 q3
δ \delta δ ( ( ( q 3 q_3 q3 , , , a a a ) ) ) = = = ϕ \phi ϕ, δ \delta δ ( ( ( q 3 q_3 q3 , , , b b b ) ) ) = = = ϕ \phi ϕ

转换函数表

a a a b b b
q 0 q_0 q0 q 1 q_1 q1 q 2 q_2 q2
q 1 q_1 q1 q 3 q_3 q3 q 1 q_1 q1
q 2 q_2 q2 q 2 q_2 q2 q 3 q_3 q3
q 3 q_3 q3 ϕ \phi ϕ ϕ \phi ϕ

不确定的有限自动机

形式定义不确定的有限自动机

形式定义不确定的有限自动机NFA
确定的有限自动机DFA是一个五元组 M = ( Q , T , δ , q 0 , F ) M=(Q,T,\delta,q_0,F) M=(Q,T,δ,q0,F)
其中,

  • Q Q Q:有限状态的集合;
  • T T T:有限的输入字母表;
  • δ \delta δ:转换函数,从 Q Q Q × \times × T T T 2 Q 2^Q 2Q的映射;(当NFA在某一个状态下输入一个字符时,可转换的后继状态是 Q Q Q的一个子集)
  • q 0 q_0 q0 :初始状态, q 0 q_0 q0 ∈ \in Q Q Q
  • F F F:终止状态集, F F F ⊆ \subseteq Q Q Q
    与DFA相似,当NFA在某一个状态下输入了一个字符串时,其转换函数 δ \delta δ应改为 δ ′ \delta' δ
    δ ′ \delta' δ的定义如下
  • ϵ \epsilon ϵ ∈ \in T ∗ T^* T,有 δ ′ \delta' δ ( ( ( q q q, ϵ \epsilon ϵ) = = = q q q;
  • 对任意 a a a ∈ \in T T T ω \omega ω ∈ \in T ∗ T^* T,有 δ ′ \delta' δ ( ( ( q q q, ω \omega ω a a a) = = ={ p p p|对 δ ′ \delta' δ ( ( ( q q q, ω \omega ω ) ) )中某状态 r r r,且 p p p δ \delta δ ( ( ( r r r, a a a ) ) )内};
  • δ ′ \delta' δ ( ( ( P P P, ω \omega ω ) ) )= ⋃ q ∈ P \bigcup_{q\in{P}} qP δ ′ \delta' δ ( ( ( q q q, ω \omega ω ) ) ) P P P ⊆ \subseteq Q Q Q
    NFA可接受的语言为 L ( M ) = { ω ∣ δ ′ ( q 0 , ω ) 含 F 中 的 一 个 状 态 } L(M)=\{\omega|\delta'(q_0,\omega)含F中的一个状态\} L(M)={ ωδ(q0,ω)F}

不确定的有限自动机转换函数描述方法

状态转移图
在这里插入图片描述
直接描述转移函数
δ \delta δ ( ( ( q 0 q_0 q0, a a a ) ) )={ q 0 q_0 q0, q 1 q_1 q1}, δ \delta δ ( ( ( q 0 q_0 q0, b b b ) ) )={ q 0 q_0 q0, q 3 q_3 q3}, δ \delta δ ( ( ( q 0 q_0 q0, c c c ) ) )={ q 0 q_0 q0, q 5 q_5 q5}
δ \delta δ ( ( ( q 1 q_1 q1, a a a ) ) )={ q 2 q_2 q2}, δ \delta δ ( ( ( q 1 q_1 q1, b b b ) ) )= ϕ \phi ϕ δ \delta δ ( ( ( q 1 q_1 q1, c c c ) ) )= ϕ \phi ϕ
δ \delta δ ( ( ( q 2 q_2 q2, a a a ) ) )={ q 2 q_2 q2}, δ \delta δ ( ( ( q 2 q_2 q2, b b b ) ) )={ q 2 q_2 q2}, δ \delta δ ( ( ( q 2 q_2 q2, c c c ) ) )={ q 2 q_2 q2}
δ \delta δ ( ( ( q 3 q_3 q3, a a a ) ) )= ϕ \phi ϕ δ \delta δ ( ( ( q 3 q_3 q3, b b b ) ) )={ q 4 q_4 q4}, δ \delta δ ( ( ( q 3 q_3 q3, c c c ) ) )= ϕ \phi ϕ
δ \delta δ ( ( ( q 4 q_4 q4, a a a ) ) )={ q 4 q_4 q4}, δ \delta δ ( ( ( q 4 q_4 q4, b b b ) ) )={ q 4 q_4 q4}, δ \delta δ ( ( ( q 4 q_4 q4, c c c ) ) )={ q 4 q_4 q4}
δ \delta δ ( ( ( q 5 q_5 q5, a a a ) ) )= ϕ \phi ϕ δ \delta δ ( ( ( q 5 q_5 q5, b b b ) ) )= ϕ \phi ϕ δ \delta δ ( ( ( q 5 q_5 q5, c c c ) ) )={ q 6 q_6 q6}
δ \delta δ ( ( ( q 6 q_6 q6, a a a ) ) )={ q 6 q_6 q6}, δ \delta δ ( ( ( q 6 q_6 q6, b b b ) ) )={ q 6 q_6 q6}, δ \delta δ ( ( ( q 6 q_6 q6, c c c ) ) )={ q 6 q_6 q6}

转换函数表

a a a b b b c c c
q 0 q_0 q0 { q 0 q_0 q0, q 1 q_1 q1} { q 0 q_0 q0, q 3 q_3 q3} { q 0 q_0 q0, q 5 q_5 q5}
q 1 q_1 q1 { q 2 q_2 q2} ϕ \phi ϕ ϕ \phi ϕ
q 2 q_2 q2 { q 2 q_2 q2} { q 2 q_2 q2} { q 2 q_2 q2}
q 3 q_3 q3 ϕ \phi ϕ { q 4 q_4 q4} ϕ \phi ϕ
  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值