Вход

Выход

Алгоритм

Заполнение таблицы

Обозначим

По сути является алгоритмом динамического программирования. В процессе работы будем заполнять полу-таблицу размерности . Причем строки такой таблицы, полагаем, нумеруются с , а столбцы с

Номер строки i12n

В ячейках таблицы будем записывать множества нетерминалов

Заполнение 1 столбца таблицы

Нетерминалы вычисляются следующим образом:

где - -ый символ цепочки w

Заполнение 2 столбца таблицы

Нетерминалы вычисляются рекурентно:

Заполнение оставшихся столбцов таблицы

Нетерминалы вычисляются рекурентно:

Выводы

Слово принадлежит Языку , если . В противном случае не принадлежит. Алгоритм выбрасывает ошибку

Построение вывода