【问题标题】:Why is figuring out if the cardinality of a language is not finite a "decidable" problem?为什么要弄清楚语言的基数是否不是有限的“可判定”问题?
【发布时间】:2018-10-23 17:42:43
【问题描述】:

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

这怎么可能?谢谢。

【问题讨论】:

    标签: automata


    【解决方案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 都必须循环,并且循环的长度不得大于状态数。

    【讨论】:

      猜你喜欢
      • 2022-01-09
      • 2021-07-10
      • 2014-04-10
      • 1970-01-01
      • 2022-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-16
      相关资源
      最近更新 更多