📜  下推式自动机介绍

📅  最后修改于: 2020-11-26 10:20:06             🧑  作者: Mango


PDA的基本结构

下推自动机是一种实现无上下文语法的方式,类似于我们为常规语法设计DFA的方式。 DFA可以记住有限数量的信息,而PDA可以记住无限数量的信息。

基本上下推式自动机是-

“有限状态机” +“堆栈”

下推式自动机具有三个组成部分-

  • 输入磁带,
  • 控制单元,以及
  • 无限大小的堆栈。

堆栈头扫描堆栈的顶部符号。

堆栈执行两项操作-

  • 推送-在顶部添加一个新符号。

  • 弹出-顶部的符号被读取并删除。

PDA可能会或可能不会读取输入符号,但在每次转换时都必须读取堆栈的顶部。

掌上电脑

PDA可以正式描述为7元组(Q,∑,S,δ,q 0 ,I,F)-

  • Q是有限状态数

  • 是输入字母

  • S是堆栈符号

  • δ是转移函数:Q×(∑∪{ε})×S×Q×S *

  • Q 0是初始状态(Q 0∈Q)

  • I是初始堆栈顶部符号(I∈S)

  • F是一组接受状态(F∈Q)

下图显示了PDA从状态q 1到状态q 2的过渡,标记为a,b→c-

PDA过渡

这意味着在状态q 1处,如果遇到输入字符串‘a’并且堆栈的顶部符号为‘b’ ,则弹出‘b’ ,将‘c’推入堆栈顶部并移至状态q 2

PDA相关术语

瞬时描述

PDA的瞬时描述(ID)用三元组(q,w,s)表示,其中

  • q是状态

  • w是未消耗的输入

  • s是堆栈内容

旋转记号法

“旋转门”符号用于连接代表PDA的一个或多个移动的ID对。过渡过程由旋转门符号“⊢”表示。

考虑一个PDA(Q,∑,S,δ,q 0 ,I,F)。过渡可以用以下旋转符号数学表示-

(p, aw, Tβ) ⊢ (q, w, αb)

这意味着当从状态p转换到状态q时,输入符号‘a’被消耗,堆栈‘T’的顶部被新的字符串‘α’代替。

-如果我们希望PDA零次或多次移动,则必须使用符号(⊢*)。