01 / 74Chapter 3 Regular Expressions and Languages
1 / 17
Télécharger la présentation
Chapter 3 Regular Expressions and Languages
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation
Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement.Téléchargez la présentation en cliquant sur ce lien.Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.
3.1 Regular Expressions • Use of Regular expressions • The regular expression is a kind of generator for languages. • It offers a “declarative” way of expressing strings of symbols. • It defines all and only regular languages (a theorem).
3.1 Regular Expressions • Applications of Regular expressions • Used as commands for finding strings in Web browsers or text-formatting systems (such as UNIX grep commands)* • Used as lexical analyzer generator (such Lex or Flex) • A lexical analyzer breaks source programs into “tokens” (keywords, identifiers, signs, …) • The grep command searches files or standard input globally for lines matching a given regular expression, and prints them to the program's standard output.
3.1 Regular Expressions • Operators of Regular Expressions • Review of three operations on languages L and M: • Union --- L∪M = {x | xL or xM} • Concatenation --- LM = {xy | xL, yM} • Example --- L0 = {e}, L1 = L, L2 = LL, … • Closure (or star, or Kleene closure) --- L* = L0∪L1∪L2∪...
3.1 Regular Expressions • Example 3.1 --- (language) • f* = {e} because f0 = {e}. • If L = {0, 1}, then L0 = {e}, L1 = L, L2 = {00. 01, 10, 11}, … • If L is the set of all strings of 0’s, then it can be proved that L* is L itself (see the textbook for the proof).
3.1 Regular Expressions • 3.1.2 Building Regular Expressions • Recursive definition of a regular expression (RE)E and the language which it defines, L(E): • Basis: • Constants e and f are RE’s, defining languages {e} and f, respectively L(e) = {e}, L(f) = f. • If a is a symbol, then a is an RE, defining the language {a} L(a) = {a}. (note: ais of bold face) • A variable like L (capitalized and italic) represents any language.
3.1 Regular Expressions • 3.1.2 Building Regular Expressions • Recursive definition of an RE (cont’d): • Induction: given two RE’s E and F, then • E + F is an RE such that L(E + F) = L(E)∪L(F) (union) • EF is an RE such that L(EF) = L(E)L(F) (concatenation) • E* is an RE such that L(E*) = (L(E))*(closure) • (E) is an RE such that L((E)) = L(E) (parenthesization).
3.1 Regular Expressions • Examples (supplemental)(1/4) • RE F = 1 “expresses” the language L(1) = {1}. • RE E = 1* • Language expressed by E --- L = L(E) = L(1*) = (L(1))* = ({1})* (closure of language) = {e, 1, 11, 111, 1111, …} = {1n | n 0}
3.1 Regular Expressions • Examples (supplemental)(2/4) • RE G = 01* • Language expressed by G --- L = L(G) = L(01*) = L(0)L(1*) (concatenation) = {0}{e, 1, 11, 111, 1111, …} = {0, 01, 011, 0111, …} = {01n | n 0}
3.1 Regular Expressions • Examples (supplemental)(3/4) • RE H = 1 + 01* • Language expressed by H --- L = L(H) = L(1 + 01*) = L(1) U L(01*) = {1} U {0, 01, 011, 0111, …} = {1, 0, 01, 011, 0111, …} = {1}U{01n | n 0}
3.1 Regular Expressions • Examples (supplemental)(4/4) • RE K = e + a* • Language expressed by K --- L = L(K) = L(e + a*) = L(e) UL(a*) = {e} U {e, a, aa, aaa, …} = {e, a, aa, aaa, …} = L(a*) That is, we have the following RE equalities: e + a* = a* = a* +e
3.1 Regular Expressions • Example 3.2 • An RE defining a language of strings of alternating 0’s and 1’s (including none) is one of the two below: • (01)* + (10)* + 0(10)* + 1(01)* (0…1 1…0 0…0 1…1) • (e + 1)(01)*(e + 0) (Why? See the textbook.)
3.1 Regular Expressions • 3.1.3 Precedence of RE operators • Precedence • Highest --- * (closure) • Next--- . (concatenation) (left to right) • Last--- + (union) (left to right) • Use parentheses anywhere to resolve ambiguity
3.1 Regular Expressions • 3.1.3 Precedence of RE operators • Example 3.3: Three ways to interpret 01* + 1: • (0(1*)) + 1 by precedence above (= 01* + 1) • (01)* + 1 (another meaning) • 0(1* + 1) (a third meaning)
3.2 FA’s & RE’s • Theorems to be proved: • Every language defined by a DFA is also defined by an RE. • Every language defined by an RE is also defined by an e-NFA.
3.2 FA’s & RE’s • Relations of theorems (yellow lines are to be proved): NFA e-NFA RE DFA
3.2 FA’s & RE’s • 3.2.1 From DFA’s to RE’s • Theorem 3.4: If L = L(A) for some DFA A, then there is an RE R such that L = L(R). Proof. • Prove by constructing progressively string sets defined by a certain RE formRij(k)until the entire set of acceptable strings (i.e., language L(A)) is obtained. • Assume the states are {1, 2, ..., n} (1 is the start state).
3.2 FA’s & RE’s • Meaning of Rij(k) --- • RE Rij(k) is used to denote the set of strings w such that • Each w is the label of a path from state i to state j in DFA A; • the path has nointermediate node whose number is larger than k.
3.2 FA’s & RE’s • Meaning of Rij(k) --- • T construct Rij(k), we use induction, starting at k = 0 and stop at k = n (the largest state number). • Then, when k = n, i =1, and j specifies an accepting state, then Rij(k) defines a set of strings accepted by DFA A, with each string forming a path starting from the start state to the accepting state.
3.2 FA’s & RE’s • Meaning of Rij(k) --- Basis: • when k = 0, all state numbers 1, and so there is no intermediate state in path i to j, leading to 2 cases: (1) an arc (a transition) from i to j; (2) a path from i to i itself.
3.2 FA’s & RE’s • Meaning of Rij(k) --- Basis (cont’d): • If ij, only (1) is possible, leading to 3 cases: • no symbol for such a transition Rij(0) = f • one symbol a for the transition Rij(0) = a • multiple symbls a1, a2, ..., am for the transition, Rij(0) = a1 + a2 + ... + am
qi qj a qi qj a1+…+am qi qj 3.2 FA’s & RE’s • Meaning of Rij(k)(supplemental) --- Basis (cont’d) ij: • Rij(0) = f • Rij(0) = a • Rij(0) = a1 + a2 + ... + am
3.2 FA’s & RE’s • Meaning of Rij(k) --- Basis (cont’d): • If i=j, only (2) is possible, which means there exists at least a path e from i to i itself, in addition to the 3 cases: • no symbol for such a transition Rij(0)= e • one symbol a for the transition Rij(0)= e + a • multiple symbls a1, a2, ..., am for the transition, Rij(0) = e + a1 + a2 + ... + am
qi qi e+a1+…+am 3.2 FA’s & RE’s • Meaning of Rij(k)(supplemental) --- Basis (cont’d) i=j: • Rij(0) = e • Rij(0) = e + a • Rij(0) = e + a1 + a2 + ... + am e e + a qi
3.2 FA’s & RE’s Induction (to compute Rij(k)): • Suppose there is a path from i to j that goes through no state numbered higher than k. Then, two cases should be considered: • (1) the path does not go through k Rij(k-1) • (2) the path goes through k at least once, then the path may be broken into 3 pieces: • through i to k without passing k Rik(k-1) • from k to k itself (Rkk(k-1))* (recusive); • from k to j without passing k Rkj(k-1).
(Rkk(k-1))* … circulating zero or more times … … i j k Rkj(k-1) Rik(k-1) 3.2 FA’s & RE’s • Illustration of paths represented by Rij(k):
3.2 FA’s & RE’s Induction (cont’d): • The three pieces are concatenated to be Rik(k-1)(Rkk(k-1))*Rkj(k-1). • Combining (1) & (2), we get the RE defining “all the paths from i to j that go through no state higher than k” as Rij(k) = Rij(k-1) + Rik(k-1)(Rkk(k-1))*Rkj(k-1).
3.2 FA’s & RE’s Induction (cont’d): • ConstructingRik(k)in the order of k until k = n for i = 1 • For each accepting state jk, we can get the union below as the result R1j1(n) +R1j2(n)+ ... +R1jm(n) where {j1, j2, ..., jm} are the set of final states, F. (End of proof of thereom)
0, 1 1 0 start 1 2 3.2 FA’s & RE’s • Example 3.5 • Convert the following DFA into an RE. • Rij(0) may be constructed to be (details in the next page):
0, 1 1 0 start 1 2 3.2 FA’s & RE’s • Example 3.5 (cont’d) • R11(0) = e + 1 because d(1, 1) = 1 & going back to itself • R12(0) = 0 because d(1, 0) = 2 (going out to state 2) • R21(0) = f because there is no path from state 2 to 1 • R22(0) = (e + 0 + 1) because d(2, 0) = 2 & d(2, 1) = 2 & going back to itself
0, 1 1 0 start 1 2 3.2 FA’s & RE’s • Example 3.5 (cont’d) • We can then compute all Rij(k) for k=1 & k=2. • However, we may alternatively compute onlynecessary terms of Rij(k) backward from the final states, to save time.
3.2 FA’s & RE’s • Example 3.5 (cont’d) • There is only one final state 2, so only have to compute R12(2) = R12(1) + R12(1)(R22(1))*R22(1). • Only have to compute R12(1) and R22(1), without computing R21(1) and R11(1). • To compute each of these terms, we need some RE equalities to simplify intermediate results.
3.2 FA’s & RE’s • Some equalities (R is an RE): • fR=Rf=f (f=annihilator for concatenation) • f + R = R + f = R (f=identity for union) • eR = Re = R (e = identity for concatenation) • (e + a)* = a* =(a + e)* • (e + a)a* = (ea* + aa*) = a* + a+ = a* a*(e + a) = (a*e + a*a) = a* + a+ = a* (all provable by easy deduction)
3.2 FA’s & RE’s • To compute R12(2) = R12(1) + R12(1)(R22(1))*R22(1) • R12(1) = R12(0) + R11(0)(R11(0))*R12(0) = 0 + (e + 1)(e + 1)*0 (by substitutions) = 0 + (e + 1)1*0 (by 4. in last page) = 0 + 1*0 (by 5.) = (e + 1*)0 (by distributive law) = 1*0 (by 4.)
0, 1 1 0 start 1 2 3.2 FA’s & RE’s • Check the correctness of the final result R12(2)= 1*0(0 + 1)* correct (by looking at the diagram directly)! • The above method also works for NFA ande-NFA.
R11 R11+ Q1S*P1 q2 q1 q2 q1 S . . . Q1 P1 . . . . . . . . . s Fig. 3.8 (partial) Fig. 3.7 (partial) 3.2 FA’s & RE’s • 3.2.2 Converting DFA’s to RE’s by Eliminating States --- another way • Step 1 – regard symbols on arcs as RE’s • Step 2 – conduct the following conversion • Step 3 – collect RE’s for all the final states (for a complete diagram of this, see textbook)
U R S Fig. 3.9 q q0 start T 3.2 FA’s & RE’s • Details of Step 3: (1) For each final state q, eliminate all states as above except the start state q0. (2) If qq0, then a 2-state automaton is left as follows: Corresponding RE is (R+SU*T)*SU* (provable by the first method)
R q0 Fig. 3.10 start 3.2 FA’s & RE’s (3) If q = q0, then perform one more state elimination to eliminate q, leaving only the start state q0 as follows (see an example in the next page): The corresponding RE is R*. (4)Collect the result for each final state derived as above to get the final result.
V X Y q q0 Z R11+ Q1S*P1 =X+YV*Z R11=X q0 q0 q0 q0 S= V . . . . . . . . . Q1=Y P1=Z . . . start s Fig. 3.7 (partial) Fig. 3.8 (partial) 3.2 FA’s & RE’s • An example of Case (3) in the last page (supplemental) • Regard q0 as two separate states, q as s, and apply Figs. 3.7 & 3.8 to eliminate q1 as follows:
R=X + YV*Z start q0 3.2 FA’s & RE’s • An example of Case (3) in the last page (supplemental) (cont’d) • Use the result R11 + Q1S*P1 = X + YV*Z as R in Fig. 3.10 like the following: • And the final result is R* = (X + YV*Z)*. • This will be used in your homework.
0, 1 1 0 start 1 U R 2 S q2 q1 start T 3.2 FA’s & RE’s • Example 3.5 revisited • Use the derivation for 2-state automaton described previously directly to be (R+SU*T)*SU* = (1 + 0(0 + 1)*f)*0(0 + 1)* = 1* 0(0 + 1)*correct!
0, 1 1 0, 1 0, 1 start A 0 + 1 B C D C B D 1 0 + 1 0 + 1 start A 3.2 FA’s & RE’s • Example 3.6 • Step 1: regard all symbols on the arcs as RE’s, we get
0 + 1 0 + 1 C B D R11 R11+ Q1S *P1 q1 q2 q2 q1 S . . . . . . . . . Q1 P1 . . . s 3.2 FA’s & RE’s • Example 3.6 • Step 2: to remove B, use the following conversion we get s = B, q1 = A, q2 = C, S = f, Q1 = 1, P1 = 0 + 1, R11 = f, so R11 + Q1S*P1 = f + 1f*(0 + 1) = 1e(0 + 1) = 1(0 + 1) 0 + 1 1 start A
0 + 1 0 + 1 1(0 + 1) start A D C R11 R11+ Q1S *P1 q1 q2 q2 q1 S . . . . . . . . . Q1 P1 . . . s 3.2 FA’s & RE’s • Example 3.6 (cont’d) • For final state D, we have to remove C further, resulting in s = C, q1 = A, q2 = D, S = f, Q1 =1(0 + 1), P1 =0 + 1, R11= f, so R11 + Q1S*P1 = f + 1(0 + 1)f*(0 + 1) = 1(0 + 1)(0 + 1)
0 + 1 1(0 + 1)(0 + 1) start A U R D S q2 q1 start T 3.2 FA’s & RE’s • Example 3.6 (cont’d) • By the following conversion, we get • R = (0 + 1), q1 =A, q2 =D, S = 1(0 + 1)(0 + 1),T = f, U= f so (R+SU*T)*SU*= (0+1+1(0 + 1)f*f)*(1(0 + 1)(0 + 1)) f* = (0 + 1)*1(0 + 1)(0 + 1)
0 + 1 0 + 1 1(0 + 1) start A C D R11 R11+ Q1S *P1 q1 q2 q2 q1 S . . . . . . . . . Q1 P1 . . . s 3.2 FA’s & RE’s • Example 3.6 (cont’d) • For the other final state C, starting from the following diagram We have to eliminate D by the following diagram
0 + 1 U R C 1(0 + 1) start A S q2 q1 start T 3.2 FA’s & RE’s • Example 3.6 (cont’d) • Since D has no successor (and C before it is a final state), deleting D has no effect to the other parts, resulting in the following diagram. And by the following conversion, we get (R+SU*T)*SU*= (0 + 1 + 1(0 + 1)f*f)*(1(0 + 1)) f* = (0 + 1)*1(0 + 1)
Connexion au compte
Connectez-vous pour publier votre contenu sur SlideServe.