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

Documents pareils