Épreuve d’informatique fondamentale
Concision et ambiguïté
Le sujet porte sur les automates finis, dont la définition est rappelée dans le préambule. Le sujet s’intéresse à la propriété d’ambiguïté des automates finis, propriété également définie dans le préambule.
La première partie lie les notions de déterminisme et d’ambiguïté d’un automate fini en utilisant la notion de miroir d’un automate. La deuxième partie amène à définir un algorithme qui teste si un automate est ambigu et vous demande de déterminer sa complexité asymptotique.
La troisième et la quatrième partie étudient la concision des automates non ambigus et ambigus. Les parties 1 et 2 sont indépendantes ; il est conseillé de les traiter en premier car les parties 3 et 4 en dépendent.
Il est permis d’admettre les réponses à certaines questions pour répondre aux suivantes.
Préambule
On note {\Sigma} un alphabet fini, c’est à dire un ensemble fini de symboles appelés lettres. Un mot sur {\Sigma} est une suite finie de lettres.
On note {\Sigma^n} l’ensemble des mots de longueur n sur {\Sigma} et {\Sigma^\star} l’ensemble de tous les mots sur {\Sigma}. Soient u, v deux mots sur {\Sigma}, on note {u\cdot v} la concaténation de u et v. Un langage sur {\Sigma} est un sous-ensemble de {\Sigma^\star}.
Un automate sur {\Sigma} est un tuple {A=(Q,T,I,F)} où :
— Q est un ensemble fini de symboles appelés états ;
— {T\subseteq Q\times\Sigma\times Q} est appelé ensemble des transitions ;
— {I\subseteq Q} est l’ensemble des états initiaux ;
— {F\subseteq Q} est l’ensemble des états finaux. La Figure 1 représente graphiquement trois automates.
Les symboles dans Q sont encerclés, avec deux cercles pour les symboles dans F. Une transition {(q,a,q')\in T} est représentée par une flèche étiquetée par {a\in\Sigma}, allant de l’état source q à l’état destination {q'}. Les états initiaux sont indiqués par une flèche sans état source.
Un calcul de A sur un mot {w=a_0\ldots a_{n-1}\in\Sigma^\star} est une suite finie d’états {q_0\ldots q_n\in Q^\star} telle que {q_0\in I} et pour tout {i\lt n}, {(q_i,a_i,q_{i+1})\in T}. Un tel calcul est dit acceptant si {q_n\in F}. On dit alors que A accepte w. Le langage de A, noté L(A), est l’ensemble des mots acceptés par A.
Un automate A est dit déterministe si {|I|\leq1} et pour tout {(q,a)\in Q\times\Sigma}, {|\{q'\mid(q,a,q')\in T\}|\leq1.}Un automate A est dit complet si {|I|\geq1} et pour tout {(q,a)\in Q\times\Sigma}, {|\{q'\mid(q,a,q')\in T\}|\geq1}.
Figure 1 – Trois automates reconnaissant le même langage Soient {w\in\Sigma^\star} et A un automate.
Le mot w est dit ambigu pour A s’il existe deux calculs acceptants {\rho} et {\rho'} de A sur w avec {\rho\ne\rho'}. On définit {d_A(w)}, le degré d’ambiguïté de w dans A, comme étant le nombre de calculs acceptants différents de A sur w. Ainsi, w est ambigu pour A si et seulement si {d_A(w)>1}.
On note {\operatorname{Amb}(A)} l’ensemble des mots ambigus pour A. L’automate A est dit ambigu si {\operatorname{Amb}(A)\ne\varnothing}. Ce sujet s’intéresse tout particulièrement aux automates non ambigus.
1 Déterminisme et ambiguïté
Question 1.1 Les trois automates de la Figure 1 acceptent le même langage. Donnez-en, sans justification, une description intuitive.
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :
Question 1.2 Pour chacun des automates de la Figure 1, dites s’il est déterministe ou non déterministe. Justifiez vos affirmations.
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :
Question 1.3 Pour l’automate {A_1} de la Figure 1, calculez {\operatorname{Amb}(A_1)} et déduisez en si {A_1} est ambigu ou non. Faites de même pour les automates {A_2} et {A_3}.
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :
Soit A un automate. On note {\widetilde A=(\widetilde Q,\widetilde T,\widetilde I,\widetilde F)} l’automate miroir de A, défini par :
— {\widetilde Q=Q} ;
— {\widetilde I=F} ;
— {\widetilde F=I} ;
— {\widetilde T=\{(t,a,s)\mid(s,a,t)\in T\}}. Un automate est dit co-déterministe si son automate miroir est déterministe.
Question 1.4 Soit A un automate, {w\in L(A)} un mot accepté par A et {q_0\ldots q_n} un calcul acceptant de A sur w. Montrez qu’il existe un mot {\widetilde w} tel que {q_n\ldots q_0} soit un calcul acceptant de {\widetilde A} sur {\widetilde w}.
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :
Question 1.5 Montrez qu’un automate A est ambigu si et seulement si {\widetilde A} est ambigu.
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :
Question 1.6 Montrez que si un automate A est déterministe, alors A n’est pas ambigu.
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :
Question 1.7 Montrez que si un automate A est co-déterministe, alors A n’est pas ambigu.
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :
Question 1.8 Pour chacune des questions suivantes, donnez un automate A ayant au plus 4 états et respectant les propriétés demandées.
Justifiez vos réponses. (i) A est non ambigu mais ni déterministe, ni co-déterministe ; (ii) L(A) est infini et {\operatorname{Amb}(A)=L(A)} ; (iii) Amb(A) est infini, et {\operatorname{Amb}(A)\ne L(A)}.
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :
2 Test d’ambiguïté
Le but de cette partie est d’obtenir un algorithme qui teste si un automate est ambigu et de déterminer sa complexité asymptotique. Dans cette partie, A est un automate (Q, T, I, F ) tel que {L(A)\ne\varnothing}.
2.1 Une construction utile
En utilisant A, on définit l’automate {\widehat A=(\widehat Q,\widehat T,\widehat I,\widehat F)} comme suit :
— {\widehat Q=Q\times Q\times\{0,1\}} ;
{\!\!\!\begin{array}{rl}—\;\widehat I&=\{(i,i,0)\mid i\in I\}\\[4pt]&\quad\cup\{(i,i',1)\mid i\in I,i'\in I,i\ne i'\}\end{array}} ;
— {\widehat F=\{(f,f',1)\mid f\in F,f'\in F\}} ;
— {\widehat T=T_1\cup T_2\cup T_3} avec : {\begin{array}{l}T_1=\{((s,s,0),a,(t,t,0))\mid(s,a,t)\in T\}\ ;\\[8pt]T_2=\{((s,s,0),a,(t,t',1))\mid\\[8pt]\quad(s,a,t)\in T,(s,a,t')\in T,t\ne t'\}\ ;\\[8pt]T_3=\{((s,s',1),a,(t,t',1))\mid\\[8pt]\quad(s,a,t)\in T,(s',a,t')\in T\}.\end{array}}
Question 2.1 Soit
{A_1} le premier automate de la figure Figure 1. Construisez l’automate
{\widehat A_1}. Il est inutile de faire figurer les états qui ne sont pas accessibles à partir d’un état initial.
Donnez, sans justification, le langage {L(\widehat A_1)}.
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :
Question 2.2 Soient
{w\in\Sigma^\star} un mot et
{\rho=(q_0,q'_0,b_0)\ldots(q_n,q'_n,b_n)} un calcul de
{\widehat A} sur w.
On pose {\mu=q_0\ldots q_n} et {\mu'=q'_0,\ldots,q'_n}. (i) Montrez que {\mu} et {\mu'} sont des calculs de A sur w. (ii) Montrez que {b_n=0} si et seulement si {\mu=\mu'}. (iii) Montrez que, si {\rho} est acceptant, alors {\mu} et {\mu'} sont acceptants. (iv) Montrez qu’il existe un calcul {\rho} tel que {\mu} et {\mu'} sont acceptants mais {\rho} ne l’est pas.
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :
Question 2.3 Montrez que {L(\widehat A)=\operatorname{Amb}(A)}.
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :
2.2 L’algorithme
Pour deux fonctions {f,g:\mathbb N\to\mathbb N}, on dit que g est une borne asymptotique de f, et on le note par {f\in O(g)}, s’il existe deux constantes strictement positives {n_0\in\mathbb N} et {c\in\mathbb N} telles que pour tout {n\geq n_0}, {f(n)\leq c\times g(n)}. Cette définition se généralise naturellement à des fonctions f et g avec plusieurs paramètres.
Question 2.4 Pour chaque ensemble {\widehat Q}, {\widehat T}, {\widehat I} et {\widehat F}, donnez une borne asymptotique au nombre d’éléments qu’il contient en fonction des tailles de Q, T , I et F .
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :
Question 2.5 Donnez un algorithme qui a comme entrée A et comme sortie {\widehat A} en précisant : (i) quelle structure de données classique (matrice d’adjacence ou liste d’adjacence) est utilisée pour représenter A et {\widehat A}, (ii) une borne asymptotique de la complexité en temps d’exécution de cet algorithme en fonction de la somme des tailles des ensembles Q, T , I et F .
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :
Question 2.6 Décrivez une méthode permettant de tester si A est ambigu en utilisant l’automate
{\widehat A}.
Donnez une borne asymptotique de la complexité en temps de cette méthode en fonction de la somme des tailles des ensembles Q, T , I et F .
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :
2.3 Généralisation
Soit k un entier strictement positif.
Question 2.7 Soit w ∈ L(A) un mot de longueur k. (i) Donnez, en fonction de k et |Q|, une borne supérieure sur le degré d’ambiguïté de w dans A. (ii) Donnez un automate A et un mot de longueur k pour lesquels la borne supérieure indiquée ci-dessus est atteinte.
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :
Question 2.8 On pose {\operatorname{Amb}_{\geq k}(A)=\{w\in L(A)\mid d_A(w)\geq k\}}. Montrez que {\operatorname{Amb}_{\geq k}(A)} est régulier.
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :
Question 2.9 On pose {\operatorname{Amb}_k(A)=\{w\in L(A)\mid d_A(w)=k\}}. Montrez que {\operatorname{Amb}_k(A)} est régulier.
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :
3 Concision des automates non ambigus
Le but de cette partie est de prouver que les automates non ambigus peuvent être exponentiellement plus concis que leurs équivalents déterministes et complets. Dans toute cette partie, on fixe l’alphabet {\Sigma=\{a,b\}}.
Pour {n\geq1} un entier, on pose {L_n=\{w_1\cdot b\cdot w_2\mid w_1,w_2\in\Sigma^\star,|w_2|=n-1\}}, le langage des mots dont la n-ième lettre en partant de la fin est un b.
Question 3.1 Donnez un automate non ambigu acceptant {L_3}, puis donnez un automate déterministe et complet acceptant {L_3}.
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :
Question 3.2 Montrez que pour tout {n\geq1} entier, il existe un automate non ambigu A avec n + 1 états tel que {L(A)=L_n}.
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :
Question 3.3 Montrez que pour tout {n\geq1} entier, il existe un automate déterministe et complet B avec {2^n} états tel que {L(B)=L_n}.
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :
On veut à présent prouver que tout automate déterministe et complet acceptant {L_n} a au moins {2^n} états.
Question 3.4 Soit B un automate déterministe et complet. Soit {w\in\Sigma^\star}. Montrez qu’il existe un unique calcul, non nécessairement acceptant, de B sur w.
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :
Soit B un automate déterministe et complet et {w\in\Sigma^\star}. On note {q_w} l’état atteint par l’unique calcul de B sur w, c’est-à-dire l’état {q_m} tel que {q_0\ldots q_m} est un calcul de B sur w.
Question 3.5 Soit {n\in\mathbb N} et B un automate déterministe et complet reconnaissant {L_n}. Soient w et {w'} deux mots de {\Sigma^\star} de longueur n. Montrez que {q_w=q_{w'}} si et seulement si {w=w'}.
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :
Question 3.6 Soit {n\in\mathbb N}. Montrez que tout automate déterministe et complet reconnaissant {L_n} a au moins {2^n} états.
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :
4 Concision des automates ambigus
Le but de cette partie est de prouver que les automates ambigus peuvent être exponentiellement plus concis que leurs équivalents non ambigus.
Pour {n\in\mathbb N}, on pose {\Sigma_n} un alphabet à n lettres et {K_n} le langage des mots sur {\Sigma_n^\star} dont au moins une lettre apparaît au moins deux fois, c’est-à-dire : {\begin{array}{l}K_n=\{w_1\cdot x\cdot w_2\cdot x\cdot w_3\mid\\[8pt]\quad w_1,w_2,w_3\in\Sigma_n^\star,x\in\Sigma_n\}.\end{array}}
Question 4.1 Pour {\Sigma_3=\{a,b,c\}}, (i) donnez un automate acceptant {K_3} et ayant au plus 5 états, (ii) donnez un automate non ambigu acceptant {K_3} et ayant au plus 9 états.
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :
Question 4.2 Montrez que pour tout {n\in\mathbb N}, il existe un automate avec au plus n + 2 états acceptant {K_n}.
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :
Question 4.3 Montrez que pour tout {n\in\mathbb N}, il existe un automate non ambigu avec au plus {2^n+1} états acceptant {K_n}.
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :
On veut à présent prouver que tout automate non ambigu acceptant {K_n} a au moins {2^n+1} états. Jusqu’à la fin de cette partie, on fixe un entier {n\geq2} et un automate non ambigu {A=(Q,T,I,F)} acceptant {K_n}. Soient u et v deux mots de {\Sigma_n^\star}.
Lorsque {u\cdot v\in K_n}, on note {q_{u,v}} l’état de A atteint après avoir lu u lors de l’unique calcul acceptant de A sur {u\cdot v}. Autrement dit, soit {\ell=|u|} et {q_0\ldots q_m} l’unique calcul acceptant de A sur {u\cdot v}, alors {q_{u,v}=q_\ell}.
Question 4.4 Soient
{u,u'} et
{v,v'} quatre mots de
{\Sigma_n^\star} tels que
{u\cdot v\in K_n} et
{u'\cdot v'\in K_n}.
On suppose que {q_{u,v}=q_{u',v'}}. (i) Montrez que {u\cdot v'\in K_n} et {u'\cdot v\in K_n}. (ii) Montrez que {q_{u,v}=q_{u,v'}=q_{u',v}=q_{u',v'}}.
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :
L’objectif à présent est de prouver que ces contraintes garantissent que A a au moins {2^n} états. Soit {s=(s_i)} une suite de mots et {\alpha} une lettre. On note {s\cdot\alpha} la suite {(s_i\cdot\alpha)}, c’est-à-dire la suite obtenue en ajoutant {\alpha} à la fin de chaque mot de s.
On fixe un ordre total {\lt} sur {\Sigma_n}, et on note {\Sigma_n=\{\alpha_1,\ldots,\alpha_n\}} avec pour tout {1\leq i\lt j\leq n}, {\alpha_i\lt\alpha_j}. On construit une famille {s^0,\ldots,s^n} de suites de mots de {\Sigma_n} comme suit :
— {s^0} est la suite contenant uniquement {\varepsilon} ;
— Pour {0\lt i\leq n}, {s^i=s^{i-1},s^{i-1}\cdot\alpha_i}, la suite constituée de {s^{i-1}}, suivie de la suite {s^{i-1}\cdot\alpha_i}.
Finalement, on pose {s=s^n}. Par exemple, pour n = 2, {\Sigma_2=\{a,b\}} et {a\lt b}, la suite s contient 4 éléments : {s_0=\varepsilon}, {s_1=a}, {s_2=b}, {s_3=ab}.
Finalement, on remarque que s contient {2^n} éléments et on pose {M_n} la matrice de dimension {2^n\times2^n} à coefficients en {\mathbb R} définie par : {M_n[i,j]=\begin{cases}1&\text{si }s_i\text{ et }s_j\text{ ont une lettre en commun}\\[8pt]0&\text{sinon.}\end{cases}}Par exemple, {M_2} est donnée ci-dessous : {M_2=\begin{pmatrix}0&0&0&0\\[8pt]0&1&0&1\\[8pt]0&0&1&1\\[8pt]0&1&1&1\end{pmatrix}}
Question 4.5 Montrez que {M_n} peut s’écrire sous la forme : {M_n=\begin{pmatrix}M_{n-1}&M_{n-1}\\[8pt]M_{n-1}&\mathbf1_{n-1}\end{pmatrix}}où, pour {n\geq1}, {\mathbf1_n} est la matrice carrée de dimension {2^n\times2^n} dont tous les coefficients valent 1.
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :
Question 4.6 Soient {i\lt2^n} et {j\lt2^n}. Montrez que {M_n[i,j]=1} si et seulement si {s_i\cdot s_j\in K_n}.
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :
À chaque état q de A, on associe le vecteur colonne {v_q} de dimension {2^n} défini par : {v_q[i]=\begin{cases}1&\text{s’il existe }j\lt2^n\text{ tel que }q=q_{s_i,s_j}\\[8pt]0&\text{sinon.}\end{cases}}
Question 4.7 Montrez que l’ensemble de vecteurs
{(v_q)_{q\in Q}} est une famille génératrice du sous-espace vectoriel engendré par les vecteurs colonnes de
{M_n}. Indication : Soit
{u_j} la j-ème colonne de
{M_n}.
On pourra montrer que {u_j} est une combinaison linéaire de vecteurs de {(v_q)_{q\in Q}} en prouvant que : {u_j=\sum_{\substack{q\in Q\\[8pt]\exists i,\ q=q_{s_i,s_j}}}v_q}
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :
Question 4.8 Montrez que {M_n} est de rang {2^n-1}.
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :
Question 4.9 En déduire que A contient au moins {2^n-1} états q tels que {v_q\ne0}.
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :
Question 4.10 Montrez que si {v_q\ne0}, alors {q\notin I} et {q\notin F}.
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :
Question 4.11 Conclure que A a au moins {2^n+1} états.
Cliquer ici pour voir (ou cacher) la réponse
Pour voir la suite de ce contenu, vous devez :
Pour poursuivre votre exploration, vous pouvez :