证明具有k个状态的二进制字母表上的DFA可以识别最多k ^(2k +1)* 2 ^ k个语言

时间:2015-11-24 16:30:02

标签: state-machine dfa deterministic

我在测试中得到了这个问题但我无法做到。尝试一下后,我仍然无法做到这一点。我想我错过了什么,但不确定是什么。有人能帮助我吗?

1 个答案:

答案 0 :(得分:1)

所以我认为问题有点错误。让我重申:

  

考虑使用二进制语言的所有具有 k 状态的DFA的集合。证明该集合中DFA识别的不同语言的数量最多为k ^(2k + 1)* 2 ^ k。

首先,对于k> 1,识别的不同语言的数量远小于此。

但无论如何,由于状态和字母的数量是固定的,因此该集合中的任何DFA都是defined totally by three things

  1. 转换函数δ,它采用开始状态和符号(01)并产生结束状态。

  2. 我们从哪个 k 开始。

  3. 哪个 k 状态(如果有)接受状态。

  4. 现在,开始状态显然有( k )选项,并且因为每个状态都可以是接受状态,所以有(2 ^ k )接受状态的选择。

    这为我们留下了过渡功能。对于每个初始状态 s ,我们有δ(s,0)和 k k 选择δ(s, 1)。因此,对于δ,我们有( k ^(2 k ))的可能性。

    因此,不同可能的DFA的数量是 k *(2 ^ k )*( k ^(2 k < / em>)),它给出了要求的界限。

    语言的数量肯定要小得多,因为每台机器都可以重新标记所有状态而不改变接受的语言,所以更好的界限是(k ^(2k + 1)* 2 ^ k)/(k! )。即使这个太大,因为例如每个设置为“接受”状态的机器都接受相同的语言。