证明任何具有k <2 ^ n状态的DFA都不接受具有奇数个字符的字符串

时间:2017-09-23 16:18:01

标签: automata finite-automata automata-theory

让语言L_n具有字符集Sigma = {a_1,...,a_n}。 L_n恰好包含一些奇数次的字符。等效地,如果L_n ^ i是每个单词包含奇数a_i的语言,则L_n = L_n ^ 1 union ... union L_n ^ n。

我已经制作了一个接受L_n和2 ^ n状态的DFA的NFA。

我现在需要证明这是接受这种语言的最小DFA。我被暗示假设有一个D&lt; 2 ^ n状态接受L_n,然后显示在Sigma ^ *中有一些字符串 u,v ,其中 u 包含 a 和奇数次数, v 包含偶数次,DFA必须在同一状态下终止。

我一直试图将2 ^ n作为一个强烈的暗示,就像考虑长度为n的所有字符串一样,但是这些字符串都是n ^ n。也许只使用字符 a,b 来考虑长度为n的所有字符串。由于有k < 2 ^ n个状态,那么这样的两个字符串必须被发送到相同的状态。此集合中被拒绝的字符串是具有偶数个 a b 的字符串,但我无法知道这些的两个此类实例是否进入相同的状态,或者他们这样做了,这甚至是多么重要。

也许考虑所有字符串的选择,其中a_1发生一次或0次,a_2发生一次或0次,等等。这些中有2 ^ n个选择,因此其中一些必须进入相同的状态。这里唯一不在语言中的字符串是空字符串。我仍然被困住了。

2 个答案:

答案 0 :(得分:1)

在任何给定的输入字符串中,a_i中的每一个都出现奇数次或偶数次。对于任何给定的字符串,都有一个最短的字符串,其符号按字典顺序排列,如果附加到给定的字符串,则会产生不在语言中的字符串。该字符串最多只有一个字母符号,按索引排序,以便使所有符号计数的奇偶校验均匀。

这意味着2 ^ n奇偶校验配置中的每一个都可以通过w.r.t区分。 Myhill-Nerode不可分辨关系;这种语言有2 ^ n个类,因此最小DFA必须有2 ^ n个状态。

我认为这基本上就是你的直觉,只是重申了明确使用Myhill-Nerode和不可区分的关系。

编辑:添加一个示例以使其更清晰。

考虑字母{a,b,c}。然后在任何字符串中,a,b和c中的每一个都出现偶数次或奇数次。考虑2 ^ 3 = 8个最短的字符串,其中符号按字典顺序排列,涵盖了每种可能的情况:

  1. e:所有字符串都出现偶数次
  2. a:a出现奇数次,b和c出现偶数次
  3. b:与a相同,但b
  4. c:与a和b相同,但c
  5. ab:a和b出现奇数次,c出现偶数次
  6. ac:与ab相同,但是ac
  7. bc:与ab和ac相同,但是bc
  8. abc:a,b和c都出现奇数次
  9. 对于涵盖所有奇偶校验配置的这些最短字符串中的每一个,存在相应的最短字符串,其具有按字典顺序排序的符号,这使得连接具有偶数个所有符号。片刻的反射显示最短的字符串与表示类的最短字符串相同:对于上面的8个最短代表中的每一个,与自身连接产生的字符串具有偶数个出现的所有符号,并且可能没有短弦产生相同的效果。

    1. e.e = e
    2. a.a = aa
    3. b.b = bb
    4. c.c = cc
    5. ab.ab = abab
    6. ac.ac = acac
    7. bc.bc = bcbc
    8. abc.abc = abcabc
    9. 就Myhill-Nerode而言,等价类[x]必须与等价类[y]不同,因为可以跟随[x]中的字符串并且不导致L中的字符串的最短字符串是x,而在[y]中可以跟随字符串并且不在L中导致字符串的最短字符串是y,并且我们已经要求x和y不同。我们可以确认我们的8个案例:

      1. ea,eb,ec,e.ab。,e.ac,e.bc,e.abc每个都有至少一个出现奇数次的符号(a,b,c,a,a,b,一个)
      2. ae,ab,ac,a.ab,a.ac,a.bc,a.abc每个都有至少一个出现奇数次的符号(a,a,a,b,c,a,b )
      3. be,ba,bc,b.ab,b.ac,b.bc,b.abc每个都有至少一个出现奇数次的符号(b,a,b,a,a,c,a )
      4. ce,ca,cb,c.ab,c.ac,c.bc,c.abc每个都有至少一个出现奇数次的符号(c,a,b,a,a,b,a )
      5. ab.e,ab.a,ab.b,ab.c,ab.ac,ab.bc,ab.abc每个都有至少一个出现奇数次的符号(a,b,a,a ,b,a,c)
      6. ac.e,ac.a,ac.b,ac.c,ac.ab,ac.bc,ac.abc每个都有至少一个出现奇数次的符号(a,c,a,a ,b,a,b)
      7. bc.e,bc.a,bc.b,bc.c,bc.ab,bc.ac,bc.abc每个都有至少一个出现奇数次的符号(b,a,c,b ,a,a,a)
      8. abc.e,abc.a,abc.b,abc.c,abc.ab,abc.ac,abc.bc每个都至少有一个出现奇数次的符号(a,b,a,a ,c,b,a)

答案 1 :(得分:0)

你的想法是字符串“a_1发生一次或0次......”是好的。但是把它们视为你的字符串的结尾:

假设您已读取输入字符串且处于状态q。

  1. 假设输入字符串包含所有符号的偶数。然后所有具有至少一个符号的延续(发生一次并因此使其出现次数变为奇数)应该导致接受,其他(此处仅为空字符串)不会。
  2. 假设输入字符串具有除a_1之外的所有符号的偶数。然后,所有不包含a_1 OR的延续包含a_1并且至少有一个符号而不是a_1应该导致接受,而其他符号则不会。
  3. ...
  4. 你准确到达2 ^ n种不同的情况和不同的字符串集应该导致接受/拒绝。因此,状态q在每种情况下必须是不同的,因此必须至少有2 ^ n。