Regular Expressions

32
Regular Expressions Regular Expressions Section 1.3 (also 1.1, 1.2) CSC 4170 heory of Computatio

description

CSC 4170 Theory of Computation. Regular Expressions. Section 1.3 (also 1.1, 1.2). 1.3.a. Union: L1  L2 = {x | xL1 or xL2} {Good,Bad}  {Boy,Girl} = {0,00,000,…}  {1,11,111,…} = L  = Concatenation: L1  L2 = {xy | xL1 and yL2} {Good,Bad}  {Boy,Girl} = - PowerPoint PPT Presentation

Transcript of Regular Expressions

Page 1: Regular Expressions

Regular ExpressionsRegular Expressions

Section 1.3(also 1.1, 1.2)

CSC 4170

Theory of Computation

Page 2: Regular Expressions

Regular operations1.3.a

Union: L1 L2 = {x | xL1 or xL2} {Good,Bad} {Boy,Girl} =

{0,00,000,…} {1,11,111,…} =

L =

Concatenation: L1 L2 = {xy | xL1 and yL2}

{Good,Bad}{Boy,Girl} =

{0,00,000,…}{1,11,111,…} =

L =

Star: L* = {x1…xk | k0 and each xiL}

{Boy,Girl}* =

{0,00,000,…}* =

* =

Page 3: Regular Expressions

Regular expressions1.3.b

We say that R is a regular expression (RE) iff R is one of the following:

1. a, where a is a symbol of the alphabet

2.

3.

4. (R1)(R2), where R1 and R2 are RE

5. (R1) (R2), where R1 and R2 are RE

6. (R1)*, where R1 is a RE

What language is represented by the expression:

{a}

{}

The union of the languages represented by R1 and R2The concatenation of the languages represented by R1 and R2The star of the language represented by R1

Conventions: The symbol is often omitted in RE Some parentheses can be omitted. The precedence order for the operators is:

* (highest), (medium), (lowest)

Page 4: Regular Expressions

Regular languages1.3.c

A language is said to be regular iff it can be represented by a regular expression.

Language Expression

{11}

{Boy, Girl, Good, Bad}

{,0,00,000,0000,…}

{0,00,000,0000,…}

{,01,0101,010101,01010101,…}

{x | x = 0k where k is a multiple of 2 or 3}

{x | x is divisible by 8}

{x | x MOD 4 = 3}

Page 5: Regular Expressions

Exercising reading regular expressions1.3.d

Expression Language

0*10*

(Good Bad)(Boy Girl)

(Tom Bob)_is_(good bad)

{Name_is_adjective | Name is an uppercaseletter followed by zero or more lowercase letters, and adjective is a lowercase letterfollowed by zero or more lowercase letters}

(0 1)*101(0 1)*

((0 1)(0 1))*

Page 6: Regular Expressions

Regular languages and DFA-recognizable languages are the same

1.3.e

Theorem 1.54* A language is regular if and only if some NFA (DFA) recognizes it. In other words,

a) [The “only if” part] For every regular expression there is an NFA that recognizes exactly the language represented by that expression.

b) [The “if” part] For every NFA there is a regular expression that represents exactly the language recognized by that NFA.

Page 7: Regular Expressions

Constructing an NFA from a regular expression: Base cases1.3.f

Case of a, where a is a symbol of the alphabet.

Case of

Case of

Page 8: Regular Expressions

Constructing an NFA from a regular expression: Case of union

1.3.g

Case of (R1)(R2), where R1 and R2 are RE

First, construct NFAs N1 and N2 from R1 and R2:

s1

N1

N2

s2

Then, combine them in the following way:

s1

N1

N2

s2

Page 9: Regular Expressions

Constructing an NFA from a regular expression: Case of concatenation

1.3.h

Case of (R1) (R2), where R1 and R2 are RE

First, construct NFAs N1 and N2 from R1 and R2:

N1

s2

N2

Then, combine them in the following way:

N1

s2

N2

s1

s1

Page 10: Regular Expressions

Constructing an NFA from a regular expression: Case of star

1.3.i

Case of (R1)*, where R1 is a RE

First, construct an NFA N1 from R1:

s1N1

Then, extend it in the following way:

s1N1

Page 11: Regular Expressions

Constructing an NFA from a regular expression: An example

1.3.j

#(0 1)*(0 1)*

#

0 1

0

1

0

1

#

# 01 1

Page 12: Regular Expressions

GNFA1.3.k

great

(great)*

grand mother father

grand

g r e a t g r e a t g r e a t g r a n d f a t h e r

Page 13: Regular Expressions

About -transitions1.3.l

great

(great)*

grand mother father

grand

Adding or removing -transitions does not change the recognized language

Page 14: Regular Expressions

The same GNFA simplified1.3.m

great

grand mother father

Page 15: Regular Expressions

Ripping a state out1.3.n

mother fathergrand (great)*

Page 16: Regular Expressions

Eliminating parallel transitions1.3.o

mother father (great)*grand

Page 17: Regular Expressions

Again ripping out 1.3.p

( (great)*grand) (mother father)

Page 18: Regular Expressions

How, exactly, to do ripping out 1.3.q1

Assume, we are ripping out the state r from a GNFA that has no parallel transitions.

Let L be the label of the loop from r to r (if there is no loop, then L=).

L

T

R

S

Page 19: Regular Expressions

How, exactly, to do ripping out 1.3.q2

Assume, we are ripping out the state r from a GNFA that has no parallel transitions.

Let L be the label of the loop from r to r (if there is no loop, then L=).

1. For every pair s1,s2 of states such that there is an E1-labeled transition from s1 to r and an E2-labeled transition from r to s2, add an R1L*R2-labeled transition from s1 to s2;

L

T

R

S

RL*T

SL*T

Page 20: Regular Expressions

How, exactly, to do ripping out 1.3.q3

Assume, we are ripping out the state r from a GNFA that has no parallel transitions.

Let L be the label of the loop from r to r (if there is no loop, then L=).

1. For every pair s1,s2 of states such that there is an E1-labeled transition from s1 to r and an E2-labeled transition from r to s2, add an R1L*R2-labeled transition from s1 to s2;

2. Delete r together with all its incoming and outgoing transitions.

RL*T

SL*T

Page 21: Regular Expressions

How, exactly, to eliminate parallel transitions 1.3.r

Whenever you see parallel transitions labeled with R1 and R2,

Replace them by a transition labeled with R1R2.

R1

R2

R1R2

Repeat until there are no parallel transitions remaining.

Page 22: Regular Expressions

From NFA to RE 1.3.s

a

b

b

b

Page 23: Regular Expressions

From NFA to RE: Step 1 1.3.t

Step 1: If there are incoming arrows to the start state, or the start state is an accept state, then add a new start state and connect it with an -arrow to the old start state.

a

b

b

b

a

Page 24: Regular Expressions

From NFA to RE: Step 2 1.3.u

a

b

b

b

Step 2: If there are more than one, or no, accept states, or there is an accept state that has outgoing arrows, then add a new accept state, make all the old accept states non-accept states and connect each of them with an -arrow to the new accept state.

a

Page 25: Regular Expressions

From NFA to RE: Step 3 1.3.v

a

b

b

b

Step 3: Eliminate all parallel transitions.

a

Page 26: Regular Expressions

From NFA to RE: Step 4 1.3.w1

b

b

Step 4: While there are internal states (states that are neither the start nor the accept state), do the following:

Step 4.1: Select an internal state and rip it out;Step 4.2: Eliminate all parallel transitions.

a

b

aa

ab

Page 27: Regular Expressions

From NFA to RE: Step 4 1.3.w2

b

baa

Step 4: While there are internal states (states that are neither the start nor the accept state), do the following:

Step 4.1: Select an internal state and rip it out;Step 4.2: Eliminate all parallel transitions.

a

b

ab

Page 28: Regular Expressions

From NFA to RE: Step 4 1.3.w3

Step 4: While there are internal states (states that are neither the start nor the accept state), do the following:

Step 4.1: Select an internal state and rip it out;Step 4.2: Eliminate all parallel transitions.

b

a(baa)*

b(baa)*

b(baa)*ab

a(baa)*ab

Page 29: Regular Expressions

From NFA to RE: Step 4 1.3.w4

Step 4: While there are internal states (states that are neither the start nor the accept state), do the following:

Step 4.1: Select an internal state and rip it out;Step 4.2: Eliminate all parallel transitions.

a(baa)*

b(baa)*

b(baa)*ab

ba(baa)*ab

Page 30: Regular Expressions

From NFA to RE: Step 4 1.3.w5

Step 4: While there are internal states (states that are neither the start nor the accept state), do the following:

Step 4.1: Select an internal state and rip it out;Step 4.2: Eliminate all parallel transitions.

a(baa)*

(b a(baa)*ab) (b(baa)*ab)* ( b(baa)*)

Page 31: Regular Expressions

From NFA to RE: Step 4 1.3.w6

Step 4: While there are internal states (states that are neither the start nor the accept state), do the following:

Step 4.1: Select an internal state and rip it out;Step 4.2: Eliminate all parallel transitions.

((b a(baa)*ab) (b(baa)*ab)* ( b(baa)*)(a(baa)*)

Page 32: Regular Expressions

From NFA to RE: Step 5 1.3.x

Step 5: Return the label of the only remaining arrow (if there is no arrow, return ).

Claim: The resulting RE represents exactly the language recognized by the original NFA. This completes the proof of Theorem 1.54.

((b a(baa)*ab) (b(baa)*ab)* ( b(baa)*)(a(baa)*)

((b a(baa)*ab) (b(baa)*ab)* ( b(baa)*)(a(baa)*)