Introduction aux langages formels
Qu'est-ce qu'un langage ?
Nous sommes tous familiers avec la notion de langues naturelles, telles que l'arabe, l'anglais et le français. Pourtant, la plupart d'entre nous trouveraient probablement difficile de dire exactement ce que signifie le mot "langue". Les dictionnaires définissent le terme de manière informelle comme un système adapté à l'expression de certaines idées, de certains faits ou concepts, y compris un ensemble de symboles et de règles pour leur manipulation.
Bien que cela nous donne une idée intuitive de ce qu'est un langage, ce n'est pas une définition suffisante pour l'étude des langages formels. Nous avons besoin d'une définition précise de ce terme.
Alphabet et mots
Nous commençons par un ensemble fini et non vide \(\Sigma\) de symboles, appelé l'alphabet. À partir des symboles individuels, nous construisons des mots, qui sont des séquences finies de symboles de l'alphabet.
- Un alphabet \(\Sigma\) est un ensemble fini et non vide de symboles.
- Un mot sur \(\Sigma\) est une séquence finie de symboles de \(\Sigma\).
Exemple
Si l'alphabet \(\Sigma = \{a, b\}\), alors abab et aaabbba sont des mots sur \(\Sigma\).
À quelques exceptions près, nous utiliserons les lettres minuscules a, b, c, ... pour les éléments de \(\Sigma\) et u, v, w, ... pour les mots. Nous écrirons, par exemple : \[ w = abaaa \] pour indiquer que le mot w a la valeur spécifique abaaa.
Opérations sur les mots
Concaténation
La concaténation de deux mots w et v est le mot obtenu en ajoutant les symboles de v à l'extrémité droite de w.
Inverse
L'inverse d'un mot est obtenu en écrivant les symboles dans l'ordre inverse.
Longueur
La longueur d'un mot w, notée \(|w|\), est le nombre de symboles dans ce mot.
Mot vide
Nous aurons souvent besoin de nous référer au mot vide, qui est une chaîne sans aucun symbole. Elle sera dénotée par \(\lambda\).
Préfixe, suffixe et sous-chaîne
Toute chaîne de symboles consécutifs dans un certain w est dite une sous-chaîne de w.
Exemple
Si \(w = abbab\), alors :
- L'ensemble de tous les préfixes de w est : \(\{\lambda, a, ab, abb, abba, abbab\}\)
- Quelques suffixes de w sont : bab, ab, b
Puissance d'un mot
Si w est un mot, alors \(w^n\) représente le mot obtenu en répétant w n fois.
Propriété fondamentale : longueur de la concaténation
Bien que cette relation soit évidente, il est utile de pouvoir la préciser et la prouver. Les techniques pour le faire sont importantes dans des situations plus compliquées.
Ensembles de mots
Fermeture de Kleene \(\Sigma^{*}\)
L'ensemble \(\Sigma^{*}\) contient toujours \(\lambda\).
Ensemble des mots non vides \(\Sigma^{+}\)
On définit l'ensemble \(\Sigma^{+}\) des mots non vides sur \(\Sigma\) comme le plus petit ensemble tel que :
- Pour toute lettre (symbole) a de \(\Sigma\), \(a \in \Sigma^{+}\)
- Pour tous \(u \in \Sigma^{+}\) et \(a \in \Sigma\), \(ua \in \Sigma^{+}\)
Où \(ua\) représente la concaténation du mot u et de la lettre a.
Définition d'un langage
Cette définition est assez large ; tout ensemble de mots sur un alphabet \(\Sigma\) peut être considéré comme un langage.
Exemple 1 : Langage fini
Soit \(\Sigma = \{a, b\}\), alors :
\[ \Sigma^{*} = \{\lambda, a, b, aa, ab, ba, bb, aaa, aab, \dots \} \]
L'ensemble \(L = \{a, aa, aab\}\) est un langage sur \(\Sigma\). Parce qu'il a un nombre fini de mots, nous l'appelons un langage fini.
Exemple 2 : Langage infini
L'ensemble \(L = \{a^n b^n : n \ge 0\}\) est aussi un langage sur \(\Sigma\).
- Les mots aabb (\(a^2b^2\)) et aaaabbbb (\(a^4b^4\)) sont dans le langage L.
- Le mot abb n'est pas dans L.
Ce langage est infini.
Opérations sur les langages
Puisque les langages sont des ensembles, les opérations ensemblistes classiques s'appliquent.
Opérations ensemblistes
- Union : \(L_1 \cup L_2 = \{w : w \in L_1 \text{ ou } w \in L_2\}\)
- Intersection : \(L_1 \cap L_2 = \{w : w \in L_1 \text{ et } w \in L_2\}\)
- Différence : \(L_1 - L_2 = \{w : w \in L_1 \text{ et } w \notin L_2\}\)
Complément
Inverse
Concaténation
Puissance d'un langage
Fermetures
Exemples d'opérations
Soit \(\Sigma = \{a, b\}\), et considérons les langages :
- \(L_1 = \{a, ab\}\)
- \(L_2 = \{b, ba\}\)
Alors :
- \(L_1L_2 = \{ab, aba, abb, abba\}\)
- \(L_1^2 = \{aa, aab, aba, abab\}\)
- \(L_1^{*}\) contient \(\lambda\), a, ab, aa, aab, aba, abab, ... (toutes les concaténations possibles de a et ab)
Tableau récapitulatif des notations
| Notation | Signification | Exemple (\(\Sigma=\{a,b\}\)) |
|---|---|---|
| \(\Sigma\) | Alphabet (ensemble fini de symboles) | \(\{a, b\}\) |
| \(w\) | Mot (séquence finie de symboles) | \(abba\) |
| \(\lambda\) | Mot vide | \(| \lambda | = 0\) |
| \(|w|\) | Longueur d'un mot | \(|abba| = 4\) |
| \(w^R\) | Inverse d'un mot | \((abba)^R = abba\) |
| \(\Sigma^{*}\) | Tous les mots sur \(\Sigma\) (y compris \(\lambda\)) | \(\{\lambda, a, b, aa, ab, ba, bb, \dots\}\) |
| \(\Sigma^{+}\) | Tous les mots non vides sur \(\Sigma\) | \(\{a, b, aa, ab, ba, bb, \dots\}\) |
| \(L \subseteq \Sigma^{*}\) | Langage (ensemble de mots) | \(L = \{a^n b^n : n \ge 0\}\) |
| \(L_1L_2\) | Concaténation de langages | \(\{a\}\{b\} = \{ab\}\) |
| \(L^n\) | Puissance d'un langage | \(L^2 = LL\) |
| \(L^{*}\) | Fermeture étoile | \(L^0 \cup L^1 \cup L^2 \cup \dots\) |
| \(L^{+}\) | Fermeture positive | \(L^1 \cup L^2 \cup \dots\) |
Ce cours introduit les concepts fondamentaux de la théorie des langages formels :
- Alphabet (\(\Sigma\)) : ensemble fini de symboles
- Mot : séquence finie de symboles
- Opérations sur les mots : concaténation, inverse, longueur, puissance
- Ensembles de mots : \(\Sigma^{*}\) (tous les mots), \(\Sigma^{+}\) (mots non vides)
- Langage : sous-ensemble de \(\Sigma^{*}\)
- Opérations sur les langages : union, intersection, complément, concaténation, fermetures étoile et positive
Mots-clés : #Alphabet #Mot #Langage #Concaténation #FermetureDeKleene #ThéorieDesLangages
Discussion (0)
Soyez le premier à laisser un commentaire !
Laisser un commentaire
Votre commentaire sera visible après modération.