150 likes | 166 Views
Learn about NFAs, epsilon transitions, and the formal definitions for converting FA to NFA and back, with examples and exercises included. Discover how to prove a language is not regular using the Pumping Lemma.
E N D
Introduction to CS Theory Lecture 6 – Kleene’s Theorem, Pumping Lemma Piotr Faliszewski pf@cs.rit.edu
NFAs Formal definition δ* function, acceptance by an NFA Converting an FA to an NFA Converting an NFA to an FA NFA-ε ε-closures Previous Class
NFA We allow multiple transitions with the same label We allow missing transitions… NFA-ε We additionally allow transitions labeled with ε We can follow an ε-transition at any time, without consuming another symbol of input Consider the NFA-ε below. Does it accept aba abab aaabbb Exercise: Give NFA-ε’s for the following languages a*b*c* 0*(01)*0* Can we get NFAs for them as well? NFA’s With ε-Transitions a b a a,b ε a ε b
Def. NFA-ε M is a quintuple M = (Q, Σ, q0, A, δ) where: Q – set of states Σ – input alphabet q0 – initial state (q0 Q) A – set of accepting states (A Q) δ – transition function δ: Q (Σ {ε}) 2Q We want: δ*(q,x) = set of states that M can reach if it starts from state q and sees string x But we need to handle ε-transitions first. S – set of states ε(S) – the ε closure of S (i.e., all states reachable from S via ε-transitions). Define ε(S) properly. Now define δ*(q,x) properly. NFA-ε – Formal Definition Def.We say that a finite automaton M = (Q, Σ, q0, A, δ) accepts a string x Σ* iff δ*(q0, x) A. L(M) = set of strings accepted by M
NFA-ε’s are no weaker than NFAs Almost immediate! NFA “is” an NFA-ε with no ε-transitions Can we use NFA-ε’s instead of NFAs for free? How can we simulate the ε-transitions. NFAs versus NFA-ε’s Yes! Show how! Conclusion: NFAs, NFA-ε, and FAs are all equvialent!
Example: Conversions • Conversion to an NFA • Start state? • Transitions? • Convert • To NFA • Then to FA C 0 0 0 1 ε ε B A D
Kleene’s Theorem • Theorem • A language L is regular if and only if there is finite automaton M such that L = L(M) • Proof • Two parts • For each regular expression r there is an FA M such that L(M) = L(r) (L(r) – the set of strings described by the regular expression) • For each FA M, L(M) is regular • Proof: Mostly on the board
Kleene’s Theorem: Part 1 • Theorem • For each regular expression r there is an FA M such that L(M) = L(r) (L(r) – the set of strings described by the regular expression) • Proof • Given: Regular expression r, r is either • ε, , aΣ, or • r1r2 • r1+r2 • (r1)* • where r1 and r2 are two (smaller) regular expressions (structural induction) • In each case we can convert! • Example: Convert • (0+1)*0 • (00+1)*(10)*
Kleene’s Theorem: Part 2 • Theorem • For each FA M, L(M) is regular • Proof • Wow, this is nontrivial! Need some insight! • We will focus on the construction • Correctness: Implicit and natural. M = (Q, Σ, q0, δ, A) be an FA L(p,q) = {x | δ*(p,x) = q } L(p,q,k) = {x | δ*(p,x) = q without ever going through state with a number > k} L(p,q,||Q||) = L(p,q) How to use these definitions in an inductive proof? (Board!)
Kleene’s Theorem: Part 2 (Example) • Convert the following FA to a regular expression • That’s a LOT of work! 2 b a a b b 1 a 3
Kleene’s Theorem: Part 2 (Example) • Convert the following NFA to a regular expression • Generalized NFA method! D a,b a b b B A a C
How can we prove that a language is not regular? If a language is finite, it is regular All infinite regular languages share a certain property… Consider a regular language L and an FA M such that L = L(M) Assume M has n states. Consider a sequence of states that M goes through on an input of length n… What can you say about strings in L? Example FA Proving Languages Nonregular 2 b a a b b 1 a 3
Theorem (The Pumping Lemma) Let L be a regular language. There is an integer n such that for any x L with |x| n there are strings u, v, w such that x = uvw |uv| ≤ n |v| > 0 For each m 0, uvmw L Applications of the pumping lemma Showing that some language is not regular Prove that for this language the pumping lemma does not hold Just because the pumping lemma holds does not mean that the language is regular! The Pumping Lemma
Proving a Language Nonregular Set L = {aibi | i N }. Goal: Show that L is not regular. Proof. (by contradiction) Suppose that L is regular. Thus, pumping lemma holds for L and there exists an n such that for each string x in L, |x| > n, there are strings u, v, w such that • x = uvm, • |uv| ≤ n • |v| > 0 • For each m 0, uvmw L Pick x = anbn. The pumping lemma implies however that for some j 1 it holds that an+jbn is in L! But this is false. A contradiction..
Nonmechanical elements of a “pumping lemma”-based nonregularity proof Choose x of length at least n. Choose m (often 0 or 2, never 1) Derive the contradiction Some examples: L1 = {ai | i is a square} L2 = {ai | i is prime} L3 = {ww | w Σ*} L4 = {w | w has an equal number of a’s and b’s} Steps of a “Pumping Lemma” Proof