创建确定性有限自动机

时间:2012-05-20 13:54:04

标签: computer-science finite-automata

我需要使用以下属性在{a,b,c}语言上创建非空DFA:

  1. 第一个符号是a。
  2. 有偶数个b。
  3. 最后一个符号是c。
  4. 我只是想知道,我应该创建3个单独的自动机,然后使用交叉点组合它们,或者我应该创建一个,如果是这样的话,它怎么能有偶数个b?我知道我可以交替使用状态,但不确定如何将它全部组合起来。

    由于

1 个答案:

答案 0 :(得分:1)

这是你的自动机(假设0是偶数,因此0 b是可以的):

[start](a) -> [1]
[start](b,c,<eoi>) -> [reject]

[1](a) -> [1]
[1](<eoi>) -> [reject]

[1](c) -> [2]
[1](b) -> [3]

[2](<eoi>) -> [accept]
[2](c) -> [2]
[2](a) -> [1]
[2](b) -> [3]

[3](<eoi>) -> [reject]
[3](a,c) -> [3]
[3](b)->[1]

“输入结束”在哪里。

状态1:偶数b,最后一个符号处理不是c。 状态2:偶数b,处理的最后一个符号是c。 状态3:b的奇数。