Aller au contenu principal

Automates finis et applications

Les automates finis modélisent des programmes à mémoire finie : ils permettent de résoudre un problème sans dépendre d'un langage de programmation, en raisonnant sur les invariants à maintenir. Le cours part des langages et des automates finis déterministes, établit avec le théorème de Kleene l'équivalence entre automates, langages réguliers et expressions régulières, puis montre par le lemme de l'étoile que certains langages ne sont pas réguliers. Viennent ensuite les grammaires, la déterminisation des automates non déterministes et le calcul de l'automate minimal. Les TD suivent les mêmes chapitres et se terminent par une introduction à l'analyse lexicale.

Notes de cours​

Cours6 pages

  • Automates finis et langagesFormalisation des problèmes de décision par des langages, puis des algorithmes par des automates finis : alphabet, mot, langage, automate déterministe et complet, langage accepté.
  • Expressions régulières et théorème de KleeneLangages réguliers, expressions régulières et théorème de Kleene : équivalence entre automates finis, langages réguliers et expressions régulières.
  • Langages non réguliersExistence de langages non réguliers par un argument de dénombrabilité, puis lemme de l'étoile (pumping lemma) pour prouver qu'un langage n'est pas régulier.
  • GrammairesGrammaires formelles : dérivation, langage généré, grammaires régulières, hiérarchie de Chomsky, arbres de dérivation et ambiguïté.
  • Non-déterminisme et déterminisationÉlimination du non-déterminisme dans les automates finis : exécutions d'un AFN, clôture instantanée (epsilon-clôture) et construction par sous-ensembles.
  • Automate minimal et minimisationReprésentation canonique des langages réguliers par l'automate minimal (congruence de Nerode) et algorithme de minimisation : suppression des états inaccessibles puis fusion des états équivalents.

Travaux dirigés6 pages

Ressources​

Support de l'enseignant (Moodle)1 document

Sujets de TD7 documents