每个 a_i 在任何给定的输入字符串中出现奇数次或偶数次。对于任何给定的字符串,都有一个最短的字符串,其符号按字典顺序排列,如果将其附加到给定的字符串上,则会导致字符串不在该语言中。该字符串将最多有一个字母符号,按索引顺序排列,以使所有符号的奇偶性计数均匀。
这意味着 2^n 奇偶校验配置中的每一个都可以根据 Myhill-Nerode 不可区分关系进行区分;该语言有 2^n 个类,因此最小 DFA 必须具有 2^n 个状态。
我认为这基本上就是您的直觉,只是为了明确使用 Myhill-Nerode 和不可区分的关系而重述。
编辑:添加一个示例以使其更清晰。
考虑字母表{a, b, c}。然后在任何字符串中,a、b 和 c 中的每一个都出现偶数次或奇数次。考虑 2^3 = 8 个最短字符串,其符号按字典顺序排列,涵盖所有可能的情况:
- e:所有字符串出现偶数次
- a:a出现奇数次,b和c出现偶数次
- b:与a相同,但b
- c: 与 a 和 b 相同,但 c
- ab:a和b出现奇数次,c出现偶数次
- ac:与ab相同,但ac
- bc:与 ab 和 ac 相同,但 bc
- abc:a、b 和 c 都出现奇数次
对于覆盖所有奇偶校验配置的这些最短字符串中的每一个,都有一个对应的最短字符串,其中符号按字典顺序排序,这导致串联具有偶数个所有符号。片刻思考表明,这样的最短字符串与表示该类的最短字符串相同:对于上述 8 个最短代表中的每一个,与自身连接会产生一个字符串,其所有符号出现的次数为偶数,并且不可能有短字符串产生相同的效果。
- ee = e
- aa = aa
- bb = bb
- cc = cc
- ab.ab = abab
- ac.ac = acac
- bc.bc = bcbc
- abc.abc = abcabc
就 Myhill-Nerode 而言,等价类 [x] 必须与等价类 [y] 不同,因为可以跟随 [x] 中的字符串并且不会导致 L 中的字符串的最短字符串是 x,而最短的可以跟在 [y] 中的一个字符串之后并且不会导致 L 中的一个字符串的字符串是 y,并且我们已经要求 x 和 y 不同。我们可以确认我们的 8 个案例:
- ea, eb, ec, e.ab., e.ac, e.bc, e.abc 各有至少一个符号出现奇数次 (a, b, c, a, a, b, a)
- ae、ab、ac、a.ab、a.ac、a.bc、a.abc 各有至少一个符号出现奇数次(a、a、a、b、c、a、b)
- be、ba、bc、b.ab、b.ac、b.bc、b.abc 各有至少一个符号出现奇数次(b、a、b、a、a、c、a)
- ce、ca、cb、c.ab、c.ac、c.bc、c.abc 各有至少一个符号出现奇数次(c、a、b、a、a、b、a)
- ab.e、ab.a、ab.b、ab.c、ab.ac、ab.bc、ab.abc 各有至少一个符号出现奇数次(a、b、a、a、b、一,三)
- ac.e, ac.a, ac.b, ac.c, ac.ab, ac.bc, ac.abc 各有至少一个符号出现奇数次 (a, c, a, a, b,一,乙)
- bc.e、bc.a、bc.b、bc.c、bc.ab、bc.ac、bc.abc 各有至少一个符号出现奇数次(b、a、c、b、a、一,一)
- abc.e、abc.a、abc.b、abc.c、abc.ab、abc.ac、abc.bc 各有至少一个符号出现奇数次(a、b、a、a、c、乙,甲)