Langages formels Corrigé Laboratoire 6 Exercice 1 a) 1. La grammaire ne peut pas être simplifée daantage. 2. La grammaire ne génère pas le mot-ide, on peut donc la transformer sous - Les symboles A et C sont nullables. On peut donc transformer la grammaire en éliminant toutes les règles de production immédiates et en modifiant les autres règles ainsi : C A aab D aa a B 4. Éliminer les règles de production unitaires (V 1 V 2 ) - La règle de production C A peut être éliminée de la grammaire en C aa a aab D aa a B - La règle de production D B peut être éliminée de la grammaire en C aa a aab D aa a Ab b 5. Modifier les règles qui contiennent des symboles ariables et des symboles - Cette grammaire contient deux symboles terminaux. On ajoutera donc les symbole ariable T a et T b, ainsi que les règles de production T a --> a et T b --> b, puis on peut modifier les autres règles en conséquence : A T a A a B AT b b C T a A a T a T a B D T a A a AT b b 6. Modifier les règles du type V V 1 V 2 V 3 pour les remplacer par des règles ne contenant que 2 symboles ariables du côté droit : - Pour effectuer cette transformation, prendre chacune de ces règles à modifier et ajouter un symbole X i pour que la règle deienne : V V 1 X i,
puis créer une nouelle règle X i V 2 V 3 Appliquer cette transformation à chaque règle, incluant les règles partant de X i nouellement ajoutée, jusqu à ce que chacune des règles de production de la grammaire soit sous la forme V VV, ou V t. S AX 1 BX 2 AX 3 BD A T a A a B AT b b C T a A a T a X 4 D T a A a AT b b X 1 BX 2 X 2 CD X 2 BD X 4 T a B b) 1. Simplifier la grammaire : - C est un symbole inutile car il ne mène pas à un mot-terminal. - On peut éliminer toutes les règles qui contiennent le symbole C, ce qui donne : S assb a, A AAB B, B a ε - A est maintenant inutile car on ne peut plus l'atteindre à partir de S. En l'enleant, la grammaire deient : S assb a, B a ε 2. La grammaire ne génère pas le mot-ide, on peut donc la transformer sous - Les symboles B et A sont nullables. On peut donc transformer la grammaire en éliminant toutes les règles de production immédiates et en modifiant les autres règles ainsi : S assa ass a, A AAB AB A B, B a - La règle de production A A est isiblement inutile, on peut l éliminer également. 4. Éliminer les règles de production unitaires (V V) : - La règle de production A B peut être éliminée de la grammaire en S assb ass a, B a 5. Modifier les règles qui contiennent des symboles ariables et des symboles
Cette grammaire ne contient qu un seul symbole terminal. On ajoutera donc le symbole ariable T a, ainsi que la règle de production, puis on peut modifier les autres règles en conséquence : S T a SSB T a SS a, B a, 6. Modifier les règles du type V V 1 V 2 V 3 pour des règles ne contenant que 2 symboles ariables du côté droit : - Pour effectuer cette transformation, prendre chacune de ces règles et ajouter un symbole X i qui afin que la règle deienne : V V 1 X i, puis créer une nouelle règle X i V 2 V 3 Appliquer cette transformation à chaque règle, incluant les règles partant de X i nouellement ajoutée, jusqu à ce que chacune des règles de production de la grammaire soit sous la forme V VV, ou V t. S T a X 1 T a X 3 a, B a,, X 1 SX 2, X 2 SA, X 3 SS c) 1. Simplifier la grammaire : - D est un symbole inutile car il ne mène pas à un mot-terminal. - On peut éliminer toutes les règles qui contiennent le symbole D, ce qui donne : S abcb Bb, B abb C, C aa abb ε 2. La grammaire ne génère pas le mot-ide, on peut donc la transformer sous - Les symboles B et C sont nullables. On peut donc transformer la grammaire en éliminant toutes les règles de production immédiates et en modifiant les autres règles ainsi : S abcb acb abb ab Bb b, B abb ab C, C aa abb ab a 4. Éliminer les règles de production unitaires (V V) : - La règle de production B C peut être éliminée de la grammaire en S abcb acb abb ab Bb b, B abb ab aa abb ab a, C aa abb ab a
5. Modifier les règles qui contiennent des symboles ariables et des symboles Cette grammaire contient deux symboles terminaux. On ajoutera donc les symbole ariable T a et T b, ainsi que les règles de production T a --> a et T b --> b, puis on peut modifier les autres règles en conséquence : S T a BCT b T a CT b T a BT b T a T b BT b b, B T a T b B T a T b T a T a T a BB T a B a, C T a T a T a BB T a B a 6. Modifier les règles du type V V 1 V 2 V 3 pour des règles ne contenant que 2 symboles ariables du côté droit : - Pour effectuer cette transformation, prendre chacune de ces règles et ajouter un symbole X i qui afin que la règle deienne : V V 1 X i, puis créer une nouelle règle X i V 2 V 3 Appliquer cette transformation à chaque règle, incluant les règles partant de X i nouellement ajoutée, jusqu à ce que chacune des règles de production de la grammaire soit sous la forme V VV, ou V t. S T a X 1 T a X 2 T a X 3 T a T b BT b b, B T a X 4 T a T b T a T a T a X 5 T a B a, C T a T a T a X 5 T a B a, X 1 BX 2 X 2 CT b, X 3 BT b, X 4 T b B X 5 BB Exercice 2 a) Soit z = a 2p b p+3 ; z є L 31, p : seuil de pompage, z > p. Si i change, on n'a plus #a = 2n et #b = n+3, donc le mot généré ne fait pas partie du langage. u > p Comme toutes les décompositions possibles de z en uw mènent à une, le langage n'est pas régulier.
b) Soit z = a p+1 b 2p ; z є L 32, p : seuil de pompage, z p. Si i = 0, m = n donc le mot généré ne fait pas partie du langage. u > p Comme toutes les décompositions possibles de z en uw mènent à une, le langage n'est pas régulier. c) Soit z = a p b p ; z є L 33, p : seuil de pompage, z p. Si i change, on n'a plus #a = #b, donc le mot généré ne fait pas partie du langage. u > p Comme toutes les décompositions possibles de z en uw mènent à une, le langage n'est pas régulier. d) Soit m = a s ; m є L 31, s : premier nombre premier > p+1, p : seuil de pompage, m p. Par définition, si le langage est régulier, alors il existe une décomposition en uw de chaque mot du langage dont la taille est au moins égale à p. À partir de cette décomposition, chaque mot de la forme u i w doit aussi faire partie du langage, pour tout i 0. Supposons que u = x, = y et w = z, aec y 1. (Note : Ceci représente toutes les décompositions possibles de m en uw.) La taille des mots générés par les différentes aleurs de i est x + i*y + z = (x+z) + i*y. Soit le mot m' pour lequel i = x + z. On a s' = m' = (x+z) + (x+z)*y = (x+z) * (1+y). Comme y 1 et (x+z) > 1, on a donc troué une factorisation de s' différente de 1 * s', donc s' n'est pas premier et m' ne fait pas partie du langage. Comme toutes les décompositions possibles de z en uw mènent à une, le langage n'est pas régulier.