0% found this document useful (0 votes)
21 views28 pages

12-Application of CNF - CYK Algorithm-05!10!2024

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
21 views28 pages

12-Application of CNF - CYK Algorithm-05!10!2024

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 28

The CYK Algorithm

Lakshmanan K

Courtesy: David Rodriguez-Velazquez


The CYK Algorithm
• The membership problem:
– Problem:
• Given a context-free grammar G and a string w Σ*
– G = (V, ∑ ,P , S) where
» V finite set of variables
» ∑ (the alphabet) finite set of terminal symbols
» P finite set of rules
» S start symbol (distinguished element of V)
» V and ∑ are assumed to be disjoint
– G is used to generate the string of a language
– Question:
• Is w in L(G) or not? The naïve approach takes O(2n)
The CYK Algorithm
• J. Cocke
• D. Younger,
• T. Kasami

– Independently developed an algorithm to answer


this question that solves in O(n3) time for a given
input string of length n.
The CYK Algorithm Basics

– The Structure of the rules in a Chomsky Normal


Form grammar (input of the grammar in CNF)

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


algorithm”
Chomsky Normal Form
• Normal Form is described by a set of
conditions that each rule in the grammar must
satisfy
• Context-free grammar is in CNF if each rule
has one of the following forms:
– A  BC at most 2 symbols on right side
– A  a, terminal symbol
where A, B, C Є V, a Є T.
Construct a Triangular Table
• Each row corresponds to one length of
substrings
– Bottom Row – Strings of length 1
– Second from Bottom Row – Strings of length 2
– Third from Bottom Row – Strings of length 3
.
.
– Top Row – string ‘w’ of length n (which is the i/p).
– w = w1 w2 w3 …. wn.
Construct a Triangular Table
• Xi, i is the set of variables A such that
A * wi is a production of G.
• Xi, j is the set of variables A such that
A * wi wi+1…. wj is a production of G
• Compare at most n pairs of previously
computed sets:
(Xi, i , Xi+1, j ), (Xi, i+1 , Xi+2, j ) … (Xi, j-1 , Xj, j )
Construct a Triangular Table
X1, 5
X1, 4 X2, 5
X1, 3 X2, 4 X3, 5
X1, 2 X2, 3 X3, 4 X4, 5
X1, 1 X2, 2 X3, 3 X4, 4 X5, 5
w1 w2 w3 w4 w5

Xij =  {A: A -> BC with B in Xi,k, C in Xk+1,j}, i<=k<j

The above is the formula to find variables placed at a cell.


Example CYK Algorithm
• 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 baaba
– Question Is baaba in L(G)?
Constructing The Triangular Table
S  AB | BC
A  BA | a
B  CC | b
C  AB | a

{B} {A, C} {A, C} {B} {A, C}


b a a b a

Calculating the Bottom ROW


Constructing The Triangular Table
• X1 , 2 = (Xi , i ,Xi+1 , j) = (X1 , 1 , X2 , 2)
•  {B}{A,C} = {BA, BC}
• Steps:
– Look for production rules to generate BA or BC
– There are two: S and A
– X1 , 2 = {S, A} S  AB | BC
A  BA | a
B  CC | b
C  AB | a
Constructing The Triangular Table

{S, A}
{B} {A, C} {A, C} {B} {A, C}
b a a b a
Constructing The Triangular Table
• X2 , 3 = (Xi , i ,Xi+1 , j) = (X2 , 2 , X3 , 3)
•  {A, C}{A,C} = {AA, AC, CA, CC} = Y
• Steps:
– Look for production rules to generate Y
– There is one: B
S  AB | BC
– X2 , 3 = {B} A  BA | a
B  CC | b
C  AB | a
Constructing The Triangular Table

{S, A} {B}
{B} {A, C} {A, C} {B} {A, C}
b a a b a
Constructing The Triangular Table
• X3 , 4 = (Xi , i ,Xi+1 , j) = (X3 , 3 , X4 , 4)
•  {A, C}{B} = {AB, CB} = Y
• Steps:
– Look for production rules to generate Y
– There are two: S and C
S  AB | BC
– X3 , 4 = {S, C} A  BA | a
B  CC | b
C  AB | a
Constructing The Triangular Table

{S, A} {B} {S, C}


{B} {A, C} {A, C} {B} {A, C}
b a a b a
Constructing The Triangular Table
• X4 , 5 = (Xi , i ,Xi+1 , j) = (X4 , 4 , X5 , 5)
•  {B}{A, C} = {BA, BC} = Y
• Steps:
– Look for production rules to generate Y
– There are two: S and A
S  AB | BC
– X4 , 5 = {S, A} A  BA | a
B  CC | b
C  AB | a
Constructing The Triangular Table

{S, A} {B} {S, C} {S, A}


{B} {A, C} {A, C} {B} {A, C}
b a a b a
Constructing The Triangular Table
• X1 , 3 = (Xi , i ,Xi+1 , j) (Xi , i+1 ,Xi+2 , j)
= (X1 , 1 , X2 , 3) , (X1 , 2 , X3 , 3)
•  {B}{B} U {S, A}{A, C}= {BB, SA, SC, AA, AC} = Y
• Steps:
– Look for production rules to generate Y
S  AB | BC
– There are NONE: S and A A  BA | a
B  CC | b
– X1 , 3 = Ø C  AB | a

– no elements in this set (empty set)


Constructing The Triangular Table

Ø
{S, A} {B} {S, C} {S, A}
{B} {A, C} {A, C} {B} {A, C}
b a a b a
Constructing The Triangular Table
• X2 , 4 = (Xi , i ,Xi+1 , j) (Xi , i+1 ,Xi+2 , j)
= (X2 , 2 , X3 , 4) , (X2 , 3 , X4 , 4)
•  {A, C}{S, C} U {B}{B}= {AS, AC, CS, CC, BB} = Y
• Steps:
– Look for production rules to generate Y
S  AB | BC
– There is one: B A  BA | a
B  CC | b
– X2 , 4 = {B} C  AB | a
Constructing The Triangular Table

Ø {B}
{S, A} {B} {S, C} {S, A}
{B} {A, C} {A, C} {B} {A, C}
b a a b a
Constructing The Triangular Table
• X3 , 5 = (Xi , i ,Xi+1 , j) (Xi , i+1 ,Xi+2 , j)
= (X3 , 3 , X4 , 5) , (X3 , 4 , X5 , 5)
•  {A,C}{S,A} U {S,C}{A,C}
= {AS, AA, CS, CA, SA, SC, CA, CC} = Y
• Steps:
– Look for production rules to generate Y
S  AB | BC
– There is one: B A  BA | a
B  CC | b
– X3 , 5 = {B} C  AB | a
Constructing The Triangular Table

Ø {B} {B}
{S, A} {B} {S, C} {S, A}
{B} {A, C} {A, C} {B} {A, C}
b a a b a
Final Triangular Table
{S, A, C}  X1, 5
Ø {S, A, C}
Ø {B} {B}
{S, A} {B} {S, C} {S, A}
{B} {A, C} {A, C} {B} {A, C}
b a a b a

- Table for string ‘w’ that has length 5


- The algorithm populates the triangular table
Example (Result)
• Is baaba in L(G)?

Yes

We can see the S in the set X1n where ‘n’ = 5


We can see the table
the cell X15 = (S, A, C) then
if S Є X15 then baaba Є L(G)
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(n3).
References
• J. E. Hopcroft, R. Motwani, J. D. Ullman,
Introduction to Automata Theory, Languages
and Computation, Second Edition, Addison
Wesley, 2001
• T.A. Sudkamp, An Introduction to the Theory
of Computer Science Languages and
Machines, Third Edition, Addison Wesley,
2006

You might also like