ε-closure(I)
意思为状态集合 I 的 ε - 闭包,是状态集 I 中的任何状态 S 经任意条 ε 弧而能到的状态的集合。(包括自身)
(下图为例的话,状态指的就是图中的1-8,通俗一点就是从 I 中的任意一个“数字”能到的“数字”的集合)
NFA转换为等价的DFA
应试性解答:(不专业,只用于应试)
例子:
1. 第一步需要作出一个表格,如果除了 ε 只有 a 和 b 两种弧(一般都只有两种),就做三列,如下所示。
![]() | ||
| ||
... | ... | ... |
通俗点讲: 行的是最后得到的 DFA 图的各个状态,
是
行状态能通过 a 弧能到达的状态,
是
行状态能通过 b 弧能到达的状态。
求第一个 时候要从初态(就是入口)开始将能经过 ε 能到达的状态全找出来,包括初态本身。并填入到
下面的第一个表格。他就是最后得到的 DFA 的初态。
2. 将 中可通过 a 弧到达的状态找出来写到
。必须是到达的,所以0不算,没有状态到达0。可以进过 ε。
也是同样的道理。
![]() | ||
| ![]() | ![]() |
... | ... | ... |
3. 如上面所说 是 DFA 的第一个状态,现在讲
当作第二个状态
是第三个状态写到下面,标记为
和
。
![]() | ||
| ![]() | ![]() |
![]() | ||
![]() | ||
... | ... | ... |
4. 按照上面的方法继续算下去,直到没有新的状态为止,最后的表格如下所示。
![]() | ||
| ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
直到写完 以后后面的两个在前面都出现过了,所以没有新的状态出现了,所以到此就结束了。所以将
他们分别换成数字,写出他们的状态转换矩阵的话,如下表格所示。它也就是 DFA 的状态转换矩阵。
![]() | ||
0 | 1 | 2 |
1 | 1 | 3 |
2 | 1 | 2 |
3 | 1 | 4 |
4 | 1 | 2 |
那么它的状态转换图,如下图所示。
完毕!
参考:
https://wenku.baidu.com/view/edf6ab8bf524ccbff0218419?ivk_sa=1023194j