Introduction au module


Version : 2.71

© E. Desmontils

Présentation du cours

Le module "Langages formels" vise à introduire les bases de la théorie des langages, des automates ainsi que les principales notions sur lescompilateurs. Il permet d'appréhender un certain nombre de techniquesfondamentales :

Ce cours propose aussi d'habituer l'étudiant à des formalisations et démonstrations utiles pour d'autres cours.

Nous y définissons les notions suivantes : vocabulaire, langage, grammaires, classification de Chomsky, langages relationnels, expressions régulières, machine de Turing, automates déterministes et non-déterministes. Nous présentons aussi bien les bases théoriques nécessaires à la bonne compréhension de ces notions que des algorithmes de base permettant de les manipuler. En particulier,nous nous attachons à présenter les outils permettant de construire un analyseur de chaînes de symboles à partir d'une ou plusieurs expressions décrivant leur construction (le langage). 


Prérequis

Pour comprendre les notions abodées dans ce modules, il est nécessaire de bien maitriser les concepts suivants : théorie des ensembles, démonstration par l'absurde et démonstration par induction, algorithmique, programmation impérative (éventuellement programmation objet Java).

Du point de vue de l'e-miage, les modules suivants sont conseillés pour bien aborder le module B209 :


Plan de ce cours

Nous débuterons ce cours par une présentation des bases de la théorie des langages formels (Chap. 2). Nous présenterons les notions de base : alphabet, chaîne, mot, langage... ainsi que les opérations associées sur les mots et les langages. Nous insisterons notamment sur une classe de langage particulière : les langages rationnels (Chap. 3). Nous donnerons des définitions et des outils permettant de les décrire dont principalement les expressions régulières. Nous présenterons aussi une méthode permettant de déterminer si un langage n'est pas rationnel, basée sur le lemme de la pompe.

Nous introduirons aussi les grammaires (Chap. 4) permettant de définir un langage. Une grammaire (ou syntaxe) est un ensemble de règles applicables à un vocabulaire définissant les phrases bien formées du langage. Cette analyse se situe à un niveau purement syntaxique. Une phrase appartenant à un langage peu ne pas avoir de sens d'un point de vue sémantique mais en avoir du point de vue syntaxique. Une grammaire a deux fonctions : produire (des phrases syntaxiquement correctes) et reconnaître (des phrases comme syntaxiquement correctes).

Ensuite, nous introduirons rapidement les machines de Turing avant de nous attarder sur un cas particulier : les automates à nombre fini d'états (Chap. 5) (appelé aussi Automates d'états finis ou automate fini). Nous donnerons toutes les définitions nécessaires à leur compréhension et à leur utilisation. De plus, nous verrons comment les "optimiser" en les rendant déterministes et minimaux. Nous proposerons aussi une succession d'algorithmes permettant de combiner et transformer ces automates finis.

Après avoir montré l'équivalence entre les langages rationnels et les langages reconnus par les automates finis (Chap. 6) (théorème de Kleene), nous présenterons aussi des méthodes permettant de passer d'une expression régulière (décrivant un langage rationnel) à un automate fini déterministe et minimal capable de reconnaître des mots de ce langage ainsi que les opérations inverses.

Enfin, nous exposerons des applications (Chap. 7) possibles des automates finis. Nous verrons en particulier leur utilisation dans le processus de compilation d'un langage informatique et dans le traitement du langage naturel.

Certaines parties sont relativement indépendantes et peuvent donc être abordées en parallèle. Le graphe ci-dessous présente les dépendances entre les grandes parties de ce cours. Les icônes indiquent les devoirs à effectuer.

Organisation des devoirs


Participants

Responsable du module :

Remerciement :


Notations

Il y a peu de conventions spécifiques pour ce cours. Cependant, nous essayerons de respecter les notations suivantes :

et un texte
indique une définition.
et un texte
indique un théorème, parfois suivi d'une
démonstration
et un texte
indique un lemme, parfois suivi d'une
démonstration
indique une remarque importante.
Exercices et tests
indique une série d'exercices pour tester les connaissances acquises
ou

indiquent une aide pour résoudre un exercice

indique la solution à un exercice


Bibliographie

Les références en gras sont celles qui ont été plus particulièrement utilisées pour la construction de ce cours.


Cours Web

Plus généralement, des bases de cours : http://rangiroa.essi.fr/cours/ & http://rangiroa.essi.fr/specif/spedago/index.html


Outils


E. Desmontils - Web :
Last modified: samedi 9 janvier 2013