需要的最小状态数量?

时间:2011-02-13 14:55:18

标签: finite-automata computation-theory dfa

具有字母{ a }的语言 L 的定义如下:

L = {a nk | k> 0;并且n是正整数常数}

DFA识别 L 所需的状态数是多少?


在我看来它应该是k + 1,但我不确定。

1 个答案:

答案 0 :(得分:3)

语言L可由具有n + 1个状态的DFA识别。

观察到L中任何字符串的长度与0 mod n一致。

标记整数为0,1,2,... n-1的状态的n,表示每个可能的余数。另一个状态S是起始状态。 S具有单个转换,状态1.如果机器当前处于状态i,则在输入时它移动到状态(i + 1)mod n。状态0是 唯一接受的国家。 (如果空字符串是L的一部分,我们可以消除S并使状态0成为开始状态。)

假设存在仍然识别L的少于n + 1个状态的DFA。考虑状态序列S 0 ,S 1 ,... S <处理字符串 a n 时遇到sub> n 。 S n 必须是接受状态,因为 a n 在L中。但是由于此DFA中少于n + 1个不同的状态根据鸽笼原则,必须有一些国家至少被访问过两次。删除该循环会产生另一条路径(以及另一条接受的字符串),其长度为&lt; n,从S 0 到S n 。但是L不包含短于n的字符串,这与我们的假设相矛盾。因此,没有少于n + 1个状态的DFA识别L。