Share
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
Since this is very likely homework, I’m hesitant to just give you the complete correct solution.
Your NFA appears correct, but has a lot of superfluous states that aren’t necessary but do not adversely affect its correctness. (At first glance it looks like you could remove 11 states.)
Your DFA is incorrect, though. This is because when you branch off to begin handling one condition of the string or the other, you later rejoin them together. This allows it to take the path from an accepted string matching
a(b|c)*aand take in anotherborcby travelling to nodes15,17or11. It then accepts this string even though it doesn’t match your expression.What you need to do is basically stop this from happening. If you have additional questions feel free to ask.
I highly recommend making a list of test strings that you know should be and shouldn’t be accepted, and then trace them through, making sure your automata ends in the correct (accept or reject) state.