Mots et langages
Transcription
Mots et langages
Mathématiques Discrètes Mundus 2013/2014 Résumé de cours 2 : mots et langages Références wikipedia o http://fr.wikipedia.org/wiki/Langage_formel o http://fr.wikipedia.org/wiki/Mathématiques_discrètes Définitions A alphabet : ensemble dont les éléments sont appelés lettres / symboles {a, b, .., z}, {0, 1, 2, …, 9}, {0.1}, {class, if, then, while, …} Notés A ou ∑ ou … Mot écrit avec les lettres de A ou Mot écrit sur l'alphabet A : suite finie de lettres de A. Notés m, u, v, w, … Dans les langages de programmation, on parle plutôt de chaîne (= mot) et de caractères (= lettres). Par exemple, classes String et Character en Java, et toutes les fonctions ou opérations qui suivent sont disponibles en Java. Longueur d'un mot u = nombre de lettres du mot u Notée |u| : longueur de u |122333| = 6 Pour tout mot u, on peut parler de la ième lettre de u, pour tout entier compris entre 1 et |u|. Notée ui ou u(i) : ième lettre de u Nombre d'occurrences d'une lettre a dans un mot u = nombre de fois où la lettre a est utilisée pour écrire le mot u Notée |u|a : nombre d'occurrences de la lettre a dans le mot u |1221321|2 = 3 A+ désigne l'ensemble des mots de longueur au moins 1 que l'on peut écrire sur l'alphabet A Tout ensemble de mots est appelé langage Le langage des mots de longueur paire. Le langage des lettres = alphabet. Notés L, X, Y, Z, … Opération sur les mots : concaténation de 2 mots coller 2 mots concaténer 2 mots Notée par un point : u.v ou par simple juxtaposition des 2 mots : uv si u = ab et si v = ba, uv = abba Notation : un est la concaténation de n fois le mot u où u est un mot et n un entier non nul. Opération associative, mais pas commutative. Page 1 sur 2 Résumé de cours 2 : mots et langages Extension de cette opération aux langages. Concaténation de 2 langages X et Y : langage obtenu en prenant la concaténation d'un mot de X et d'un mot de Y, pour tout mot de X et tout mot de Y. Notée par un point : X.Y (pour les langages le point n'est pas omis) Xn est la concaténation de n mots de X où n est un entier non nul. A*, l’ensemble des mots de A+ U {ε} où ε représente le mot vide : A* = A+ U {ε} Le mot vide = unique mot de longueur 0 Le mot vide est l'élément neutre pour la concaténation. u0 est la concaténation de 0 fois le mot u, c'est le mot vide, u0 = ε. Le mot vide n'est pas un gadget théorique, il est massivement utilisé dans les définitions des langages de programmation. Généralisation de + et * aux langages. X* est l'ensemble des concaténations d'un nombre quelconque (y compris 0) de mots de X X+ est l'ensemble des concaténations d'un nombre quelconque non nul de mots de X. X* = X+ U {ε} Ensemble des préfixes d'un mot u, ensemble de tous les mots qui sont débuts de u. Noté Pref(u) Pref(u) = {x Є A* / il existe y Є A* avec u = xy} Tout mot de longueur n a (n+1) préfixes. Le mot vide est préfixe de tout mot. Tout mot est préfixe de lui-même. Un préfixe propre d'un mot u est un préfixe différent de u. Ensemble des suffixes d'un mot u, ensemble de tous les mots qui sont fins de u. Noté Suf(u) Suf(u) = {y Є A* / il existe x Є A* avec u = xy} Mêmes remarques que pour préfixe. Ensemble des facteurs d'un mot u, ensemble de tous les mots qui sont "dans" u. Noté Fact(u) Fact(u) = {y Є A* / il existe x et z Є A* avec u = xyz} Fact(u)= Pref(Suf(u)) = Suf(Pref(u)) Tout mot de longueur n a au moins (n+1) facteurs, mais il en a généralement plus. Le mot vide est facteur de tout mot. Tout mot est facteur de lui-même. Un facteur propre d'un mot u est un facteur différent de u. Ensemble des sous-mots d'un mot u, ensemble de tous les mots qui sont obtenus à partir de u, en effaçant certaines lettres de u. Noté Sous-Mots(u) Sous-Mots(u) = {y Є A* / yi = ui ou yi = ε pour tout entier i compris entre 1 et |u|} Tout facteur est un sous-mot, mais la réciproque est fausse. Extension de ces 4 fonctions aux langages : (par exemple) Fact(X) est l'ensemble des facteurs des mots de X. Page 2 sur 2