
Tasks List for Regular Languages Unit
Basic Tasks
Computational Models
Ability to “compute” with regular expressions, FSA's, NFA's
- this requires understanding configurations for automata
Ability to “program” with FSA's, NFA's, and regular expressions for simple languages L
- given a target language L, write an FSA or NFA M such that L(M) = L
- given a target language L, write a regular expression r such that L(r) = L
Ability to “debug” finite automata and regular expressions for simple languages L
- given an FSA or NFA M, give a natural English language description of L(M)
- given a regular expression r, give a natural English language description of L(r)
Distinguishability/Myhill-Nerode Theorem
Basic Distinguishability
- ability to identify two strings as distinguishable/indistinguishable
with respect to a given language L
- ability to prove two strings as distinguishable with respect to L
Myhill-Nerode Theorem
- extension of distinguishability idea into understanding how languages and
automata partition * into a finite number of equivalence classes
- ability to identify the equivalence classes formed by a given language
- ability to construct an FSA based on these classes
Algorithms we have encountered in this unit
Ability to execute these algorithms/constructions
- Set complement construction for FSA’s
- The 2FSAto1FSA construction
- Convert an NFA into an “equivalent” FSA
- Convert a reg. exp r into an “equivalent” NFA-/\
- ability to parse a regular expression by identifying “last” operator
- NFA-/\’s constructions for union, concatenation, and Kleene closure
Ability to abstractly execute these algorithms
- Given input automata with 7 states and 5 states, how many states will be in the resulting
automata?
Higher level understanding of principles behind these algorithms/constructions
- NFA to FSA conversion
- The idea that each state in the FSA corresponds to a set of states in the NFA
- reg exp to NFA- conversion
- idea of a recursive algorithm: recursive case and base cases
- understanding of why the various operators are handled the way they are
- LFSA closed under union, intersection, set difference, symmetric difference proofs
- the idea that we are running both input FSA's in parallel
- understanding how we handle what the new accepting states should be
- LFSA closed under set complement
- the idea of not modifying the input FSA except to switch yes and no answers
Ability to see how these algorithms put together lead to a powerful string searching algorithm
Ability to read and understand “parameterized” descriptions of languages
- understanding role of variables and parameters and their “binding” or “scope”
{an bn | n > 0}: numbers of a’s and b’s are equal because n is identical
{an | n > 0} concatenate {bn | n>0} produces {anbm | n,m > 0}, not {an bn | n > 0}
Synthesis Tasks
Ability to classify a given language as regular or not regular
Ability to identify true and false statements about the class of regular languages