为什么要弄清楚一种语言的基数是否不是一个有限的问题呢?

时间:2018-10-23 17:42:44

标签: automata

给出两种有限状态语言L1和L2,然后确定它们的交点不是有限的,这是一个可确定的问题。

怎么可能?谢谢。

1 个答案:

答案 0 :(得分:1)

让M1和M2为最小确定性有限自动机,其接受的语言分别为L1和L2。

首先,使用笛卡尔乘积机器结构-一种生成所需机器的算法,构造确定性有限自动机M3,其接受的语言为L1和L2的交集。

接下来,构造一个确定性有限自动机M4,该自动机接受与M3相同的语言,但是最小。也就是说,最小化M3并调用结果M4。有一种算法可以产生此结果。

接下来,构造一个确定性有限自动机M5,该自动机仅接受长度严格大于k的单词,其中k是M4中的状态数。这样的机器对于任何字母都有k + 1个状态。它的构造并不复杂。

接下来,构造一个确定性有限自动机M6,其接受的语言是M4和M5接受的语言的交集。在这里再次使用笛卡尔积算机结构。

接下来,通过最小化M6来构造确定性有限自动机M7。

在这一点上,M6是确定性有限自动机,具有一个状态,该状态根本不接受任何字符串。在前一种情况下,L1和L2的交点是有限的;在后一种情况下,该交集是无限的。为什么?

  1. M1接受L1
  2. M2接受L2
  3. M3接受L1与L2相交
  4. M4是DFA,接受L1与L2相交,并具有尽可能少的状态
  5. M5仅接受会使M4两次进入其状态之一的单词
  6. M6仅接受L1与L2相交的单词,这些单词也使M4两次进入其状态之一。请注意,如果M6接受任何内容,则意味着L1中的单词与L2相交,该语言的最小DFA必须循环才能接受;因为这样的循环可以跟随任意多次,所以这意味着L1与L2相交必须有无限多个单词。这与常规语言的抽水问题密切相关。
  7. M7接受M6的工作,但数量很少。注意,最小化不是必需的,但它使得检查M6是否接受任何内容变得微不足道。不接受任何字符串的最小DFA具有一个无效状态。这很容易检查,并且有最小化的标准算法。

另一种显示相同内容的类似方式是,您可以构造交点的DFA,然后从| Q |检查所有长度的字符串。到| 2Q |。 DFA不会为任何有限语言提供的任何长度的字符串,但是每种无限语言都将至少具有一个这样的字符串。这是因为任何接受无限语言的DFA都必须循环,并且该循环的长度必须不大于状态数。