[英]Deterministic Finite State Automata for Modulo Comparison
我正在为以下问题创建确定性有限状态自动机:
您可以创建由 x 和 y 组成的字符串。 当(x's mod 4)的数量大于(y's mod 4)的数量时,如何创建仅接受语言的图表?
我目前能够理解的是,我需要创建一个类似于下图的图表:
>(0,0) -b-> (0,1) -b-> (0,2) -b-> (0,3) -b-> (0,4)
a a a a a
(1,0) -b-> (1,1) -b-> (1,2) -b-> (1,3) -b-> (1,4)
a a a a a
(2,0) -b-> (2,1) -b-> (2,2) -b-> (2,3) -b-> (2,4)
a a a a a
(3,0) -b-> (3,1) -b-> (3,2) -b-> (3,3) -b-> (3,4)
a a a a a
(4,0) -b-> (4,1) -b-> (4,2) -b-> (4,3) -b-> (4,4)
但我不明白的是如何比较 x 和 y 相对于彼此出现的次数。
您几乎已经得出了问题本身的答案。
首先,您会看到需要哪些状态。 您需要计算 n(x) mod 4。这需要 4 个状态。 然后你需要计算 n(y) mod 4。这也需要 4 个状态。 现在,由于您需要同时计算两者,因此您必须将它们相交。 这将导致 4 x 4 = 16 个状态。 让我们将这些状态命名为(a, b); a = n(x) mod 4, b = n(y) mod 4
(a, b); a = n(x) mod 4, b = n(y) mod 4
。
然后,您决定什么是初始状态,什么是最终状态。 在这种情况下,初始状态为(0,0)
,最终状态为{ (a,b) : a > b }
。
所以,这就是你最终得到的: DFA 抽屉链接
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.