# Initial States in Moore Machine?

I went through the rules of Moore and Mealy Machine or FA. I read that both could have one initial state and no final state.

If Moore Machine has one initial state then there is a problem for converting those Mealy Machines into Moore Machines in which inputs coming towards the initial state give different outputs. In this case we will get a Moore Machine which will have many initial states.

For example: if we convert the following Mealy Machine then we will get a Moore Machine with two initial states!

Is there any way to convert such Mealy Machines into single initial state Moore Machines?

• Is it really "more than one" initial states? I mean, the state is still $q_0$, it is just that it produces a different output, therefore, it had to be separated. Had it been a whole new initial state, say $q_4$, then it might have violated the rules. – Infinity Mar 4 '19 at 10:25
• qo state with 0 output and qo state with 1 output are two different states in Moore Machine. Doesn't matter we call one of them q4. – Zeeshan Ahmad Khalil Mar 4 '19 at 10:38
• Well, in that case, if we consider that the states to which we reach after we input 0 and 1 to either of the "q0", will be one and the same. It doesn't matter which initial q0 we choose, we will reach the same states on same inputs. Again, just keeping my point. – Infinity Mar 4 '19 at 10:50

When you translate from Mealy to Moore, you have a problem: to compute the next output, you need the next input....which is only available to the machine after producing the next output. What you can do during the translation is however to build a Moore machine that produces its output delayed by one step. This requires you to store the last output in the state component, which blows up the automaton. Whether the resulting Moore machine is good for anything practical is a different question. Even with this semantics-altering translation, there is still the problem that the Moore machine needs to give some initial output, which needs to be defined. This could be an arbitrary one or a designated "no data" output character. This seems to be the choice of your tutorial - rather than having more than one initial state, you declare the one to be initial that is labeled by the output character representing nothing''.