# Difference between Mealy machine and Moore machine

Prerequisite – Mealy and Moore Machines

**Mealy Machine –** A mealy machine is defined as a machine in theory of computation whose output values are determined by both its current state and current inputs. In this machine atmost one transition is possible.

It has 6 tuples: (Q, q0, ∑, O, δ, λ’)

Q is finite set of states

q0 is the initial state

∑ is the input alphabet

O is the output alphabet

δ is transition function which maps Q×∑ → Q

‘λ’ is the output function which maps Q×∑→ O

**Diagram –**

**Moore Machine –** A moore machine is defined as a machine in theory of computation whose output values are determined only by its current state.

It has also 6 tuples: (Q, q0, ∑, O, δ, λ)

Q is finite set of states

q0 is the initial state

∑ is the input alphabet

O is the output alphabet

δ is transition function which maps Q×∑ → Q

λ is the output function which maps Q → O

**Diagram –**

**Moore Machine –**

- Output depends only upon present state.
- If input changes, output does not change.
- More number of states are required.
- There is more hardware requirement.
- They react slower to inputs(One clock cycle later)
- Synchronous output and state generation.
- Output is placed on states.
- Easy to design.

**Mealy Machine –**

- Output depends on present state as well as present input.
- If input changes, output also changes.
- Less number of states are required.
- There is less hardware requirement.
- They react faster to inputs.
- Asynchronous output generation.
- Output is placed on transitions.
- It is difficult to design.

## Recommended Posts:

- Mealy and Moore Machines
- Turing Machine
- Turing machine for 1's and 2’s complement
- Construct a Turing machine for L = {a
^{i}b^{j}c^{k}| i>j>k; k ≥ 1} - Construct a Turing machine for L = {a
^{i}b^{j}c^{k}| i*j = k; i, j, k ≥ 1} - Turing Machine for subtraction | Set 2
- Turing Machine for addition
- Construct a Turing machine for L = {a
^{i}b^{j}c^{k}| i< j< k; i ≥ 1} - Construct a Turing machine for L = {a
^{i}b^{j}c^{k}| i < j < k or i > j > k} - Construct Turing machine for L = {a
^{n}b^{m}a^{(n+m)}| n,m≥1} - TOC | Turing Machine as Comparator
- Turing machine for multiplication
- Turing machine for subtraction | Set 1
- Turing machine for copying data
- Construct a Turing Machine for language L = {0
^{n}1^{n}2^{n}| n≥1}

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.