【发布时间】:2012-12-16 04:37:10
【问题描述】:
我试图创建一个 DFA,它可以识别带有字母 {a,b,c} 的字符串,其中 a 和 c 出现偶数次,而 b 出现奇数次。
我想知道这可能只能用图灵机或上下文无关语言等其他数学方法来表达。
您可能会觉得思考解决方案很有趣。
【问题讨论】:
标签: formal-languages
我试图创建一个 DFA,它可以识别带有字母 {a,b,c} 的字符串,其中 a 和 c 出现偶数次,而 b 出现奇数次。
我想知道这可能只能用图灵机或上下文无关语言等其他数学方法来表达。
您可能会觉得思考解决方案很有趣。
【问题讨论】:
标签: formal-languages
我构建这种机器的方法如下。 做八种状态。每个状态代表一个可能的 3 元组组合。开始状态是表示所有三个为偶数的组合的状态。如果 a 是输入中的第一个字符,那么您将进入一个表示奇数个 a 和偶数个 b 和 c 的状态。接受状态是 a 和 c 为偶数,b 为奇数。
【讨论】:
这可以使用 DFA 来实现,只需为奇数个 a、b 和 c 的组合中的每一个设置一个状态。因此,如果您处于具有偶数 # 个 a、奇数 # 个 b 和偶数 # 个 c 的状态,那么您可以接受。您还可以为任何其他情况定义简单的转换。所以天真地这可以用 8 个状态来完成。
【讨论】: