Problem 9.8.5 makes no sense to me. The construction of the section is to turn a regular expression into a λ-NFA, but you say to use code for the DFA class. How are we supposed to make a λ-NFA?
You are right, the question is not sensible given only what I have given you, so forget about it. I should have defined some sort of NFA and λ-NFA classes, sorry.
In lecture today you identified a mistake in Figure 10-3 on page 10-6, in that state 3 in the DFA has no a-arrow. Where should the a-arrow go?
It should go to state 1. In the next to last bullet on page 10-5, it is explained that the input bba is rejected, but has the same effect as the string ba. So bba should take D to the same state as does state ba, which is state 1. To formally prove that the corrected D has the same language as the 2WDFA M, we would have to verify all eight arrows as is done for the a-arrow for state 1 at the top of tage 10-6. We can verify the a-arrow from state 3 to state 1 as follows. If δ*(1,w) = 3, then on input w, M goes off the right end of the string in state ι. So on input wa, it eventually enters the final a in state ι, whereupon it moves left and stays in state ι. It is now on the last letter of w, which must be a b since only a b could have brought D into state 3. On this b, M moves right (onto the final a) and goes to state p. It then moves off the string to the right, rejecting because it changes to state ι as it does so. Rejected strings wa with final letter a should have δ*(1,wa) = 1, so the arrow to state 1 is correct.
Last modified 10 May 2005