Théorie des Langages Formels Chapitre 6 : Langages non

publicité
Langages non reconnaissables
Théorie des Langages Formels
Chapitre 6 : Langages non reconnaissables
Florence Levé
[email protected]
Année 2014-2015
1/14
Langages non reconnaissables
Introduction
Comment savoir si un langage est reconnaissable ?
I
I
Selon la manière dont est décrit le langage la réponse n’est pas
toujours aisée
voire pas toujours décidable – un problème est dit décidable
s’il existe un algorithme pour le résoudre.
2/14
Langages non reconnaissables
Exemple classique
Le langage L = {an bn | n ≥ 0} défini sur l’alphabet {a, b}
n’est pas reconnaissable.
3/14
Langages non reconnaissables
Preuve : méthode 1
On peut utiliser prouver que L n’est pas reconnaissable en
montrant que L possède une infinité de résiduels.
(ai )−1 L = {an−i bn }
Pour n ≥ 0, on remarque que bn ∈ (an )−1 L pour n et pour
tout m 6= n, bn 6∈ (am )−1 L. Par conséquent, les langages
résiduels (an )−1 L pour n ≥ 0 sont tous différents. Donc L a
une infinité de résiduels et d’après le Corollaire 5.4 (page 24),
L n’est pas reconnaissable.
4/14
Langages non reconnaissables
Outils de preuve
Notation pour simplifier l’écriture des preuves suivantes :
Étant donné un automate Aut =< A, Q, D, F , δ >, nous
noterons δ ∗ l’ensemble des triplets (q, u, q 0 ) ∈ Q × A∗ × Q tels
qu’il existe un chemin dans Aut étiqueté par le mot u, partant
de l’état q et arrivant en l’état q 0 .
5/14
Langages non reconnaissables
Outils de preuve
Rappels :
1. Un mot u est reconnu par Aut si et seulement si il existe un
état initial d et un état final f tels que (d , u, f ) ∈ δ ∗ .
2. Si (q1 , u, q2 ) ∈ δ ∗ et (q2 , v , q3 ) ∈ δ ∗ alors (q1 , uv , q3 ) ∈ δ ∗ .
3. Si q1 ∈ D, q3 ∈ F , (q1 , u, q2 ) ∈ δ ∗ , (q2 , v , q2 ) ∈ δ ∗ et
(q2 , w , q3 ) ∈ δ ∗ alors uv ∗ w est un sous-ensemble du langage
reconnu par Aut.
6/14
Langages non reconnaissables
Outils de preuve
Principe de Dirichlet, principe du trou de pigeon, principe des
tiroirs, principe des boites :
I
Si m objets sont associés chacun à une valeur choisie parmi n
valeurs possibles et si m > n, alors deux objets au moins sont
associés à la même valeur.
7/14
Langages non reconnaissables
Preuve : méthode 2
Supposons qu’il y ait un automate (fini déterministe) qui
reconnaisse le langage L = {an bn | n ≥ 0}. Soit n son nombre
d’états. En particulier le mot an bn est reconnu par l’automate.
Notons q0 l’état initial et qi (1 ≤ i ≤ n) l’état tel que
(q0 , ai , qi ) ∈ δ ∗ ((i.e. l’état dans lequel on arrive après avoir "lu" le
mot ai le long du chemin reconnaissant an b n ).
Utilisons le Principe de Dirichlet : parmi les n + 1 états
q0 , q1 , . . . , qn , deux au moins sont égaux : soit l , k des entiers
tels que 0 ≤ k < l ≤ n et ql = qk .
Alors (q0 , ak , qk ) ∈ δ ∗ , (qk , al−k , ql ) ∈ δ ∗ , (ql , an−l) bn , f ) ∈ δ ∗
sont des chemins dans l’automate avec f un état terminal.
Mais alors ak an−l bn = an−l+k bn est reconnu par l’automate :
une contradiction (L’automate ne doit reconnaître que des mots
dans L). Donc L n’est pas reconnaissable.
(Autre exemple de contradiction : ak al−k al−k an−l b n = an+l−k b n
est reconnu par l’automate.)
8/14
Langages non reconnaissables
Remarque
La méthode précédente est la méthode utilisée pour démontrer
le lemme de l’étoile (en fait il en existe plusieurs versions plus
ou moins puissantes, plus ou moins facile à utiliser... en
particulier, il existe des théorèmes de l’étoile qui sont des
caractérisations)
9/14
Langages non reconnaissables
Outil de preuve : Lemme de l’étoile
Lemme de l’étoile, lemme d’itération, lemme d’Ogden, pumping
lemma
Soit A un alphabet. Soit L un langage sur A. Si L est
reconnaissable alors il existe un entier N > 0 tel que, pour tous
mots u, x1 , . . . , xN , v avec les xi mots non vides, si
ux1 . . . xN v ∈ L alors il existe des mots y , z et un mot non vide
t tel que x1 . . . xN = ytz et uyt ∗ zv ⊆ L.
Preuve du lemme de l’étoile :
Si L = ∅ alors L ∈ Rec(A∗ ) et L vérifie la propriété pour N = 1
par vacuité.
Si L 6= ∅, on utilise le même principe que dans la méthode 2.
10/14
Langages non reconnaissables
Preuve : méthode 3
Appliquons le lemme de l’étoile pour montrer que le langage
L = {an bn | n ≥ 0} defini sur l’alphabet {a, b} n’est pas
reconnaissable.
Supposons qu’il le soit. Soit N entier pour lequel le lemme de
l’étoile est vérifié. Soit u = ε, x1 = x2 = . . . = xN = a, v = bN .
D’après le lemme de l’étoile, il existe des mots y , t 6= ε, z tels
aN = ytz, et yt ∗ zbN ⊆ L. On peut voir que y = a|y | , t = a|t| ,
z = a|z| . Alors le mot a|y |+|z| bN = aN−|t| bN appartient à L : une
contradiction.
11/14
Langages non reconnaissables
Propriétés de clôture
Dans certains cas, les techniques précédentes sont difficilement
utilisables.
Une solution est d’utiliser les propriétés de clôture de la famille
des ensembles reconnaissables.
En particulier, il est assez fréquent d’utiliser le fait que le
complémentaire d’un langage reconnaissable ou que
l’intersection de deux langages reconnnaissables est un langage
reconnaissable. Mais cela n’est pas restrictif.
12/14
Langages non reconnaissables
Preuve : méthode 4
Soit L = {u ∈ {a, b}∗ | |u|a = |u|b }.
Soit X = {an bn | n ≥ 0}.
L ∩ a∗ b ∗ = X
On sait que le langage a∗ b∗ est un langage reconnaissable.
Si L est reconnaissable, l’intersection de deux langages
reconnaissables étant un langage reconnaissable, l’ensemble X
serait un langage reconnaissable, or on a prouvé précédemment que
c’est faux : on a une contradiction.
Donc L n’est pas reconnaissable.
13/14
Langages non reconnaissables
Propriétés de clôtures : rappels et compléments
L’union, le produit et l’intersection de deux langages
reconnaissables sont des langages reconnaissables.
Le complémentaire et l’étoile d’un langage reconnaissable sont
reconnaissables.
L’ensemble des facteurs des mots d’un langage reconnaissable
est reconnaissable.
L’ensemble des préfixes des mots d’un langage reconnaissable
est reconnaissable.
L’ensemble des suffixes des mots d’un langage reconnaissable.
est reconnaissable
L’ensemble des mots miroirs des mots d’un langage
reconnaissable est reconnaissable.
(Le mot miroir d’un mot u est le mot, noté ũ, obtenu en lisant
u à l’envers)
14/14
Téléchargement