有些语言不是常规语言

在这节课的后面,我们将证明以下示例语言不可能由有限自动机决定:

L = {x | x包含相等数量的0和1}

泵引理

如果A是一种正则语言,则存在一个数字p,其中s是A中长度至少为p的任意字符串,则s可以分成三段,s = xyz,满足以下条件:

  1. 对于每一个i≥0,xyz∈A。
  2. |y| >0 0,和
  3. |xy|≤p。

抽运引理的证明

  1. 如果A是一种常规语言,那么某些DFA M决定该语言。
  2. 设p是M中的状态数。
  3. 考虑任意长度大于或等于p的字符串s∈A。s中的字符将导致机器在多个状态之间转换,最终在s中的最后一个字符之后达到接受状态。
  4. 因为s中的字符数等于或超过M中的状态数,所以当M读取s时,机器将不止一次地通过至少一个状态。也就是说,s通过机器的路径至少有一个循环。
  5. 对于这个参数,我们将使用沿路径的第一个重复状态:在处理p个字符之前,我们将第一次绕回该状态。
  6. 我们将路径分成三部分:x是s中从起始状态到第一次出现重复状态的部分。Y是s的一部分,它沿着循环回到重复状态。Z是s的最后一部分,它最终把我们带到接受状态。
  7. M现在将接受i≥0时形式为xyz的任何字符串,因为这样的字符串将M从开始到重复状态,经过i次循环回到重复状态,然后从重复状态运行到接受状态。

如何使用抽运引理

抽运引理本质上说

如果A是一种正则语言,那么A中的赢博体育长字符串都可以被抽取

像几乎赢博体育定理一样,抽运引理采用逻辑形式

如果这个,那么那个

在逻辑学中,一般形式的逻辑语句在逻辑上等同于该语句的反命题:

如果不是那样,那也不是这样

这是对我们最有用的抽运引理的形式:

如果不是A中的赢博体育长字符串都可以抽运,那么A就不是常规语言

如何证明不是赢博体育的长弦都能被抽运

要成功地使用抽运引理的对负形式,我们必须执行以下步骤:

  1. 通过矛盾的方式,假设A是正则的。设p是抽运引理中的数。
  2. 构造一个反例字符串s,它在a中,长度大于或等于p。
  3. 证明对于赢博体育将s分解为|y|≥0和|xy|≤p的子字符串(s = xyz)的方法,存在一个i使得抽运字符串xyz不在A中。

一个例子

考虑语言

L = {x | x包含相等数量的0和1}

我们的反例字符串s = 0p1p。

s显然在L中并且长度大于p。

考虑当我们将s分解为子字符串x, y和z,同时遵守|y|≥0和|xy|≤p的约束时会发生什么。第二个约束强制y只由0组成。

现在选择i = 2,并考虑字符串xy2z。这个字符串包含比s更多的0,同时保持相同数量的1。这个字符串的0和1的数目不等,并且不在L中。

另一个例子

考虑语言

L = {ww | w∈Σ*}

我们的反例字符串s = 0p10p1。

s显然在L中并且长度大于p。

考虑当我们将s分解为子字符串x, y和z,同时遵守|y|≥0和|xy|≤p的约束时会发生什么。第二个约束强制y只由0组成。

现在选择i = 2,并考虑字符串xy2z。这个字符串的形式是0p+k10p1,其中k = |y|。没有办法将这个字符串分解为两个相等的子字符串。因此,泵送管柱不在L中。