cs 3240 – chapter 3. how would you delete all c++ files from a directory from the command line? ...

47
CS 3240 – Chapter 3

Upload: grace-simmons

Post on 19-Dec-2015

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

CS 3240 – Chapter 3

Page 2: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

How would you delete all C++ files from a directory from the command line?

How about all PowerPoint files that start with the letter a?

PowerPoint file names that contain the string 3240?

2CS 3240 - Regular Languages and Grammars

Page 3: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

*.cppa*.ppt *3240*.ppt

These are wildcard expressions Not bona fide regular expressions

3CS 3240 - Regular Languages and Grammars

Page 4: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

Language Machine Grammar

Regular Finite Automaton Regular Expression,Regular Grammar

Context-Free Pushdown Automaton

Context-Free Grammar

Recursively Enumerable

Turing Machine Unrestricted Phrase-Structure Grammar

4CS 3240 - Introduction

Page 5: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

Text patterns that represent regular languages We’ll show shortly that for every regular

expression there is a finite automaton that accepts that language

And vice-versa The operators are:

( ) (Grouping) * (Kleene Star) + (Union) xy (Concatenation)

5CS 3240 - Regular Languages and Grammars

Page 6: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

1) Specify base case(s) 2) Show how to generate other elements

Rules that use what’s in the set already Example: Non-negative multiples of 5, F

1) 0, 5 is in F 2) For x, y in F, then x + y is in F

Alternate definition: 1) 0 is in F 2) For x in F, so is x + 5

CS 3240 - Regular Languages and Grammars 6

Page 7: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

Base cases: The empty set: ∅ or ( ) The empty string: λ Any letter in Σ

Recursive rules: Given regular expressions r, r1, r2: (r) (Grouping) r* (Kleene Star) r1 + r2 (Union)

r1r2 (Concatenation)7CS 3240 - Regular Languages and Grammars

Page 8: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

All strings beginning with a: a(a + b)*

All strings containing aba: (a + b)*aba(a + b)*

All strings of even length: ((a + b)(a + b))* = (aa + ba + ab + bb)* = ((a +

b)2)*

All strings of odd length: (a+b)((a + b)2)*

Valid decimal integers in C: (1+2+3+4+5+6+7+8+9)

(0+1+2+3+4+5+6+7+8+9)*

8CS 3240 - Regular Languages and Grammars

Page 9: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

Put anything you want on an edgeUse an “else” branch as well

[0-9] (if-branch) ~[0-9] or [^(0-9)] or else

CS 3240 - Regular Languages and Grammars 9

(Decimal integers)

Page 10: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

(b*ab*ab*ab* + b) *

= b* (ab*ab*ab*) *

= b* + (b*ab*ab*ab*) *

(a(a+bb) *) *

((a + b)a) *

10CS 3240 - Regular Languages and Grammars

Page 11: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

L(∅) =∅L(λ) = λL(c) = c, for c ∊ ΣL((r)) = L(r)L(r*) = L(r)*

L(r1 + r2) = L(r1) ∪ L(r2)L(r1r2) = L(r1)L(r2)

11CS 3240 - Regular Languages and Grammars

Page 12: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

CS 3240 - Regular Languages and Grammars 12

r+s = s+r (r+s)+t = r+(s+t) r+r = r r + ∅ = r (rs)t = r(st) rλ = λr = r r ∅ = ∅r = ∅ r(s+t) = rs+rt (r+s)t = rt+st

Page 13: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

1. For every regular expression there is an associated NFA that accepts the same language

And therefore a DFA, by conversion

2. For every FA (either NFA or DFA) there is a regular expression that represents the same language

13CS 3240 - Regular Languages and Grammars

Page 14: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

We will show how to convert each element of the definition of regular expressions to an NFA

This is sufficient! And shows the convenience of recursive

definitions (review slide 7 now)

because if we can give a machine for every case in the definition of REs, we are done!

14CS 3240 - Regular Languages and Grammars

Page 15: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

• Empty Language

• Empty String • Single Character

15CS 3240 - Regular Languages and Grammars

Page 16: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

16CS 3240 - Regular Languages and Grammars

Page 17: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

Just draw the lambdas from a new start state to the start states of each machine

Remove the start notation from the original start states (No need to have a new final state)

CS 3240 - Regular Languages and Grammars 17

Page 18: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

18CS 3240 - Regular Languages and Grammars

Page 19: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

1) Just draw a lambda from each final state of the first machine to the start state of the second machine

2) remove the acceptability of those final states of the first machine

CS 3240 - Regular Languages and Grammars 19

Page 20: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

20CS 3240 - Regular Languages and Grammars

Page 21: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

We need to do two things: 1) Add the empty string, if needed 2) Loop from each final state back to the start

state Procedure:

1) If the empty string is not accepted, create a new start state which accepts, and connect to the original start state with λ

2) Add a λ-edge from each final state to the original (or the new) start state

CS 3240 - Regular Languages and Grammars 21

Page 22: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

Draw NFAs for the REs on slides 8 and 9

CS 3240 - Regular Languages and Grammars 22

Page 23: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

First remove all jails Then, if needed, convert the DFA to an

equivalent NFA with A start state with no incoming edges

A single final state with no outgoing edges

Will need lambda transitions for this Then “eliminate” all but the start and final

states Without changing the language accepted

Using GTGs…23CS 3240 - Regular Languages and Grammars

Page 24: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

Allow regular expressions on the edges

Accepts a* + a*(a+b)c*

[Note: (c*)* = c*]

24CS 3240 - Regular Languages and Grammars

Page 25: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

If the start state has an incoming edge (even if it’s a loop), create a new start state with a lambda transition to the old start state:

CS 3240 - Regular Languages and Grammars 25

Page 26: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

If there is more than one final state, or if the single final state has an outgoing edge (even if it’s a loop), create a new final state and link to it with a lambda transition from each final state:

CS 3240 - Regular Languages and Grammars 26

Page 27: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

“Remove” each intermediate state, one at a time:1. Combine each incoming path with each

outgoing path (only “through” paths; not loops)

2. Determine the regular expression equivalent to the combined path through the current state

3. Add an edge with that RE between the incoming state and the outgoing state

4. Repeat until all intermediate states vanishCS 3240 - Regular Languages and Grammars 27

Page 28: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

CS 3240 - Regular Languages and Grammars 28

Page 29: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

CS 3240 - Regular Languages and Grammars 29

To eliminate 2:

• 1-2-1: af*b• 1-2-3: af*c• 3-2-1: df*b• 3-2-3: df*c

Page 30: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

CS 3240 - Regular Languages and Grammars 30

To eliminate 1:

• 0-1-3: (e+af*b)*(h+af*c)• 3-1-3: (i+df*b)(e+af*b)*(h+af*c)

Page 31: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

CS 3240 - Regular Languages and Grammars 31

Eliminate 3 (Final Result):

(e+af*b) *(h+af*c)(g+df*c+(i+df*b)(e+af*b)

*(h+af*c))*

Page 32: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

CS 3240 - Regular Languages and Grammars 32

Page 33: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

Find a regular expression for the language containing all strings that do not contain the substring aa

CS 3240 - Regular Languages and Grammars 33

Page 34: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

See bypass.doc Shows different possibilities by

eliminating states in different orders But the REs obtained are equivalent▪ Meaning they represent the same language

CS 3240 - Regular Languages and Grammars 34

Page 35: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

Language Machine Grammar

Regular Finite Automaton Regular Expression,Regular Grammar

Context-Free Pushdown Automaton

Context-Free Grammar

Recursively Enumerable

Turing Machine Unrestricted Phrase-Structure Grammar

35CS 3240 - Introduction

Page 36: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

There is a natural correspondence between FAs and grammars

Right-linear Grammars “Linear” means there is at most one

variable on the right-hand side of the rule

“Right-linear” means the variable occurs as the last entry in the rule:▪ A → abC

CS 3240 - Regular Languages and Grammars 36

Page 37: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

The variables represent states The right-hand side contains the character(s) on the edge, optionally

followed by the target state The accepting states have a lambda rule

CS 3240 - Regular Languages and Grammars 37

A → aB | bC | λB → aA | bDC → aD | bAD → aC | bB

Page 38: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

Go to an accepting state with no out-edges

CS 3240 - Regular Languages and Grammars 38

A → b

Page 39: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

S → aaS | bbS | abA | baA | λA → aaA | bbA | abS | baS

CS 3240 - Regular Languages and Grammars 39

a GTG

Page 40: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

Construct a regular grammar for the language denoted by aab*a

1.First build a GTG

2.Then map to a right-linear grammar

CS 3240 - Regular Languages and Grammars 40

Page 41: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

S → XaX → Xb | aa

How did I come up with this?

CS 3240 - Regular Languages and Grammars 41

Page 42: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

If you have the single variable only at the left ends, you have a left-linear grammar

This is also a regular grammar We will show how to convert between

right-linear and left-linear grammars We will use two facts to establish the

process: If L is regular, so is LR (Section 2.3, exercise

12) L(GR) = L(G)R (obvious, but on next slide…)

CS 3240 - Regular Languages and Grammars 42

Page 43: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

GR means you reverse the right-hand sides of each rule in a grammar, G

The language generated is L(G)R (the reverse of L(G))

CS 3240 - Regular Languages and Grammars 43

S → abS | XX → bX | λ

(ab)*b*

S → Sba | XX → Xb | λ

b*(ba)*

Page 44: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

1. Convert the right-linear grammar to a GTG2. “Reverse” the GTG (a la Section 2.3, #12)

Ensure a single final state (use λ if needed) Interchange the role of the start and final states Reverse all arrows

3. Convert the reversed GTG to a right-linear grammar

4. Reverse the right-hand sides of each rule to obtain the left-linear grammar

CS 3240 - Regular Languages and Grammars 44

Page 45: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

CS 3240 - Regular Languages and Grammars 45

A → aBB → abA | b

C → bBB → aA A → baB | λ

ba(baa)*

C → BbB → AaA → Bab | λ

(aab)*ab

(rev)

(rev)

Page 46: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

Reverse the grammar, G, obtaining right-linear grammar, GR, for L(G)R

Convert to GTGReverse the GTGConvert to Right-linear

CS 3240 - Regular Languages and Grammars 46

Page 47: CS 3240 – Chapter 3.  How would you delete all C++ files from a directory from the command line?  How about all PowerPoint files that start with the

CS 3240 - Regular Languages and Grammars 47