作者:lingdong369 | 来源:互联网 | 2023-06-08 10:21
1 原理分析
Q:有限个数状态的集合
∑:输入字母表
T :迁移函数
S :初始状态
F :结束状态
现在来介绍从 NFA-ε 到 NFA 的转换
令Q‘、∑’、T ‘、S’、F分别表示 NFA中的 有限个数状态集合、输入字母表、迁移函数、初始状态、结束状态,而Q、∑、T、S、F则表示NFA-ε 中的有限个数状态集合、输入字母表、迁移函数、初始状态、结束状态;那么,∑‘ = ∑, Q’ = Q,S’ = S, F‘ = {q | E(q) ∩ F≠ф } (其中E(q)表示q 的 ε 闭包)
简单来说,就是看这个状态A连续空跳到达的状态B是什么,如果B通过输入字母表X到达状态C,则直接简化为状态A接受输入字母表B到达C, 如果B没有获得
2 图解
任何输入字母表,则A不进行任何操作。简单的图示如下:
该图下面一连串的过程可以等价为 状态q0 吸收 x 后变成状态q2
3 实例推导
现在来看一个 NFA-ε 转为 NFA 的实例,把下图转变为NFA
首先从状态X开始,它能一直空跳到状态I, 由于状态I 吸收 1 后变成状态 J, 故状态 X 能接受 1直接变成状态 J,而状态G、H、I都可省去。此外,状态X也可以一直空跳到状态 A和状态 C;针对状态 A, 其接收 1 后变成状态 B ,故 X 能直接接收 1 变成状态 B, 同样由于状态 C 接受 0 后变成状态 D, 故 X 也能直接接收 0 后变成状态 D。到这里状态 X 全部讨论完毕。
接下来讨论状态 G,由于状态 G 可由状态 X 跳转得到,并且 X 已经讨论过,故状态 G 可以忽略。同理,状态 H、I、A、C也可以忽略。
接下来讨论状态 B,状态 B 可以连续跳转到 状态 A 和状态 C,由于 A 可接受 1 变成状态 B, 故 B 可直接接收 1 保持自身状态不变,又由于 C 可以接收 0 变成状态 D,故B 也可以接收 0 变成状态 D。此外,状态B也可以跳转到状态 F, 由于 F 接收 1 变成状态 J,故状态 B 也可以直接接收 1 变成状态 J。至此状态 B 讨论结束。
接下来讨论状态 C,由于状态 C 可以连续跳转到状态 A 和状态 C,由于 A 可以接收 1 变成状态 B,故C 能直接接收1变成状态B;由于C可接收0变成状态D,故D 可直接接收0保持自身状态不变。此外,状态 C也可以跳转到状态F,由于状态F接收1变成状态J,故状态 D也可以直接接收 1 变成状态 J。至此,状态 C 讨论结束。
接下来讨论状态 F,F可以由B、D经过空跳得到,由于B、D已讨论过,故F可以忽略。
接下来讨论状态 J,由于状态 J 可以通过空跳得到状态 Y,而 Y又是结束状态,故 J 是一个结束状态。
接下来讨论状态Y,由于状态 J 通过空跳得到状态 Y,故 Y 可以忽略。
至此,全部状态分析完毕,其变化后的图如下