Can someone help me construct a pushdown automaton to recognize the following regular expression representing the language $(a^3+a^5)$* using as few states as possible? How can this be done using a stack?
Pushdown Automaton
-
0@JackKobil sorry, I didn't realize that you had responded until now. The software doesn't give a notification unless you tag the person you're responding to. In any case, you can work off of David's answer and ask any followup questions to his answer. – 2012-05-30
2 Answers
You can do it with a single state -- just shove the states of the obvious no-stack finite automaton into the stack alphabet and use the first element of the stack to remember the state. You then never need a stack depth of more than one.
(Of course this is subject to the details of how you formalize PDA's. If your formalization don't allow you to pop a symbol off the stack and push a new one onto it in the same transition, then this construction won't help).
Hint (assuming this might be homework -- please tell us if not) -- think of how you'd recognize, say $(a^k)^*$ for a fixed $k$ (try $k=2, 3, 4 \text{ or } 5$) using a single state and a pushdown store, with acceptance by empty stack. Now, how can you pick $k$ and combine that with a finite-state automaton a having minimal number of states to recognize the language in question?