In computer science, pushdown automata (PDA) are abstract devices defined in automata theory that recognize context-free languages.

They are similar to finite automata, except that they have access to a potentially unlimited amount of memory in the form of a single stack. Non-deterministic pushdown automata (NPDA) are more potent than deterministic pushdown automata: there exist languages that are recognized by some non-deterministic pushdown automaton but that cannot be recognized by any deterministic pushdown automaton.

If we allow a finite automaton access to two stacks instead of just one, we obtain a device much more powerful than a pushdown automaton - we obtain the equivalent to a Turing machine.

A NPDA W can be defined as a 7-tuple function:

where

  • Q is a finite set of states
  • Σ is a finite set of the input alphabet
  • Φ is a finite set of the stack alphabet
  • σ is a finite transition relation (Q × ( Σ & {ε}) × Φ) × ( Q × Φ* )
  • s is an element of Q; the start state
  • Ω is the inital stack symbol
  • F is subset of Q, consisting of the final states.