我们可以将非确定性有限自动机转换为确定性有限自动机吗?
是的,我们可以将 NFA 转换为 DFA。对于每个 NFA,都存在一个等效的 DFA。等效性是根据语言接受度来定义的。由于 NFA 只不过是一个有限自动机,其中允许输入符号上的一个或多个转换为零。它总是可以构造有限自动机,并行模拟特定输入符号上 DFA 的所有移动,然后得到一个有限自动机,其中每个输入符号上都会有一个转换。这里,对应于一个NFA,存在一个DFA。要构造等价于 NFA 的 DFA,应该记住 DFA 的状态是 NFA 状态的集合。
算法 NFA – 到 – DFA
输入- NFA 具有一组状态 N = {n 0 ,n 1 ……n n },起始状态为 n 0。
输出- DFA,状态集 D′={d 0 ,d 1 ,d 2 ……d n },起始状态为 d 0。
d 0 =ε−闭包 (n 0 )
D′={d 0 }
设置 d 0未标记
while there is an unmarked state d in D′. {set d marked {
For each input symbol 'a' {
Let T be a set of states in NFA to which there is a transition on 'a' from some state ni in d d′=ε−closure (T).
If d′ is not already present in D′ {
D′=D′∪{d′}
Add transition d→d′,labeled 'a'
set d′ unmarked
}
}
}
}
示例- 为以下 LEX 程序设计词法分析器。
AUXILIARY DEFINITION Sletter = A|B|C|…….|Z
digit = 0 |1|2|………|9
TRANSLATION RULES
begin {return 1}
end {return 2}
If {return 3}
then {return 4}
else {return 5}
letter (letter+digit)* {value=Install ( );return 6}
digit + {value=Install ( );return 7}
< {value=1;return 8}
<= {value=2;return 8}
= {value=3;return 8}
< > {value=4;return 8}
> {value=5;return 8}
>= {value=6;return 8}
解决方案
各种模式的组合 NFA 将是
Convert NFA to DFA - 相应的 DFA 将是。
状态{0, 1, 7, 11, 14, 19, 24, 26, 28, 30, 33, 35, 38, 40}组合起来命名为q0,构成DFA的起始状态。
在组合 NFA 中,从状态 1 到状态 2 和从状态 24 到 25 的转换是相同的,因为输入“b”是一个字母。
状态 2、25 合并。类似地,其他状态被组合。
状态 29、31 和 36 被合并,因为它们都在获得输入“<”后到达。
类似地,其他状态被组合。
以上是 我们可以将非确定性有限自动机转换为确定性有限自动机吗? 的全部内容, 来源链接: utcz.com/z/363286.html