Pushdown Automata
A Pushdown Automaton (PDA) is a type of computational model used in computer science to recognize certain types of formal languages, particularly context-free languages. It extends the capabilities of a finite automaton by adding a stack, which allows it to keep track of additional information. This stack can store symbols and can be manipulated with operations like push and pop, enabling the PDA to handle nested structures, such as parentheses in mathematical expressions.
PDAs can be classified into two types: deterministic and non-deterministic. A deterministic pushdown automaton (DPDA) has a unique action for each input symbol and stack symbol, while a non-deterministic pushdown automaton (NPDA) can have multiple possible actions. This flexibility makes NPDAs more powerful, as they can recognize a broader class of languages compared to DPDAs.