Na aula desta semana, aprendemos sobre as CFLs e suas propriedades de fechamento. Eu já vi provas de união, interseção e elogio, mas por reversão meu palestrante acabou de dizer que está encerrado. Eu queria ver a prova, então eu tenho procurado nos últimos dias, mas tudo que eu encontrei é que a maioria das pessoas apenas diz que reverter as produções é suficiente para provar isso. Aqueles que são um pouco mais formais afirmam que há uma prova indutiva fácil que você pode dar. Alguém pode me fornecer mais algumas informações / dicas sobre a prova indutiva? Por mais que eu tente, não consigo pensar nisso.
fonte
Há outra maneira de analisar esse problema.
Considere que o idioma é uma CFL. Isso significa que existe uma gramática que satisfaz a CFL. Podemos assumir que isso está na forma normal de Chomsky.eu G = { N, Σ , P, S}
Se faz parte do idioma, trivialmente também faz parte do idioma. Agora, para cada produção do formato , substitua-o por e para as produções do formato , em que , deixa o mesmo.ϵ ϵR P1⟶ A B P1⟶ B A P1⟶ a a ∈ ∑
Na árvore de análise da sequência derivada, é fácil ver que o idioma derivado será exatamente o inverso do idioma inicial, pois a construção reflete a árvore de análise original.
fonte
Primeiramente. As CFLs não são fechadas sob interseção ou complemento (ou diferença para esse assunto). Eles são fechados em União, Concatenação, fechamento em estrela Kleene, substituição, homomorfismo, homomorfismo inverso e reversão. NOTA: Os dois homomorfismos geralmente não são abordados em um curso introdutório de Teoria do Computador.
Para provar a reversão, seja L uma CFL, com gramática G = (V, T, P, S). Seja L R o inverso de L, de modo que a gramática seja G R = (V, T, PR R , S). Ou seja, inverta toda produção.
Ex. P -> AB se tornaria P -> BA
Uma vez que L R é um CFG, portanto, L (L R ) é um CFL.
fonte