我正在尝试使用Deterministic Finite Automata
解决此问题:
inputs: {a,b}
conditions:
a. must have exactly 2 a
b. have more than 2 b
所以正确的输入应该是abbba
或bbbaa
或babab
现在我的问题是,“有没有解决这个问题的模式?”
答案 0 :(得分:2)
是的,有一种模式。您可以从中获取每个语句并从中扣除预先状态。然后你采用那些包含最终状态的前置状态的交叉积。在这个例子中:
一个。将产生状态:0a,1a,2a,2 + a(您已经看到0 a,1 a,2为2或2以上) 湾将产生状态:0b,1b,2b,2 + b(你已经看到0 b,1 b,2 bs或超过2 bs)
这些状态的叉积导致4x4 = 16个状态。你将从{0a,0b}州开始。输入可以是3种类型:a,b或其他类型。 从那以后你应该可以去。你需要更多帮助吗?
(我们正在解决作业吗?)
答案 1 :(得分:0)
始终先画出这样的东西。
随意给各州任何意义。你需要的是像q2: (1 b, 2 a's)
这样的状态。绘制这样的状态,直到接受状态并用线连接它们。接受状态为qx: 2 a's 3 b's
。
在达到接受状态后,如果输入为“b”,则该行进入自身,接受状态。如果输入是“a”,则绘制一个新状态,无论输入是什么,它都将进入无限循环并进入自身。
(我们在这里帮助考试吗?)