队列自动机介绍

原文:https://www . geesforgeks . org/introduction-to-queue-automator/

我们已经知道有限自动机可以用来接受正则语言,下推自动机可以用来识别上下文无关语言。

队列自动机(QDA)是一种非确定性自动机,类似于下推自动机,但有一个队列而不是堆栈,这有助于队列自动机识别上下文无关语言之外的语言。

QDA 是一个 6 元组M = (Q, \sigma, \Gamma, \delta, q_0, F)

在哪里

  1. Q 是有限状态的集合。
  2. \bf{\sigma}是有限输入字母的集合。
  3. \bf{\Gamma}是有限队列字母表的集合。
  4. \delta : Q \times \sigma_\epsilon \times \Gamma_\epsilon \rightarrow P(Q \times \Gamma_\epsilon )
  5. q_0 \in Q是开始状态。
  6. FT2【Q】是接受状态的集合。

接受一根绳子

如果w可以写成w= w_1w_2w_3 ... . w_m,则 QDA M = (Q, \sigma, \Gamma, \delta, q_0, F)接受输入w,其中每个w_i \in \sigma_\epsilon都存在状态r_0, r_1, r_2, ... . ., r_m \in Q和字符串s_0, s_1, s_2, ... . ., s_m \in \Gamma^*,满足以下条件:

  1. r_0 = q_0s_0 = \epsilon
  2. 对于0\leq i \leq m-1( r_{i+1}, b) = \delta(r_i, w_{i+1}, a), where\, a, b \in \Gamma_\epsilons_i = tas_{i+1} = btt \in \Gamma^*
  3. r_m \in F

例: 定义语言的队列自动机{a^nb^n | n \geq 0}

解: Q = {q0,q1,q2,q3}和\sigma ={a,b}和\Gamma = {a,b,$} 而过渡函数由: \delta(q0, a, \epsilon)={(q0, a)} \delta(q0, \epsilon, \epsilon)={(q1, \$)} \delta(q1, \epsilon, a)={(q2, \epsilon)} \delta(q2, \epsilon, a)={(q2, a)} \delta(q2, b, \$)={(q1, \$)} \delta(q1, \epsilon, \$)={(q3, \$)}给出

让我们看看这个自动机是如何为 aabb 工作的。

状态 投入 过渡函数 队列(从左输入) 移动后的状态
one q0 【T0 之二】【T1 之二 δ(q0,a,ε)={(q0,a)} a q0
Two q0 bb δ(q0,a,ε)={(q0,a)} 嗜酒者互诫协会 q0
three q0 E δ(q0,ε,ε)={(q1,$)} $aa 雌三醇环戊醚
four 雌三醇环戊醚 E d(q1, e, a)={(q2, e)} 一美元 q2
five q2 E δ(q2,ε,a)={(q2,a)} 一美元 q2
six q2 aa b b δ(q2,b,$)={(q1,$)} 一美元 雌三醇环戊醚
seven 雌三醇环戊醚 E d(q1, e, a)={(q2, e)} $ q2
eight q2 aabb的缩写形式 δ(q2,b,$)={(q1,$)} $ 雌三醇环戊醚
nine 雌三醇环戊醚 E δ(q1,ε,$)={(q3,$)} $ q3