如何使DFA达到以下条件?

时间:2017-02-13 21:05:46

标签: dfa deterministic automaton

请帮我制作以下条件的DFA:

  

L = {w:n a (w)mod 3> n b (w)mod 3},

其中n a (w)表示w中出现a的次数,n b (w)表示出现的次数{{ 1}}在w。

2 个答案:

答案 0 :(得分:0)

首先设计DFA为水平n(a)mod3并且其初始状态设计n(b)mod3垂直.....将需要总共9个状态并标记状态(a,b)其中a为n (a)mod3和b代表n(b)mod3然后使具有元组第一元素的状态大于第二元素作为最终状态(在这种情况下将有3).....希望我的答案将有所帮助

答案 1 :(得分:0)

我们需要跟踪的唯一事情分别是a和b mod 3的出现次数。 mod 3和b mod 3分别有三种可能性(分别为0,1或2),因为它们是独立的,所以我们可以总共有9种状态:

  • q00:mod 3 = 0,b mod 3 = 0
  • q01:mod 3 = 1,b mod 3 = 0
  • q02:mod 3 = 2,b mod 3 = 0
  • q10:mod 3 = 0,b mod 3 = 1
  • q11:mod 3 = 1,b mod 3 = 1
  • q12:mod 3 = 2,b mod 3 = 1
  • q20:mod 3 = 0,b mod 3 = 2
  • q21:mod 3 = 1,b mod 3 = 2
  • q22:mod 3 = 2,b mod 3 = 2

这些将是我们DFA的状态。过渡如下:

  • 来自州qij,过渡到qij'在输入a,其中j' =(j + 1)mod 3
  • 来自州qij,过渡到qi' j输入b,其中i' =(i + 1)mod 3

这给我们提供了18次转换。

我们想接受mod 3> b mod 3;那就是:

  • 州qij正在接受iff j>我

这给了我们3个接受状态。

最后,当我们看到任一符号的零实例时,我们的初始状态就会发生;那就是:

  • 初始状态为q00

我们现在已经完全定义了这种语言的DFA。