Are there intermediate language classes between regular languages and context-free languages that can be recognized by automata requiring extensions beyond standard DFA/NFA capabilities but without relying on a stack, like in PDAs?
1 Answers
Counter machines
Arguably, one-counter machines represent one example of such a language class. A one-counter machine is a DFA that is augmented with a single counter; the DFA can set the counter to zero, increment the counter, decrement the counter, and test whether it is zero or not.
The class of languages accepted by a one-counter machine is in between regular and context-free languages, i.e., it is a strict subset of all context-free languages. See Which languages are recognized by one-counter machines? and Are the languages recognized by deterministic one-counter machines equivalent to deterministic context free language?.
However, this might not be a very satisfying answer, because a one-counter machine is trivially equivalent to a PDA where the stack alphabet has only a single symbol. So while from one perspective they don't involve a stack, from another perspective the counter can be viewed as just a "disguised stack" with extra limitations.
Time-bounded Turing machines
Another candidate might be the class of languages that can be recognized by a (deterministic, single-tape) Turing machine with running time $O(f(n))$, where $f(n)$ is some function such as $n \log n$ or $n^{1.5}$. In particular, it is known that every regular language can be recognized by a Turing machine with running time $O(n)$, and every context-free language can be recognized by a Turing machine with running time $O(n^3)$. It seems unlikely that it is possible to recognize every context-free language in $o(n^2)$ time. So, any function between $O(n \log n)$ and $O(n^2)$ provides a candidate for a language class.
However, this might not be a very natural class of languages.
- 167,959
- 22
- 232
- 500