CSI3504 Introduction aux langages formels Notes de cours Amy Felty Hiver 2017 I. Théorie des automates II. Théorie des langages non contextuelles III. Théorie des machines de Turing
Chapitre 1: Introduction Théorie des ordinateurs Étudier des modèles mathématiques Abstraire Simplifier Codifier (une relation au vrais ordinateurs) Calculabilité 2
Questions de base Quels sont les modèles théoriques de l ordinateur? Qu est-ce qu on peut et ne peut pas calculer avec un ordinateur d aujourd'hui ainsi que celui du futur? Pourquoi? On a besoin de réponses précises: Donner des questions et preuves non ambigües a l aide de méthodes formelles. On apprendra aussi la rigueur mathématique. 3
Histoire Cantor (1845-1918) théorie des ensembles Hilbert (1862-1943) rigueurs mathématiques Gödel (1906-1978) Théorème d incomplétude Church, Kleene, Post, Markov, von Neumann, Turing Pour quels énoncés existe-t-il des preuves? Les premiers pas vers la construction d'algorithmes mathématiques Turing (1912-1954) Machine universelle et ses limitations McCulloch, Pitts Réseau de neurons (similaire mais limitations differentes) Chomsky Modèles mathématiques qui décrivent les langues et langages 4
p. 434 I. Automates II. Langages Formels III. Machines de Turing Langage défini par Machine correspondante Nondéterminisme= Déterminisme Clos par Décidable? Exemples d Applications I. Expression rationelle Automate fini, Graphe de transition Oui réunion, produit de concaténation, étoile, intersection, complément équivalence, langage vide, finitude, appartenance Traiteurs de texte, circuits séquentiels, vérification II. Grammaire non contextuelle Automate à pile Non réunion, produit de concaténation, étoile langage vide, finitude, appartenance Analyse syntaxique, compilateurs III. Grammaire de type 0 Machine de Turing, Machine de Post, Automate à pile Oui réunion, produit de concaténation, étoile pas beacoup Ordinateurs 5
Chapitre 2: Langages Modèles mathematiques des ordinateurs Analyse des langages d entrée Étude des limitations Définitions alphabet un ensemble fini de caractères, noté Σ lettre, caractère un élément de l alphabet Σ mot sur l alphabet Σ une suite finie de caractères dans Σ Λ (mot vide) le mot qui ne contient aucun caractères langage un ensemble de mots sur un alphabet 6
Deux Exemples Mots-Français Phrases-Français alphabet Σ={a,b,c,d, } Γ=Mots du français + espace + caractères de ponctuation lettre, caractère lettre mot mot mot phrase langage tous les mots dans un dictionnaire toutes les phrases acceptable en français 7
2 façons de définir les langages une liste de tous les mots un ensemble de règles (grammaire) L alphabet est toujours fini. L ensemble de mots peut être infini. Syntaxe, non pas la sémantique Quelles sortes de règles sont permises? Il faut être possible de reconnaître si un mot est dans le langage ou pas en un temps fini. (algorithme) 8
Exemple L 1 : Σ={x} L 1 ={x, xx, xxx, xxxx, } ou L 1 ={x n n=1, 2, 3, } Définition: concaténation, enchaînement deux mots écrits un après l autre. Un nouveau mot est formé. a=xx b=xxx ab=xxxxx facteur un des deux mots d une concaténation xx xxx Exemple L 2 : Σ={0, 1, 2, 3, 4, 5, 6, 7, 8, 9} L 2 ={mots finis qui ne commencent pas avec 0} 9
Définition: longueur le nombre de caractères du mot longueur(xxxxx) = 5 longueur(1025)=4 longueur(λ)=0 inverse inverse(xxx)=xxx inverse(157)=751 Exemple PALINDROME: Σ={a, b} PALINDROME:={Λ et x inverse(x) = x} 10
La clôture de Kleene Définition: clôture d un alphabet Σ, l étoile de Σ Soit Σ un alphabet. Σ* (l étoile de Σ) est le langage qui contient toutes suites finies de lettres de Σ, y compris le mot vide Λ. Exemples: Σ = {x} Σ* = {Λ, x, xx, xxx, } Σ = {0, 1} Σ* = {Λ, 0, 1, 00, 01, 10, 11, 000, 001, } Σ = {a, b, c} Σ* =? 11
Définition: clôture ou l étoile d un ensemble de mots (ou un langage) Soit S un ensemble de mots. S* est le langage qui contient tous mots qui peuvent se mettre sous la forme de concaténations de mots de S, y compris le mot vide Λ. Exemples: S = {a, ab} S* = {Λ, a, aa, ab, aaa, aab, aba, aaaa, } abaaababa S* ab a a ab ab a les facteurs S* = {Λ ainsi que tous les mots qui commencent par a et qui ne contiennent pas deux b consécutif} Est-ce que la factorisation des mots de S* est unique? 12
Une factorisation non-unique S = {xx, xxx} xxxxxxx S* xx xx xxx xx xxx xx xxx xx xx S* = {Λ ainsi que tous les mots qui ont au moins deux x} 13
Exemple: Σ = φ Σ* = {Λ} La clôture d un alphabet Σ est toujours infinie sauf si Σ est vide. Exemple: S = {a, b, ab} T = {a, b, bb} S* = T* ab a a ab ab a a b a a a b a b a La clôture d un langage S est toujours infinie sauf si S = φ ou S = {Λ}. Alors S* = {Λ}. 14
La Clôture Positive Définition: S+, Σ+ Le langage qui contient toutes les concaténations avec au moins 1 mot de S 1 lettre de Σ (S* éventuellement sans Λ) Si Λ appartient à S, S* = S+. Exemples: Σ = {x} Σ+ = {x, xx, xxx, } S = {aa, bbb, Λ} S+ = {aa, bbb, Λ, aaaa, aabbb, } (N.B. aλ = a) 15
Théorème 1: Si S est un ensemble de mots alors S**=S*. Définitions: égalité entre deux ensembles S = T: S T et T S sous-ensembles S T: pour tout x qui appartient à S, x appartient aussi à T Exemple: S = {a,b} aaba, baaa, aaba S* aaba baaa aaba S** a a b a b a a a a a b a S* 16
Théorème 1: S**=S* Démonstration: 1ère cas: S** S* Chaque mot de S** est l enchaînement d un nombre fini de facteurs de S* (définition de l étoile). Puisque chaque mot de S* est l enchaînement d un nombre fini de facteurs de S, alors chaque mot de S** est l enchaînement d un nombre fini de facteurs de S. Donc S** S*. 2e cas: S* S** Pour tout ensemble A, on peut démontrer que A A*. Soit w un mot de A. Le mot w appartient certainement à A*. Si on prend S* pour A, on peut conclure S* S**. Par définition de l égalité des ensembles, on peut conclure S* = S**. 17