Intro to Theory of Computation

profileTrist1111
Ch6CYKv20.pptx

Parsing Algorithms

1

The CYK Algorithm

The membership problem:

Problem:

Given a context-free grammar G and a string w

G = (V, T ,P , S) where

V finite set of variables

T (the alphabet) finite set of terminal symbols

P finite set of rules

S start symbol (distinguished element of V)

V and T are assumed to be disjoint

Question: Is w in L(G)?

2

The CYK Algorithm Basics

The grammar must be in a Chomsky Normal Form.

Uses a “dynamic programming” or “table-filling algorithm”

3

CYK Algorithm

Let G = (V,T,S,P) with T ={a, b}

V = { S, A, B, T, X} and P defined below

S -> AB | XB

T -> AB | XB

X -> AT

A -> a

B -> b

And let w = aaabbb. Is wL(G)?

i \ j 1 2 3 4 5 6
1 a
2 a
3 a
4 b
5 b
6 b

S -> AB | XB

T -> AB | XB

X -> AT

A -> a

B -> b

w = aaabbb

w on the diagonal

i \ j 1 2 3 4 5 6
1 A
2 A
3 A
4 B
5 B
6 B

Strings length 1

S -> AB | XB

T -> AB | XB

X -> AT

A -> a

B -> b

w = aaabbb

i \ j 1 2 3 4 5 6
1 A
2 A
3 A S, T
4 B
5 B
6 B

Strings length 2

S -> AB | XB

T -> AB | XB

X -> AT

A -> a

B -> b

w = aaabbb

i \ j 1 2 3 4 5 6
1 A
2 A
3 A S, T
4 B
5 B
6 B

Strings length 3

S -> AB | XB

T -> AB | XB

X -> AT

A -> a

B -> b

w = aaabbb

i \ j 1 2 3 4 5 6
1 A
2 A X
3 A S, T
4 B
5 B
6 B

S -> AB | XB

T -> AB | XB

X -> AT

A -> a

B -> b

W = aaabbb

Strings length 3

i \ j 1 2 3 4 5 6
1 A
2 A X
3 A S, T
4 B
5 B
6 B

Strings length 3

S -> AB | XB

T -> AB | XB

X -> AT

A -> a

B -> b

w = aaabbb

i \ j 1 2 3 4 5 6
1 A
2 A X
3 A S, T
4 B
5 B
6 B

Strings length 3

S -> AB | XB

T -> AB | XB

X -> AT

A -> a

B -> b

w = aaabbb

i \ j 1 2 3 4 5 6
1 A
2 A X
3 A S, T
4 B
5 B
6 B

Strings length 4

S -> AB | XB

T -> AB | XB

X -> AT

A -> a

B -> b

w = aaabbb

i \ j 1 2 3 4 5 6
1 A
2 A X S, T
3 A S, T
4 B
5 B
6 B

Strings length 4

S -> AB | XB

T -> AB | XB

X -> AT

A -> a

B -> b

w = aaabbb

i \ j 1 2 3 4 5 6
1 A
2 A X S, T
3 A S, T
4 B
5 B
6 B

Strings length 4

S -> AB | XB

T -> AB | XB

X -> AT

A -> a

B -> b

w = aaabbb

i \ j 1 2 3 4 5 6
1 A X
2 A X S, T
3 A S, T
4 B
5 B
6 B

Strings length 5

S -> AB | XB

T -> AB | XB

X -> AT

A -> a

B -> b

w = aaabbb

i \ j 1 2 3 4 5 6
1 A X
2 A X S, T
3 A S, T
4 B
5 B
6 B

Strings length 5

S -> AB | XB

T -> AB | XB

X -> AT

A -> a

B -> b

w = aaabbb

i \ j 1 2 3 4 5 6
1 A X S, T
2 A X S, T
3 A S, T
4 B
5 B
6 B

Strings length 5

S -> AB | XB

T -> AB | XB

X -> AT

A -> a

B -> b

w = aaabbb

i \ j 1 2 3 4 5 6
1 A X S, T
2 A X S, T
3 A S, T
4 B
5 B
6 B

Strings length 5

S -> AB | XB

T -> AB | XB

X -> AT

A -> a

B -> b

w = aaabbb

23

Therefore:

Time Complexity:

The CYK algorithm can be

easily converted to a parser

(bottom up parser)

Observation:

aaabbb L(G)

O(|w|3)

Example 2

24

Consider the CNF grammar G = (V,T,S,P) where

V = {S, A, B, C, D }, T = { a, b, c }, S = S and P is given below.

S AB | AC

A  AC | AB | a

B  BB | BC | b

C  AC | CC | c | b

 

Use the CYK to determine if the strings w1 = acbb and w2 = bbca are in the language L(G). If the string is in L(G) construct the parse tree.

i \ j 1 2 3 4
1 a
2 c
3 b
4 b

w on the diagonal

S AB | AC

A  AC | AB | a

B  BB | BC | b

C  AC | CC | c | b

w1 = acbb

i \ j 1 2 3 4
1 A S,A,C
2 C C
3 B,C B, C
4 B,C

w on the diagonal

S AB | AC

A  AC | AB | a

B  BB | BC | b

C  AC | CC | c | b

w1 = acbb

i \ j 1 2 3 4
1 A S,A,C S,A,C
2 C C C
3 B,C B, C
4 B,C

w on the diagonal

S AB | AC

A  AC | AB | a

B  BB | BC | b

C  AC | CC | c | b

w1 = acbb

i \ j 1 2 3 4
1 A S,A,C S,A,C S, A, C
2 C C C
3 B,C B, C
4 B,C

Yes

S AB | AC

A  AC | AB | a

B  BB | BC | b

C  AC | CC | c | b

w1 = acbb

i \ j 1 2 3 4
1 b
2 b
3 c
4 a

w on the diagonal

S AB | AC

A  AC | AB | a

B  BB | BC | b

C  AC | CC | c | b

w2 = bbca

i \ j 1 2 3 4
1 B, C
2 B, C
3 C
4 A

w on the diagonal

S AB | AC

A  AC | AB | a

B  BB | BC | b

C  AC | CC | c | b

w2 = bbca

i \ j 1 2 3 4
1 B, C B, C
2 B, C B, C
3 C
4 A

w on the diagonal

S AB | AC

A  AC | AB | a

B  BB | BC | b

C  AC | CC | c | b

w2 = bbca

i \ j 1 2 3 4
1 B, C B, C B, C
2 B, C B, C
3 C
4 A

w on the diagonal

S AB | AC

A  AC | AB | a

B  BB | BC | b

C  AC | CC | c | b

w2 = bbca

i \ j 1 2 3 4
1 B, C B, C B, C
2 B, C B, C
3 C
4 A

No not in the language

S AB | AC

A  AC | AB | a

B  BB | BC | b

C  AC | CC | c | b

w2 = bbca

Theorem

The CYK Algorithm correctly computes X i j for all i and j; thus w is in L(G) if and only if S is in X1n.

The running time of the algorithm is O(|w|3|P|), where |P| is the number of productions in the grammar, we can assume this is a constant.

O(w2) cells in the table, O(w) to fill in each cell.

34

Question

Show the CYK Algorithm with the following example:

CNF grammar G

S  AB | BC

A  BA | a

B  CC | b

C  AB | a

w is ababa

Question Is ababa in L(G)?

Basics of CYK Algorithm

The Structure of the rules in a Chomsky Normal Form grammar

Uses a “dynamic programming” or “table-filling algorithm”

Complexity O(|w|3)

35

36

37

38