为什么字符串的数量应该大于或等于泵引理中的状态数?

why number of string should be greater than or equal to number of states in pumping lemma?

如果 L 是一种常规语言,则存在常量 n(取决于 L),这样对于语言 w 中的每个字符串 L,使得w的长度大于等于n,我们可以将w分成三个字符串,w = xyz.

w = length of string. n = Number of States.

为什么我们应该选择 w 大于或等于 n? 什么是泵送长度?

如果你看一下引理的完整陈述(http://en.wikipedia.org/wiki/Pumping_lemma_for_regular_languages),你会发现它实际上是在说明每个字符串都是由一个前缀x构成的,这部分可以是重复任意次数 y 和后缀 z。现在很明显,在最短的情况下(当重复部分只被取一次时),w的长度等于语言所需的状态数。这张维基百科图片非常有用:

http://en.wikipedia.org/wiki/File:Pumping-Lemma_xyz_svg.svg

您似乎误解了引理(您也没有完全陈述),并且将 证明 的各个方面与您所做的陈述混为一谈。引理表示对于每种常规语言 L,都有一个常量 p 使得属于 L 的至少 p 个符号的每个字符串都有一个非空子字符串长度不大于 p,可以是 "pumped",总是产生 L 的另一个元素。常数 p 是 (a) "pumping length".

这可以通过观察如果一种语言是正则的则有一个有限状态自动机接受它,并取p为该自动机中的状态数(细节省略)来证明。

然而,这并不意味着识别给定常规语言的最小 FSA 中的状态数是该语言的最小可能泵浦长度。例如,考虑由 { an } 和 { bn 并集组成的语言 } 所有 n。你需要一个四态FSA来识别这种语言,但它的最小泵浦长度是1。