具有字母{ a }的语言 L 的定义如下:
L = {a nk | k> 0;并且n是正整数常数}
DFA识别 L 所需的状态数是多少?
在我看来它应该是k + 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。