Midterm 1 Study Guide
This is not meant to be an exhaustive list of everything you need to know, but it is a good starting place.
- Define what a DFA and an NFA is.
- Explain the differences between DFAs and NFAs.
- Given a description for a language, construct DFAs/NFAs for it.
- Given a regular expression, construct an NFA from it.
- Given an NFA, construct an equivalent DFA.
- Formally describe when we would say that we accept a string in a DFA, and in an NFA.
- Describe the union construction for DFAs and provide an explanation/proof of its correctness (i.e. that the language of the union DFA is the union of the corresponding languages).
- Do the same for the NFA union (the one with only one extra state).
- Do the same for the NFA concatenation and the NFA Kleene star.
- Explain the source of difficulty when trying to perform concatenation for DFAs, and what feature of NFAs helps out.
- True or false: Every DFA is equivalent to a DFA with exactly one accept state.
- True or false: Every NFA is equivalent to a NFA with exactly one accept state.
- Describe the construction of a DFA that is equivalent to a given NFA.
- One may try to produce the Kleene star without adding a new start state. Show by an example how this may produce the wrong language.
- State precisely what the pumping lemma says.
- Sketch the proof of the pumping lemma.
- Provide examples of languages that are not regular, together with both an intuitive explanation of why they are probably not regular as well as a formal proof using the pumping lemma.
- True or False: Given two DFAs, we can tell if they recognize the same language.
- True or False: Given a NFA, we can tell if it recognizes the empty string.
- True or False: Given an NFA, we can determine if it contains any strings other than the empty string.