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