如何将 不确定的有穷自动机(NFA) 转化为 确定的有穷自动机(DFA)
Posted andyevans
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将 不确定的有穷自动机(NFA) 转化为 确定的有穷自动机(DFA)相关的知识,希望对你有一定的参考价值。
一、从NFA到DFA的转换
例如下图:
DFA的每个状态都是一个由NFA中的状态构成的集合,即NFA状态集合的一个子集
r =aa*bb*cc*
二、从带有ε-边的NFA到DFA的转换
r=0*1*2*
三、子集构造法( subset construction)
? 输入:NFA N
? 输出:接收同样语言的DFA D
? 方法:一开始,ε-closure ( s0 )是Dstates 中的唯一状态,且它未加标记;
while(在Dstates中有一个未标记状态T )
{
给T加上标记;
for(每个输入符号a)
{
U = ε-closure(move(T, a));
if ( U不在Dstates中)
将U加入到Dstates中,且不加标记;
Dtran[T, a]=U ;
}
}
四、计算 ε-closure (T )
将T的所有状态压入stack中;将ε-closure (T )初始化为 T ;
while(stack非空)
{
将栈顶元素 t 给弹出栈中;
for(每个满足如下条件的u :从t出发有一个标号为ε的转换到达状态u)
if ( u不在ε-closure (T )中)
{
将u加入到ε-closure (T )中;将u压入栈中;
}
}
以上是关于如何将 不确定的有穷自动机(NFA) 转化为 确定的有穷自动机(DFA)的主要内容,如果未能解决你的问题,请参考以下文章
什么是NFA(不确定的有穷自动机)和DFA(确定的有穷自动机)
什么是NFA(不确定的有穷自动机)和DFA(确定的有穷自动机)
什么是NFA(不确定的有穷自动机)和DFA(确定的有穷自动机)