Refinamiento / "letra pequeña" en la respuesta de DC: todas las CFL en forma de Chomsky Normal Form se pueden analizar de manera eficiente con el algoritmo CYK y todas las CFL se pueden convertir a CNF. Sin embargo, la conversión de un CFL arbitrario a CNF puede tomar espacio exponencial en el peor de los casos, dependiendo de algunos algoritmos. (No conozco un algoritmo que garantice la conversión del tiempo P aquí, ¿hay alguien más? Uno debe considerar todos los casos extremos / peores, como CFL no deterministas o ambiguos ). Wikipedia dice en la sección CNF Orden de transformaciones
Además, la mayor hinchazón en el tamaño de la gramática [nota 4] depende del orden de transformación. Usando | G | para denotar el tamaño de la gramática original G, el aumento de tamaño en el peor de los casos puede variar de a , dependiendo del algoritmo de transformación utilizado. [6]: 72 2 | G ||G|222|G|
Por lo tanto, parece que pueden existir CFL que no se pueden analizar de manera eficiente. La mayoría de los lenguajes de programación se pueden transmitir de manera eficiente a CNF (o tal vez se definen principalmente en CNF o casi CNF), por lo tanto, el análisis de CFL para lenguajes "típicos" es "prácticamente" en P. Probablemente haya alguna investigación moderna sobre la peor complejidad del caso (pero no encontrar documentos recientes sobre la búsqueda superficial). Por ejemplo, este trabajo de investigación más antiguo (1973) de Greibach también parece indicar que el rendimiento en el peor de los casos puede no estar limitado por P. ver, por ejemplo.