Prerequisite – Converting Context Free Grammar to Chomsky Normal Form
CYK algorithm is a parsing algorithm for context free grammar.
In order to apply CYK algorithm to a grammar, it must be in Chomsky Normal Form. It uses a dynamic programming algorithm to tell whether a string is in the language of a grammar.
Algorithm :
Let w be the n length string to be parsed. And G represent the set of rules in our grammar with start state S.
 Construct a table DP for size n × n.
 If w = e (empty string) and S > e is a rule in G then we accept the string else we reject.

For i = 1 to n: For each variable A: We check if A > b is a rule and b = w_{i }for some i: If so, we place A in cell (i, i) of our table.

For l = 2 to n: For i = 1 to nl+1: j = i+l1 For k = i to j1: For each rule A > BC: We check if (i, k) cell contains B and (k + 1, j) cell contains C: If so, we put A in cell (i, j) of our table.

We check if S is in (1, n): If so, we accept the string Else, we reject.
Example –
Let our grammar G be:
S > AB  BC A > BA  a B > CC  b C > AB  a
We check if baaba is in L(G):
 We first insert single length rules into our table.
 We then fill the remaining cells of our table.
 We observe that S is in the cell (1, 5), Hence, the string baaba belongs to L(G).
Time and Space Complexity :
 Time Complexity –
O(n^{3}.G)
Where G is the number of rules in the given grammar.
 Space Complexity –
O(n^{2})
Attention reader! Don’t stop learning now. Get hold of all the important CS Theory concepts for SDE interviews with the CS Theory Course at a studentfriendly price and become industry ready.
Recommended Posts:
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.