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