Turing Machine
1. Problem statement: Design a Turing machine that accepts strings of the form $0^n1^n2^n$ over the alphabet $\Sigma = \{0,1,2\}$. This means the machine should accept strings that consist of $n$ zeros followed by $n$ ones followed by $n$ twos, where $n \geq 1$.
2. Approach: The machine will check that the number of zeros, ones, and twos are all equal and in the correct order.
3. Steps of the Turing machine:
- Start at the leftmost symbol.
- Scan right to find the first $0$ not yet marked, replace it with $X$ to mark it.
- Move right to find the first $1$ not yet marked, replace it with $Y$ to mark it.
- Move right to find the first $2$ not yet marked, replace it with $Z$ to mark it.
- Return to the leftmost symbol and repeat until no unmarked $0$s remain.
- If at any step the expected symbol is not found or order is violated, reject.
- If all symbols are marked correctly and the tape contains only $X$, $Y$, $Z$ and blanks, accept.
4. Summary:
- Use markers $X$, $Y$, $Z$ to keep track of matched symbols.
- Loop through matching each zero with a corresponding one and two.
- Accept only if the input fits $0^n1^n2^n$ exactly.
5. Final answer: A Turing machine that implements the above strategy successfully recognizes the language $L = \{0^n1^n2^n \mid n \geq 1\}$.