Skip to main content

Langages non réguliers

Au chapitre précédent, nous avons étudié les langages réguliers. Nous avons particulièrement montré que les langages réguliers. Ainsi donc, le problème de décision ωL\omega \in L peut être résolu par un automate fini uniquement si LL est un langage régulier. Il se pose donc la question de l'existence de langages non réguliers. Nous allons tout d'abord montrer l'existence de tels langages, puis nous donnons une condition nécessaire pour qu'un langage soit régulier. La négation de cette condition nécessaire donne une condition suffisante pour qu'un langage ne soit pas régulier, et donc pour prouver l'irrégularité.

Existence de langages non réguliers

Nous montrons maintenant qu'il existe strictement plus de langages qu'il n'existe de langages réguliers. L'ensemble des langages et l'ensemble des langages réguliers sont tous deux infinis. Nous introduisons donc dans un premier temps les outils permettant de comparer la taille de deux ensembles infinis.

Soit deux ensemble AA et BB et f:ABf:A \rightarrow B une fonction de AA dans BB. La fonction ff est une bijection si et seulement si

  • quels que soient a,aAa,a' \in A avec aa,f(a)f(a)a\neq a', f(a) \neq f(a') (injection)
  • que que soit bBb \in B, il existe aAa \in A tel que b=f(a)b=f(a) (surjection)

Une bijection définit une correspondance (association) entre les éléments de AA et de BB, de telle façon que chaque élément de AA identifie un unique élément de BB, et vice versa

Un ensemble AA est dénombrable si et seulement s'il existe une bijection f:ANf:A\rightarrow \mathbb{N} entre AA et l'ensemble des entiers naturels N\mathbb{N}

Un ensemble est donc dénombrable s'il est possible d'attribuer un numéro à chacun de ses éléments. Intuitivement on peut énumérer les éléments d'un ensemble dénombrable, bien qu'il soit infini. Il y a donc un premier élément, et tout élément admet un élément suivant. Ainsi ces ensemble peuvent être définis par des fonctions récursives.

Lemme

L'ensemble Σ\Sigma^\ast des mots sur un alphabet Σ\Sigma est dénombrable. Preuve page 33

Puisque l'ensemble des mots sur un alphabet fixé Σ\Sigma est dénombrable, l'ensemble des expressions régulières sur Σ\Sigma est lui aussi dénombrable. En effet une expression régulière sur Σ\Sigma est un mot sur Σ{,ϵ,+,,(,)}\Sigma \cup \{\varnothing, \epsilon,+,\star,(,)\}.

Lemme

L'ensemble des parties d'un ensemble dénombrable n'est pas dénombrable

Nous déduisons alors des deux lemmes précédent qu'il existe des langages non réguliers. Ils ne sont donc pas acceptés par des automates finis, mais par des machines plus complexes. Ils ne sont pas non plus représentables par des expressions régulières.

Théorème

Il existe des langages qui ne sont pas réguliers

Par le premier lemme, nous savons qu'il existe un nombre dénombrable d'expressions régulières puisqu'une expression régulière peut être vue comme un mot sur l'alphabet Σ{,ϵ,+,}\Sigma \cup \{\varnothing,\epsilon,+,\star\}Σ\Sigma est un alphabet de symboles. De plus nous savons qu'il y a autant de langages réguliers que d'expressions régulières, et donc que l'ensemble des langages réguliers est dénombrable. Par le deuxième lemme, l'ensemble des langages étant l'ensemble des ensembles de mots, nous savons que l'ensemble des langages est non dénombrable. Par conséquent, certains langages ne sont pas réguliers.

Lemme de l'étoile

Il existe donc des langages qui ne sont pas réguliers. Il n'est pas possible de déterminer si un langage est régulier. Cependant, nous exhibons maintenant une condition suffisante pour qu'un langage ne soit pas régulier

  1. Remarquons tout d'abord qu'un langage non régulier est nécessairement infini
  2. Puisqu'un alphabet est fini, un langage infini contient des mots de longueur non bornée.
  3. Tout langage régulier est accepté par un automate fini AA. Soit NN le nombre d'états de AA.
  4. Tout mot ω\omega appartenant à L(A)\mathcal{L}(A), et tel que ω>N\omega>N, est reconnu par une exécution de AA qui passe au moins deux fois par le même état ![etoile]
  5. Par conséquent, le langage x.u.yx.u^\ast.y est inclus dans L(A)\mathcal{L}(A): il est possible de boucler autant de fois que souhaité sur l'état qq avec de se diriger vers qFq_F

Ceci nous donne donc une condition nécessaire pour qu'un langage soit régulier : tout mot suffisamment long doit contenir un sous mot qui peut être répété un nombre arbitrairement grand de fois. Ceci n'est pas un moyen de prouver qu'un langage est régulier : il faudrait considérer un nombre infini de mots (cette condition est nécessaire mais non suffisante). Par contre cette méthode permet de prouver qu'un langage n'est pas régulier en montrant qu'il comporte (au moins) un mot qui ne respecte pas ce principe.

Théorème (Lemme de l'étoile / Pumping lemma)

Soient LL un langage régulier infini, et A=(Q,Σ,δ,q0,F)A=(Q,\Sigma,\delta,q_0,F) un automate fini déterministe tel que L=L(A)L=\mathcal{L}(A). Pour tout mot ωL\omega \in L tel que ωcard(Q)\omega \geq card(Q), il existe x,u,yΣx,u,y \in \Sigma^\ast, tels que uϵu \neq \epsilon et x.ucard(Q)|x.u| \leq card(Q), vérifiant : x.u.y=ωx.u.y=\omega et k0,x.uk.yL\forall k \geq 0 , x.u^k.y \in L.

Contraposé du théorème

Si pour tout entier N>0N>0 il existe un mot ωL\omega \in L de longueur ωN|\omega| \geq N tel que pour toute décomposition ω=xuy\omega = x u y avec xuN|xu| \leq N et uϵu \neq \epsilon, il existe i0i \geq 0 tel que xuiyLxu^iy \in L, alors LL n'est pas régulier

Afin de prouver qu’un langage n’est pas régulier nous falsifions le lemme de l’étoile. Intuitivement, il s’agit de prouver que quel que soit l’automate fini A considéré, celui-ci ne peut pas accepter L. Il n’est bien entendu pas possible d’examiner tous les automates finis, mais nous quantifions de la façon suivante :

  • La taille de l’automate A devient un paramètre de la preuve, et nous choisissons ω\omega de tel sorte à ce qu’il soit plus grand que ce nombre d’états afin de faire apparaître un cycle sur tout chemin acceptant ω\omega dans AA.
  • D’autre part, la décomposition w=x.u.yw = x.u.y devient le second paramètre de la preuve. Nous considérons donc toutes les décompositions satisfaisant les contraintes sur x,ux, u et yy, et nous fixons une kk telle que x.uk.yLx . u k . y \notin L.

Le lemme de l'étoile permet de montrer qu'il n'existe pas d'automate fini déterministe qui accepte un langage LL donné. Ceci ne suffit pas à prouver que LL n'est pas régulier. En effet, il pourrait exister un automate non déterministe qui accepte LL. Nous verons au chapitre 5 que ce n'est pas le cas : à tout automate non déterministe correspond un automate déterministe qui accepte le même langage