Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
Niidae Wiki
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
Pushdown automaton
(section)
Page
Discussion
English
Read
Edit
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
View history
General
What links here
Related changes
Page information
Appearance
move to sidebar
hide
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Informal description == [[Image:Pushdown-overview.svg|thumb|340px|A diagram of a pushdown automaton]] A [[finite-state machine]] only considers the input signal and the current state: it has no stack to work with and therefore is unable to access previous values of the input. It can only choose a new state, the result of following the transition. A '''pushdown automaton (PDA)''' differs from a finite state machine in two ways: # It can use the top of the stack to decide which transition to take. # It can manipulate the stack as part of performing a transition. A pushdown automaton reads a given input string from left to right. In each step, it chooses a transition by indexing a table by input symbol, current state, and the symbol at the top of the stack. <!---wrong, or at least strongly misleading, for properly nondeterministic PDA:---This means that those three parameters completely determine the transition path that is chosen.---><!---don't know what this sentence is supposed to mean:---Pushdown automata add the stack as a parameter for choice.---> A pushdown automaton can also manipulate the stack, as part of performing a transition. The manipulation can be to push a particular symbol to the top of the stack, or to pop off the top of the stack. The automaton can alternatively ignore the stack, and leave it as it is. <!---misleading for properly nondeterministic PDA:---The choice of manipulation (or no manipulation) is determined by the transition table.---> Put together: Given an input symbol, current state, and stack symbol, the automaton can follow a transition to another state, and optionally manipulate (push or pop) the stack. If, in every situation, at most one such transition action is possible, then the automaton is called a '''[[deterministic pushdown automaton]] (DPDA)'''. In general, if several actions are possible, then the automaton is called a '''general''', or '''nondeterministic''', '''PDA'''. A given input string may drive a nondeterministic pushdown automaton to one of several configuration sequences; if one of them leads to an accepting configuration after reading the complete input string, the latter is said to belong to the ''language accepted by the automaton''. <!---has been said more precisely above:---Nondeterministic PDAs are able to handle situations where more than one choice of action is available.---><!---don't know what these paragraphs are supposed to mean; automata don't create 'instances' during their operation; PDAs are a theoretical model, implemetation problems aren't an issue here, see [[Earley parser]], [[LR parser]], etc., instead---:In principle, it is enough{{clarify|date=December 2016}} to create in every such case new automaton instances that will handle the extra choices. === Backtracking === The problem with multiple automata per choice is that in practice most of these instances fail. This can severely affect the automaton's performance as the execution of multiple instances is a costly operation. Situations such as these can be identified in the design phase of the automaton by examining{{how|date=December 2016}} the grammar the automaton uses. This makes possible the use of [[backtracking]] in every such case in order to improve the performance of pushdown automaton.--->
Summary:
Please note that all contributions to Niidae Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Encyclopedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Search
Search
Editing
Pushdown automaton
(section)
Add topic