Langages formels et automates – cours 1 Introduction et rappels de maths discrètes Catalin Dima Objectifs du cours ◮ ◮ Introduction en théorie d’automates finis. Modélisation des systèmes par des automates finis ◮ Parallélisme, communications synchrones et asynchrones, implémentation et abstraction. ◮ Algorithmes d’automates finis. ◮ Dualité automates/logique. Grammaires et hiérarchie de Chomsky. Automates à pile et grammaires hors contexte. ◮ ◮ Ressources et évaluation ◮ ◮ ◮ J.M. Autebert, Théorie des langages et des automates, Masson 1994 (bibliothèque P12). J. Hopcroft, R. Motwani, J. Ullman, Automata Theory, Languages, and Computation, Pearson/Addison Wesley, 2006. Page web : http://lacl.univ-paris12.fr/dima/..... Ressources et évaluation ◮ ◮ J.M. Autebert, Théorie des langages et des automates, Masson 1994 (bibliothèque P12). J. Hopcroft, R. Motwani, J. Ullman, Automata Theory, Languages, and Computation, Pearson/Addison Wesley, 2006. ◮ Page web : http://lacl.univ-paris12.fr/dima/..... Evaluation contrôle continu : ◮ Exos “devoir maison” : ◮ ◮ ◮ ◮ 2 contrôles en TD. 2 exos rendus (dans les délais) vaut 1 contrôle. Examen : ◮ ◮ ◮ ◮ Exos de type “prouver que” Exos de type “donner un algorithme”. Exos “construire un automate/une grammaire/modéliser le système”. Exos “prouver qu’on ne peut pas construire un automate/une grammaire”. Pourquoi théorie des automates ? ◮ Automate fini = modèle élémentaire de système informatique. ◮ ◮ ◮ ◮ ◮ Modélisation des notions fondamentales en informatique : ◮ ◮ ◮ ◮ État de l’automate = état du système. Transition dans l’automate = transition d’état dans le système. Trace de l’automate = comportement du systême. ..... Modularité = intersection d’automates. Implémentation = inclusion de langages. Synchronisation, indépendence, comportements défaillants,... Bases de la compilation : ◮ ◮ ◮ Arbres d’analyse syntaxique. Traducteurs de langages. Recherche de motifs. Techniques et outils en théorie des automates ◮ ◮ Algorithmes de graphes. Preuves par induction. ◮ Preuves par réduction à l’absurde. Éléments d’algèbre des groupes/anneaux. Analyse combinatoire. ◮ Éléments de complexité algorithmique. ◮ ◮ Preuves ◮ Preuves déductives : p, p → q ⊢ q ◮ Exemple .... (Modus ponens) Preuves ◮ Preuves déductives : p, p → q ⊢ q ◮ Exemple .... ◮ Preuves inductives : (Modus ponens) P(n) : formule en logique de 1er ordre, avec une variable libre : n P(0), ∀n P(n) → P(n + 1) ⊢ ∀nP(n) ◮ Exemple : n X i=1 i =? Preuves ◮ Preuves déductives : (Modus ponens) p, p → q ⊢ q ◮ Exemple .... ◮ Preuves inductives : P(n) : formule en logique de 1er ordre, avec une variable libre : n P(0), ∀n P(n) → P(n + 1) ⊢ ∀nP(n) ◮ Exemple : n X i=1 i= n(n + 1) 2 Ensembles ◮ Formules de définition : A = x | φ(x) ◮ où φ(x) est une formule de premier ordre ayant la variable x libre (non-quantifiée). Égalité d’ensembles : x | φ(x) = x | ψ(x) ◮ ◮ Preuve d’une équivalence : ∀x.φ(x) ⇔ ψ(x). Donc deux preuves : ∀x.φ(x) → ψ(x) et ∀x.ψ(x) → φ(x). n ∈ N | n = 4a + 6b, a, b ∈ N = 2k | k ∈ N, k 6= 1 Relations ◮ Relation : ρ ⊆ A × B. ◮ Deux fonctions associées ρ : P(A) −→ P(B) et ρ−1 : P(B) −→ P(A) : ρ(X ) = y ∈ B | ∃x ∈ X , xρy ρ−1 (Y ) = x ∈ A | ∃y ∈ Y , xρy Relations ◮ Relation : ρ ⊆ A × B. ◮ ◮ Relation d’équivalence : ρ ⊆ A × A ayant les propriétés : ◮ ◮ ◮ ◮ Deux fonctions associées ρ : P(A) −→ P(B) et ρ−1 : P(B) −→ P(A) : ρ(X ) = y ∈ B | ∃x ∈ X , xρy ρ−1 (Y ) = x ∈ A | ∃y ∈ Y , xρy Reflexive : ∀x ∈ A, xρx. Symmétrique : ∀x, y ∈ A, xρy ⇒ y ρx. Transitive : ∀x, y , z ∈ A, xρy ∧ y ρz ⇒ xρz. Quotient d’un ensemble par rapport à une relation d’équivalence : A/ρ = X ⊆ A | ∀x ∈ X , ∀y ∈ A, xρy ⇒ y ∈ X ◮ ◮ ◮ Un élément X ∈ A/ρ s’appelle classe d’équivalence. Théorème Si X , Y ∈ A/ρ avec X 6= Y , alors X ∩ Y = ∅. Notation : pour x ∈ A, la classe d’équivalence (unique !) à laquelle x appartient est notée [x]ρ . Relations (2) ◮ Relation d’ordre : ◮ Reflexive, antisymmétrique et transitive. ∀x, y ∈ A, xρy ∧ y ρx ⇒ x = y ◮ Représentation par diagramme de Hasse – on ne représente que les relations entre éléments consecutifs. ◮ x, y ∈ A sont consécutifs par rapport à ρ si : ∀z ∈ A, zρx ∧ zρy ⇒ z = x ∨ z = y ◮ Ordre total : ∀x, y ∈ A, xρy ∨ y ρx. ◮ ◮ Exemples : (N, ≤), (Σ∗ , ≤lex ). Produit d’ordres : étant donnés (A, ρA ) et (B, ρB ), on crée un nouvel ordre (A × B, ρ) où ρ est défini par (x, x ′ )ρ(y , y ′ ) si et seulement si xρA x ′ et y ρB y ′ Exercice Si (A, ρA ) et (B, ρB ) sont totaux, est-ce que (A × B, ρ) sera un ordre total ? Opérations binaires et structures algébriques ◮ ◮ Opération binaire sur un ensemble A : ⊕ : A × A −→ A. (A, ⊕) est un semigroupe si : ◮ ◮ (A, ⊕, e) est un monoïde si ◮ ◮ ◮ ⊕ est associative : ∀x, y , z ∈ A, x ⊕ (y ⊕ z) = (x ⊕ y ) ⊕ z. ⊕ est associative et e est élément neutre pour ⊕ : ∀x ∈ A, x ⊕ e = e ⊕ x = x. ⊕ est commutative si ∀x, y ∈ A, x ⊕ y = y ⊕ x. Opérations binaires et structures algébriques ◮ ◮ Opération binaire sur un ensemble A : ⊕ : A × A −→ A. (A, ⊕) est un semigroupe si : ◮ ◮ (A, ⊕, e) est un monoïde si ◮ ◮ ◮ ◮ ⊕ est associative : ∀x, y , z ∈ A, x ⊕ (y ⊕ z) = (x ⊕ y ) ⊕ z. ⊕ est associative et e est élément neutre pour ⊕ : ∀x ∈ A, x ⊕ e = e ⊕ x = x. ⊕ est commutative si ∀x, y ∈ A, x ⊕ y = y ⊕ x. (A, ⊕, ⊗, 0, 1) est un semianneau si ◮ ◮ ◮ ◮ (A, ⊕, 0) est un monoïde commutatif. (A, ⊗, 1) est un monoïde. 0 est absorbant pour ⊗ : ∀x ∈ A, x ⊗ 0 = 0 ⊗ x = 0. ⊗ est distributive par rapport à ⊕ : ∀x, y , z ∈ A, x ⊗ (y ⊕ z) = (x ⊗ y ) ⊕ (x ⊗ z). Alphabets, mots, langages ◮ Alphabet = ensemble fini de lettres/symboles. Σ1 = {a, b, c, d, e} Σ2 = {0, 1} Alphabets, mots, langages ◮ Alphabet = ensemble fini de lettres/symboles. Σ1 = {a, b, c, d, e} ◮ Σ2 = {0, 1} Mot sur un alphabet Σ = séquence finie de lettres. abbabcddacacacdebb 010001110101110 Alphabets, mots, langages ◮ Alphabet = ensemble fini de lettres/symboles. Σ1 = {a, b, c, d, e} ◮ Mot sur un alphabet Σ = séquence finie de lettres. abbabcddacacacdebb ◮ Σ2 = {0, 1} 010001110101110 Langage sur un alphabet Σ = ensemble de mots L1 = {a, ab, abc, abcde} langage sur Σ1 L2 = {an | n ∈ N} langage sur Σ1 L3 = {1w 0 | w nombre binaire quelconque} langage sur Σ2 Alphabets, mots, langages ◮ Alphabet = ensemble fini de lettres/symboles. Σ1 = {a, b, c, d, e} ◮ Mot sur un alphabet Σ = séquence finie de lettres. abbabcddacacacdebb ◮ Σ2 = {0, 1} 010001110101110 Langage sur un alphabet Σ = ensemble de mots L1 = {a, ab, abc, abcde} langage sur Σ1 L2 = {an | n ∈ N} langage sur Σ1 L3 = {1w 0 | w nombre binaire quelconque} langage sur Σ2 ◮ Ensemble (langage) de tous les mots sur Σ noté Σ∗ . Opérations et relations sur les mots ◮ ◮ Concaténation : abcc · cdaba = abcccdaba. Mot vide : ε. ◮ Σ∗ , ·, ε est un monoïde Opérations et relations sur les mots ◮ ◮ Concaténation : abcc · cdaba = abcccdaba. Mot vide : ε. ◮ Σ∗ , ·, ε est un monoïde (commutatif ?...) Opérations et relations sur les mots ◮ ◮ Concaténation : abcc · cdaba = abcccdaba. Mot vide : ε. ◮ ◮ Longueur : |abccbabcba| = 10 ◮ ◮ #a : Σ∗ −→ N est lui aussi un morphisme de monoïdes. Préfixe : abcde abcdeeabece mais abcde 6 ababcde ◮ ◮ ◮ | · | : Σ∗ −→ N est un morphisme de monoïdes. Nombre de lettres : #a (abccbabcba) = 3. ◮ ◮ Σ∗ , ·, ε est un monoïde Σ∗ , est une relation d’ordre totale. Similaire : suffixe, infixe. Sous-mot : abcd ⊑ abbabacbd Opérations sur les langages ◮ Concaténation étendue aux langages. L1 · L2 = w1 · w2 | w1 ∈ L1 , w2 ∈ L2 ◮ ◮ ◮ Quotient gauche de langages : w \L = z ∈ Σ∗ | wz ∈ L ◮ ◮ ◮ P(Σ∗ ), ∪, ·, ∅, {ε} est un semianneau. Qu’en est-il de P(Σ∗ ), ∩, ·, ?, {ε} ? Peut s’étendre à deux langages L1 \L2 . Propriété de liaison avec l’union ? Quotient droit de langages : L\w = z ∈ Σ∗ | zw ∈ L Opérations sur les langages (2) ◮ Étoile d’un langage : L∗ = w1 w2 . . . wk | k ∈ N, w1 , w2 , . . . , wk ∈ L L+ = w1 w2 . . . wk | k ≥ 1, w1 , w2 , . . . , wk ∈ L ◮ ◮ ◮ ε ∈ L∗ pour tout L, même quand L = ∅ ! Exemple... Shuffle de mots : w1 w2 = a1 b1 a2 . . . ak bk | k ∈ N, w1 = a1 a2 . . . ak , w2 = b1 b2 . . . bk ◮ ◮ ◮ Exemple... Peut s’étendre à deux langages L1 L2 . P(Σ∗ ), ∪, , ∅, {ε} est un semianneau aussi !