Content deleted Content added
Citation bot (talk | contribs) Add: s2cid. | You can use this bot yourself. Report bugs here. | Suggested by Chris Capoccia | via #UCB_toolbar |
→Properties: clarified the Gilman-Shapiro result & connected it to the Muller-Schupp theorem |
||
(13 intermediate revisions by 8 users not shown) | |||
Line 1:
{{Bots|deny=AWB}}<!--REASON: incorrectly identifies the first "{" in "{[[empty string{{!}}ε]]}" as an unbalanced bracket & removes it-->
[[File:Pushdown-overview.svg|thumb|right|A nested stack automaton has the same devices as a [[pushdown automaton]], but has less restrictions for using them.]]
In [[automata theory]], a '''nested stack automaton''' is a [[
Like a [[stack automaton]], a nested stack automaton may step up or down in the stack, and read the current symbol; in addition, it may at any place create a new stack, operate on that one, eventually destroy it, and continue operating on the old stack. This way, stacks can be nested recursively to an arbitrary depth; however, the automaton always operates on the innermost stack only.
A nested stack automaton is capable of recognizing an [[indexed language]],<ref>
Nested stack automata should not be confused with [[embedded pushdown automata]], which have less computational power.{{citation needed|reason=The claim is currently supported only by the order in which both notions appear in the 'Automata theory: formal languages and formal grammars' overview table below.|date=February 2014}}
Line 42 ⟶ 44:
* ''Z''<sub>0</sub> ∈ Γ is the initial stack symbol,
* ''F'' ⊆ ''Q'' is the set of final states.
===Configuration===
A '''configuration''', or '''instantaneous description''' of such an automaton consists in a triple
Line 53 ⟶ 56:
* [''a''<sub>1</sub>''a''<sub>2</sub>...<u>''a''<sub>''i''</sub></u>...''a''<sub>''n''-1</sub>] is the input string; for convenience, ''a''<sub>0</sub> = [ and ''a''<sub>''n''</sub> = ] is defined<ref group=note>Aho originally used the left and right stack marker, viz. $ and ¢, as right and left input marker, respectively.</ref> The current position in the input, viz. ''i'' with 0 ≤ ''i'' ≤ ''n'', is marked by underlining the respective symbol.
* [''Z''<sub>1</sub>''X''<sub>2</sub>...<u>''X''<sub>''j''</sub></u>...''X''<sub>''m''-1</sub>''']''' is the stack, including substacks; for convenience, ''X''<sub>1</sub> = [''Z''<sub>1</sub> <ref group=note>The top symbol of a (sub)stack together with its preceding left endmarker "[" is viewed as a single symbol.</ref> and ''X''<sub>''m''</sub> = ''']''' is defined. The current position in the stack, viz. ''j'' with 1 ≤ ''j'' ≤ ''m'', is marked by underlining the respective symbol.
===Example===
An example run (input string not shown):
{| class=wikitable
|-
! Action
Line 108 ⟶ 112:
==Properties==
When automata are allowed to re-read their input ("[[Two-way automaton|two-way automata]]"), nested stacks do not result in additional language recognition capabilities, compared to plain stacks.<ref>{{cite journal |last1=Beeri |first1=C. |title=Two-way nested stack automata are equivalent to two-way stack automata |journal=Journal of Computer and System Sciences |date=June 1975 |volume=10 |issue=3 |pages=317–339 |doi=10.1016/s0022-0000(75)80004-3 |doi-access=free }}</ref>
Gilman and Shapiro used nested stack automata to solve the [[Word problem for groups|word problem]] in
==Notes==
{{
==References==
{{Reflist}}
{{Formal languages and grammars}}
[[Category:Models of computation]]
[[Category:Automata (computation)]]
|