Skip to main content

Welcome to a Grasp lesson

Create a free account to keep studying and create your own study path.

Lesson 73

Le Lemme de Pompage pour les Langages Réguliers

Recommended resources

Bonjour,

Dans la leçon précédente, nous avons complété la preuve du théorème de Kleene en montrant comment convertir un automate fini en une expression régulière. Nous avons ainsi établi l'équivalence fondamentale entre ces deux formalismes : ils décrivent exactement la même classe de langages, les langages réguliers.

Maintenant que nous savons caractériser les langages réguliers, une question naturelle se pose : tous les langages sont-ils réguliers ? La réponse est non. Notre objectif aujourd'hui est d'introduire et de maîtriser l'outil principal pour le prouver : le lemme de pompage (ou lemme de l'étoile). Cet outil exploite une propriété structurelle profonde des automates finis pour démontrer qu'un langage donné ne peut être reconnu par aucun d'entre eux.

La maîtrise de ce lemme est cruciale. Elle demande une grande rigueur logique, notamment dans la manipulation des quantificateurs, ce qui en fait un sujet de prédilection pour les épreuves de l'agrégation.


1. La Limite de la Mémoire Finie

Intuitivement, un automate fini déterministe (AFD) ne dispose que d'une mémoire finie, matérialisée par son nombre fini d'états. Il ne peut donc pas "compter" indéfiniment. Par exemple, pour reconnaître le langage , un automate devrait se souvenir du nombre exact de 0 lus pour le comparer au nombre de 1. Si ce nombre peut être arbitrairement grand, un nombre fini d'états ne peut suffire.

Le lemme de pompage formalise cette intuition. Il stipule que si un automate avec états accepte un mot de longueur supérieure ou égale à , le chemin d'acceptation dans l'automate doit nécessairement contenir un cycle (une boucle). C'est une application directe du principe des tiroirs de Dirichlet : si l'on traite symboles, on visite états, donc au moins un état doit être visité plus d'une fois.

Cette boucle peut alors être "pompée" : on peut la parcourir 0 fois, 1 fois, 2 fois, etc., générant ainsi une infinité de nouveaux mots qui doivent tous être acceptés par l'automate.

La vidéo suivante explique de manière très visuelle et en français comment l'existence de cette boucle est inévitable.

Comprendre le lemme de l'étoile (dit aussi lemme de pompage)

Cette vidéo de la chaîne 'Informatique Théorique' offre une excellente introduction à la preuve du lemme. Elle illustre parfaitement comment un mot suffisamment long force la répétition d'un état, créant une boucle 'pompable'.

Regardez la section de 01:49 à 04:09. Concentrez-vous sur la manière dont le chemin dans l'automate est décomposé en trois parties (x, y, z) autour de la boucle.



2. Énoncé Formel du Lemme de Pompage

La difficulté du lemme ne réside pas tant dans son intuition que dans la précision de son énoncé formel, qui implique une alternance de quantificateurs.

Lemme 5.1 (Lemme de pompage pour les langages réguliers)
Soit un langage régulier. Il existe un entier (appelé "longueur de pompage") tel que pour tout mot avec , il existe une décomposition satisfaisant les trois conditions suivantes :

  1. (la partie pompée n'est pas vide).
  2. (la boucle se situe dans les premiers symboles du mot).
  3. Pour tout entier , le mot est dans .

Ce document de l'Université de Waterloo est une référence écrite exemplaire pour l'énoncé et la preuve formelle.

Proving languages to be nonregular

Ce document présente une version très propre et rigoureuse du lemme et de sa preuve. C'est le type de formalisme que vous devez viser.

Lisez attentivement la section 5.1 "The pumping lemma for regular languages" (pages 45-48). Attardez-vous sur la preuve formelle du Lemme 5.1. Elle détaille comment les indices s et t sont choisis pour délimiter la boucle et comment les trois conditions en découlent.



3. Utilisation du Lemme : La Preuve par Contradiction

Le lemme de pompage est presque exclusivement utilisé pour prouver qu'un langage n'est pas régulier, via une preuve par l'absurde. La structure de la preuve peut être vue comme un jeu contradictoire :

  1. Hypothèse : On suppose que le langage que l'on veut prouver non-régulier est régulier.
  2. Affirmation du lemme : Puisque est supposé régulier, il doit satisfaire le lemme de pompage. Il existe donc une longueur de pompage . Vous ne connaissez pas , vous savez seulement qu'il existe.
  3. Choix stratégique du mot : C'est l'étape la plus créative. Vous devez choisir un mot spécifique dont la longueur dépend de (par exemple, ) et qui est "fragile" à la décomposition. Votre choix doit être suffisamment malin pour que, peu importe comment l'adversaire décompose , la structure du mot soit cassée par le pompage.
  4. Analyse de la décomposition : Le lemme garantit qu'il existe une décomposition avec et . La condition est souvent la clé : elle contraint la nature de . Par exemple, pour , elle implique que ne peut contenir que des 0.
  5. Contradiction : Vous choisissez une valeur de (souvent pour "pomper à vide" ou pour dupliquer) et montrez que le mot résultant n'appartient pas à .
  6. Conclusion : Ceci contredit la condition 3 du lemme. L'hypothèse de départ (que est régulier) est donc fausse.

Exemple Canonique :

La vidéo suivante de Michael Sipser (auteur de l'un de vos ouvrages de référence) applique cette méthode de manière exemplaire.

3. Regular Pumping Lemma, Conversion of FA to Regular Expressions

Regardez l'un des pères du domaine appliquer le lemme pour prouver que le langage {0^k1^k} n'est pas régulier. L'explication est d'une clarté remarquable.

Visionnez la section de 50:35 à 54:23. Suivez chaque étape du raisonnement : l'hypothèse par l'absurde, le choix du mot s = 0^p1^p, l'utilisation de la condition |xy| ≤ p pour contraindre y, et la conclusion de la contradiction en pompant (i=2).



4. Exercice d'Application

Appliquons cette méthode à un autre langage classique.
Prouvez que le langage (les palindromes) n'est pas régulier.

  1. Hypothèse : Supposons que est régulier. Il existe donc une longueur de pompage .
  2. Choix du mot : Choisissons un palindrome dont la structure dépend de et qui place un "marqueur" au-delà de la zone de pompage initiale. Un excellent candidat est . Ce mot est bien dans et sa longueur est supérieure à .
  3. Analyse de la décomposition :
    • Le lemme garantit que peut être écrit .
    • Les conditions sont : et .
    • Puisque , la sous-chaîne est entièrement contenue dans le préfixe . Par conséquent, et ne sont composés que de 0.
    • On peut donc écrire , , , avec (car ).
  4. Contradiction :
    • Le lemme affirme que pour tout .
    • Choisissons . Le nouveau mot est .
    • Puisque , le nombre de 0 avant le 1 est différent du nombre de 0 après le 1. Le mot n'est donc pas un palindrome.
  5. Conclusion : Nous avons trouvé un mot qui n'est pas dans , ce qui contredit le lemme. Notre hypothèse initiale est donc fausse : n'est pas un langage régulier.

Vous pouvez retrouver ce même raisonnement dans la section 2 du document de Waterloo (LINK, page 52, Proposition 5.7).



5. Une Technique Alternative : Utiliser les Propriétés de Clôture

Parfois, une preuve plus élégante peut être construite en combinant le lemme de pompage avec les propriétés de clôture des langages réguliers (union, intersection, complément, etc.).

Par exemple, pour prouver que n'est pas régulier :

  1. Supposons par l'absurde que est régulier.
  2. Le langage est clairement régulier (décrit par l'expression régulière 0*1*).
  3. Nous savons que la classe des langages réguliers est close par intersection. Donc, si et sont réguliers, doit aussi être régulier.
  4. Or, .
  5. Nous avons déjà prouvé (ou nous pouvons prouver avec le lemme) que n'est pas régulier. C'est une contradiction.
  6. Donc, l'hypothèse que est régulier est fausse.

Cette technique est très puissante et témoigne d'une compréhension profonde des propriétés de la classe des langages réguliers. Le professeur Sipser l'aborde à la fin de sa vidéo (LINK, à partir de 58:29).



Conclusion

Cette leçon vous a armé d'un outil fondamental pour analyser les limites des automates finis.

Points clés à retenir :

  • Le lemme de pompage est une conséquence directe du nombre fini d'états d'un automate. Tout mot suffisamment long force une boucle.
  • Son énoncé formel est précis, et la condition est souvent la clé pour restreindre les décompositions possibles.
  • La méthode d'utilisation est une preuve par l'absurde structurée comme un jeu : vous choisissez un mot "intelligent" en fonction de , puis vous montrez que, quelle que soit la décomposition, le pompage mène à une contradiction.
  • Les propriétés de clôture peuvent offrir une voie de preuve alternative élégante en réduisant un problème à un cas déjà connu.

Nous avons maintenant atteint la limite expressive des langages réguliers. Dans notre prochain module, nous explorerons des modèles de calcul plus puissants capables de gérer des structures plus complexes, comme la correspondance de parenthèses ou les langages de programmation. Nous commencerons par définir les grammaires hors-contexte et les automates à pile, qui forment la base de l'analyse syntaxique.