Nested stack automaton: Difference between revisions

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 [[finite state machine|finite automaton]] that can make use of a [[Stack (data structure)|stack]] containing data which can be additional stacks.<ref name="aho">{{cite journal |last1=Aho |first1=Alfred V. |s2cid=685569 |authorlink1=Alfred Aho |title=Nested Stack Automata |journal=Journal of the ACM |date=July 1969 |volume=16 |issue=3 |pages=383–406 |doi=10.1145/321526.321529 |doi-access=free }} </ref>
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> {{cite book | last = [[Partee | author-link = Barbara Partee|Partee]] | first = Barbara |author2=Alice ter Meulen |author2-link=Alice ter Meulen|author3=Robert E. Wall | title = Mathematical Methods in Linguistics | url = https://archive.org/details/mathematicalmeth00part_211| url-access = limited| year = 1990 | publisher = Kluwer Academic Publishers | pages = [https://archive.org/details/mathematicalmeth00part_211/page/n556 536]–542 | isbn = 978-90-277-2245-4 }} </ref> and in fact the class of indexed languages is exactly the class of languages accepted by one-way [[nondeterministic algorithm|nondeterministic]] nested stack automata.<ref name="aho" /><ref>{{cite book| author=John E. Hopcroft, Jeffrey D. Ullman| title=Introduction to Automata Theory, Languages, and Computation| year=1979| publisher=Addison-Wesley| isbn=0-201-02988-X| url-access=registration| url=https://archive.org/details/introductiontoau00hopc}} Here:p.390</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 certain[[Virtually#Virtually_free|virtually free]] [[Group (mathematics)|groups]], similarly to the [[Muller–Schupp theorem]].<ref>{{cite techreporttech report |last1=Shapiro |first1=Robert Gilman Michael |title=On groups whose word problem is solved by a nested stack automaton |date=4 December 1998 |arxiv=math/9812028 |s2cid=12716492 |citeseerx=10.1.1.236.2029 }}</ref>
 
==Notes==
{{reflistReflist|group=note}}
 
==References==
{{Reflist}}
<references/>
 
{{Formal languages and grammars}}
 
[[Category:Models of computation]]
[[Category:Automata (computation)]]