THE CYK ALGORITHM
Syed Mohy ud din gillani
Syed Nauman
Subhan Khan
Dainn Khan
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)?
THE CYK ALGORITHM
• J. Cocke
• D. Younger,
• T. Kasami
• Independently developed an algorithm to answer this question.
THE CYK ALGORITHM BASICS
• The Structure of the rules in a Chomsky Normal Form
grammar
• 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 BCat most 2 symbols on right side
• A a, or terminal symbol
• Sλ null string
where B, C Є V – {S}
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
.
.
• Top Row – string ‘w’
CONSTRUCT A TRIANGULAR
TABLE
• Xi, i is the set of variables A such that
A wi 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
Table for stringw2‘w’ that has
w3
length 5w4 w5
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
Looking
w1
for pairs
w2
to compare
w3 w4 w5
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
• There are NONE: S and A S AB | BC
• X1 , 3 = Ø A BA | a
B CC | b
• no elements in this set (empty set) 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
• 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
• There is one: B S AB | BC
• X2 , 4 = {B} A BA | a
B CC | 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
• There is one: B
S AB | BC
• X3 , 5 = {B} A BA | a
B CC | 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,
X1, 5
C}
{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