Introduction aux langages formels
Qu'est-ce qu'un langage formel ?
Un langage formel est un ensemble de chaînes de caractères (ou "mots") construites à partir d'un ensemble fini de symboles appelé alphabet. Contrairement aux langages naturels (comme le français ou l'anglais) qui sont ambigus et évolutifs, les langages formels sont définis avec une précision mathématique rigoureuse. Ils sont le fondement de l'informatique théorique et ont des applications pratiques dans des domaines comme la compilation, la conception de circuits et l'analyse de texte.
- Alphabet () : C'est un ensemble fini et non vide de symboles ou de caractères.
- Exemples :
- (alphabet binaire)
- Exemples :
- Mot (ou chaîne de caractères) : C'est une séquence finie de symboles de l'alphabet.
- Exemples avec :
010,1111,0,epsilon( ou ) qui représente le mot vide (de longueur 0). - La longueur d'un mot , notée , est le nombre de symboles qu'il contient. Par exemple, , .
- Exemples avec :
- Langage () : C'est un ensemble de mots sur un alphabet donné. Un langage est donc un sous-ensemble de , où représente l'ensemble de tous les mots possibles (y compris le mot vide) que l'on peut former avec les symboles de .
- Exemples :
- (tous les mots composés uniquement de '0') sur .
- sur .
- sur .
- Exemples :
Opérations sur les langages
Tout comme on peut effectuer des opérations sur des ensembles, on peut aussi manipuler les langages avec des opérations spécifiques.
- Union () : L'ensemble de tous les mots qui appartiennent à ou à (ou aux deux).
- Exemple : Si et , alors .
- Intersection () : L'ensemble de tous les mots qui appartiennent à la fois à et à .
- Exemple : Si et , alors .
- Complémentaire () : L'ensemble de tous les mots sur qui n'appartiennent pas à .
- Exemple : Si et , alors contient tous les mots comme sauf et .
- Concaténation () : L'ensemble de tous les mots formés en prenant un mot de et en lui attachant un mot de . Formellement, .
- Exemple : Si et , alors .
- Itération (Étoile de Kleene, ) : L'ensemble de tous les mots que l'on peut former en concaténant zéro ou plusieurs mots de . Cela inclut le mot vide ().
- Exemple : Si , alors .
- Si , alors .
- L'opérateur plus de Kleene () est similaire mais exclut le mot vide : .
Hiérarchie de Chomsky (aperçu)
La Hiérarchie de Chomsky est une classification des langages formels selon leur complexité et le type d'automate nécessaire pour les reconnaître ou les générer. Elle a été proposée par Noam Chomsky en 1956. Cette hiérarchie est fondamentale en informatique théorique car elle permet de comprendre les limitations et les capacités des différents modèles de calcul.
Il existe quatre principaux types de langages, du plus simple au plus complexe :
- Langages de Type 3 (Langages Réguliers) :
- Ce sont les langages les plus simples.
- Ils peuvent être reconnus par des automates finis (AFD ou AFN) et décrits par des expressions régulières.
- Exemples : tout mot binaire qui commence par 0, une adresse e-mail valide (simplifiée), des nombres entiers.
- Langages de Type 2 (Langages Hors Contexte ou Context-Free) :
- Plus complexes que les langages réguliers.
- Ils peuvent être reconnus par des automates à pile.
- Ils sont décrits par des grammaires hors contexte (utilisées pour définir la syntaxe de la plupart des langages de programmation).
- Exemples : les expressions arithmétiques bien parenthésées, le langage de programmation Python (sa syntaxe).
- Langages de Type 1 (Langages Contextuels ou Context-Sensitive) :
- Plus complexes que les langages hors contexte.
- Ils peuvent être reconnus par des automates linéaires bornés.
- Ils sont décrits par des grammaires contextuelles.
- Moins utilisés en pratique directe que les précédents.
- Langages de Type 0 (Langages Récursivement Énumérables) :
- Les langages les plus généraux de la hiérarchie.
- Ils peuvent être reconnus par des machines de Turing (le modèle de calcul le plus puissant).
- Ces langages incluent tous les problèmes que l'on peut résoudre avec un algorithme.
Pour le programme de NSI, nous nous concentrerons principalement sur les langages réguliers et les outils pour les manipuler : les expressions régulières et les automates finis.


