我们已经知道可以用于接受常规语言的有限自动机和可以用于识别上下文无关语言的下推自动机。
队列自动机(QDA)是一种不确定的自动机,类似于下推式自动机,但具有队列而不是堆栈,这有助于队列自动机识别上下文无关语言之外的语言。
QDA是6 –元组
在哪里
- Q是有限状态集。
- 是有限输入字母的集合。
- 是有限队列字母的集合。
- 。
- 是开始状态。
- F Q是接受状态的集合。
字符串的接受
QDA 接受输入如果可以写成 ,每个并且有状态字符串存在,从而满足以下条件:
- 和 。
- 为了和和和
例子:
定义语言的队列自动机
解决方案:
Q = {q0,q1,q2,q3}并且 = {a,b}并且 = {a,b,$}
过渡函数由下式给出:
让我们看看这个自动机是如何工作的。
Row | State | Input | Transition function | Queue(Input from left) | State after move |
---|---|---|---|---|---|
1 | q0 | aabb | δ(q0, a, ε)={(q0, a)} | a | q0 |
2 | q0 | aabb | δ(q0, a, ε)={(q0, a)} | aa | q0 |
3 | q0 | ε | δ(q0, ε, ε)={(q1, $)} | $aa | q1 |
4 | q1 | ε | δ(q1, ε, a)={(q2, ε)} | $a | q2 |
5 | q2 | ε | δ(q2, ε, a)={(q2, a)} | a$ | q2 |
6 | q2 | aabb | δ(q2, b, $)={(q1, $)} | $a | q1 |
7 | q1 | ε | δ(q1, ε, a)={(q2, ε)} | $ | q2 |
8 | q2 | aabb | δ(q2, b, $)={(q1, $)} | $ | q1 |
9 | q1 | ε | δ(q1, ε, $)={(q3, $)} | $ | q3 |