[编译原理随记]最小化DFA

本文记录了如何最小化DFA状态图的过程,包括初始状态的拆分策略和接受状态的处理。通过逐步拆分,将原本5个状态的DFA减少到4个状态。接着探讨了DFA表空间的压缩方法,提出使用双数组实现链表形式存储同前缀状态,并结合next和check数组进行判断和查找,以优化空间占用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上级文章:

[编译原理随记]正则表达式构建DFA(r(#)followpos(i)构造):https://blog.youkuaiyun.com/qq_28033719/article/details/117561604


先准备需要进行简化的 DFA 状态图

它对应的 DFA 状态转换表 (Dtran) 是:

优化状态数

然后进行拆分区别:

1、先把所有状态放到一组内

2、第一次区分是区分接受状态和非接受状态,如果接受状态是一个,那么接收状态为一组,多个就多组,其他归为非接受状态。

3、然后第一次对接受状态组,逐个查看可输入符号对应的结果状态是否都属于同一个分组内,把不属于就继续拆分,(可以按同分组拆分)每拆分一次,都得继续在新的两个组重新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值