Concaténation de langages réguliers
Soient deux langages réguliers L1, L2. Nous allons démontrer que leur concaténation L = L1 ∘ L2 est aussi un langage régulier.
Qu’est-ce que la concaténation
En concaténant les deux mots « 010 » et « 1111 », on obtient le mot « 0101111 ». La concaténation de langages donne un nouveau langage, que l’on construit en concaténant chaque mot du premier langage avec chaque mot du second. Nous noterons la concaténation de deux mots ou de deux langages à l’aide d’un petit rond : ∘. On peut alors définir la concaténation des langages L1 et L2 ainsi :
Idée de la démonstration
Nous avons deux langages réguliers L1, L2 et deux automates qui acceptent ces langages :
Nous construisons un automate non déterministe A = (Q ; Σ ; δ ; q ; F) qui « contiendra » les deux automates A1 et A2. L’idée de base est que l’on commence à lire le mot avec l’automate A1 et que, lorsque l’automate A1 arrive dans un état final, on essaie d’accepter le reste du mot avec l’automate A2. Si ce dernier accepte lui aussi cette partie du mot, alors l’automate A accepte le mot.
Exemple
Soit l’automate A1 suivant, qui accepte les mots non vides composés uniquement de 0, ainsi que les mots composés d’un 1 suivi seulement de 0 (1, 10, 100, …) :
et l’automate A2 suivant, qui accepte les mots qui se terminent par 01 :
Nous relions les automates ainsi : depuis tous les états finals de l’automate A1, nous ajoutons des ε-transitions vers l’état initial de l’automate A2, puis nous transformons les états finals de A1 en états ordinaires. L’état initial du nouvel automate est l’état initial de l’automate A1 :
Comment cet automate fonctionne-t-il ? On commence par simuler le fonctionnement de l’automate A1. Si l’on arrive dans un ancien état final q1 ou q2, on sait que l’automate A1 accepte une partie de ce mot. Pour que le mot entier appartienne au langage L1 ∘ L2, il faut que le reste du mot soit encore accepté par le second automate A2 : c’est pourquoi de tous les anciens états finals partent des ε-transitions vers l’ancien état initial de l’automate A2.
Prenons par exemple le mot 0001. Il appartient à la concaténation des deux langages, car il peut être obtenu en concaténant les mots 00 ∘ 01. Mais il peut tout aussi bien être obtenu en concaténant les mots 0 ∘ 001. Dans notre automate, nous pouvons simuler les deux possibilités. L’automate peut suivre ce chemin :
Par ce chemin, l’automate « accepte » d’abord la partie 00 du mot, puis la partie 01. Ou bien il peut suivre ce chemin :
et l’automate « accepte » alors d’abord la partie 0 du mot, puis la partie 001. Dans les deux cas, nous arrivons bien sûr dans l’état final p2.
Méthode formelle
Encore une fois : nous avons deux langages réguliers L1, L2 et deux automates qui acceptent ces langages :
Nous construisons un automate non déterministe A = (Q ; Σ ; δ ; q ; F) tel que :
- Q = Q1 ∪ Q2 (nous supposons en même temps que Q1 ∩ Q2 = ∅)
- Σ= Σ1 ∪ Σ2
- q = q0
- F = F2
Nous construisons la fonction de transition δ par étapes :
Sources
Chapitres: Propriétés de clôture des langages réguliers, Réunion de langages réguliers, Intersection de langages réguliers, Différence de langages réguliers, Complémentaire d’un langage régulier, Concaténation de langages réguliers, Étoile d’un langage régulier