【问题标题】:Does this DFA have a solution?这个 DFA 有解决方案吗?
【发布时间】:2012-12-16 04:37:10
【问题描述】:

我试图创建一个 DFA,它可以识别带有字母 {a,b,c} 的字符串,其中 a 和 c 出现偶数次,而 b 出现奇数次。

我想知道这可能只能用图灵机或上下文无关语言等其他数学方法来表达。

您可能会觉得思考解决方案很有趣。

【问题讨论】:

    标签: formal-languages


    【解决方案1】:

    我构建这种机器的方法如下。 做八种状态。每个状态代表一个可能的 3 元组组合。开始状态是表示所有三个为偶数的组合的状态。如果 a 是输入中的第一个字符,那么您将进入一个表示奇数个 a 和偶数个 b 和 c 的状态。接受状态是 a 和 c 为偶数,b 为奇数。

    【讨论】:

    • 我在发帖前也是这样做的。我无法接受“acac”。问题是,在最后一个“c”中,我处于这样一种状态,即通过“c”路径,我到达一个节点,在那里我有 (pair,pair,pair) 组合。
    【解决方案2】:

    这可以使用 DFA 来实现,只需为奇数个 a、b 和 c 的组合中的每一个设置一个状态。因此,如果您处于具有偶数 # 个 a、奇数 # 个 b 和偶数 # 个 c 的状态,那么您可以接受。您还可以为任何其他情况定义简单的转换。所以天真地这可以用 8 个状态来完成。

    【讨论】:

    • 在发布问题之前,我尝试了您建议的相同操作。我以为它会起作用,但它没有。我无法接受“acac”这个词。这产生了 8 个状态,而不是 9 个。
    • 那是因为“acac”没有奇数个“b”。
    • OMGG 。我真笨。你说的对。让我检查一下我的解决方案。可能一直都是对的!如果是这样,我应该删除问题。
    • 那么,emschorsch建议大家解决这个问题的方法。
    猜你喜欢
    • 2020-12-15
    • 2011-07-04
    • 2010-11-08
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-17
    • 2021-03-11
    相关资源
    最近更新 更多