我在测试中得到了这个问题但我无法做到。尝试一下后,我仍然无法做到这一点。我想我错过了什么,但不确定是什么。有人能帮助我吗?
答案 0 :(得分:1)
所以我认为问题有点错误。让我重申:
考虑使用二进制语言的所有具有 k 状态的DFA的集合。证明该集合中DFA识别的不同语言的数量最多为k ^(2k + 1)* 2 ^ k。
首先,对于k> 1,识别的不同语言的数量远小于此。
但无论如何,由于状态和字母的数量是固定的,因此该集合中的任何DFA都是defined totally by three things:
转换函数δ,它采用开始状态和符号(0
或1
)并产生结束状态。
我们从哪个 k 开始。
哪个 k 状态(如果有)接受状态。
现在,开始状态显然有( 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! )。即使这个太大,因为例如每个设置为“接受”状态的机器都接受相同的语言。