是否有任何简短的答案或公式可以根据任何语言确定DFA中的州数?更确切地说,是否可以在没有明确构建的情况下确定最小DFA中的状态数?
答案 0 :(得分:1)
嗯,我不知道"短",但有一种可以使用的启发式方法。这基本上是对Myhill-Nerode Theorem的结果的重述。
鉴于字母表和语言是该字母表中所有字符串的子集,假设两个字符串 x 和 y 等于任何其他字符串 z 连接 xz 和 yz 既可以使用语言,也可以两种都不在语言中。 (注意 z 可以是空字符串)
例如,如果字母表只是
0
和1
,而且语言是"所有字符串都以11
"结尾,那么字符串& #34;0010
"和"1110
"是等价的,因为如果 z 以11
结尾,则两个连接都在语言中,如果 z 不以11
结尾,则连接都不是在语言中。请注意字符串"0001
"并不等同于其他两个,因为如果 z 是"1
",那么连接"0001
" +"1
"是语言,但串联"0010
" +"1
"不在语言中。
然后,语言的最小DFA中的状态数是"等效"的定义下的等价类的数量。
按照之前的示例,等价类是"不以
1
"结尾的字符串。 (所以,以0
结尾的字符串或空字符串),"以1
结尾但不以11
"结尾的字符串,以及&# 34;以11
"结尾的字符串。因此,该语言的最小DFA由三种状态组成。
我所知道的唯一应用程序是证明某些固定基数 b 中的"数字的常规语言可以被 n "整除至少需要 n 状态。