Власне, нормальній формі Хомського (CNF) не потрібно запускати CYK, а лише бінаризацію. Бінаризація має важливе значення для збереження кубічної складності синтаксичного розбору, хоча це важливо лише стосовно нетерміналів (NT). Але тоді, якщо у вас є правила, що включають лише 2 нетермінали та деякі термінали, алгоритм CYK стає складнішим для програмування та пояснення.
Як ви кажете, існує багато способів зробити бінаризацію. Деякі отримають менші граматики, ніж інші. Наприклад
X -> B C D
Y -> B C E
можуть бути бінарнізовані як
X -> Z D
Y -> Z E
Z -> B C
таким чином зберігається одне правило шляхом факторизації, яке може економити на обчисленні та на його розмірі результату.
Але з іншими правилами ви можете скористатись фактом кінця правил, а не початку.
Я не знайомий з роботою Пісні, Дінга та Ліна , про яку йдеться у відповіді Роб Сіммонс . Ідея цікава, але мені цікаво, наскільки ефективно її можна порівняти з іншими способами оптимізації обчислень. Я не дуже боюся.
Справа в тому, що аналіз проблем лише щодо чистого алгоритму CKY здається трохи академічним, але затратним способом, оскільки існують інші види оптимізації, які можуть значно покращити усунення тупикових синтаксисів.
CYK - це лише одна з найпростіших варіацій сімейства алгоритмів, які, мабуть, побудовані на одній і тій же динамічній моделі програмування. Я кажу, мабуть, тому що найпростіша версія цих алгоритмів відома не як динамічне програмування, а як крос-продукт. Саме стара конструкція граматики CF CF породжує перетин мови граматики CF F та звичайної мови FSA A. завдяки
Бар Гіллелу, Перлесу та Шаміру (1961) , як зауважив Ланг у 1995 році .
Всі аналізатори діаграм або загальні парсерів CF, засновані на динамічному програмуванні, можуть розглядатися як "оптимізований" варіант цієї міжпродукції, причому оптимізація використовується в основному для уникнення марних обчислень аналізатора. Але проблема є тонкою, оскільки уникнення марних обчислень може призвести до дублювання корисних, що може бути і гірше.
Будучи знизу вгору, алгоритм CKY виробляє марні обчислення парціальних синтаксисів, які не можуть випливати з аксіоми граматики.
У таких алгоритмах, як аналізатор GLR (щоб назвати один з більш відомих, хоча опублікована недосконала версія), є деякі знання зверху вниз, які дозволять уникнути багатьох таких марних обчислень, можливо, за вартістю. І є багато інших варіантів з різною поведінкою щодо економії на марних обчисленнях.
Саме з урахуванням цих стратегій оптимізації слід проаналізувати стратегію бінаризації. Який сенс оптимізувати те, що може бути незначною проблемою, і ігнорувати більш потужні методи.
Оптимізація процесу синтаксичного розбору також тісно пов'язана з "якістю" отриманої структури розбору, яка представляє всі можливі синтаксичні розбори, і її часто називають (спільно-) розбору лісом. Я обговорюю це в іншій відповіді .
Деякі з цих питань обговорюються в літературі. Наприклад, Білло та Ланг аналізують деякі аспекти бінаризації щодо стратегій розбору.