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

Why is figuring out if the cardinality of a language is not finite a "decidable" problem?

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

怎么会这样?谢谢

设 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 都必须循环,并且该循环的长度必须不大于状态数。