NTU 课程辅助笔记: NFA到DFA的转化

该博客详细介绍了如何构建有限状态自动机(DFA),包括状态转换表的建立、ε-闭包的计算、初始状态的转换以及DFA的最小化过程。通过消除多余状态和合并等价状态,实现了DFA的简化,最后展示了优化后的DFA状态转换表和图。
摘要由CSDN通过智能技术生成

我们以这张图为例:

用 Finite State Machine Designer - by Evan Wallace (madebyevan.com) 画的,有几条边的mark没画好错位了

 

 1 写出状态转换表

行index表示状态,列index表示条件,表格内的是后继状态

2 求出ε-闭包 (ε-closure)

        ε-closure(s)表示由状态s经由条件ε可以到达的 所有状态的集合(包括自身)

ε-closure(0){0,1,2,4,7}
ε-closure(1){1,2,4}
ε-closure(2){2}
ε-closure(3){1,2,3,4,6,7}
ε-closure(4){4}
ε-closure(5){1,2,4,5,6,7}
ε-closure(6){1,2,4,6,7}
ε-closure(7){7}
ε-closure(8){8}
ε-closure(9){9}

 3 将初始态的转换闭包ε-closure(0)设为状态A 

        即A={0,1,2,4,7}

4  写出状态A经过上面转换图中所有转换条件得到的状态的ε 闭包

  • ε-closure(0) = A={0,1,2,4,7}
  • ε-closure(move(A,a)) = ε-closure({3,8}) = {1,2,3,4,6,7,8} = B
  • ε-closure(move(A,b)) = ε-closure(5) = {1,2,4,5,6,7} = C
  • ε-closure(move(B,a)) = ε-closure({3,8}) = {1,2,3,4,6,7,8} = B
  • ε-closure(move(B,b)) = ε-closure({5,9}) = {1,2,4,5,6,7,9} = D
  • ε-closure(move(C,a)) = ε-closure({3,8}) = {1,2,3,4,6,7,8} = B
  • ε-closure(move(C,b))= ε-closure(5) = {1,2,4,5,6,7} = C 
  • ε-closure(move(D,a)) = ε-closure({3,8}) = {1,2,3,4,6,7,8} = B
  • ε-closure(move(D,b)) = ε-closure(5) = {1,2,4,5,6,7} = C

5 画出DFA 状态转换表

ab
ABC
BBD
CBC
DBC

6 画出DFA状态转换图

        

        注:

7 DFA 最小化 

 

 7.1 消除多余状态

        多余状态的特征:

1)从这个状态出发没有通路到达终态

2)从开始状态出发,任何输入串也不能到达的那个状态

举例说明:

 7.2 合并等价状态

        等价状态的特征:

1) 一致性条件:状态s和t必须同时为终态或非终态

2)蔓延性条件:对于所有输入符号,状态s和状态t必须转化到等价的状态里

 7.2.1 合并等价状态举例

        (来自NFA到DFA的转化_只有十分努力,才能看起来毫不费力-CSDN博客_nfa转dfa

        

        

        首先画出状态转移表 

        

        然后 我们看:

1)6和7同时是终态,满足条件1;同时6和7都能在b的情况下转换成6,所以这两个状态可以合并

2)然后我们就可以合并3和4

3)然后就可以合并1和2

于是就有:

        

即:

         

 

    8 我们的问题的优化DFA

ab
ABC
BBD
CBC
DBC

首先C和D可以合并:

ab
ABE
BBE
EBE

然后A和E可以合并

ab
BBF
FBF

B和F不能合并了,因为一个是终态,一个是非终态

        所以简化后的DFA为

        

 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UQI-LIUWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值