Re: DFA recognizing the language {w | top(w) mod 3 = bottom(w) mod 3}
- From: torbenm@xxxxxxxxxxxxx (Torben Ægidius Mogensen)
- Date: Wed, 24 Jan 2007 09:39:33 +0100
Patricia Shanahan <pats@xxxxxxx> writes:
Torben Ægidius Mogensen wrote:
"meyousikmann" <meyousikmann@xxxxxxxxx> writes:
I am stumped on constructing this DFA. Can anyone offer any pointers?Actually, you need only three states (unless the empty string is not
For the alphabet:
| 0 | | 0 | | 1 | | 1 |
| 0 | | 1 | | 0 | | 1 |
where the strings over this alphabet represent a "top row" and a
"bottom row" and each row represents a number in binary starting with
the least significant bit.
Design a DFA to recognize the language {w | top(w) mod 3 = bottom(w) mod 3}.
This can be solved with 18 = 3 x 3 x 2 states or 6 = 3 x 2 states but
I can't seem to figure it out.
Any help?
accepted, in which case you need four).
What you need to keep track of is (top(w) - bottom(w)) mod 3. This
is
0 exactly when top(w) mod 3 = bottom(w) mod 3. Furthermore, given
(top(w) - bottom(w)) mod 3 for a prefix of the string and a symbol c
in the alphabet you can find (top(wc) - bottom(wc)) mod 3, so you can
maintain the information. It should be an easy matter to construct
the DFA given this information.
I think I see how to do it with three states, though I have not done any
tests. However, I don't see how a three state version can find (top(wc)
- bottom(wc)) mod 3 from c and (top(w) - bottom(w)) mod 3, given that
the data starts with the least significant bit.
Starting from the most significant bit it would just be long division
with the quotient thrown away.
Ah, I didn't notice that you started with the least significant bit.
Still, it doesn't matter, as the automaton for little-endian is
exactly the same as for big-endian:
All arrows in the DFA for big-endian are bidirectional: If there is a
transition from s to t on symbol c, there is also a transition from t
to s on symbol c. Furthermore, the initial and final state are the
same, so the reverse DFA (i.e., for little-endian) is the same as the
original.
Torben
.
- References:
- DFA recognizing the language {w | top(w) mod 3 = bottom(w) mod 3}
- From: meyousikmann
- Re: DFA recognizing the language {w | top(w) mod 3 = bottom(w) mod 3}
- From: Torben Ægidius Mogensen
- Re: DFA recognizing the language {w | top(w) mod 3 = bottom(w) mod 3}
- From: Patricia Shanahan
- DFA recognizing the language {w | top(w) mod 3 = bottom(w) mod 3}
- Prev by Date: Re: DFA recognizing the language {w | top(w) mod 3 = bottom(w) mod 3}
- Next by Date: Re: Hofman and Diaby talk about P=NP at INFORMS 2007
- Previous by thread: Re: DFA recognizing the language {w | top(w) mod 3 = bottom(w) mod 3}
- Next by thread: One year MS/MSc course in Informatics at Edinburgh University
- Index(es):
Relevant Pages
|