【发布时间】:2015-11-19 16:18:45
【问题描述】:
是否有任何简短的答案或公式可以根据任何语言确定 DFA 中的状态数?更准确地说是否可以在不显式构造的情况下确定最小 DFA 中的状态数?
【问题讨论】:
标签: finite-automata dfa
是否有任何简短的答案或公式可以根据任何语言确定 DFA 中的状态数?更准确地说是否可以在不显式构造的情况下确定最小 DFA 中的状态数?
【问题讨论】:
标签: finite-automata dfa
好吧,我不知道“短”,但是可以使用一种启发式方法。这基本上是对Myhill-Nerode Theorem结果的重述。
给定一个字母表和一种语言,它是该字母表上所有字符串的子集,假设两个字符串 x 和 y 等价于任何其他字符串 z 连接 xz 和 yz 要么都在语言中,要么都不在语言中。 (注意 z 可以是空字符串)
例如,如果字母表只有
0和1,语言是“所有以11结尾的字符串”,那么字符串“0010”和“1110”是等价的, 因为如果 z 以11结尾,那么两个连接都在语言中,如果 z 不以11结尾,则连接都不在语言中。请注意,字符串“0001”不等同于其他两个,因为如果 z 是“1”,则连接“0001”+“1”在语言,但连接“0010”+“1”不在该语言中。
那么,该语言的最小 DFA 中的状态数就是此“等价”定义下的等价类数。
按照之前的示例,等价类是“不以
1结尾的字符串”(因此,以0结尾的字符串或空字符串)、“以1结尾的字符串但不要以11结尾,以及“以11结尾的字符串”。因此,该语言的最小 DFA 包含三个状态。
我所知道的唯一应用是证明“可被 n 整除的固定基数 b 中的数字”的常规语言至少需要 n 个状态。
【讨论】: