【问题标题】:DFA and regular languagesDFA 和常规语言
【发布时间】:2012-02-16 00:58:56
【问题描述】:

我一直在思考以下问题,我认为答案是肯定的。

DFA 可接受的常规语言的每个子集是否也都是 DFA 可接受的?

【问题讨论】:

    标签: theory dfa


    【解决方案1】:

    没有。反例:字母是 numbers 数字。 DFA 接受所有自然数。子集:DFA 接受所有素数。

    编辑: 字母是数字。抱歉,这里的术语有误。

    自然数可以表示为常规语言(因此可以为它们构造 DFA):

    0|([1-9][0-9]*)

    【讨论】:

    • 实际上,您提到的两种语言都不是常规语言。两者都是无限的;素数的语言是不规则的,因为没有 DFA 可以接受它。
    • @Marcin 你忘了正则表达式实际上可以表达无限的字符串,例如[0-9]*
    • 没有。这表示可以接受的单词长度没有上限;然而,要被接受,必须达到某种接受状态,之后单词中就没有更多的元素了。此外,这与拥有无限的字母表不同。
    • @Marcin 你是对的,我不能拥有所有数字的字母表。我已经更正了我的答案。
    • 与其考虑素数,只需注意具有即时真值状态的 DFA 接受所有字符串就足够了。然后,一切都是子集,并且是 DFA 可接受的。
    【解决方案2】:

    所有有限自动机(确定性和非确定性)都可以表示为常规语言,反之亦然。如果语言的子集是正则的,那么是的它可以表示为 DFA。

    【讨论】:

    • 我不相信这能回答这个问题。问题是一个正则语言的所有子集是否也必须是正则的,这是错误的,这里没有解决。
    • 这里的重点是:正则语言的子集不保证是正则的。
    猜你喜欢
    • 2012-07-18
    • 2013-09-13
    • 2016-08-03
    • 2012-02-27
    • 1970-01-01
    • 2020-06-13
    • 2017-06-25
    • 2020-10-16
    • 1970-01-01
    相关资源
    最近更新 更多