Les Mots
Transcription
Les Mots
Mathématiques discrètes SI3 et MAM3 2007/2008 Résumé de cours 1 : mots et langages Références : o http://igm.univ-mlv.fr/~berstel/, Jean Berstel, université Marne-la-Vallée, nombreux documents y compris des programmes o http://lamp.epfl.ch/teaching/archive/informatique_theorique_3/2004/ Ecole Polytechnique Fédérale de Lausane o http://www.sciences.univ-nantes.fr/info/perso/permanents/jermann/, Christophe Jermann, université de Nantes, ancien élève Polytech'Nice Sophia o http://www-local.essi.fr/~bond, Ecole Polytech'Nice Sophia, cours LFA de Johny Bond o http://deptinfo.unice.fr/~julia/IT/, Sandrine Julia, université Nice Sophia o http://fr.wikipedia.org/wiki/Langage_formel http://fr.wikipedia.org/wiki/Mathématiques_discrètes o http://www.polytech.unice.fr/~claudine/md/index.htm , site du cours, énoncés et solutions des exercices, des examens Page 1 sur 4 Résumé de cours 1 : mots et langages z 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 … z 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. z 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 z A+ désigne l'ensemble des mots de longueur au moins 1 que l'on peut écrire sur l'alphabet A z 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, … Page 2 sur 4 Résumé de cours 1 : mots et langages 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. z 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. z 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. z 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 {ε} z 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. Page 3 sur 4 Résumé de cours 1 : mots et langages z 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. z 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. z 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. z Extension de ces 4 fonctions aux langages : (par exemple) Fact(X) est l'ensemble des facteurs des mots de X. Page 4 sur 4