我想直接使用龙书中的算法3.36来了解DFA构造的时间复杂度。
我对外循环执行多少次感到困惑?和algo中提到的Dstates一样,它们是否与正则表达式中的操作数相等?
此外,在 for 循环中将执行多少工作,执行等于|Σ|时间?
谢谢。
答案 0 :(得分:1)
构造的复杂性仍然是O(2 n )。考虑in this post所描述的最坏情况示例:
L = {w∈{0,1} *:| w | ≥n且最后一个符号的第n个符号为1}
对应于该语言的正则表达式是(0 + 1)* 1(0 + 1)...(0 + 1),其中尾随部分重复n-1次。时间复杂度仍然是O(2 n ),因为构造的DFA中的状态数是O(2 n )(对应于a的后缀数) L)中的单词。