En classe cette semaine, nous avons découvert les LFC et leurs propriétés de fermeture. J'ai vu des preuves d'union, d'intersection et de compliment, mais pour le renversement, mon conférencier vient de dire que c'était fermé. Je voulais voir la preuve, donc je cherchais depuis quelques jours, mais tout ce que j'ai trouvé, c'est que la plupart des gens disent simplement que renverser les productions suffit pour le prouver. Ceux qui vont un peu plus formellement déclarent simplement qu'il existe une preuve inductive facile que vous pouvez donner. Quelqu'un peut-il me fournir plus d'informations / conseils sur la preuve inductive? Essayez comme je pourrais, je ne peux pas le trouver.
la source
Il existe une autre façon de voir ce problème.
Considérez que la langueL est une LFC. Cela signifie qu'il y a une grammaireG = { N, ∑ , P, S} qui satisfait la LCF. Nous pouvons supposer que c'est sous la forme normale de Chomsky.
Siϵ fait partie de la langue, trivialement ϵR fait également partie de la langue. Maintenant pour chaque production du formulaireP1⟶ A B , remplacez-le par, P1⟶ B A et pour les productions du formulaire P1⟶ a , où un ∈ ∑ , laissez la même chose.
À partir de l'arbre d'analyse de la chaîne dérivée, il est facile de voir que le langage dérivé sera exactement l'inverse du langage initial car la construction reflète l'arbre d'analyse d'origine.
la source
Tout d'abord. Les CFL ne sont pas fermées sous intersection ou complément (ou différence d'ailleurs). Ils sont fermés sous Union, Concaténation, fermeture des étoiles de Kleene, substitution, homomorphisme, homomorphisme inverse et inversion. REMARQUE: Les deux homomorphismes ne sont généralement pas couverts dans un cours d'introduction à la théorie des ordinateurs.
Pour prouver l'inversion, Soit L un CFL, avec la grammaire G = (V, T, P, S). Soit L R l'inverse de L, telle que la grammaire soit G R = (V, T, P R , S). Autrement dit, inversez chaque production.
Ex. P -> AB deviendrait P -> BA
Puisque G R est un CFG, donc L (G R ) est un CFL.
la source