Aller au contenu principal

TD 3 : langages non réguliers

Exercice 1​

Non traité dans ces notes.

Exercice 2​

Il suffit de montrer qu'il existe un automate fini qui accepte le langage LL.

Exercice 3​

Voir la contraposée dans les notes du cours 3 : il faut ensuite saisir que la contraposée du lemme implique la non-régularité.

Exercice 4​

  1. Oui, l'expression régulière (aa+ab+ba+bb)∗(aa+ab+ba+bb)^\ast permet de décrire le langage.
  2. Non, car un automate fini a une mémoire bornée. Supposons LL accepté par un automate fini à N>0N>0 états.
    • Soit le mot ω=aNbN\omega = a^N b^N : on a bien ω∈L\omega \in L et ∣ω∣≥N|\omega|\geq N.
    • Toute décomposition ω=xuy\omega = xuy avec ∣xu∣≤N|xu| \leq N et u≠ϵu \neq \epsilon vérifie u=aju = a^j avec j>0j > 0. Pour tout i≠1i \neq 1, xuiy=aN+(i−1)jbN∉Lxu^iy = a^{N+(i-1)j}b^N \notin L ; on peut prendre i=2i=2.
  3. La condition de primalité est complexe, on imagine donc difficilement qu'elle puisse être reconnue par un automate ; on utilise encore la contraposée du lemme de l'étoile. Supposons que L3L_3 est accepté par un automate fini à N>0N>0 états. Soit p≥N+2p \geq N+2 un nombre premier : le mot apa^p est dans L3L_3. Toute décomposition s'écrit xuy=aiajakxuy=a^i a^j a^k avec i+j≤Ni+j \leq N et j>0j > 0. En répétant uu m=i+km = i+k fois, on obtient xumy=a(i+k)+(i+k)j=a(i+k)(j+1)x u^{m} y = a^{(i+k) + (i+k)j} = a^{(i+k)(j+1)}, dont la longueur n'est pas un nombre premier puisque i+k=p−j≥2i+k = p-j \geq 2 et j+1≥2j+1 \geq 2. Ce mot n'est donc pas dans L3L_3.
  4. Oui.
  5. Prenons N>0N>0 et le mot suffisamment long aN#aNa^N \# a^N. Le facteur uu ne contient que des aa de la partie gauche ; en le supprimant (i=0i=0), on obtient un mot qui contient moins de aa à gauche qu'à droite.

Exercice 5​

C'est le point (iii) qui pose problème : un sous-ensemble d'un langage régulier n'est pas forcément régulier. Cependant, L′L' est ici bien régulier, puisqu'il suffit de se souvenir de la parité globale, mais ce n'est pas cette preuve qui le montre. On pourrait dire que L′=L∩L1L'=L \cap L_1, et l'intersection de deux langages réguliers est un langage régulier.

Exercice 6​

Le raisonnement est correct : on le montre par la contraposée. Pour passer de (iv) à (v) : si LL était régulier, alors son intersection avec un langage régulier serait aussi un langage régulier, ce qui n'est pas le cas (iii), donc LL n'est pas régulier.

Exercice 7​

  1. On prend le miroir de L6L_6 : L6R={bman∣n≥m}L_{6}^R=\{b^m a^n | n \geq m\} et on applique le lemme de l'étoile (ou on utilise l'exo 4.2) pour montrer que L6RL_6^R n'est pas régulier ; les langages réguliers étant clos par miroir, L6L_6 ne l'est pas non plus.
  2. L7∩a∗b∗={anbn∣n≥0}L_7 \cap a^\ast b^\ast = \{a^n b^n \mid n \geq 0\} n'est pas régulier, donc, comme pour l'exercice 6, L7L_7 n'est pas régulier.
  3. On considère un automate qui accepte L8L_8 et on rend accepteurs tous les états depuis lesquels il existe un chemin menant à un état accepteur.
  4. Oui si ∣Σ∣=1|\Sigma|=1. Sinon, on utilise encore la contraposée du lemme de l'étoile en choisissant bien le mot. On prend ω=aNbbaN\omega=a^N bb a^N : toute décomposition pompe des aa de la partie gauche, si bien que les bbbb ne sont plus au milieu du mot obtenu.