regular languages a language is regular over if it can be built from ;, { }, and { a } for every a...

19
Regular Languages A language is regular over if it can be built from ;, { }, and { a } for every a 2 , using operators union ( [ ), concatenation ( . ) and Kleene star ( * ). Example : ( { a } [ { b } ) * { a } { a } ( { a } [ { b } ) * [ ( { a } [ { b } )* { b } { b } ( { a } [ { b } ) * [Section 3.1]

Upload: arline-woods

Post on 24-Dec-2015

230 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Regular Languages A language is regular over  if it can be built from ;, {  }, and { a } for every a 2 , using operators union ( [ ), concatenation

Regular Languages

A language is regular over if it can be built from ;, { }, and { a } for every a 2 , using operators union ( [ ), concatenation ( . ) and Kleene star ( * ).

Example : ( { a } [ { b } )* { a } { a } ( { a } [ { b } )* [

( { a } [ { b } )* { b } { b } ( { a } [ { b } )*

[Section 3.1]

Page 2: Regular Languages A language is regular over  if it can be built from ;, {  }, and { a } for every a 2 , using operators union ( [ ), concatenation

Regular Languages

A language is regular over if it can be built from ;, { }, and { a } for every a 2 , using operators union ( [ ), concatenation ( . ) and Kleene star ( * ).

Example : ( { a } [ { b } )* { a } { a } ( { a } [ { b } )* [

( { a } [ { b } )* { b } { b } ( { a } [ { b } )^*

Simplify as :

[Section 3.1]

Page 3: Regular Languages A language is regular over  if it can be built from ;, {  }, and { a } for every a 2 , using operators union ( [ ), concatenation

A language is regular over if it can be built from ;, { }, and { a } for every a 2 , using operators union ( [ ), concatenation ( . ) and Kleene star ( * ).

Recursive definition of regular languages over :

[Section 3.1]Regular Languages

Page 4: Regular Languages A language is regular over  if it can be built from ;, {  }, and { a } for every a 2 , using operators union ( [ ), concatenation

Recursive definition of regular expressions over :

1) ;, { }, and { a } for every a 2 are regular languages

represented by regular expressions __, __, __, respectively.

2) If L1, L2 are regular languages represented by regular

Expressions r1 and r2, then L1 [ L2, L1L2, and L1* are

regular languages represented by regular expressions _____,

_____, _____, respectively.

3) No other expressions are regular expressions.

[Section 3.1]Regular Expressions

Page 5: Regular Languages A language is regular over  if it can be built from ;, {  }, and { a } for every a 2 , using operators union ( [ ), concatenation

Regular Expressions

Comments :

- For convenience, we will also use r+ and ri for i 2 N.

- The priority of operators in decreasing order : Kleene’s star, concatenation, union.

Parenthesize :

a + b*c

a + bc*

[Section 3.1]

Page 6: Regular Languages A language is regular over  if it can be built from ;, {  }, and { a } for every a 2 , using operators union ( [ ), concatenation

Regular Expressions

Simplify the following regular expressions :

- a*(a+)

- a*a*

- (a*b*)*

- (a+b)*ab(a+b)* + a*b*

[Section 3.1]

Page 7: Regular Languages A language is regular over  if it can be built from ;, {  }, and { a } for every a 2 , using operators union ( [ ), concatenation

Regular Expressions

Give a regular expression for each of the following :

- the language of all strings over {a,b} of even length,

- the language of all strings over {a,b,c} in which all a’s precede all b’s,

- the language of all strings over {a,b} with length greater than 3,

- the language of all odd-length strings over {a,b} containing the string bb,

- the language of all strings over {a,b} that do not contain the string aaa.

Is the language { akbk | k 2 N } regular ?

[Section 3.1]

Page 8: Regular Languages A language is regular over  if it can be built from ;, {  }, and { a } for every a 2 , using operators union ( [ ), concatenation

Finite Automata

Our simplest model of computation :

- has a tape with input, read once from left to right

- has only a single memory register with the state

[Sections 3.2, 3.3]

Page 9: Regular Languages A language is regular over  if it can be built from ;, {  }, and { a } for every a 2 , using operators union ( [ ), concatenation

Finite Automata

Example : the language of all strings over {a,b} with an even number of a’s.

[Sections 3.2, 3.3]

Page 10: Regular Languages A language is regular over  if it can be built from ;, {  }, and { a } for every a 2 , using operators union ( [ ), concatenation

Finite Automata

More examples :

- Language of strings over {a,b} with at least 3 a’s.

- Language of strings over {a,b} containing substring aaba.

- Language of strings over {a,b} not containing substring aaba.

- Language of strings over {a,b} with even number of a’s and odd number of b’s.

[Sections 3.2, 3.3]

Page 11: Regular Languages A language is regular over  if it can be built from ;, {  }, and { a } for every a 2 , using operators union ( [ ), concatenation

Finite Automata

A (deterministic) finite automaton (FA, in some books also abbreviated as DFA) is a 5-tuple (Q,,q0,A,) where

- Q is a finite set of states

- is a finite alphabet (input symbols)

- qo 2 Q is the initial state

- A µ Q is a set of accepting states

- : Q£ Q is the transition function

[Sections 3.2, 3.3]

Page 12: Regular Languages A language is regular over  if it can be built from ;, {  }, and { a } for every a 2 , using operators union ( [ ), concatenation

Finite Automata

Comment : We saw that we can represent a finite automaton by a transition diagram.

Draw the transition diagram for ( {qa,qb}, {a,b}, qa, {qb}, ) where is given by the following table

(qa,a) qa

(qa,b) qb

(qb,a) qa

(qb,b) qb

Which strings does this FA accept ?

[Sections 3.2, 3.3]

Page 13: Regular Languages A language is regular over  if it can be built from ;, {  }, and { a } for every a 2 , using operators union ( [ ), concatenation

Finite Automata

Defining the computation of an FA M=(Q,,q0,A,).

Extended transition function * : Q£* Q :

1) For every q 2 Q, let *(q,) =

2) For every q 2 Q, y 2 *, and 2 , let *(q,y) =

We say that a string x 2 * is accepted by M if __________.

A string which is not accepted by M is rejected by M.

The language accepted by M, denoted by L(M) is the set of all strings accepted by M.

[Sections 3.2, 3.3]

Page 14: Regular Languages A language is regular over  if it can be built from ;, {  }, and { a } for every a 2 , using operators union ( [ ), concatenation

Finite Automata

Kleene’s Thm: A language L over is regular iff there exists a finite automaton that accepts L.

Recall L = { akbk | k ¸ 0 }. Is it regular ?

[Section 3.4]

Page 15: Regular Languages A language is regular over  if it can be built from ;, {  }, and { a } for every a 2 , using operators union ( [ ), concatenation

Operations on Finite Automata

Let M1 = (Q1,,q1,A1,1) and M2 = (Q2,,q2,A2,2) be two FA’s.

Union:

We know that L(M1) [ L(M2) is regular. Construct an FA M such that L(M) = L(M1) [ L(M2).

[Section 3.5]

Page 16: Regular Languages A language is regular over  if it can be built from ;, {  }, and { a } for every a 2 , using operators union ( [ ), concatenation

Operations on Finite Automata

Let M1 = (Q1,,q1,A1,1) and M2 = (Q2,,q2,A2,2) be two FA’s.

Intersection:

Is L(M1) Å L(M2) is regular ? Construct an FA M such that L(M) = L(M1) Å L(M2).

[Section 3.5]

Page 17: Regular Languages A language is regular over  if it can be built from ;, {  }, and { a } for every a 2 , using operators union ( [ ), concatenation

Operations on Finite Automata

Let M1 = (Q1,,q1,A1,1) be an FA.

Complement:

Is L(M1)’ regular ? Construct an FA M such that L(M) = L(M1)’.

[Section 3.5]

Page 18: Regular Languages A language is regular over  if it can be built from ;, {  }, and { a } for every a 2 , using operators union ( [ ), concatenation

Operations on Finite Automata

Let M1 = (Q1,,q1,A1,1) and M2 = (Q2,,q2,A2,2) be two FA’s.

Difference:

Construct an FA M such that L(M) = L(M1) - L(M2).

[Section 3.5]

Page 19: Regular Languages A language is regular over  if it can be built from ;, {  }, and { a } for every a 2 , using operators union ( [ ), concatenation

Closure Properties

We just saw that the class of regular languages is closed under union, intersection, complement, and difference.

Let L = { x2{a,b}* | x has the same number of a’s and b’s }.

Is L regular ?

[Section 3.5]