Is this all we need?
While DFAs and CFGs can solve many useful problems, they are quite limited.
Source of these limitations: lacking access to arbitrary amounts of memory.
We now take a big leap in computational power and introduce Turing machines (TM).
TMs are a generalization of DFAs.
This is now a Turing machine!
Distinctive features of Turing machines:
list
, C++ std::vector
, Java java.util.List
).
\[ P = \setbuild{w \in \{0, 1\}^*}{w = \reverse{w}} \]
\[ P = \setbuild{w \in \{0, 1\}^*}{w = \reverse{w}} \]
This is the default TM in the simulator.
\[ P = \setbuild{w \in \{0, 1\}^*}{w = \reverse{w}} \]
Example input:
1 01
This is the default TM in Dave’s simulator!
A Turing machine (TM) is a 7-tuple: \(M = (Q, \Sigma, \Gamma, \delta, s, q_a, q_r)\) where:
\[ P = \setbuild{w \in \{0, 1\}^*}{w = \reverse{w}} \]
\(M = (Q, \Sigma, \Gamma, \delta, s, q_a, q_r)\) where: