From 3bdb816d69bd10766944867297e2ca2fe769f182 Mon Sep 17 00:00:00 2001 From: "David A. Madore" Date: Thu, 2 Feb 2017 00:11:04 +0100 Subject: Take into account Antoine's remarks, rework the end of the third exercise. --- controle-20170207.tex | 137 +++++++++++++++++++++++++++++--------------------- 1 file changed, 79 insertions(+), 58 deletions(-) (limited to 'controle-20170207.tex') diff --git a/controle-20170207.tex b/controle-20170207.tex index 7d6a2bc..1d42a3e 100644 --- a/controle-20170207.tex +++ b/controle-20170207.tex @@ -93,8 +93,8 @@ très visible dans les copies où commence chaque exercice. \medbreak -Le sujet étant long pour le temps imparti, il ne sera nécessaire de -traiter toutes les questions pour obtenir la totalité des points. +Le sujet étant long pour le temps imparti, il ne sera pas nécessaire +de traiter toutes les questions pour obtenir la totalité des points. \medbreak @@ -107,7 +107,7 @@ L'usage des calculatrices électroniques est interdit. Durée : 1h30 -L'énoncé comporte 4 pages. +L'énoncé comporte 4 pages (page de garde incluse) \pagebreak @@ -155,7 +155,7 @@ $\varepsilon$, $a$, $b$, $ab$, $aa$, $aab$, $aabb$, $abab$, $ababa$. rapidement les réponses aux questions suivantes et ainsi détecter d'éventuelles erreurs lors des transformations des automates.) -(2) Éliminer les transitions spontanées de l'automate, s'il y en a. +(2) Éliminer les transitions spontanées de l'automate. (On supprimera les états devenus inutiles.) (3) Déterminiser l'automate ainsi obtenu, si nécessaire. (On demande @@ -165,12 +165,12 @@ correcteur, on demande de faire en sorte que les transitions la gauche vers la droite, et celles étiquetées par $b$, verticales du haut vers le bas. -(4) Minimiser l'automate ainsi obtenu, si nécessaire. +(4) Minimiser l'automate ainsi obtenu, si nécessaire (justifier). (5) Donner un automate (de n'importe quelle sorte) qui reconnaît le langage $\overline{L} = \Sigma^*\setminus L$ complémentaire de $L$. -(6) Décrire brièvement, en français, le langage ce langage +(6) Décrire brièvement, en français, ce langage complémentaire $\overline{L}$. (7) (Question bonus, plus longue, à ne traiter qu'en dernier.) Donner @@ -330,9 +330,10 @@ finaux (et les doublement entourés sont non-finaux). \emph{Attention :} échanger états finaux et non-finaux ne marche pas pour reconnaître le complémentaire du langage reconnu par un automate -non-déterministe (car la négation de « il existe un chemin qui va vers -un état final » est « aucun chemin ne va vers un état final » et pas -« il existe un chemin qui va vers un état non-final »). +non-déterministe ou incomplet (car la négation de « il existe un +chemin qui va vers un état final » est « aucun chemin ne va vers un +état final » et pas « il existe un chemin qui va vers un état +non-final »). \smallbreak @@ -422,9 +423,11 @@ l'expression.) Soit $\Sigma$ un alphabet (fini, non vide) fixé. Les questions suivantes sont indépendantes (mais on remarquera leur parallélisme). +Ne pas hésiter à décrire les algorithmes de façon succincte et +informelle. (1) Expliquer, au moyen des résultats vus en cours, pourquoi il existe -un algorithme $A_1$ qui, donnée une expression rationnelle $r$ +un algorithme $A_1$ qui, étant donnée une expression rationnelle $r$ sur $\Sigma$, décide si le langage $L_r$ dénoté par $r$ est différent du langage $\Sigma^*$ de tous les mots sur $\Sigma$. (Autrement dit, l'algorithme $A_1$ doit prendre en entrée une expression rationnelle @@ -432,8 +435,8 @@ $r$, terminer en temps fini, et répondre « vrai » s'il existe un mot $w\in\Sigma^*$ tel que $w\not\in L_r$ et « faux » si $L_r = \Sigma^*$. On ne demande pas que l'algorithme soit efficace.) -(2) Expliquer pourquoi il existe un algorithme $A_2$ qui, donnée une -grammaire hors contexte $G$ sur $\Sigma$, « semi-décide » si le +(2) Expliquer pourquoi il existe un algorithme $A_2$ qui, étant donnée +une grammaire hors contexte $G$ sur $\Sigma$, « semi-décide » si le langage $L_G$ engendré par $G$ est différent du langage $\Sigma^*$ de tous les mots. (« Semi-décider » signifie que l'algorithme $A_2$ doit prendre en entrée une grammaire hors contexte $G$, terminer en temps @@ -551,8 +554,8 @@ l'indécidabilité du problème de l'arrêt. \exercice -On considère la grammaire hors-contexte $G$ d'axiome $S$ (et de -nonterminaux $N = \{S, T\}$) sur l'alphabet $\Sigma = \{a,b,c\}$ +On considère la grammaire hors-contexte $G$ d'axiome $S$ et de +nonterminaux $N = \{S, T\}$ sur l'alphabet $\Sigma = \{a,b,c\}$ donnée par \[ \begin{aligned} @@ -561,7 +564,7 @@ T &\rightarrow aSbSc\\ \end{aligned} \] On notera $L(G) = L(G,S)$ le langage qu'elle engendre, et $L(G,T)$ le -langage des mots qui dérivent de $T$ (c'est-à-dire, si on préfère le +langage des mots qui dérivent de $T$ (c'est-à-dire, si on préfère, le langage engendré par la grammaire identique à $G$ mais ayant $T$ pour axiome). @@ -570,32 +573,45 @@ moins deux de chaque). (1) Expliquer brièvement pourquoi $L(G)$ est l'ensemble des mots de la forme $u_1\cdots u_k$ avec $u_i \in L(G,T)$, et pourquoi $L(G,T)$ est -l'ensemble des mots la forme $awbw'c$ avec $w,w'\in L(G)$. (Par +l'ensemble des mots de la forme $awbw'c$ avec $w,w'\in L(G)$. (Par conséquent, $L(G,T)$ est l'ensemble des mots de la forme $a u_1 \cdots u_k b u'_1\cdots u'_{\ell} c$ avec $u_1,\ldots,u_k,u'_1,\ldots,u'_{\ell} \in L(G,T)$.) -(2) Comment décrire $L(G)$ de en fonction de $L(G,T)$ au moyen des -opérations rationnelles\footnote{C'est-à-dire : union, concaténation, - étoile de Kleene.} ? Y a-t-il inclusion de l'un dans l'autre ? - -(3) Montrer que tout mot $w$ de $L(G)$ a le même nombre de $a$, de $b$ -et de $c$, c'est-à-dire $|w|_a = |w|_b = |w|_c$ où $|w|_x$ désigne le -nombre total d'occurrences de la lettre $x$ dans le mot $w$. - -(4) Montrer par récurrence sur $|u|$ que si $v$ est un préfixe d'un -mot $u\in L(G,T)$ de longueur $0<|v|<|u|$, alors on a $|v|_c < |v|_a$. -(On pourra écrire $u$ sous la forme $a u_1 \cdots u_k b u'_1\cdots -u'_{\ell} c$ obtenue en (1).) - -(5) En déduire que si $u \in L(G,T)$ et $z \in \Sigma^+$ (c'est-à-dire -$z\in\Sigma^*$ et $z\neq\varepsilon$) alors $uz \not\in L(G,T)$. -Expliquer par ailleurs pourquoi $bz \not\in L(G,T)$. +(2) Comment exprimer $L(G)$ à partir de $L(G,T)$ au moyen d'une ou +plusieurs opérations rationnelles\footnote{C'est-à-dire : union, + concaténation, étoile de Kleene.} ? Y a-t-il inclusion de l'un dans +l'autre ? + +(3) Montrer que tout mot $w$ appartenant à $L(G)$ ou à $L(G,T)$ a le +même nombre de $a$, de $b$ et de $c$, c'est-à-dire $|w|_a = |w|_b = +|w|_c$ où $|w|_x$ désigne le nombre total d'occurrences de la +lettre $x$ dans le mot $w$. + +(4) Montrer par récurrence sur la longueur $|u|$ d'un mot $u\in +L(G,T)$ que si $v$ est un préfixe de $u$ de longueur $0<|v|<|u|$, +alors on a $|v|_c < |v|_a$. Pour cela, on pourra écrire $u$ sous la +forme $a u_1 \cdots u_k b u'_1\cdots u'_{\ell} c$ obtenue en (1), +considérer un préfixe\footnote{\label{prefix-note}On signale à toutes + fins utiles le fait évident suivant : un préfixe non vide de $t_1 + \cdots t_n$ où $t_1,\ldots,t_n \in\Sigma^*$ s'écrit sous la forme + $t_1\cdots t_{i-1} y$ où $y\neq\varepsilon$ est un préfixe + de $t_i$.} d'une telle expression, et appliquer la question (3) et +l'hypothèse de récurrence. + +(5) Déduire des questions (3) et (4) que si $u \in L(G,T)$ et si $v$ +est un préfixe de $u$ autre que $u$ lui-même, alors $u \not\in +L(G,T)$. En déduire que $u\in L(G,T)$ et $z \in \Sigma^*$, alors $u$ +est l'\emph{unique} préfixe du mot $w := uz$ qui appartienne +à $L(G,T)$ (autrement dit, aucun préfixe de $w$ de longueur ${<}|u|$ +ni ${>}|u|$ n'appartient à $L(G,T)$). (6) En déduire que si un mot $w$ s'écrit $w = u_1\cdots u_k$ avec $u_1,\ldots,u_k \in L(G,T)$ alors cette factorisation est unique. -(Comment peut-on définir $u_1$ en fonction de $w$ ?) Montrer de même -la conclusion analogue pour $u_1\cdots u_k b u'_1\cdots u'_\ell$. +(Comment peut-on caractériser $u_1$ comme préfixe de $w$ ?) Montrer +de même la conclusion analogue pour $u_1\cdots u_k b u'_1\cdots +u'_\ell$ (on pourra noter que $bz\not\in L(G,T)$ quel que +soit $z\in\Sigma^*$). (7) En déduire que la grammaire $G$ est inambiguë. @@ -610,8 +626,8 @@ la conclusion analogue pour $u_1\cdots u_k b u'_1\cdots u'_\ell$. d'un mot $w$ de $L(G)$, soit il est la dérivation triviale du mot vide, soit sa racine a deux fils étiquetés $T$ et $S$, l'un dont descend un arbre d'analyse d'un mot $u_1$ de $L(G,T)$ et l'autre - dont descend arbre d'analyse d'un autre mot $w'$ de $L(G)$, avec $w - = u_1 w'$ : en répétant cette remarque jusqu'à tomber sur le mot + dont descend un arbre d'analyse d'un autre mot $w'$ de $L(G)$, avec + $w = u_1 w'$ : en répétant cette remarque jusqu'à tomber sur le mot vide, on voit que $w = u_1 u_2 \cdots u_k$ pour des mots $u_i \in L(G,T)$ ; et réciproquement, tout mot de cette forme a un arbre d'analyse dans $G$ obtenu en mettant ensemble les arbres d'analyse @@ -651,39 +667,44 @@ facteurs $t$ qui interviennent dans cette écriture vérifient $|t|_c \leq |t|_a$ : c'est trivial pour $a$ et $b$, c'est le cas pour chaque $u_j$ par la question (3), et pour $y$ cela découle soit de l'hypothèse de récurrence (lorsque $|y|<|u_i|$ resp. $|y|<|u'_i|$) -soit par de question (3) (lorsque $y$ est en fait égal à $u_i$ +soit par la question (3) (lorsque $y$ est en fait égal à $u_i$ resp. $u'_i$). Comme par ailleurs $|a|_c = 0 < 1 = |a|_a$, une égalité est stricte et on en déduit $|v|_c < |v|_a$, ce qui conclut la récurrence. -En particulier, on observe pour la question suivante que $v\not\in -L(G,T)$ pour tout préfixe strict $v$ d'un mot de $L(G,T)$ (si $v = -\varepsilon$ c'est clair, et si $0<|v|<|u|$, on vient de montrer -$|v|_c < |v|_a$ alors qu'un mot de $L(G,T)$ vérifie $|u|_c = |u|_a$ -d'après (3)). - \smallbreak -(5) Comme $u$ est un préfixe strict de $uz$, si on avait $uz \in -L(G,T)$ alors la question (4) implique $u\not\in L(G,T)$, une -contradiction : c'est donc que $uz \not\in L(G,T)$. - -Le fait que $bz \not\in L(G,T)$ est trivial car tout mot de $L(G,T)$ -commence par $a$ d'après la question (1). +(5) Si $u \in L(G,T)$ et si $v$ est un préfixe de $u$ autre que $u$ +lui-même, alors soit $v = \varepsilon$, qui n'appartient pas à +$L(G,T)$ (par exemple par la question (1)), soit $0<|v|<|u|$, auquel +cas la question (4) donne $|v|_c<|v|_a$, ce qui interdit $v\in L(G,T)$ +d'après (3). Dans tous les cas, $v\not\in L(G,T)$. + +Si maintenant $u\in L(G,T)$ et $z\in\Sigma^*$, un préfixe de $w := uz$ +est soit un préfixe de $u$ soit de la forme $uz'$ avec $z'$ un préfixe +non vide de $z$ (cf. la note \ref{prefix-note}). Un préfixe de $w$ de +longueur ${<}|u|$ n'appartient pas à $L(G,T)$ d'après le paragraphe +précédent, et un mot de la forme $uz'$ ne peut pas y appartenir non +plus car c'est alors $u$ lui-même qui serait un préfixe strict de $uz' +\in L(G,T)$ appartenant à $L(G,T)$, ce qui contredit de nouveau le +paragraphe précédent. \smallbreak -(6) On peut définir $u_1$ comme l'unique préfixe de $w$ qui appartient -à $L(G,T)$ (tout préfixe strictement plus court ou strictement plus -long n'appartient pas à $L(G,T)$ d'après les questions (4) et (5)). -Une fois que $u_1$ est défini par $w$, en appliquant le même -raisonnement à $u_2\cdots u_k$ et ainsi de suite, on voit que $u_2$ et -les autres sont uniquement définis. +(6) D'après la question précédente, on peut définir $u_1$ comme +l'unique préfixe de $w$ qui appartient à $L(G,T)$ (tout préfixe +strictement plus court ou strictement plus long n'appartient pas à +$L(G,T)$). Une fois que $u_1$ est défini, en appliquant le même +raisonnement au suffixe correspondant $u_2\cdots u_k$, on voit que +$u_2$ est défini de façon unique. En procédant ainsi (par récurrence +sur $k$ si on veut), les $u_i$ sont définis de façon unique. Le même raisonnement vaut pour $u_1\cdots u_k b u'_1\cdots u'_\ell$ : -on a une factorisation en mots de $L(G,T)\cup\{b\}$ et on a vu qu'en -retirant ou en ajoutant des lettres à la fin d'un mot de ce langage on -obtient un mot qui n'est pas dans $L(G,T)\cup\{b\}$. +on a une factorisation en mots de $L(G,T)\cup\{b\}$ et à chaque fois +le premier facteur est défini comme le seul préfixe possible +appartenant à $L(G,T)\cup\{b\}$. (On utilise le fait que $bz\not\in +L(G,T)$, qui découle du (1), pour voir que $bu'_1\cdots bu'_\ell$ n'a +pas de préfixe dans $L(G,T)$.) \smallbreak -- cgit v1.2.3