CmSc 365 Theory of Computation Study Guide for the Final Exam 1. Alphabets and languages: Formal definition of a language. 2. Regular expressions and regular languages: a. Formal definition of regular expressions. b. Given a list of regular expressions and a list of regular languages, be able to match each expression to the corresponding language c. Given a list of regular expressions and a list of strings, be able to match each expression to the corresponding string 3. Formal definition of deterministic FSAs 4. Given a regular language, be able to construct a deterministic FSA that accepts the language. 5. Formal definition of non-deterministic FSAs 6. Given a regular expression, be able to construct a non-deterministic FSA that accepts the language described by the regular expression, applying the construction rules in Theorem 2.3.1 7. Know the complexity of algorithms for deterministic FSAs and for nondeterministic FSAs. 8. Formal definition of a Context Free Grammar 9. Problems on CFG: given a grammar and a string, be able to write the derivation of that string under the grammar. 10. Formal definition of a PDA. 11. Interpretation of an element of the transition relation, i.e. given ((p, a, β),(q, γ)), state the meaning of p, a, β, q, γ , and describe the action of the PDA. 12. Formal definition of a configuration and computation of a PDA. What does it mean for a string to be accepted by a PDA? 13. Know what type of languages are accepted by PDAs. 14. Problems: Given a CFG, be able to construct the PDA that accepts the language generated by the grammar. 1 15. Problems: Given a PDA and a string be able to show the computations that accepts the string. 16. Be able to formulate the closure properties of context free languages. 17. Know what polynomial algorithms exist for context-free languages. 18. Be able to answer the following questions: Is there one-to-one correspondence between a context-free languages and CFGs? Is there an algorithm to decide if two CFGs are equivalent (accept/generate same language)? Is there an algorithm to minimize the states of a PDA? 19. Informal and formal definition of a Turing machine 20. Be able to trace the computation of a given Turing machine on a given input 21. Know what it means for a Turing machine to decide a language 22. Know what it means for a Turing machine to semi-decide a language 23. Know the definition of recursive and recursively enumerable languages 24. Know the relation between recursive and recursively enumerable languages. This means to be able to answer the following questions: Are there recursive languages that are not recursively enumerable? Are there recursively enumerable languages that are not recursive? 25. Be able to explain how we know that there are languages that cannot be decided or semi-decided by a Turing machine. 2