regular expressions

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

Upload: arav

Post on 25-Jan-2016

19 views

Category:

Documents


0 download

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

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)*)