【发布时间】:2018-10-23 17:42:43
【问题描述】:
给定两种有限状态语言 L1 和 L2,那么确定它们的交集不是有限的是一个可判定的问题。
这怎么可能?谢谢。
【问题讨论】:
标签: automata
给定两种有限状态语言 L1 和 L2,那么确定它们的交集不是有限的是一个可判定的问题。
这怎么可能?谢谢。
【问题讨论】:
标签: automata
令 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 的交集是有限的;在后一种情况下,该交叉点是无限的。为什么?
显示相同内容的另一种类似方式是说您可以为交集构造 DFA,然后检查 |Q| 中的所有长度字符串到 |2Q|。任何有限语言都不会有该语言的 DFA 接受的任何这些长度的字符串,但每种无限语言都至少有一个这样的字符串。这是因为任何接受无限语言的 DFA 都必须循环,并且循环的长度不得大于状态数。
【讨论】: