Announcement Career Fair Strings and Languages Wednesday, September 27th 10am -- 4pm Gordon Field House http://www.rit.edu/co-op/careers Announcement What did the witch say? We’re looking for a few good programmers! “It is always best to start at the ACM Programming Contest beginning” Teams up to 3 people Local Tryouts: Sept 22nd at 5pm (ICL4) -- Glynda, the good witch of the North Free food will be served Contact : Paul Tymann (ptt@cs.rit.edu) By Sept 18th (if interested) http://www.cs.rit.edu/~icpc What is a Language? What is a string? A string over Σ is a finite sequence A language is a set of strings made of of (possibly empty) of elements of Σ . symbols from a given alphabet. λ denotes the null string , the string with An alphabet is a finite set of symbols (usually denoted by Σ ) no symbols. Examples of alphabets: Example strings over {a, b} {0, 1} λ , a, aa, bb, aba, abbba { α , β , χ , δ , ε , φ , γ , η } NOT strings over {a, b} {a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t , u, v, aaaa…., abca w, x, y, z} {a} 1
The length of a string Strings and languages For any alphabet Σ , the set of all strings The length of a string x , denoted | x |, is over Σ is denoted as Σ * . the number of symbols in the string A language over Σ is a subset of Σ * Example: Example |abbab| = 5 {a,b} * = { λ , a, b, aa, bb, ab, ba, aaa, bbb, baa, …} |a| = 1 Example Languages over {a,b} |bbbbbbb| = 7 { λ , a, b, aa, bb} ∅ | λ | = 0 {x ∈ {a,b} * | |x| = 8} {x ∈ {a,b} * | |x| is odd} {x ∈ {a,b} * | n a (x) = n b (x)} { λ } {x ∈ {a,b} * | n a (x) =2 and x starts with b} Concatenation of String Some string related definitions For x , y ∈ Σ * x is a substring of y if there exists w,z ∈ Σ * (possibly λ ) such that y = wxz. xy is the concatenation of x and y . car is a substring of carnage , descartes , x = aba, y = bbb, xy=ababbb vicar , car , but not a substring of charity. For all x , λ x = x λ = x x is a suffix of y if there exists w ∈ Σ * x i for an integer i, indicates concatenation such that y = wx . of x, i times x is a prefix of y if there exists z ∈ Σ * x = aba, x 3 = abaabaaba such that y = xz . For all x, x 0 = λ Operations on Languages Concatenation of Languages Since languages are simply sets of If L 1 and L 2 are languages over Σ * strings, regular set operations can be L 1 L 2 = { xy | x ∈ L 1 and y ∈ L 2 } applied: Example: For languages L 1 and L 2 over Σ * L 1 = {hope, fear} L 1 ∪ L 2 = all strings in L 1 or L 2 L 2 = {less, fully} L 1 ∩ L 2 = all strings in both L 1 and L 2 L 1 L 2 = {hopeless, hopefully, fearless, L 1 – L 2 = strings in L 1 that are not in L 2 fearfully} L’ = Σ * – L 2
Concatenation of Languages Kleene Star Operation If L is a language over Σ * The set of strings that can be obtained by concatenating any number of elements of a L k is the set of strings formed by language L is called the Kleene Star, L * concatenating elements of L, k times. � Example: L * U L i L 0 L 1 L 2 L 3 L 4 ... = = � � � � L = {aa, bb} i 0 = L 3 = {aaaaaa, aaaabb, aabbaa, aabbbb, Note that since, L * contains L 0 , λ is an bbbbbb, bbbbaa, bbaabb, bbaaaa} element of L * L 0 = { λ } Kleene Star Operation Specifying Languages The set of strings that can be obtained by How do we specify languages? concatenating one or more elements of a If language is finite, you can list all of its language L is denoted L + strings. + U L = {a, aa, aba, aca} � i 1 2 3 4 L L L L L L ... = = � � � Using basic Language operations i 1 L= {aa, ab} * ∪ {b}{bb} * = Descriptive: L = {x | n a (x) = n b (x)} Specifying Languages Recursive Definitions Next we will define how to specify Definition is given in terms of itself languages recursively Example (factorial) 4! = 4 * 3! } = 4 * (3 * 2!) In future classes, we will describe how ! { 1 if n 0 = to specify languages by defining a n = 4 * (3 * (2 * 1!)) = n * ( n 1 )! otherwise � mechanism for generating the language = 4 * (3 * (2 * (1 * 0!))) = 4 * (3 * (2 * (1 * 1)))) Any questions? = 24 3
Recursive Definitions and Languages Recursive Definitions and Languages Languages can also be described by Example: using a recursive definition Recursive definition of Σ * 1. Initial elements are added to your set (BASIS) λ ∈ Σ * 1. 2. Additional elements are added to your set For all x ∈ Σ * and all a ∈ Σ , xa ∈ Σ * by applying a rule(s) to the elements 2. already in your set (INDUCTION) Nothing else is in Σ * unless it can be 3. 3. Complete language is obtained by obtained by a finite number of applying step 2 infinitely applications of rules 1 and 2. Recursive Definitions and Languages Recursive Definitions and Languages Let’s iterate through the rules for Σ = {a,b} Example: i=0 Σ * = { λ } Recursive definition of L * i=1 Σ * = { λ , a, b} i=2 Σ * = { λ , a, b, aa, ab, ba, bb} 1. λ ∈ L * i=3 Σ * = { λ , a, b, aa, ab, ba, bb, aaa, aab, aba, 2. For all x ∈ L and all y ∈ L, xy ∈ L * abb, baa, bab, bba, bbb} 3. Nothing else is in L * unless it can be obtained by a finite number of applications of rules 1 and 2. …and so on Recursive Definitions – another Recursive Definitions and Languages Example Let’s iterate through the rules for L = {aa,bb} Example: Palindromes i=0 L * = { λ } A palindrome is a string that is the same i=1 L * = { λ , aa, bb} read left to right or right to left i=2 L * = { λ , aa, bb, aaaa, aabb, bbbb, bbaa} First half of a palindrome is a “mirror i=3 L * = { λ , aa, bb, aaaa, aabb, bbbb, bbaa, image” of the second half aaaaaa, aaaabb, aabbaa, aabbbb, bbbbaa, bbbbbb, …} Examples: a, b, aba, abba, babbab. …and so on 4
Recursive Definitions – another Recursive Definitions – another Example Example Recursive definition for palindromes Let’s iterate through the rules for pal over Σ = {a,b} (pal) over Σ i=0 pal = { λ , a, b} λ ∈ pal 1. i=1 pal = { λ , a, b, aa, bb, aaa, aba, bab, bbb} For any a ∈ Σ , a ∈ pal 2. i=2 pal = { λ , a, b, aa, bb, aaa, aba, bab, bbb, For any x ∈ pal and a ∈ Σ , axa ∈ pal aaaa, baab, abba, bbbb, aaaaa, aabaa, ababa, 3. abbba, baaab, ababa, bbabb, bbbbb} No string is in pal unless it can be 4. obtained by rules 1-3 Structural Induction Recursive Definitions and Languages Questions on Recursive Definition? When dealing with languages, it is sometime cumbersome to restate the problems in terms of an integer. Functions on strings and languages can For languages described using a also be defined recursively. recursive definition, another type of induction, structural induction, is useful. Structural Induction Structural Induction Principles Then Suppose To prove that every element of L has U is a set, some property P, it is sufficient to show: I is a subset of U (BASIS), Every element of I has property P 1. Op is a set of operations on U (INDUCTION). The set of elements of L having property P is 2. L is a subset of U defined recursively as closed under Op follows: I ⊆ L #2: If x ∈ L has property P, Op(x) also must L is closed under each operation in Op L is the smallest set satisfying 1 & 2 have property P 5
Structural Induction Structural Induction Principles Consider this recursive definition of a language L Suppose λ ∈ L U is a set U = {0,1} * 1. For any x ∈ L, both 0 x and 0 x 1 ∈ L I is a subset of U, I = { λ } 2. No strings are in L unless it can be obtained using Op is a set of ops on U. Op = {0x, 0x1} 3. rules 1-2. L is a subset of U defined recursively as And: follows: A = {x ∈ {0,1} * | x = 0 i 1 j and i ≥ j ≥ 0} I ⊆ L Show L ⊆ A by structural induction L is closed under each operation in Op L is the smallest set satisfying 1 & 2. Structural Induction Structural Induction To prove that every element of L has To prove that every element of L has some property P, it is sufficient to show: some property P: 1. Every element of I has property P Our property is: In our case, must show that λ has property P, A = {x ∈ {0,1} * | x = 0 i 1 j and i ≥ j ≥ 0} I.e. λ ∈ A, λ = 0 i 1 j , i ≥ j ≥ 0 P(x) is true if x ∈ A. Once again, this is the case where i=j=0 Structural Induction Structural Induction 2. The set of elements of L having property P is closed Questions? under Op If x ∈ L has property P, Op(x) also must have property P Assume x has property P, x ∈ A, x = 0 i 1 j , i ≥ j ≥ 0 Op1(x) = 0x, which is an element of A Op2(x) = 0x1 which is an element of A Similar proof to induction with no mention of an integer 6
Recommend
More recommend