Questions are in black, answers in blue
In a DFA, is the start state also allowed to be the end state?
Yes, there may be no final states, one final state, or many final states, and the start state may or may not be one of the final states.
To simplify thinking about 9.3.1, suppose we had only four letters in the alphabet instead of 26. Is the string "abcd" equivalent to the string "aabbccdd"? If so, I think that there are 26! classes, and if not, I think that there are infinitely many. Am I on the right track?
Simplifying the problem is a good idea, and so is asking
about the equivalence of particular strings. Let's define u to be "abcd"
and v to be "aabbccdd". Both of these strings are panalphabetic for
the four-letter alphabet. For them to be P-distinguishable, where P is the
language of panalphabetic strings, we would have to find a string w such that
one, but not both, of the strings uw and vw was in P. Can you tell whether
uw and vw are panalphabetic?
Once you know whether those two strings are equivalent to each other,
consider whether either is equivalent to "dcba" or "ddccbbaa". (Do all the
panalphabetic strings form a single equivalence class?)
I am thinking that 9.2.4 and 9.2.5 are the same -- neither of them has a DFA because there are an infinite number of different things that can happen.
If one or both of these languages have no DFA, you only know one way to prove it. You have to find an infinite set of strings that are pairwise distinguishable for that language, as is done in the text for the {anbn} language and the parenthesis language. For each language here, is it possible for two different strings to be indistinguishable (or equivalent) for that language? Of course there are infinitely many possible strings. But if strings can be equivalent, then there might be only finitely many equivalence classes.
I have now built a three-state DFA for 9.1.5, but all of the states are final. Is this right?
Your "DFA" isn't a proper DFA because it doesn't have an arrow for every
letter out of every state. If a legal DFA has all final states, it has to
accept all strings. You've built what I call a "sub-DFA" in Problem 9.6.1 --
it never has multiple arrows like an NFA but some of its arrows are missing.
Your "DFA" behaves correctly on strings that are in the language.
What you need to do is to add a "death state", which is a non-final state with
all its arrows leading back to itself. Then add the missing arrows from the
former states, making them go to the death state.
In Problem 9.3.2, the reference to "the Problems in Section 7.2" looks like a mistake.
It is, thanks. Problem 9.3.1 should refer to 9.2.4 and problem 9.3.2 should refer to 9.2.5.
In 8.3.1, what do you mean by "algorithm"? Should it be pseudocode? Java? Or just an English description?
Any of these are all right as long as it is clear to the graders what your algorithm is going to do (what steps it will take in what order) in all situations. Pseudo-Java is probably the clearest way to do this, but other ways are possible.
In 9.1.5, may I have multiple start states on my DFA?
No. A DFA must have a single start state. So must an NFA, though in a λ-NFA you could simulate multiple start states by a single start state and some λ-moves.
What is the difference between parts (a) and (b) of 8.3.1?
For part (a), consider the case where k is 6, so you
have to calculate a6 using only six multiplications. Once you
figure out how to do this, consider a b that is not a power of two,
like 23. The method for getting powers that are powers of two doesn't
directly tell you how to do it with other powers. How would you
calculate a23 with at most 10 multiplications? (Here "k" is 5,
because 23 is bounded above by 25=32.)
Someone pointed out in office hours that a solution to this problem is
given in CMPSCI 287 -- you're free to use that solution with attribution.
You might also find something useful by googling "repeated squaring" or
"powering algorithms".
Last modified 9 November 2004