Me deparei com esta figura que mostra que linguagens regulares e sem contexto são subconjuntos (apropriados) de problemas eficientes (supostamente ). Entendo perfeitamente que problemas eficientes são um subconjunto de todos os problemas decidíveis, porque podemos resolvê-los, mas isso pode levar muito tempo.
Por que todas as linguagens regulares e sem contexto são decididas com eficiência? Significa resolvê-los não vai demorar muito tempo (quero dizer, sabemos sem mais contexto)?
Respostas:
A associação regular ao idioma pode ser decidida em tempo, simulando o DFA (mínimo) do idioma (que foi pré-computado).O ( n )
A associação de idioma livre de contexto pode ser decidida em pelo algoritmo CYK .O ( n3)
Existem idiomas decidíveis que não estão em , tais como aqueles em E X P T I M E ∖ P .P E X P T I M E ∖ P
fonte
Refinamento / "impressão fina" na resposta por DC: todas as CFLs na forma de Chomsky Normal Form podem ser analisadas com eficiência com o algoritmo CYK e todas as CFLs podem ser convertidas em CNF. No entanto, a conversão de uma CFL arbitrária para CNF pode levar um espaço exponencial na pior das hipóteses, dependendo de alguns algoritmos. (Eu não tenho conhecimento de um algoritmo que a conversão garantias P-tempo aqui, é ninguém? Deve-se considerar todos / piores casos de ponta, tais como lâmpadas fluorescentes compactas não deterministas ou mais ambíguas .) Wikipedia afirma na seção CNF Ordem de transformações
Portanto, parece que pode existir CFLs que não sejam analisáveis com eficiência. A maioria das linguagens de programação é eficientemente conversível em CNF (ou talvez definida principalmente em CNF ou quase CNF), portanto, a análise CFL para linguagens "típicas" é "praticamente" em P. Há provavelmente alguma pesquisa moderna sobre essa complexidade de pior caso (mas não foi encontre artigos recentes sobre pesquisa superficial). Por exemplo, este trabalho de pesquisa mais antigo (1973) de Greibach também parece indicar que o pior desempenho pode não ser limitado por P. ver, por exemplo.
fonte