Turing Machine that takes an encoded DFA and prints out A to accept or R to reject the string input
This Standard Turing Machine simulates behavior of any Deterministic Finite Automata that is properly encoded. The machine will return A or R for accepting or rejecting a string. Run the FinalRelease.jff in the the transducer mode of JFLAP program. Please be aware of potential bugs in this machine.
DFA can be mathematically defined as M = (Q,Σ,δ,q0,F), where:
- Q - List of states
- Σ - Alphabet
- δ - Transition function
- q0 - Initial state
- F - List of final(accepting) states
L = {bnam} where n ≥ 0 and m = 0 or 1
Machine M constructed above can be mathematically broken down to:
- Q = {q2,q5,q9}
- Σ = {a,b}
- q0 = q2
- F = {q2,q5}
Transition function δ of the constructed DFA above will be:
- δ(q2, b) = q2
- δ(q2, a) = q5
- δ(q5, b) = q9
- δ(q5, a) = q9
- δ(q9, b) = q9
- δ(q9, a) = q9
Let input string w = aab
We will encode all element of M and w in unary numbers.
Q = {q2, q5, q9}
The first element of Q is encoded as 1, the second one as 11 and so forth.
So, the encoded version of Q would be: Q = {1, 11, 111}
q0
We always put the initial state as the first element of Q. So, q0 (e.g. q2 in the example) is always encoded as 1.
Σ = {a, b}
The first element of Σ is encoded as 1, the second one as 11 and so forth. So, the encoded version of Σ would be: Σ = {1, 11}
F = {q2, q5}
The set of final states follows the same codes of Q. So, the encoded version of F would be F = {1, 11}.
δ(q0, x) = qj
The elements of sub-rules are encoded by the same codes of Q and Σ and are formatted as the following figure shows. We use '0' (zero) as the separator between the elements.
Note that q5 and b have the same code (i.e. 11), but their locations in the string give them different meaning.
All sub-rules of the example have been encoded in the following table.
Input string w = bba
The symbols of the input string are encoded by the codes of Σ and are separated by '0' (zero). So, the encoded version of w would be: w = 1101101
Let's put all together and construct the TM's input string that contains the DFA's description and its input string.
After applying all of the rules of encoding our DFA will look like this:
1101101D101101D101011D110110111D11010111D1110110111D111010111F1011
- The order of the elements of Q does not matter. The only restriction would be the first element that must be the q0 of the DFA.
- The order of the elements of Σ does not matter.
- We don't need to put Q and Σ in the TM's input string because we just need to use their codes in δ, w, and F.
- We assume that the input string of the TM is 100% correct. It means, M and w are encoded and formatted correctly. Therefore, your TM is not supposed to have any error checking or error reporting.
- Test your Turing machine as a transducer option of JFLAP.
- There are bugs in this machine.
Use JFLAP 7 provided in the repository. Run inputs in transducer mode.
Danil Kolesnikov – [email protected]
Distributed under the MIT license.