Finite Automata With Output: Theory of Computational
Finite Automata With Output: Theory of Computational
Page 1 of 8
Anbar University/College of Computer 2012-2013 Computational Theory Lecture note
Lecture eight Lecturer: Dr Ali Jbaeer Dawood
Example: Moore machine defined by a table:
• Input alphabet: ∑ = {a, b}
• Output alphabet: Γ = {0, 1}
• Names of states: q0, q1, q2, q3 with q0 being the start state.
• Transition and output table (combined):
Pictorial Representation:
• Moore machines have pictorial representations similar to FAs.
• The difference is that inside each state, in addition to the state name, we also
specify the output character printed by that state, using the format state –
name/output.
• Hence, the Moore machine in the above example has the following pictorial
representation:
Example:
Page 3 of 8
Anbar University/College of Computer 2012-2013 Computational Theory Lecture note
Lecture eight Lecturer: Dr Ali Jbaeer Dawood
Example:
• The following Mealy machine prints out the 1’s complement of an input bit
string.
• This means that it will produce a bit string that has a 1 whenever the input string
has a 0, and a 0 whenever the input has a 1.
• If the input string is 001010, the output will be 110101
Example:
• Let consider a Mealy machine, called increment machine, which reads a binary
number and prints out the binary number that is one larger.
• Assume that the input bit string is a binary number fed in backward; that is, unit
digit first, then 2’s digit, 4’s digit, etc.
• The output string will be the binary number that is one greater and that is
generated right to left.
• The machine will have 3 states: start, owe-carry and no-carry. The owe-carry
state represents the overflow when two bits of 1’s are added, we print a 0 and we
carry a 1.
• From the start state, if we read a 0, we print a 1 (incrementing process), and we
go to the no-carry state. If we read a 1, we print a 0 (incrementing) and we go to
the owe-carry state.
• At any point in the process, in we are in the no-carry state, we print the next bit
just as we read it and remains in no-carry.
• However, if we are in the owe-carry state and read a 0, we print a 1 and go to no-
carry. If we are in owe-carry and read a 1, we print a 0 and we loop back to owe-
carry.
Page 4 of 8
Anbar University/College of Computer 2012-2013 Computational Theory Lecture note
Lecture eight Lecturer: Dr Ali Jbaeer Dawood
• We can build a Mealy machine that can take an input string of a’s and b’s, and
print out an output string of 0’s and 1’s such that if the n-th output character is
a 1, it means that the n-th input letter is the second letter in a pair of double
letters.
• The complete picture of this machine is as follows:
Moore = Melay:
• So far, we have define that two machines are equivalent if they accept the same
language.
• In this sense, we cannot compare a Mealy machine and a Moore machine because
they are not language definers.
Definition:
• Given the Mealy machine Me and the Moore machine Mo (which prints the
automatic start state character x), we say that these two machines are equivalent
if for every input string, the output string from Mo is exactly x concatenated with
the output string from Me.
Theorem 8:
If Mo is a Moore machine, then there is a Mealy machine Me that is equivalent to
Mo.
Proof by constructive algorithm:
• Consider a particular state in Mo, say state q4, which prints a certain character,
say t.
• Consider all the incoming edges to q4. Suppose these edges are labeled with a, b,
c, ...
• Let us re-label these edges as a/t, b/t, c/t, ... and let us erase the t from inside the
state q4. This means that we shall be printing a t on the incoming edges before we
enter q4.
Page 5 of 8
Anbar University/College of Computer 2012-2013 Computational Theory Lecture note
Lecture eight Lecturer: Dr Ali Jbaeer Dawood
• We leave the outgoing edges from q4 alone. They will be relabeled to print the
character associated with the state to which they lead.
• If we repeat this procedure for every state q0, q1, ..., we turn Mo into its
equivalent Me.
Example:
• Following the above algorithm, we convert a Moore machine into a Mealy
machine as follows:
Theorem 9:
For every Mealy machine Me, there is a Moore machine
Mo that is equivalent to it.
Proof by constructive algorithm:
• We cannot just do the reverse of the previous algorithm. If we try to push the
printing instruction from the edge (as it is in Me) to the inside of the state (as it
should be for Mo), we may end up with a conflict: Two edges may come into the
same state but have different printing instructions, as in this example:
• If all the edges coming into a state have the same printing instruction, we simply
push that printing instruction into the state.
Page 6 of 8
Anbar University/College of Computer 2012-2013 Computational Theory Lecture note
Lecture eight Lecturer: Dr Ali Jbaeer Dawood
• An edge that was a loop in Me may becomes two edges in Mo, one that is a loop
and one that is not.
• If there is ever a state that has no incoming edges, we can assign it any printing
instruction we want, even if this state is the start state.
• If we have to make copies of the start state in Me, we can let any of the copies be
the start state in Mo, because they all give the identical directions for proceeding
to other states.
• Having a choice of start states means that the conversion of Me into Mo is NOT
unique.
• Repeating this process for each state of Me will produce an equivalent Mo. The
proof is completed.
• Together, Theorems 8 and 9 allow us to say Me = Mo.
Example:
• Convert the following Mealy machine into a Moore machine:
• All the edges coming into state q1 (and also q3) have the same printing
instruction. So, apply the algorithm to q1 and q3:
Page 7 of 8
Anbar University/College of Computer 2012-2013 Computational Theory Lecture note
Lecture eight Lecturer: Dr Ali Jbaeer Dawood
• The only job left is to convert state q2. There are 0-printing edges and 1-printing
edges coming into q2. So, we need two copies of q2. The final Moore machine is:
Page 8 of 8