Langages formels et automates – cours 1 - Introduction et

publicité
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 !
Téléchargement