- Embedded pushdown automaton
An embedded pushdown automaton or EPDA is a
computational model that parse languages in thetree-adjoining grammar (TAG). It is similar to thecontext-free grammar -parsingpushdown automaton , except that instead of using astack (data structure) to store symbols, it has a stack of iterated stacks that store symbols, giving TAGs a complexity between context-free grammars and context-sensitive grammars, or a subset of the mildly context-sensitive grammars.History and applications
EPDAs were first described by K. Vijay-Shanker in his 1988 doctoral thesis [cite journal |last=Vijay-Shanker |first=K. |authorlink= |coauthors= |year=1988 |month=January |title=A Study of Tree-Adjoining Grammars |journal=Ph.D. Thesis |publisher=
University of Pennsylvania |volume= |issue= |pages= |id= |url= |accessdate= |quote= ] . They have since been applied to more complete descriptions of the class of mildly context-sensitive grammars and have had important roles in extending and refining theChomsky hierarchy to this class. Various subgrammars, such as thelinear indexed grammar , can thus be defined [cite journal |last=Weir |first=David J. |authorlink= |coauthors= |year=1994 |month= |title=Linear Iterated Pushdowns |journal=Computational Intelligence |volume=10 |issue= |pages=431--439 |id= |url=http://www.informatics.sussex.ac.uk/users/davidw/papers/ci94.ps |accessdate= 2007-11-21 |quote=|doi=10.1111/j.1467-8640.1994.tb00007.x ] . They are also beginning to play an important role in natural language processing.While natural languages have traditionally been analyzed using context-free grammars (see
transformational-generative grammar andcomputational linguistics ), this model does not work well for languages with crossed dependencies, such as Dutch, situations for which an EPDA is well suited. A detailed linguistic analysis is available in [cite journal |last=Joshi |first=Aravind K. |authorlink= |coauthors=Yves Schabes |year=1997 |month= |title=Tree-Adjoining Grammars |journal=Handbook of Formal Languages |publisher=Springer |volume=3 |issue= |pages=69--124 |id= |url=http://www.cis.upenn.edu/~cse477/ltag-paper.pdf |accessdate= 2007-11-21 |quote= ] .Theory
To begin, we reiterate the an EPDA is a finite state machine with a set of stacks that can be themselves accessed through the "embedded stack". Each stack contains elements of the "stack alphabet" , and so we define an element of a stack by , where the star is the
Kleene closure of the alphabet.Each stack can then be defined in terms of its elements, so we denote the th stack in the automaton using a double-dagger symbol: , where would be the next accessible symbol in the stack. The "embedded stack" of stacks can thus be denoted by .
We define an EPDA by the septuple (7-tuple)
: where
* is a finite set of "states";
* is the finite set of the "input alphabet";
* is the finite "stack alphabet";
* is the "start state";
* is the set of "final states";
* is the "initial stack symbol"
* is the "transition function", where are finite subsets of .Thus the transition function takes a state, the next symbol of the input string, and the top symbol of the current stack and generates the next state, the stacks to be pushed and popped onto the "embedded stack", the pushing and popping of the current stack, and the stacks to be considered the current stacks in the next transition. More conceptually, the "embedded stack" is pushed and popped, the current stack is optionally pushed back onto the "embedded stack", and any other stacks one would like are pushed on top of that, with the last stack being the one read from in the next iteration. Therefore, stacks can be pushed both above and below the current stack.
A given configuration is defined by
:
where is the current state, the s are the stacks in the "embedded stack", with the current stack, and for an input string , is the portion of the string already processed by the machine and is the portion to be processed, with its head being the current symbol read. Note that the empty string is implicitly defined as a terminating symbol, where if the machine is at a final state when the empty string is read, the entire input string is "accepted", and if not it is "rejected". Such "accepted" strings are elements of the language
:
where and defines the transition function applied over as many times as necessary to parse the string.
References
Wikimedia Foundation. 2010.