5、有限状态机与正则表达式的应用与转换

有限状态机与正则表达式的应用与转换

1. 有限状态机转换为正则表达式

1.1 转换算法

在将有限状态机转换为正则表达式时,会涉及一系列操作。首先会对节点和边进行处理,具体如下:

Mkk = label of edge (K, K)
M = MakMkk*Mkb
ELSE
    M = MakMkb

IF edge (A, B) does exist
    Mab = label of edge (A, B)
    label of edge (A, B) = Mab ∪ M
ELSE
    label of edge (A, B) = M
END LOOP
END LOOP
remove node K and connected edges
END LOOP

通过不断移除除初始和终止节点外的其他节点及其相连的边,最终剩下的单条边的标签就是转换后的正则表达式。之后,需要排除正则表达式中冗余的 ε 字符,并在可能的情况下进行简化。

1.2 示例

对于图 3.5 中的有限状态机,其转换为正则表达式的逐步过程如图 3.7 所示。若初始状态有入边,需按照规则添加新的初始状态。例如,得到的表达式 ε(ε(εaε ∪ εbε)) εc,在移除冗余的 ε 字符后,会变成常见的 (a ∪ b) c。

2. 搜索满足给定正则表达式的子串

2.1 问题提出

理论上,正则表达式用于描述形式语言,即一组字符串。它或对应的有限状态机只能回答“给定字符串是否是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值