- Trending Categories
- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- MS Excel
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP
- Physics
- Chemistry
- Biology
- Mathematics
- English
- Economics
- Psychology
- Social Studies
- Fashion Studies
- Legal Studies

- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who

# Explain about CYK Algorithm for Context Free Grammar

CKY means Cocke-Kasami-Younger. It is one of the earliest recognition and parsing algorithms. The standard version of CKY can only recognize languages defined by context-free grammars in Chomsky Normal Form (CNF).

It is also possible to extend the CKY algorithm to handle some grammars which are not in CNF (Hard to understand).

Based on a “dynamic programming” approach −

Build solutions compositionally from sub-solutions

It uses the grammar directly.

## Algorithm

Begin for ( i = 1 to n do ) Vi1 { A | A → a is a production where i th symbol of x is a } for ( j = 2 to n do ) for ( i = 1 to n - j + 1 do ) Begin Vij = ϕ For k = 1 to j - 1 do Vij = Vij ∪ { A | A → BC is a production where B is in Vik and C is in V(i + k)(j - k) } End End

## Example

CYK algorithm is used to find whether the given Context free grammar generates a given string or not.

The given Context free grammar (CFG) −

S --> AB | BC A --> BA | a B --> CC | b C --> AB | a

The string need to check is w =ababa

The length of string |w| = 5

a | b | a | b | a |
---|---|---|---|---|

A→a C→a | B→b | A→a C→a | B→b | A→a C→a |

S→AB CεAB | S→BC A→BA | S→AB CεAB | S→BC A→BA | |

BεC | S→AB C→Ab | BεCC | ||

B→CC | B→CC | |||

S,C,A |

S is present in the last cell so the string is valid.

## Explanation

First letter a can be find By the variable A or C. For b, variable B can find the terminal b. So, B will sit in the 2nd field in the first row.

For row2 We need to make a pair of two terminals and it will reduce the 1 cell . As in row2 the row1's field will be made a pair like we will have ab,ba,ab,ba.

So, in this need to find the variable which will find the ab and that variable will be placed in field row2, column1. For a, we have A, C which will find it. And for b we have B. So, for ab it will make a pair in sequence like AB, CB.

Now we need to check whether these two productions AB, CB are there in the given grammar or not. AB can be found by S and C.

So, S,C production will be placed there.

Similarly for ba it will take B for b and A,C for a. So, the production will be BA,BC. And BA, BC can be find by the production S, A. So, this will be placed at row2, column2. Then again row2column3 is ab so, same as of row2column1. And row2column4 will ba will be same as row2Column2.

Similarly, the next rows need to find the terminals aba,bab,aba And in sequence order the variable which can find it will be B for aba, S,C for bab and B for aba.

Now row4 four terminals will be clubbed together as abab,baba. And its production will be B. In the last term ababa all five will be clubbed together and its production will be S, C, A.

If the last one has S that is the starting state then the given string is accepted. So, the membership is true for a given string.

Also you need to see that if three terminals are clubbed together then its production can be found as (ab a) or (a ba). Similarly for four terminals clubbed one (a bab) or (aba b) or (ab ab). Similarly for five (ab aba) or (aba ba) or (abab a) ....

- Related Articles
- Explain about pumping lemma for context free language?
- What is context free grammar? Explain with examples
- Explain removing unit productions in context free grammar
- Explain the simplification of context free grammar in TOC
- What is Context-Free Grammar?
- How to generate the language for context free grammar?
- Generate a CNF for a given context free grammar
- Explain Pumping lemma for context free language
- Convert the given Context free grammar to CNF
- Generate a Context-free grammar for the language L = {anbm| m≠n}?
- How to convert context free grammar to push down automata?
- Explain the context free language closure under concatenation?
- Explain the context free language closure under union operation?
- Explain about left linear regular grammar in TOC
- What is Context-sensitive Grammar?