Language agnostic 确定性有限自动机与确定性下推自动机

Language agnostic 确定性有限自动机与确定性下推自动机,language-agnostic,dfa,pushdown-automaton,Language Agnostic,Dfa,Pushdown Automaton,我想知道是否有人能给我一个简单的解释这两个术语之间的关系,因为我被术语弄糊涂了。确定性(DPDA)是一种(DFA),它也可以访问后进先出(LIFO)数据结构 通过访问某种形式的内存,DPDA可以识别比DFA更多种类的字符串。例如,给定一种带有符号a和B的语言,可以构造DFA来识别AB、AABB、AAABBB,但不能构造DFA来识别所有n的a^nB^n,而使用DPDA很容易做到这一点,其工作原理如下: 进入启动状态 将$推到堆栈中 从字符串中读出字母。 如果为B,则转到终端不接受状态 如果为A,

我想知道是否有人能给我一个简单的解释这两个术语之间的关系,因为我被术语弄糊涂了。

确定性(DPDA)是一种(DFA),它也可以访问后进先出(LIFO)数据结构

通过访问某种形式的内存,DPDA可以识别比DFA更多种类的字符串。例如,给定一种带有符号a和B的语言,可以构造DFA来识别AB、AABB、AAABBB,但不能构造DFA来识别所有n的a^nB^n,而使用DPDA很容易做到这一点,其工作原理如下:

  • 进入启动状态
  • $
    推到堆栈中
  • 从字符串中读出字母。
    • 如果为B,则转到终端不接受状态
    • 如果为A,则在堆栈上按A,然后转到状态4
  • 从字符串中读一封信
    • 如果为A,则在堆栈上按A并保持此状态
    • 如果为B,则从堆栈中弹出顶部值。
      • 如果弹出的值为A,则转到状态5
      • 如果弹出的值为$,则转到终端非接受状态
  • 从字符串中读一封信
    • 如果为B,则从堆栈中弹出顶部值。
      • 如果弹出的值是A,则保持此状态
      • 如果弹出的值为$,则转到终端非接受状态
    • 如果我们读取字符串的结尾,则从堆栈中弹出顶部值
      • 如果弹出的值为$,则转到接受状态
      • 如果弹出的值是A,则转到终端非接受状态
    • 如果我们从字符串中读取任何其他内容,请转到终端非接受状态
  • PDA识别,而DPDA只识别上下文无关语言的确定子集。就可以识别的语言数量而言,它们比DFA更强大,但不如DFA是“状态”机,而PDA是“堆栈”机。术语的哪些方面让你感到困惑?