Introduction à la théorie des codes
Introduction à la théorie des codes
be
Mémoire
Tous les documents placés en accès ouvert sur le site le site MatheO sont protégés par le droit d'auteur. Conformément
aux principes énoncés par la "Budapest Open Access Initiative"(BOAI, 2002), l'utilisateur du site peut lire, télécharger,
copier, transmettre, imprimer, chercher ou faire un lien vers le texte intégral de ces documents, les disséquer pour les
indexer, s'en servir de données pour un logiciel, ou s'en servir à toute autre fin légale (ou prévue par la réglementation
relative au droit d'auteur). Toute utilisation du document à des fins commerciales est strictement interdite.
Par ailleurs, l'utilisateur s'engage à respecter les droits moraux de l'auteur, principalement le droit à l'intégrité de l'oeuvre
et le droit de paternité et ce dans toute utilisation que l'utilisateur entreprend. Ainsi, à titre d'exemple, lorsqu'il reproduira
un document par extrait ou dans son intégralité, l'utilisateur citera de manière complète les sources telles que
mentionnées ci-dessus. Toute utilisation non explicitement autorisée ci-avant (telle que par exemple, la modification du
document ou son résumé) nécessite l'autorisation préalable et expresse des auteurs ou de leurs ayants droit.
Université de Liège
Faculté des Sciences
Département de Mathématique
Emeline Talmas
iii
iv
Table des matières
Introduction vii
1 Codes 1
1.1 Rappels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 Semi-groupes, monoïdes et mots . . . . . . . . . . . . . . . . . . . . 1
1.1.2 Séries formelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.3 Automates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Premières définitions et propriétés . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.1 Qu’est-ce qu’un code ? . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.2 Ensembles préfixes, suffixes, bifixes . . . . . . . . . . . . . . . . . . 9
1.2.3 Codes maximaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3 Un algorithme pour les codes . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3.1 Idée de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3.2 Exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3.3 Résultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.4 Codes et sous-monoïdes libres . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.4.1 Théorème du défaut . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3 Codes préfixes 55
3.1 Premiers résultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.2 Lien avec les séries formelles . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.3 Représentation graphique des codes préfixes . . . . . . . . . . . . . . . . . 60
3.4 Ensembles préfixes et automates . . . . . . . . . . . . . . . . . . . . . . . . 61
3.5 Codes préfixes maximaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.6 Quelques opérations sur les ensembles préfixes . . . . . . . . . . . . . . . . 73
3.7 Codes sémaphores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
v
vi TABLE DES MATIÈRES
Bibliographie 81
Introduction
La théorie des codes émerge donc de la théorie de l’information, mais peut être étu-
diée indépendamment de celle-ci, pour ses propriétés mathématiques intrinsèques. C’est
d’ailleurs l’approche que nous adopterons dans ce mémoire. Nous définirons donc la notion
de code d’une manière légèrement différente, bien qu’équivalente comme nous le verrons
ultérieurement : un code est un ensemble de mots tel que tout mot admet au plus une
décomposition en facteurs de cet ensemble. De manière générale, nous pouvons voir la
théorie des codes comme une étude des factorisations de mots en facteurs issus d’un en-
semble donné. De ce point de vue, et au vu des problèmes auxquels elle s’intéresse, la
théorie des codes se place au sein de l’informatique théorique.
La définition d’un code telle qu’elle est considérée dans ce mémoire laisse penser qu’il
s’agit d’un concept purement combinatoire. Cependant, comme nous le verrons, la notion
de code est essentiellement équivalente à celle de morphisme injectif d’un monoïde libre
dans un autre. L’étude des codes pourrait donc être finalement considérée comme un pro-
blème d’algèbre. Ce n’est pas dans ce sens que nous traiterons ce problème puisque nous
faisons le choix d’utiliser principalement des outils de combinatoire des mots, de théorie
des automates et de théorie des langages formels.
Ce travail s’inspire principalement de l’ouvrage [3] Codes and Automata de Jean Bers-
tel, Dominique Perrin et Christophe Reutenauer, et s’articule de la façon suivante.
Le Chapitre 1 sera consacré à une introduction générale des codes. Nous commencerons
par définir la notion de code, sur laquelle repose tout ce travail. Nous en donnerons en-
suite quelques équivalences. Les codes pouvant être regroupés en différentes familles, nous
vii
viii INTRODUCTION
introduirons notamment les codes préfixes, suffixes, bifixes ou encore les codes maximaux.
Nous reviendrons sur la notion de code maximal au Chapitre 2 et l’étude des codes préfixes
se fera plus en détail au Chapitre 3. De plus, nous fournirons une méthode algorithmique
nous permettant de vérifier qu’un ensemble de mots donné est un code. Finalement nous
nous intéresserons aux sous-monoïdes libres et aux propriétés qui les lient aux codes.
Le Chapitre 2 sera dédié notamment à la mesure des codes. Après avoir introduit les
lois de probabilité sur un alphabet, nous nous pencherons plus précisément sur les lois de
Bernoulli. Ces dernières seront utiles non seulement pour établir des conditions nécessaires
pour qu’un ensemble de mots soit un code, mais également pour comprendre qu’un code
ne peut contenir que « peu » de « petits » mots. Nous aborderons ensuite des notions de
densité et introduirons entre autres les notions d’ensembles complets, de codes maximaux
et de codes fins. Les notions qui seront présentées dans cette section nous permettront
d’établir quelques résultats à propos des codes maximaux. Ces derniers constituent une
famille privilégiée de codes qu’il est intéressant d’étudier puisque nous verrons que tout
sous-ensemble d’un code est encore un code.
Le Chapitre 3, comme annoncé précédemment, sera axé sur les codes préfixes. Il s’agit
sans doute de la famille de codes la plus facile à reconnaitre et à construire. Nous commen-
cerons par en donner quelques propriétés de base. Ensuite, nous établirons des liens entre
ces codes particuliers et d’autres branches des mathématiques discrètes comme les séries
formelles ou la théorie des automates. Nous nous intéresserons également à la maxima-
lité des codes préfixes. Pour ce faire, nous adapterons les notions de densité présentées au
Chapitre 2 à ce cas particulier. Finalement, nous étudierons un sous-ensemble spécifique
des codes préfixes : les codes sémaphores. De manière évidente, les résultats qui seront
présentés dans ce chapitre pourront être adaptés au cas des codes suffixes.
Chapitre 1
Codes
1.1 Rappels
1.1.1 Semi-groupes, monoïdes et mots
Un semi-groupe est un ensemble muni d’une opération binaire associative. Un monoïde
M est un semi-groupe qui possède un élément neutre, noté 1M . Un sous-monoïde d’un
monoïde M est une partie N de M qui est stable pour l’opération et qui contient l’élément
neutre de M . Un morphisme de monoïdes entre deux monoïdes M et N est une application
ϕ : M → N qui satisfait ϕ(mm0 ) = ϕ(m)ϕ(m0 ) pour tous m, m0 ∈ M et ϕ(1M ) = 1N .
Soit A un ensemble que nous appellons alphabet. Dans la suite, sauf mention explicite
du contraire, un alphabet sera toujours supposé fini. Les éléments de A sont appelés lettres.
Un mot w sur l’alphabet A est une suite finie d’éléments de A : w = a1 a2 · · · an avec ai ∈ A.
Le mot vide est noté ε. L’ensemble de tous les mots sur l’alphabet A est noté A∗ . Muni de
la concaténation, cet ensemble possède une structure de monoïde ayant ε pour neutre. Ce
monoïde est appelé monoïde libre sur A. L’ensemble des mots non vides sur A est noté A+ .
La longueur d’un mot w = a1 a2 · · · an avec ai ∈ A est le nombre n de lettres dans w. Nous
la notons |w|. Par définition, |ε| = 0. Un facteur d’un mot w ∈ A∗ est un mot x ∈ A∗ tel
qu’il existe u, v ∈ A∗ tels que w = uxv. Il est dit propre si w 6= x. Un mot x est un préfixe
(resp. suffixe) d’un mot w ∈ A∗ s’il existe un mot u ∈ A∗ tel que w = xu (resp. w = ux).
1
2 CHAPITRE 1. CODES
Un ensemble X est dit fermé par préfixe (resp. fermé par suffixe ) s’il contient tous les
préfixes (resp. suffixes) de ses éléments. Pour un sous-ensemble X de A∗ , nous notons X ∗
le sous-monoïde engendré par X, i.e.
X ∗ = {x1 x2 · · · xn | n ≥ 0, xi ∈ X}.
De la même façon, nous notons X + le semi-groupe engendré par X, i.e.
X + = {x1 x2 · · · xn | n ≥ 1, xi ∈ X}.
Soient X, Y ⊂ A∗ . On définit le produit de X et Y par
XY = {xy | x ∈ X, y ∈ Y }.
Le produit XY est non ambigu si lorsque l’on a xy = x0 y 0 avec x, x0 ∈ X et y, y 0 ∈ Y , on
a x = x0 et y = y 0 .
Soient X ⊂ A∗ et w ∈ A∗ . L’ensemble w−1 X (resp. Xw−1 ) est l’ensemble des mots qui
concaténés à droite (resp. gauche) de w sont dans X, i.e.
w−1 X = {u ∈ A∗ | wu ∈ X} (resp. Xw−1 = {u ∈ A∗ | uw ∈ X}).
Si Y est une partie de A∗ , nous notons
[ [
Y −1 X = w−1 X et XY −1 = Xw−1 .
w∈Y w∈Y
Soit M un monoïde. Un idéal à droite (resp. à gauche, bilatère) est un sous-ensemble non
vide I de M tel que IM ⊂ I (resp. M I ⊂ I, M IM ⊂ I). Dans la suite, nous désignerons
par idéal un idéal bilatère. Si X est inclus dans M , nous appellerons XM (resp. M X,
M XM ) l’idéal à droite (resp. à gauche, bilatère) engendré par X.
La série S ∈ KhhAii est dite propre si (S, ε) = 0. Lorsque S est propre on note
X X
S∗ = S n et S + = S n.
n≥0 n≥1
Dans ce cas, ces sommes sont bien définies puisque, pour w fixé, on a (S n , w) = 0 pour n
suffisamment grand. On a alors S ∗ = ε + S + et S ∗ S = SS ∗ = S + .
Proposition 1.1.2. Soit K un anneau et S ∈ KhhAii une série propre. La série ε − S est
inversible et S ∗ = (ε − S)−1 .
X
Pour toute série formelle S ∈ KhhAii nous notons S = (S, w)w.
w∈A∗
(X Y , w) = Card{(x, y) ∈ X × Y | w = xy}.
((X)∗ , w) = Card{(x1 , x2 , . . . , xn ) | n ≥ 0, xi ∈ X, w = x1 · · · xn }.
4 CHAPITRE 1. CODES
1.1.3 Automates
Un automate déterministe est la donnée d’un quintuple
A = {Q, q0 , F, A, δ}
où Q est un ensemble dont les éléments sont les états de A ; q0 ∈ Q est un état privilégié
appelé état initial ; F ⊂ Q est l’ensemble des états finals ; A est l’alphabet de l’automate ;
δ : Q × A → Q est la fonction de transition de A. Nous supposerons que δ est une fonction
totale. On étend la fonction δ à Q × A∗ par récurrence en posant δ(q, ε) = q et pour tous
w ∈ A∗ et a ∈ A :
δ(q, wa) = δ(δ(q, w), a).
On définit l’automate minimal
AX = (QX , q0,X , FX , A, δX )
d’un sous-ensemble X de A∗ de la manière suivante :
• QX = {w−1 X | w ∈ A∗ },
• q0,X = ε−1 X = X,
• FX = {w−1 X | w ∈ X},
• δX (q, a) = a−1 q pour tout q ∈ QX , a ∈ A.
L’automate minimal d’un sous-ensemble X de A∗ accepte X.
Un automate déterministe A = {Q, q0 , F, A, δ} est accessible si pour tout état q ∈ Q,
il existe un mot w ∈ A∗ tel que δ(q0 , w) = q. Il est coaccessible si pour tout état q ∈ Q, il
existe un mot w ∈ A∗ tel que δ(q, w) ∈ F . Il est réduit si pour tous p, q ∈ Q
{w ∈ A∗ | δ(p, w) ∈ F } = {w ∈ A∗ | δ(q, w) ∈ F } ⇒ p = q.
Autrement dit, l’automate est réduit si pour tout couple (p, q) d’états avec p 6= q il existe
un mot w ∈ A∗ tel que
δ(p, w) ∈ F et δ(q, w) ∈
/F
ou
δ(p, w) ∈
/ F et δ(q, w) ∈ F.
Dans ce cas, on dit que le mot w distingue les états p et q et que ces états sont distingués.
L’automate minimal AX d’un ensemble X ⊂ A∗ est déterministe, accessible et réduit.
implique m = n et xi = yi pour i = 1, . . . , m.
Un élément du code sera simplement appelé mot du code.
Autrement dit, un ensemble X est un code si tout mot de X ∗ possède une unique
factorisation en mots de X.
Étant donné cette définition, il est évident qu’un code ne contient pas le mot vide ε.
Exemple 1.2.3. Soit l’alphabet A = {a, b}. L’ensemble X = {aa, baa, ba} est un code sur
A.
Procédons par l’absurde pour le montrer.
Supposons qu’il existe un mot w de X + , de longueur minimale, qui possède deux factori-
sations distinctes :
w = x1 x2 · · · xm
= y1 y2 · · · yn
avec m, n ≥ 1 et xi , yj ∈ X.
Puisque l’on a supposé que w était de longueur minimale, on a forcément x1 6= y1 , ce qui
implique que soit x1 est préfixe de y1 , soit y1 est préfixe de x1 . Supposons que x1 est préfixe
de y1 . Vu la définition de notre ensemble X, on a x1 = ba et y1 = baa. Ainsi a doit être un
préfixe de x2 , impliquant alors que x2 = aa. Ensuite, on voit que a doit être un préfixe de
y2 également, ce qui entraine que y2 = aa :
w = ba aa · · · xm
= baa aa · · · yn
Ainsi, on a que y1 = x1 a et y1 y2 = x1 x2 a.
Si l’on suppose avoir y1 y2 · · · yp = x1 x2 · · · xp a (avec p ≤ min{m, n}) , on aura forcément
yp+1 = aa puis xp+1 = aa. On obtient alors
y1 y2 · · · yp+1 = x1 x2 · · · xp+1 a.
Finalement, il vient
w = y1 y2 · · · yn = x1 x2 · · · xn a,
or a ∈
/ X, ce qui contredit le fait que w possède deux factorisations distinctes en mots de
X.
Exemple 1.2.4. Soit l’alphabet A = {a, b}. L’ensemble X = {a, ab, ba} n’est, quant à lui,
pas un code puisque le mot w = aba possède deux factorisations distinctes en mots de X :
w = ab · a = a · ba.
Définition 1.2.6. Si p est un naturel non nul, l’ensemble X = Ap est appelé le code
uniforme des mots de longueur p.
Il s’agit en effet d’un code : soit w ∈ X ∗ tel que
w = x1 x2 · · · xm = y1 y2 · · · yn ,
avec m, n ≥ 1 et xi , yj ∈ X. Puisque les mots de X sont de longueur constante p, la seule
manière de factoriser w en mots de X est de considérer des blocs de longueur p, ce qui
implique donc que m = n et xi = yi pour i = 1, . . . , m.
• β étend f :
Si b ∈ B, alors on a simplement β(b) = f (b).
• β est injectif :
Soient u, v ∈ B ∗ des mots tels que β(u) = β(v). Notons
u = b1 b2 · · · bm et v = b01 b02 · · · b0n ,
avec m, n ≥ 1 et bi , b0j ∈ B.
Par définition de β, on obtient que
β(u) = f (b1 )f (b2 ) · · · f (bm ) = f (b01 )f (b02 ) · · · f (b0n ) = β(v).
1.2. PREMIÈRES DÉFINITIONS ET PROPRIÉTÉS 7
x1 x2 · · · xm = y1 y2 · · · yn
Le théorème et la définition qui précèdent nous permettent de faire le lien entre nos
codes et ceux utilisés dans le cadre de la théorie de l’information. Ceci montre en effet que
les codes tels que nous les étudions sont précisément les images des codages à déchiffrage
unique.
Exemple 1.2.9. Grâce au résultat précédent, on obtient une autre façon de montrer que
l’ensemble X de l’Exemple 1.2.4. n’est pas un code.
En effet, considérons le morphisme ϕ : B ∗ = {1, 2, 3}∗ → A∗ = {a, b}∗ tel que
Il n’est pas injectif puisque ϕ(13) = aba = ϕ(21). Ainsi, ϕ(B) = X = {a, ab, ba} n’est pas
un code.
Le corollaire suivant nous montre que l’image (resp. l’image inverse) d’un code par un
morphisme injectif est encore un code.
Exemple 1.2.11. L’ensemble X = {00, 01, 02, 1, 2} est un code 1 sur l’alphabet B =
{0, 1, 2}.
Soit α : B ∗ → A∗ , avec A = {a, b} un morphisme tel que
Puisque l’ensemble X 0 = {a, ab, bb} est un code 2 , nous savons, grâce au Théorème 1.2.7,
que α est injectif.
Ainsi l’ensemble α(X) = {aa, aab, abb, ab, bb} est un code.
Corollaire 1.2.12. Si X ⊂ A∗ est un code, alors X n est un code pour tout naturel non
nul n.
Remarque 1.2.13. Le corollaire précédent nous montre que toute puissance d’un code
est encore un code. Cependant le produit de deux codes distincts n’est pas nécessairement
un code.
En effet, considérons les codes suivants :
Définition 1.2.19. Un code préfixe (suffixe, bifixe) est un ensemble préfixe (suffixe, bifixe)
qui est un code, c’est-à-dire distinct de {ε}.
Nous vérifions maintenant que les ensembles de l’Exemple 1.2.11 sont effectivement des
codes puisque
— l’ensemble X = {00, 01, 02, 1, 2} est préfixe,
— l’ensemble X 0 = {a, ab, bb} est suffixe.
Exemple 1.2.20. Les codes uniformes sont des codes bifixes.
10 CHAPITRE 1. CODES
Proposition 1.2.24. Tout code X sur A est contenu dans un code maximal sur A.
Démonstration. Soit F l’ensemble des codes sur A contenant X, ordonné par l’inclusion.
Pour montrer que F contient un élément maximal, nous allons utiliser le Lemme de Zorn,
i.e. nous allons montrer que toute chaine C de F admet un majorant. Notons que F est
non vide puisqu’il contient X.
Considérons une chaine C de codes contenant X.
Posons Y = ∪Y ∈C Y . Montrons alors que Y ∈ F et que Y majore C.
• Il est évident, vu sa définition, que Y majore C.
• On a Y ∈ F :
En effet, par définition nous savons que X ⊂ Y puisque chaque Y ∈ C contient X. Il
nous reste donc à montrer que Y est bien un code.
Soient m, n ≥ 1 et x1 , . . . , xm , y1 , . . . yn ∈ Y tels que :
x1 · · · xm = y 1 · · · y n .
Il existe donc Y1,1 , . . . , Y1,m , Y2,1 , . . . , Y2,n ∈ C tels que x1 ∈ Y1,1 , . . . , xm ∈ Y1,m , y1 ∈
Y2,1 , . . . yn ∈ Y2,n . Nous avons alors n + m éléments de C, il y a donc un de ces
éléments qui contient tous les autres puisque C est une chaine. Notons le Y 0 . Ainsi
on a xi , yj ∈ Y 0 qui est un code par définition. Il vient alors que n = m et xi = yi
pour i = 1, . . . , m.
Remarque 1.2.25. Cette proposition, comme nous le verrons dans la Section 2.2, n’est
plus vraie si nous nous limitons à des codes finis, i.e. tout code fini n’est pas nécessairement
inclus dans un code maximal fini.
1.3. UN ALGORITHME POUR LES CODES 11
• Deuxième étape :
Nous essayons ensuite de compléter les égalités ci-dessus à partir de ces restes. Pour
ce faire, nous avons deux possibilités :
1. Soit nous cherchons un mot du code qui a le reste comme préfixe.
2. Soit nous cherchons un mot du code qui est préfixe du reste.
Le reste bba de l’égalité 1.1 a b comme préfixe mais n’est préfixe d’aucun mot de X,
ainsi l’égalité devient
Le reste aabb de l’égalité 1.2 n’est préfixe d’aucun mot de X et n’a aucun préfixe dans
X. Cette égalité ne pouvant être complétée, elle ne peut déboucher sur une double
factorisation.
Le reste ba de l’égalité 1.3 a b comme préfixe et est préfixe de baabb. Nous obtenons
donc ces deux nouvelles égalités :
• Troisième étape :
La démarche est la même que celle appliquée précédemment, seuls les restes ont
changé. Nous obtenons alors les égalités suivantes :
Remarquons que le reste de l’égalité 1.6 est lui-même un mot de X. C’est pourquoi
l’égalité 1.11 nous donne une double factorisation du mot w = abbbaabb en mots de
X. Puisque nous avons obtenu une double factorisation, nous pouvons en conclure
que l’ensemble X n’est pas un code et ainsi arrêter notre recherche.
Observons que dans la méthode présentée ci-dessus, seuls les restes nous importent. Par
ailleurs, nous obtenons une double factorisation à l’égalité 1.11 car le reste est le mot vide.
U1 = X −1 X\{ε}
Un+1 = X −1 Un ∪ Un−1 X (n ≥ 1).
Ainsi défini, l’ensemble Un contient tous les restes calculés à l’étape n. Remarquons que
l’ensemble X −1 Un correspond aux restes de Un ayant un préfixe dans X et Un−1 X corres-
pond aux restes de Un étant préfixes d’un mot de X.
Remarquons que dans le cas où X ⊂ A+ est un ensemble préfixe, nous avons directement
U1 = ∅.
1.3. UN ALGORITHME POUR LES CODES 13
Notons que cette méthode ne nous était pas totalement inconnue : c’est en effet essen-
tiellement la méthode qui nous a permis de conclure que l’ensemble X de l’Exemple 1.2.3
est bien un code (les restes seront toujours égaux à a).
1.3.2 Exemples
Illustrons l’algorithme décrit ci-dessus sur deux exemples.
Exemple 1.3.1. Considérons l’ensemble X = {ab, baa, bbab, abbb} sur l’alphabet A =
{a, b}. Calculons la suite (Un )n≥1 :
U1 = {bb}
U2 = {ab}
U3 = {ε, bb}
U1 = {aa}
U2 = ∅
U3 = ∅
Nous sommes donc dans le cas où U2 = U3 , l’algorithme s’achève et puisque ε n’est contenu
dans aucun des ensembles Un . On en déduit que X est un code.
1.3.3 Résultats
Présentons maintenant les résultats justifiant formellement l’algorithme décrit précé-
demment.
Lemme 1.3.3. Soit X ⊂ A+ et soit la suite (Un )(n≥1) définie comme ci-dessus.
Pour tout n ≥ 1, on a w ∈ Un si et seulement s’il existe des entiers p, q ≥ 1 avec p+q = n+1
et des mots x1 , . . . , xp , y1 , . . . , yq ∈ X avec x1 6= y1 et w suffixe de yq tels que
x1 x2 · · · xp w = y1 y2 · · · yq
14 CHAPITRE 1. CODES
Démonstration. Montrons tout d’abord que la condition est nécessaire. Procédons par ré-
currence sur n.
• Cas de base : n = 1
Si w ∈ U1 , alors par définition on a
xw = y,
x1 x2 · · · xp v = y1 y2 · · · yq ,
— Cas 1 : Si xw = v, alors
x1 x2 · · · xw = y1 y2 · · · yq ,
x1 x2 · · · xp vw = y1 y2 · · · yq w
x1 x2 · · · xp x = y1 y2 · · · yq w,
x1 x2 · · · xp w = y1 y2 · · · yq . (1.13)
x1 w = y1
• Induction : Supposons que la propriété est vraie pour tout j < n et montrons-la pour
n.
Puisque w est suffixe de yq , on a yq = vw pour un certain v ∈ A∗ . L’égalité 1.13
devient donc
x1 x2 · · · xp = y1 y2 · · · yq−1 v.
Posons v = v 0 xr+1 · · · xp , où v 0 est suffixe de xr pour un r tel que 1 ≤ r ≤ p. Alors
x1 · · · xr = y1 · · · yq−1 v 0 .
xr+i · · · xp w ∈ Ur+q+i−2 .
— Cas de base : i = 1
On a bien, vu ce qui précède :
xr+1 · · · xp w ∈ Ur+q−1 .
xr+i · · · xp w ∈ Ur+q+i−2 .
w ∈ X −1 Up+q−2 ⊂ Up+q−1 ,
où p + q − 1 = n.
w = x1 x2 · · · xp
= y1 y2 · · · yq
16 CHAPITRE 1. CODES
avec x1 , . . . , xp , y1 , . . . , yq ∈ X et x1 6= y1 .
Par le lemme précédent, il vient que ε ∈ Up+q+1 .
Inversement, si ε ∈ Un , par le lemme, il existe des entiers p, q ≥ 1 tels que p + q = n + 1
et des mots x1 , . . . , xp , y1 , . . . , yq ∈ X, avec x1 6= y1 tels que
x1 x2 · · · xp = y 1 y 2 · · · y q .
Lorsque que nous considérons le cas où X est fini ou plus généralement où X est régu-
lier, nous allons voir que le nombre d’ensembles Un est fini, ce qui entraine que l’algorithme
s’achève au vu de la deuxième condition d’arrêt. Il en découle alors que le nombre de calculs
nécessaires pour prouver que X est un code est fini. Ainsi, on en conclut qu’il est décidable
qu’un ensemble fini ou régulier est un code.
Avant de démontrer le second résultat qui nous intéresse dans cette sous-section, pré-
sentons tout d’abord quelques résultats intermédiaires qui rendront plus abordable la dé-
monstration de celui-ci.
∗
[que pour tous x ∈ X, y ∈ A tels que xRy , on a y ∈ X.
Supposons ensuite
Montrons que X = [w]R par double inclusion.
w∈X
1.3. UN ALGORITHME POUR LES CODES 17
[
⊂ : Soit x ∈ X. On a forcément x ∈ [x]R et donc x ∈ [w]R .
w∈X
[
⊃ : Soit x ∈ [w]R . Il existe donc w ∈ X tel que x ∈ [w]R . Ainsi xRw et donc par
w∈X
hypothèse, x ∈ X.
Nous avons désormais tous les outils nécessaires à la démonstration du résultat suivant.
Théorème 1.3.12. Si X ⊂ A+ est régulier alors l’ensemble de tous les Un (n ≥ 1) est
fini.
Démonstration. Soient ≡X la congruence syntaxique de X et µ la congruence 4 sur A∗ qui
a pour classes {ε} et A+ , i.e. xµy ⇔ x, y 6= ε ou x = y = ε. Posons ι = ≡X ∩ µ.
Nous allons montrer que Un est une union de classes d’équivalence de ι par récurrence sur
n ≥ 1.
• Cas de base : n = 1
Vu la Proposition 1.3.10, X est une union de classes d’équivalence de ≡X . Grâce au
Lemme 1.3.11, on sait que X −1 X est également une union de classes de ≡X . Vu la
définition de ι, X −1 X est une union de classes de ι. De plus, comme {ε} est une
classe de ι, X −1 X\{ε} = U1 est encore une union de classes de ι.
• Induction : Supposons que les ensembles Uk sont des unions de classes d’équivalence
pour k ≤ n et montrons que Un+1 est encore une union de classes d’équivalence.
Par hypothèse de récurrence nous savons que Un est une union de classes d’équivalence
de ι. De plus, nous savons aussi que X est une union de classes d’équivalence de ι.
Ainsi Un−1 X et X −1 Un le sont aussi vu le Lemme 1.3.11. Puisque Un+1 = Un−1 X ∪
X −1 Un , Un+1 est encore une union de classes d’équivalence de ι.
4. On vérifie facilement qu’il s’agit bien d’une congruence.
18 CHAPITRE 1. CODES
x = y1 y2 · · · yn
5. En effet, nous savons que ≡X possède un nombre fini de classes d’équivalence vu la Proposition 1.3.8,
et que µ possède deux classes d’équivalence. Ainsi puisque les classes de ι sont les intersections des classes
de ≡X et µ, il y en a un nombre fini.
6. Nous le vérifions aisément grâce au Lemme de la Pompe.
1.4. CODES ET SOUS-MONOÏDES LIBRES 19
avec yi ∈ Y et n > 0.
/ (M \{ε})2 , on a forcément n = 1. Autrement dit, x = y1 ∈ Y . Il vient
Puisque x 6= ε et x ∈
donc X ⊂ Y .
Ainsi, X est bien un ensemble minimal de générateurs, un tel ensemble est unique.
α : B∗ → M
X = α(B)
= α(B + \B + B + )
= α(B + )\α(B + B + )
= α(B + )\α(B + )2 ,
α : B ∗ → A∗ .
Par définition, α est injectif et α est une bijection de B dans X. On a alors que α est une
bijection entre B ∗ et α(B ∗ ) = X ∗ et ainsi X ∗ est libre.
Il vient :
X = α(B)
= α(B + )\α(B + )α(B + )
= α(B)+ \α(B)+ α(B)+
= X + \X + X +
= (X ∗ \{ε})\(X ∗ \{ε})2
ϕ : C ∗ → M.
Puisque ϕ est en particulier injectif, nous avons |ϕ(w)| ≥ |w| pour tout w ∈ C ∗ . Comme
b ∈ M , il existe c ∈ C ∗ tel que ϕ(c) = b. Ainsi 1 = |b| ≥ |c|, ce qui implique que c ∈ C
(c 6= ε, par injectivité). Les mots ab et ba sont également dans M , il existe donc d, e ∈ C ∗
tels que ϕ(d) = ab et ϕ(e) = ba. On a donc |d|, |e| ≤ 2. Cependant puisque a ∈ / M , il vient
|d|, |e| =
6 2. On a donc forcément d, e ∈ C. On observe alors que
La proposition suivante nous montre que la notion de stabilité coïncide avec celle de
liberté dans le cas des monoïdes libres.
Proposition 1.4.12. Un sous-monoïde N de A∗ est stable si et seulement s’il est libre.
Démonstration. Supposons que N est stable. Posons X = (N \{ε})\(N \{ε})2 et montrons
que X est un code car dans ce cas, X ∗ = N sera libre.
Procédons par l’absurde et supposons que X n’est pas un code.
Il existe donc un mot z ∈ X ∗ , supposé de longueur minimale, qui possède deux factorisa-
tions distinctes en mots de X :
z = x1 x2 · · · xm = y 1 y 2 · · · y n
x1 , y2 · · · yn , x1 w = y1 , wy2 · · · yn = x2 · · · xm
y 1 = x1 w ∈
/X
puisqu’un mot de X ne peut pas s’écrire comme le produit de deux mots non vides de N .
Or, on a supposé y1 ∈ X. L’ensemble X est donc un code.
22 CHAPITRE 1. CODES
u = x1 · · · xk , uw = y1 · · · yl , wv = xk+1 · · · xr , v = yl+1 · · · ys
x1 · · · xk · xk+1 · · · xr = y1 · · · yl · yl+1 · · · ys .
uw = y1 · · · yl
= x1 · · · xl
= uxk+1 · · · xl .
u, uv ∈ N ⇒ v ∈ N,
u, vu ∈ N ⇒ v ∈ N,
Dans la définition précédente, N étant un sous-monoïde, les inclusions 1.14 et 1.15 sont
en fait des égalités. Ainsi N est biunitaire si et seulement si N −1 N = N = N N −1 .
Remarque 1.4.14. Observons qu’un sous-monoïde unitaire à gauche (resp. à droite) est
en particulier stable.
Vu la remarque précédente, un sous-monoïde biunitaire de A∗ est en particulier stable.
Cependant, la réciproque n’est pas vraie. Le sous-monoïde engendré par un code préfixe
(resp. suffixe) qui n’est pas suffixe (resp. préfixe) est libre vu la Proposition 1.4.5 et donc
stable par la Proposition 1.4.12. La proposition suivante prouve que ce sous-monoïde est
unitaire à droite (resp. à gauche) mais pas à gauche (resp. à droite).
1.4. CODES ET SOUS-MONOÏDES LIBRES 23
u = x1 · · · xn et uv = y1 · · · ym ,
v = yn+1 · · · ym ∈ M,
Démonstration. Procédons par l’absurde en supposant qu’il existe un code Y sur A tel que
X (Y.
On a alors X ∗ ⊂ Y ∗ et X ∗ 6= Y ∗ . En effet, si X ∗ = Y ∗ , on aurait X = Y vu le Corollaire
1.4.8. Puisque M = X ∗ est un sous-monoïde libre maximal, on a forcément Y ∗ = A∗ et
par conséquent Y = A, toujours au vu du Corollaire 1.4.8. Il vient alors que X ( A.
Soit b ∈ A\X et posons Z = X ∪ {b2 }. L’ensemble Z est un code puisque X ne contient
que des lettres de A\{b} et qu’en lui ajoutant le mot b2 , l’ensemble Z forme un ensemble
bifixe différent de {ε}, qui est donc un code. On a
M ( Z ∗ ( A∗ .
Puisque H est un sous-groupe, on sait que (ϕ(p))−1 ∈ H, il vient alors que ϕ(q) ∈ H et
donc q ∈ M , ce qui montre que M est unitaire à droite.
On procède de manière analogue pour montrer que M est unitaire à gauche.
Remarque 1.4.24. Si X ∗ est un sous-monoïde libre, alors il coïncide avec son enveloppe
libre. Cependant, si X ∗ n’est pas libre, alors il est inclus strictement dans son enveloppe
libre.
yY ∗ ∩ X = ∅,
i.e. y ∈ Y \X(Y ∗ )−1 . Montrons que Y ∗ n’est pas le plus petit sous-monoïde libre contenant
X.
Posons Z = {zy i |z ∈ Y \y, i ≥ 0} = (Y \y)y ∗ . Puisque X ⊂ Y ∗ , tout x ∈ X s’écrit :
x = y1 y2 · · · yn avec yi ∈ Y . Comme yY ∗ ∩ X = ∅, on a forcément que y1 6= y. Il vient donc
que X ⊂ {ε} ∪ (Y \y)Y ∗ . De plus, on a 10
{ε} ∪ (Y \y)Y ∗ ⊂ Z ∗
/ Z ∗ . Il vient alors X ⊂ Z ∗ ( Y ∗ .
et y ∈
De plus, Z ∗ est libre : en effet tout mot x ∈ Z ∗ possède une factorisation unique de la
forme
x = x1 x2 · · · xn
avec x1 , . . . , xn ∈ Y et x1 6= y, puisque Y est un code. Par conséquent le mot x peut se
réécrire de manière unique de la façon suivante :
x = z1 y p1 z2 y p2 · · · zr y pr
α(x) = y si x ∈ yY ∗ ,
x1 = wr , x2 = ws ,
x = x1 x2 = w r w s = w s w r = x2 x1 ,
Supposons maintenant que X n’est pas un code. Soit Y la base de l’enveloppe libre de
X. Par le théorème précédent, on sait que Card(Y ) < Card(X). Or, x1 , x2 ∈ Y ∗ , i.e. x1 , x2
sont des concaténations de mots de Y . Étant donné qu’il n’y a qu’un élément dans Y , cela
entraine que x1 et x2 sont des puissances d’un même mot.
28 CHAPITRE 1. CODES
Chapitre 2
Dans ce chapitre, nous allons essentiellement introduire des outils permettant de « me-
surer » la taille d’ensembles de mots.
Les lois de Bernoulli constituent le premier de ces outils. Dans le Théorème 2.1.15 nous
verrons, par exemple, que les codes ne peuvent pas contenir « trop » de « petits » mots.
Avant d’y parvenir, nous introduirons des lois de probabilité appliquées aux ensembles de
mots et présenterons certaines de leurs propriétés. D’autres résultats importants seront
également démontrés, comme le Théorème de Kraft-McMillan. Par ailleurs, de nombreux
résultats de cette section seront utilisés dans des preuves ultérieures.
Le second outil développé dans ce chapitre est la notion de densité d’un ensemble de
mots. Tout comme la densité topologique, à laquelle elle est liée, cette notion nous permet
d’identifier les ensembles contenant « beaucoup » d’éléments. Ceci nous permettra d’étudier
la maximalité des codes.
π(ε) = 1 (2.1)
et X
π(wa) = π(w) ∀ w ∈ A∗ (2.2)
a∈A
29
30 CHAPITRE 2. DESCRIPTION QUANTITATIVE DES CODES
est appelée une loi de probabilité sur A∗ . La condition 2.2 est appelée la condition de
cohérence.
Une loi de probabilité est dite positive si elle est non nulle, i.e. si π(w) > 0 pour tout
w ∈ A∗ .
X
Proposition 2.1.2. La condition de cohérence implique que π(x) = 1.
x∈An
= 1, (2.5)
où 2.4 est obtenu grâce à la condition de cohérence et 2.5 grâce à l’hypothèse de
récurrence.
Dans le cas où les ensembles ne sont pas disjoints, il est clair que nous avons l’inégalité
souhaitée puisque certains éléments sont repris plusieurs fois à l’égalité 2.7.
où un = Card(X ∩ An ).
Définition 2.1.5. La série génératrice des probabilités d’un ensemble X ⊂ A∗ est la série
X
FX (t) = π(X ∩ An )tn .
n≥0
En particulier, on a
X
FX (1) = π(X ∩ An ) (2.9)
n≥0
X X
= π(w) (2.10)
n≥0 w∈X∩An
X
= π(w) (2.11)
w∈X
= π(X). (2.12)
Remarque 2.1.6. Grâce à la Proposition 2.1.2, on sait que π(An ) = 1. Ainsi on a π(X ∩
+∞
X
n n n n
A ) ≤ 1 et par conséquent |π(X ∩ A )t | ≤ |t |. Or on sait que tn converge sur ] − 1; 1[.
X n=0
n n
On en déduit alors que FX (t) = π(X ∩ A )t converge au moins sur ] − 1; 1[, i.e. le
n≥0
rayon de convergence de la série FX (t) est au moins 1.
Définition 2.1.7. Une loi de Bernoulli est un morphisme π de A∗ dans [0, 1] muni de la
multiplication tel que X
π(a) = 1.
a∈A
Démonstration. Soit π une loi de Bernoulli sur A∗ . Étant donné que π est un morphisme,
nous avons, d’une part, π(ε) = 1 et, d’autre part, soit w ∈ A∗ , on a
X X
π(wa) = π(w)π(a)
a∈A a∈A
X
= π(w) π(a)
a∈A
| {z }
=1
= π(w)
1
Définition 2.1.9. La loi uniforme de Bernoulli sur A est définie par π(a) = pour
Card A
tout a ∈ A.
Dans le cas d’une loi uniforme de Bernoulli, la série génératrice des probabilités est liée
à la série génératrice par la relation suivante :
où k = Card A.
En effet, dans ce cas on a
X
k n π(X ∩ An ) = k n π(w) (2.14)
w∈X∩An
X 1
= kn (2.15)
w∈X∩An
kn
X
= 1 (2.16)
w∈X∩An
= Card(X ∩ An ). (2.17)
où un = Card(X ∩ An ).
Proposition 2.1.10. Soient X, Y ⊂ A∗ et π une loi de Bernoulli sur A∗ . On a
π(XY ) ≤ π(X)π(Y ).
Démonstration. On a
!
[ [
π(XY ) = π {xy}
x∈X y∈Y
XX
≤ π(xy)
x∈X y∈Y
= π(X)π(Y ).
[
En particulier, si le produit XY est non ambigu, alors l’union {xy} est disjointe, d’où
x∈X
y∈Y
l’égalité.
Lemme 2.1.11. Soit π une loi de Bernoulli sur A∗ . Pour des ensembles X, Y ⊂ A+ , on a
1. FX∪Y (t) = FX (t) + FY (t) si X ∩ Y 6= ∅.
2. FXY (t) = FX (t)FY (t) si le produit XY est non ambigu.
Démonstration. 1. On a
X
FX∪Y (t) = π((X ∪ Y ) ∩ An )tn (2.19)
n≥0
X
= π((X ∩ An ) ∪ (Y ∩ An ))tn (2.20)
n≥0
X
= (π(X ∩ An ) + π(Y ∩ An ))tn (2.21)
n≥0
X X
= π(X ∩ An )tn + π(Y ∩ An )tn (2.22)
n≥0 n≥0
= π(X ∩ Ai )π(Y ∩ Aj ).
Finalement, on a donc
FX ∗ (t) = FSn≥0 X n (t)
X
= FX n (t)
n≥0
X
= (FX (t))n
n≥0
1
= .
1 − FX (t)
Dans le cas des lois uniformes de Bernoulli, nous avons le corollaire suivant :
Corollaire 2.1.14. Soit X un code sur un alphabet fini A. On a alors
1
fX ∗ (t) = .
1 − fX (t)
Vu la définition des lois de Bernoulli, les mots « plus longs » auront une probabilité
plus petite que les mots « plus courts ». La condition π(X) ≤ 1 exprime alors le fait que
X ne contienne « pas trop » de petits mots. Cela peut se voir encore plus facilement dans
le cas de la loi uniforme de Bernoulli vu la relation 2.18.
Théorème 2.1.15. Si X est un code sur A, alors π(X) ≤ 1 pour toute loi de Bernoulli π
sur A∗ .
N
X
Vu ce qui précède, nous savons que π(xn ) = π({x0 , . . . , xn }) ≤ 1. Il en va donc de même
n=0
pour sa borne supérieure. Ceci conclut la preuve.
En appliquant le théorème précédent au cas des lois uniformes de Bernoulli, nous ob-
tenons le corollaire suivant :
2.1. MESURE DES CODES 37
Démonstration.
X Soit π la loi uniforme de Bernoulli sur A. Puisque X est un code, on a
π(X) = π(x) ≤ 1.
x∈X
1
Or π(x) = π(x1 ) · · · π(x|x| ), avec xi ∈ A. La loi étant uniforme chacun des π(xi ) vaut .
k
1
Ainsi π(x) = |x| , d’où la conclusion.
k
Pour montrer qu’un ensemble X n’est pas un code, il suffit de trouver une loi de
Bernoulli telle que π(X) > 1.
Exemple 2.1.18. Soient A = {a, b} et X = {a, ab, ba, baa}. Soit π la loi uniforme de
Bernoulli sur A. Il vient
X
π(X) = π(x)
x∈X
= π(a) + π(ab) + π(ba) + π(bba)
1 2 1
= + +
2 4 8
9
= > 1.
8
On a donc trouvé une loi de Bernoulli qui est telle que π(X) > 1, par conséquent l’ensemble
X n’est pas un code.
La réciproque du Théorème 2.1.15 n’est pas vraie. Comme le montre l’exemple suivant
il est possible qu’un ensemble X qui n’est pas un code soit tel que π(X) ≤ 1 pour toute
loi de Bernoulli π.
Exemple 2.1.19. Considérons l’ensemble X = {ab, aba, aab} sur l’alphabet A = {a, b}.
Étant donné que le mot w = aba · ab = ab · aab possède deux factorisations distinctes
en mots de X, il est clair que X n’est pas un code. Cependant, n’importe quelle loi de
Bernoulli π sur A∗ nous donne π(X) ≤ 1.
En effet, posons p = π(a) et q = π(b). On a alors
π(X) = π(ab) + π(aba) + π(aab)
= pq + p2 q + p2 q
= pq + 2p2 q
38 CHAPITRE 2. DESCRIPTION QUANTITATIVE DES CODES
1 4 1 8
Remarquons que l’on a 2 pq ≤ et p2 q ≤ . Il vient donc que π(X) ≤ + < 1.
4 27 4 27
Jusqu’à présent, nous avons démontré quelques conditions nécessaires pour être un
code, la proposition suivante va, quant à elle, nous fournir une condition suffisante.
Proposition 2.1.20. Soient X ⊂ A+ et π une loi de Bernoulli sur A∗ .
1. Si X est un code, alors
π(X n ) = π(X)n ∀ n ≥ 0.
2. Si π est positif, si π(X) est fini et si π(X n ) = π(X)n pour tout n ≥ 1, alors X est
un code.
Démonstration. 1. Si X est un code, les mots de X n possèdent une factorisation unique
en mots de X. Ainsi vu la Remarque 2.1.12, nous avons en particulier π(X n ) =
FX n (1) = FX (1) · · · FX (1) = (π(X))n .
2. Procédons par l’absurde et supposons que X n’est pas un code. Il existe donc un mot
w ∈ X ∗ , supposé de longueur minimale, tel que
w = x1 x2 · · · xn = y1 y2 · · · ym
avec n, m ≥ 1, xi , yj ∈ X et x1 6= y1 . Le mot u = ww possède alors deux factorisations
de k = m + n facteurs
u = x1 x2 · · · xn y1 y2 · · · ym = y1 y2 · · · ym x1 x2 · · · xn
On a donc
!k
X
(π(X))k = π(x)
x∈X
! ! !
X X X
= π(z1 ) π(z2 ) · · · π(zk )
z1 ∈X z2 ∈X zk ∈X
X X X
= ··· π(z1 z2 · · · zk )
z1 ∈X z2 ∈X zk ∈X
et X
π(X k ) = π(v).
v∈X k
1 4
2. Il suffit d’étudier le signe des polynômes p(1 − p) − 4 et p2 (1 − p) − 27 pour s’en convaincre.
2.1. MESURE DES CODES 39
Les lois de Bernoulli nous permettent également de trouver des codes maximaux.
Proposition 2.1.21. Soit X un code sur A. S’il existe une loi de Bernoulli positive π sur
A∗ telle que π(X) = 1, alors le code X est maximal.
Il s’ensuit alors que π(w) = 0, ce qui contredit le fait que π est positif.
Exemple 2.1.22. Soient A = {a, b} et X = {a, ba, bb} un ensemble préfixe. Soit π une
distribution de Bernoulli sur A∗ telle que π(a) = p et π(b) = q. On a
X
π(X) = π(x)
x∈X
= π(a) + π(ba) + π(bb)
= π(a) + π(b)π(a) + π(b)π(b)
= p + pq + q 2
= p + q. (p + q)
| {z }
=1
=1
Théorème 2.1.23 (Kraft-McMillan). Étant donné une suite (un )n≥1 de naturels, il existe
un code X sur un alphabet A de k symboles tel que un = Card(X ∩ An ) si et seulement si
X
un k −n ≤ 1.
n≥1
Par hypothèse,
n+1
X
ui k n+1−i ≤ k n+1
i=1
⇔ S + un+1 ≤ k n+1 .
Il y a donc au moins un+1 mots de longueur n + 1 qui n’ont pas de préfixe dans Xn .
Soit Y un ensemble de un+1 mots de longueur n + 1 qui n’ont pas de préfixe dans
Xn . Posons
Xn+1 = Xn ∪ Y.
L’ensemble Xn+1 est un code préfixe tel que ∀ 1 ≤ i ≤ n + 1, Card(Xn+1 ∩ Ai ) = ui .
[
Posons X = Xn .
n≥1
— L’ensemble X est préfixe :
Si v, w ∈ X, il existe n, m tels que v ∈ Xn et w ∈ Xm . Supposons par exemple
que m ≥ n, alors v, w ∈ Xm qui est un code préfixe. Ainsi v, w ne peuvent pas être
préfixes propres l’un de l’autre.
— On a Card(X ∩ An ) = un :
En effet, nous avons Card(X ∩ An ) = Card(Xn ∩ An ) = un .
Ainsi l’ensemble X satisfait aux conditions de l’énoncé.
M mM ∩ P 6= ∅.
Remarque 2.2.3. Cette définition est équivalente au fait que P rencontre tous les idéaux
de M . En effet, P est dense dans M si et seulement si pour tout m ∈ M , on a M mM ∩P 6= ∅.
Soit I un idéal de M . Par définition, on a M IM ⊂ I. Soit i ∈ I, on a M iM ⊂ I. En
particulier ∅ =
6 M iM ∩ P ⊂ I ∩ P .
La remarque précédente nous permet de justifier l’utilisation du terme « dense ». En
effet, nous pouvons vérifier que T = {∅} ∪ {I | I idéal de M } est une topologie sur M .
Puisqu’un ensemble est dense, au sens topologique, si et seulement s’il rencontre tout ouvert
non vide, la notion de densité définie ci-dessus est équivalente à celle de densité topologique.
Intuitivement, un ensemble dense contient « beaucoup » d’éléments.
Soient P, Q deux sous-ensembles d’un monoïde M tels que P ⊂ Q. Si P est dense alors
Q l’est aussi.
Remarque 2.2.4. Dans le cas du monoïde libre A∗ , X ⊂ A∗ est dense si et seulement
tout mot de A∗ est facteur d’un mot de X.
Définition 2.2.5. Un sous-ensemble P d’un monoïde M est complet dans M si le sous-
monoïde engendré par P est dense, i.e. F (P ∗ ) = M .
De manière équivalente, P est complet si et seulement si, pour tout élément m ∈ M ,
M mM ∩ P ∗ 6= ∅.
w v
Lemme 2.2.9. Soit A un alphabet d’au moins deux lettres. Pour tout mot u ∈ A+ , il existe
un mot v ∈ A+ tel que uv est sans bords.
Démonstration. Soit a ∈ A la première lettre de u et soit b ∈ A\{a}. Montrons que le mot
w = uab|u| est sans bords, autrement dit, le mot v = ab|u| convient.
Procédons par l’absurde et supposons qu’il existe un mot t qui est préfixe propre non vide
et suffixe de w. On a alors nécessairement |t| > |u|. Ainsi, t étant suffixe, on a t = sab|u|
pour un certain s ∈ A∗ et puisqu’il est également préfixe, on a t = uab|s| . Il vient donc
|s| = |u|. On obtient finalement t = w, ce qui contredit le fait que t est préfixe propre de
w.
• Cas 1 : p = l
Si yl = yp , alors x1 · · · xk−1 est préfixe de y1 · · · yl , ce qui implique que y1 · · · yl ∈ X ∗ .
En effet, sinon il y a un des y1 , . . . , yl qui est égal à y ce qui contredit le fait que xk
est l’occurence la plus à gauche de y.
• Cas 2 : Posons
x1 x2 · · · xk−1 v = y1 y2 · · · yp
avec v 6= ε puisque X est un code.
v
x1 x2 ··· xk−1 xk = y u
Il vient xk u = vyp+1 · · · yl . On a alors que yp+1 , . . . , yl−1 sont des facteurs propres
de xk = y, i.e. |yp+1 |, . . . , |yl−1 | < |y|. Ainsi ils sont aussi dans X. De plus, puisque
yl 6= y, y étant sans bords, on a yl ∈ X.
Finalement, z est bien dans X ∗ .
Grâce à ce résultat, nous allons désormais pouvoir montrer qu’il existe des codes finis
qui ne sont pas inclus dans un code maximal fini, comme stipulé dans la Remarque 1.2.25.
Exemple 2.2.12. Soit X = {a5 , ba2 , ab, b} un code 3 sur l’alphabet A = {a, b}. Chaque
code maximal contenant X est infini. Nous allons le montrer par l’absurde.
Soit Y un code maximal sur A contenant X et supposons que Y est fini. Posons m =
max{|y| | y ∈ Y } et u = bm a4+5m bm ∈ A∗ . L’ensemble Y étant maximal, il est complet,
ainsi u est facteur d’un mot de Y ∗ . Cependant, bm et a4+5m ne peuvent être des facteurs
propres d’un mot de Y vu leurs longueurs, il existe donc des mots y, y 0 ∈ Y ∪ {ε} et des
naturels p, q, r ≥ 0 tels que
u = bp yaq y 0 br
avec aq ∈ Y ∗ .
Le mot a5 est le seul mot de Y qui ne contient pas de b. En effet, nous allons montrer
que si une autre puissance de a appartient à Y , nous trouverons un mot possédant deux
factorisations différentes, ce qui contredit le fait que Y est un code.
— Si a5i ∈ Y , pour i > 1 4 , alors a5i = (a5 )i .
— Si a5i+1 ∈ Y , pour i ≥ 0, alors (a5 )i (ab) = (a5i+1 )(b).
3. Nous le vérifions grâce à l’algorithme développé dans la Section 1.3 : U1 = {aa}, U2 = {aaa}, U3 = U1
et ε ∈
/ Un pour n = 1, 2, 3.
4. Si i = 0 alors a5i = ε ∈
/ Y et on sait déjà que a5 ∈ Y .
2.2. ENSEMBLES COMPLETS 45
y = bh a5s+i et y 0 = aj+5t bk
Définition 2.2.13. Un sous-ensemble P d’un monoïde M est dit fin lorsqu’il n’est pas
dense. Autrement dit, il existe au moins un élément m ∈ M qui n’est pas complétable dans
P , i.e. M mM ∩ P = ∅.
Démonstration. 1. Supposons tout d’abord que P et Q sont fins. Ainsi il existe des mots
m, n ∈ M tels que
M mM ∩ P = ∅ et M nM ∩ Q = ∅.
Le mot mn est incomplétable dans P ∪ Q :
2. Procédons par l’absurde et supposons que R\P est fin. Alors, vu le point précédent,
(R\P ) ∪ P est fin. Or, R ⊂ (R\P ) ∪ P , ce qui contredit notre hypothèse.
Remarque 2.2.16. Les ensembles fins d’un monoïde libre ont des propriétés supplémen-
taires :
1. Tout sous-ensemble fini X ⊂ A∗ est fin.
En effet, si on prend un élément w ∈ A∗ \X tel que |w| > max{|x| | x ∈ X}, alors
A∗ wA∗ ∩ X = ∅.
2. Si X, Y ⊂ A∗ sont des ensembles fins, alors XY est fin.
Comme X et Y sont fins, il existe x, y ∈ A∗ tels que x et y sont incomplétables dans
X et Y , respectivement. Montrons par l’absurde que w = xy est incomplétable dans
XY . Supposons qu’il existe u, v ∈ A∗ tels que uxyv ∈ XY . Il existe alors x0 ∈ X et
y 0 ∈ Y tels que uxyv = x0 y 0 . Posons l = |ux|.
— Si |x0 | ≤ l :
u x y v
0 0
x y
x0 y0
Puisqu’un ensemble est fin s’il n’est pas dense, intuitivement nous savons qu’il ne
contient que « peu » d’éléments. La proposition suivante va confirmer cette intuition.
Proposition 2.2.17. Soit X ⊂ A∗ un ensemble fin. Pour toute loi de Bernoulli positive
π sur A∗ , on a
π(X) < ∞.
Démonstration. Soit w un mot qui n’est pas facteur d’un mot de X, i.e. w est incomplétable
dans X. Posons n = |w|. On a n ≥ 1. Pour 0 ≤ i ≤ n − 1, considérons
n−1
! n−1
[ X
Puisque π(X) = π Xi = π(Xi ), l’union étant disjointe, il suffit de montrer que
i=0 i=0
π(Xi ) est fini pour i = 0, . . . , n − 1.
2.2. ENSEMBLES COMPLETS 47
puisque le produit (An \{w})k est non ambigu et π(An ) = 1 d’après la Proposition 2.1.2.
Étant donné que π est positif par hypothèse, nous savons que π(w) > 0, et par conséquent
(1 − π(w)) < 1. Nous obtenons donc
1
π ((An \{w})∗ ) = .
π(w)
Finalement, il vient
π(Xi ) ≤ π(Ai (An \{w})∗ )
= π(Ai ) π((An \{w})∗ )
| {z }
=1
1
=
π(w)
car le produit Ai (An \{w})∗ est non ambigu.
Ainsi, z ∈ d−1 X ∗ g −1 , ce qui permet de conclure étant donné que la seconde inclusion est
triviale.
Proposition 2.2.19. Soit X ⊂ A∗ un ensemble fin et complet. Pour toute loi de Bernoulli
positive π sur A∗ , on a
π(X) ≥ 1.
!
[ X
Démonstration. On a π(A∗ ) = π An = π(An ) = ∞. Vu la proposition précédente,
| {z }
n≥0 n≥0 =1
on a !
[ X
π(A∗ ) = π d−1 X ∗ g −1 ≤ π d−1 X ∗ g −1 .
d∈D,g∈G d∈D,g∈G
Ainsi il existe une paire (g, d) ∈ G × D telle que π(d−1 X ∗ g −1 ) = ∞, la somme étant finie.
Puisque d(d−1 X ∗ g −1 )g ⊂ X ∗ , il vient
étant donné que le produit d(d−1 X ∗ g −1 )g est non ambigu, d et g étant fixés. Puisque π est
supposée positif, π(X ∗ ) = ∞. De plus,
!
[
π(X ∗ ) = π Xn
n≥0
X
≤ π(X n )
n≥0
X
≤ (π(X))n .
n≥0
Procédons alors par l’absurde en supposant que π(X) < 1. Vu ce qui précède, on a π(X ∗ ) <
∞, ce qui mène à une contradiction. Ainsi π(X) ≥ 1.
Démonstration. Soit X un code fin et complet. Par le Théorème 2.1.15, nous savons que
π(X) ≤ 1 pour toute loi de Bernoulli π sur A∗ . Par la proposition précédente, nous savons
que π(X) ≥ 1 pour toute loi de Bernoulli positive π sur A∗ . Ainsi, il vient que π(X) = 1
pour toute loi de Bernoulli positive π sur A∗ . Finalement, par la Proposition 2.1.21, on en
tire que X est maximal.
Les Théorèmes 2.2.11 et 2.2.20 nous permettent d’obtenir une condition équivalente au
fait d’être complet.
2.2. ENSEMBLES COMPLETS 49
Démonstration. La condition est nécessaire. En effet, supposons que X est complet mais
pas dense. Ainsi, X est fin et vu le Théorème 2.2.20, on en tire que X est maximal.
La condition est suffisante puisque nous savons que tout ensemble dense est complet
vu la Proposition 2.2.6 et que tout code maximal est complet vu le Théorème 2.2.11.
Proposition 2.2.22. Soit X ⊂ A∗ un code maximal fini. Pour tout sous-ensemble non
vide B de A, le code X ∩ B ∗ est un code maximal sur B.
Corollaire 2.2.23. Soit X ⊂ A∗ un code maximal fini. Pour chaque lettre a ∈ A, il existe
un naturel n tel que an ∈ X.
Théorème 2.2.25. Soit X un code fin sur A. Les propositions suivantes sont équivalentes.
1. L’ensemble X est un code maximal.
2. Il existe une loi de Bernoulli positive π sur A∗ telle que π(X) = 1.
3. Pour toute loi de Bernoulli positive π sur A∗ , on a π(X) = 1.
4. L’ensemble X est complet.
Ce théorème nous permet de vérifier plus aisément si un code fin est maximal. En effet,
il nous suffit maintenant de considérer n’importe quelle loi de Bernoulli positive et de voir
si on a bien π(X) = 1.
[
Remarque 2.2.26. Considérons l’ensemble préfixe X = an bAn sur l’alphabet A =
n≥0
{a, b}.
• L’ensemble X est complet puisqu’il est dense :
En effet, pour tout w ∈ A∗ , a|w| bw ∈ X.
• Toute loi de Bernoulli positive π sur A∗ est telle que π(X) = 1.
En effet, soit π une loi de Bernoulli positive sur A∗ telle que π(a) = p et π(b) = 1 − p,
avec 0 < p < 1. On a alors
!
[
π(X) = π an bAn
n≥0
X
= π(an bAn )
n≥0
!
X X
= π(w)
n≥0 w∈an bAn
!
X X
= π(an )π(b) π(u)
n≥0 u∈An
| {z }
=1
X
= pn (1 − p)
n≥0
1
= (1 − p)
1−p
= 1.
Ainsi, X satisfait les quatre conditions du Théorème 2.2.25 alors qu’il n’est pas fin.
Théorème 2.2.27. Soit X ⊂ A+ un ensemble fin et soit π une loi de Bernoulli positive
sur A∗ . Chaque combinaison de deux des trois assertions suivantes implique la troisième.
1. L’ensemble X est un code.
2.2. ENSEMBLES COMPLETS 51
2. On a π(X) = 1.
3. L’ensemble X est complet.
Nous terminons cette section en nous intéressant aux codes réguliers. Comme nous
l’avons vu précédemment, un code fini n’est pas nécessairement inclus dans un code fini
maximal. Cependant, nous pouvons nous en sortir en considérant des codes réguliers.
On a alors ρ(w) ≤ Card(Q) et ρ(uwv) ≤ ρ(w) pour tous mots u, v ∈ A∗ . Soit J l’ensemble
des mots w ∈ A∗ tels que ρ(w) est minimal. L’ensemble J est un idéal de A∗ . En effet,
• J ⊂ A∗
• J est non vide
• Soit w ∈ J, puisque ρ(uwv) ≤ ρ(w) avec ρ(w) minimal, on a ρ(uwv) = ρ(w) et donc
uwv ∈ J pour u, v ∈ A∗ .
Soit w ∈ J, posons P = δ(Q, w). Montrons que l’on a P = δ(P, w).
D’une part δ(P, w) ⊂ δ(Q, w) = P et d’autre part δ(P, w) = δ(Q, w2 ). Il vient alors que
52 CHAPITRE 2. DESCRIPTION QUANTITATIVE DES CODES
Card(δ(P, w)) = Card(δ(Q, w2 )) = ρ(w2 ). Puisque ρ(w2 ) ≤ ρ(w), avec ρ(w) minimal, il
vient
Card(δ(P, w)) = ρ(w) = Card(P ).
L’égalité souhaitée en découle.
Ceci nous montre alors que l’application g : P → Q, p 7→ δ(p, w) a pour image P , et
est donc une bijection de P dans lui-même. Il existe donc un naturel n ≥ 1 tel que
l’application p 7→ δ(p, wn ) est l’application identité sur P . Puisque P = δ(Q, w), on a
δ(q, w) = δ(q, wn+1 ) pour tout q ∈ Q. Pour montrer que X est fin, il suffit de montrer qu’il
ne rencontre pas l’idéal J, vu la Remarque 2.2.3. Procédons par l’absurde en supposant
que J ∩ X 6= ∅.
Soit x ∈ J ∩ X. Nous avons alors δ(q0 , x) = f ∈ F puisque A accepte X. De plus, puisque
x ∈ J, nous savons que δ(q0 , xn+1 ) = δ(q0 , x) = f ∈ F . Il vient alors que xn+1 ∈ X, ce qui
contredit le fait que X est un code puisque xn+1 = (x)n+1 .
v0 y
Ainsi, il existe un mot u ∈ A∗ tel que vyu = v 0 . Il vient alors que v 0 ∈ A∗ yA∗ , ce qui
contredit le fait que v 0 ∈ V .
• L’ensemble Y est un code :
Procédons par l’absurde et supposons que Y n’est pas un code. Il existe donc un mot
w ∈ Y ∗ , supposé de longueur minimale, qui possède deux factorisations distinctes en
mots de Y :
w = y1 y2 · · · yn = y10 y20 · · · ym
0
, (2.38)
avec n, m ≥ 1, yi , yj0 ∈ Y et y1 6= y10 . L’ensemble X étant un code, il doit forcément
y avoir un des yi , yj0 qui appartient à X. Supposons que ce soit l’un des y1 , . . . , yn
qui soit dans Y \X et soit p le plus petit indice tel que yp ∈ y(U y)∗ . Par hypothèse,
2.2. ENSEMBLES COMPLETS 53
nous savons que y n’est pas complétable dans X ∗ , i.e. y ∈ / F (X ∗ ). Par conséquent,
/ F (X ∗ ) et donc w ∈
yp ∈ / X ∗ . Ainsi, nous savons qu’un des y10 , . . . , ym
0
est également
∗ 0 ∗
dans y(U y) . Soit q le plus petit indice tel que yq ∈ y(U y) . Nous avons donc
y · · · y y, y 0 · · · y 0 y ∈ Z
|1 {z p−1} |1 {z q−1}
∈X ∗ ⊂V ∈X ∗ ⊂V
avec u1 , . . . uk , u01 , . . . u0l ∈ U . Supposons que y1 soit préfixe de y10 . On sait que U ⊂ V
et donc ui y, u0j y ∈ Z. Il s’ensuit que
u1 = u01 , . . . , uk = u0k .
y2 y3 · · · yn = ty20 · · · ym
0
.
y2 y3 · · · yr−1 = u0k+1 .
| {z }
∈X ∗
Ainsi u0k+1 ∈ X ∗ , ce qui contredit le fait que u0k+1 ∈ U . Ainsi, Y est un code.
• L’ensemble Y est complet :
Soit w ∈ A∗ et décomposons-le de la façon suivante :
ywy = (yv1 y · · · yvi1 −1 )vi1 (yvi1 +1 y · · · yvi2 −1 y) · · · vik (yvik +1 y · · · yvn y).
Chaque parenthèse appartient à y(U y)∗ ⊂ Y . Ainsi, le mot ywy ∈ Y ∗ , i.e. w est
complétable dans Y ∗ .
Théorème 2.2.31. Tout code régulier est inclus dans un code régulier maximal.
54 CHAPITRE 2. DESCRIPTION QUANTITATIVE DES CODES
Démonstration. Soit X un code régulier. Si X est complet, alors il est maximal puisqu’il
est fin par la Proposition 2.2.28. Sinon, il existe y ∈ A∗ tel que A∗ yA∗ ∩ X ∗ = ∅. Au
vu du Lemme 2.2.9 6 , on peut le supposer sans bords. Puisque l’ensemble X est régulier,
nous savons que U = A∗ \(X ∗ ∪ A∗ yA∗ ) est également régulier. Il en va de même pour
Y = X ∪ y(U y)∗ . Vu les Propositions 2.2.28 et 2.2.30, l’ensemble Y est un code fin et
complet. Finalement, Y est maximal vu le Théorème 2.2.20.
En particulier, tout code fini est inclus dans un code régulier maximal.
6. Si Card(A) = 1, le théorème est évident. On peut donc supposer travailler sur un alphabet d’au
moins deux lettres.
Chapitre 3
Codes préfixes
Dans ce chapitre, nous allons nous focaliser sur une famille particulière de codes : les
codes préfixes. Lorsque l’on s’intéresse aux codes, les codes préfixes occupent rapidement
une place privilégiée puisqu’il s’agit des codes les plus faciles à construire et à manipuler.
Il est donc naturel de les étudier plus en profondeur.
Nous allons tout d’abord donner quelques résultats généraux concernant les ensembles
préfixes avant de nous intéresser aux liens entre les codes préfixes et les séries formelles.
Une partie de ce chapitre sera consacrée à l’étude des automates acceptant les en-
sembles préfixes. Pour cela, nous aurons besoin d’introduire préalablement la notion de
représentation littérale d’un ensemble X ⊂ A∗ .
Ensuite, nous adapterons les notions de densité vues dans la Section 2.2 au cas parti-
culier des ensembles préfixes dans le but d’en étudier la maximalité.
Finalement, nous nous concentrerons sur un sous-ensemble spécifique des codes pré-
fixes : les codes sémaphores. Nous établirons une série de résultats concernant cette nou-
velle famille avant de déboucher sur le Théorème 3.7.15 qui nous montrera que celle-ci
possède une propriété intéressante qui n’est pas partagée par les codes préfixes en toute
généralité.
Évidemment, tous les résultats présentés dans ce chapitre peuvent aisément être adaptés
aux ensembles suffixes.
Définition 3.1.1. Deux mots x, y ∈ A∗ sont dits incomparables pour l’ordre préfixe si x
n’est pas préfixe de y et si y n’est pas préfixe de x.
55
56 CHAPITRE 3. CODES PRÉFIXES
Posons
XA− = X(A+ )−1 = {w ∈ A∗ | ∃u ∈ A+ : wu ∈ X},
l’ensemble des préfixes propres des mots de X. Ainsi, w ∈ XA− si et seulement si w ≺ x
pour un x ∈ X.
La proposition suivante nous permet de lier les notions de code préfixe et d’idéal à
droite.
X ∩ XA+ ⊂ X ∩ Y A+ = ∅.
x = zu = x0 u0 u.
Montrons que f ◦ g = id, i.e. pour tout idéal à droite I de A∗ , on a (I\IA+ )A∗ = I.
Soit I un idéal à droite de A∗ . Posons X = I\IA+ . Par la Proposition 3.1.3, nous
avons XA∗ = IA∗ . De plus, nous savons que IA∗ = I, vu la définition d’un idéal à
droite. Il vient alors XA∗ = I.
Montrons que g ◦ f = id, i.e. pour tout ensemble préfixe X de A∗ , on a XA∗ \XA+ =
X.
Soit X ⊂ A∗ un ensemble préfixe. Vu la Proposition 3.1.2, nous avons X ∩ XA+ = ∅.
Il s’ensuit que X = X\XA+ . On a alors
Nous allons montrer que (A∗ \R)\(A∗ \R)A+ = ({ε} ∪ RA)\R, ainsi nous aurons
k = g ◦ h, qui est une bijection.
Remarquons tout d’abord que dans le cas où R = ∅, l’égalité est évidente puisque
({ε} ∪ RA)\R = {ε} et (A∗ \R)\(A∗ \R)A+ = A∗ \A+ = {ε}. Supposons donc que
R 6= ∅. Dans ce cas, ε ∈ R, ainsi il suffit de montrer l’égalité (A∗ \R)\(A∗ \R)A+ =
RA\R.
⊂ : Soit x ∈ (A∗ \R)\(A∗ \R)A+ ⊂ A∗ \R. Posons x = ua avec u ∈ A∗ et a ∈ A.
On a forcément que u ∈ R, sinon ua ∈ (A∗ \R)A, ce qui contredit le fait que
/ (A∗ \R)A+ . Ainsi, x = ua ∈ RA\R.
x = ua ∈
⊃ : Soit x ∈ RA\R ⊂ A∗ \R. Il existe donc r ∈ R et a ∈ A tels que x = ra.
Puisque R est fermé par préfixe, tous les préfixes propres de x sont dans R.
Ainsi, x n’a aucun préfixe propre dans A∗ \R, i.e. x ∈
/ (A∗ \R)A+ . Donc x ∈
∗ ∗ +
(A \R)\(A \R)A .
((X)∗ , w) = Card{(x1 , x2 , . . . , xn ) | n ≥ 0, xi ∈ X, w = x1 · · · xn }
(
1 si w ∈ X ∗
=
0 sinon
= (X ∗ , w).
La condition est aussi suffisante. Procédons par l’absurde et supposons que X n’est pas
un code. Il existe alors un mot w ∈ X ∗ tel que ((X)∗ , w) ≥ 2, ce qui contredit le fait que
X ∗ = (X)∗ .
Proposition 3.2.2. Soient X un code préfixe sur A et R = A∗ \XA∗ . Alors
X − ε = R(A − ε) (3.2)
et
A∗ = X ∗ R. (3.3)
Démonstration. Le produit XA∗ est non ambigu vu le point 5 de la Proposition 3.1.2.
Ainsi, par la Proposition 1.1.4, on a XA∗ = X A∗ . Il vient donc
R = (ε − X)A∗
⇒ R(ε − A) = (ε − X)A∗ (ε − A)
⇒ R(A − ε) = (X − ε) (ε − A)−1 (ε − A)
| {z }
=ε
⇒ R(A − ε) = (X − ε).
De plus, les égalités 3.2 et 3.3 sont équivalentes. Par la proposition précédente, puisque
X est un code, nous savons que X ∗ = (ε − X)−1 . Ainsi, en multipliant 3.2 par X ∗ à gauche
et A∗ à droite, on retombe sur 3.3. De manière analogue, en multipliant 3.3 à gauche par
(ε − X) et à droite par (ε − A), nous obtenons 3.2.
60 CHAPITRE 3. CODES PRÉFIXES
X − ε = R(A − ε)
X − ε = RA − R
X + R = RA + ε.
Ainsi, on voit qu’un mot de R concaténé à une lettre est soit dans X soit dans R.
De plus tout mot de X se décompose en un mot de R concaténé à une lettre.
2. L’égalité 3.3 nous apprend, quant à elle, que tout mot w ∈ A∗ possède une unique
factorisation de la forme
w = x1 · · · xn u
avec xi ∈ X et u ∈ R.
a b
aa ab ba bb
Exemple 3.3.2. Considérons l’ensemble X = {a, ba, baa} sur l’alphabet A = {a, b}. La
représentation littérale de X est
ba
baa
On se convainc alors qu’un ensemble X est préfixe si et seulement si, dans sa représen-
tation littérale, les sommets correspondant aux mots de X sont exactement les feuilles de
l’arbre.
Exemple 3.3.3. Considérons l’ensemble préfixe X = {a, baa, bab, bb} sur l’alphabet A =
{a, b}. La représentation littérale de X est
bb
baa bab
Nous pouvons remarquer que nous avons en effet une correspondance entre les mots de X
et les feuilles de sa représentation littérale.
Nous commençons par présenter une caractérisation des ensembles préfixes en termes
d’automates.
Proposition 3.4.1. Soit X ⊂ A∗ . Les assertions suivantes sont équivalentes :
62 CHAPITRE 3. CODES PRÉFIXES
ε
a b
a b
b a b
ab bb ab ba bb
b
bab bab
3.4. ENSEMBLES PRÉFIXES ET AUTOMATES 63
Remarque 3.4.3. Pour rendre l’automate littéral déterministe, il suffit de lui ajouter un
puits vers lequel sont dirigées toutes les transitions manquantes.
Considérons deux états de l’automate littéral. Cela revient à considérer deux préfixes
de mots de X, disons u et v. Ces deux états sont non distingués si et seulement si u−1 X =
v −1 X. Étant donné la construction de la représentation littérale, cette dernière égalité
traduit le fait que le sous-arbre de la représentation littérale de X partant de la racine u
est isomorphe à celui partant de la racine v.
Nous construisons alors l’automate minimal de X de la façon suivante : nous étiquetons
d’abord par 0 tous les états finals, c’est-à-dire les feuilles. Supposons que nous avons déjà
défini i étiquettes. Considérons les sous-arbres dont tous les nœuds sont étiquetés sauf la
racine. Nous étiquetons alors les racines de sous-arbres isomorphes de la même manière.
Finalement, ces étiquettes correspondront aux états de notre automate minimal.
Exemple 3.4.4. Considérons l’ensemble X défini à l’Exemple 3.4.2. Commençons par éti-
queter les nœuds de notre représentation littérale.
1 2
1
ab bb
0 0
bab
0
Ainsi, v ∈ M .
La proposition suivante nous fournit une méthode pour construire l’automate minimal
AX ∗ de X ∗ à partir de l’automate minimal AX de X.
Proposition 3.4.8. Soient X un code préfixe non vide sur A et AX = {Q, q0 , {f }, A, δ}
l’automate minimal de X. Alors l’automate minimal de X ∗ est
(
(Q, f, {f }, A, ◦) si Stab(q0 ) 6= {ε}
AX ∗ =
(Q\{q0 }, f, {f }, A, ◦) si Stab(q0 ) = {ε}
3.4. ENSEMBLES PRÉFIXES ET AUTOMATES 65
q ◦ a = δ(q, a) si q 6= f
f ◦ a = δ(q0 , a).
Démonstration. Soit B l’automate (Q, f, {f }, A, ◦). On a L(B) = {w ∈ A∗ | f ◦ w = f } =
X ∗ . Vérifions que B est réduit. Considérons des états distincts p et q. Puisque AX est
réduit, il existe un mot u ∈ A+ qui distingue p et q. Supposons par exemple que
δ(p, u) = f et δ(q, u) 6= f.
On peut remarquer que, vu la Proposition 3.4.1, l’état p est distinct de l’état final f , puisque
δ(f, u) 6= f et que de plus, tous les états atteints en lisant successivement une lettre de u
sont également différents de l’état final. On a alors p ◦ u = δ(p, u) = f et p ◦ v 6= f pour
tout v ≺ u.
• Si q ◦ u 6= f , alors le mot u distingue p et q dans l’automate B.
• Sinon, si q ◦ u = f , il existe un préfixe v de u, supposons-le être le plus petit, tel que
q ◦ v = f . Montrons alors que δ(q, v) = f . Procédons par récurrence pour montrer
que ∀ v 0 v, q ◦ v 0 = δ(q, v 0 ).
— Cas de base : v 0 = ε.
Par convention, on a q ◦ ε = q = δ(q, ε).
— Induction : Supposons que l’on a q ◦ v 00 = δ(q, v 00 ) pour tout v 00 ≺ v 0 .
Supposons que v 0 = v 00 a. On a alors
q ◦ v 0 = (q ◦ v 00 ) ◦ a
= δ(q, v 00 ) ◦ a.
1 2
b b
a b
0
a
b
a b
ε ba
b
b
b
b
Un ensemble préfixe X ⊂ A∗ est maximal s’il n’est pas strictement inclus dans un autre
ensemble préfixe de A∗ , i.e. X ⊂ Y ⊂ A∗ et Y préfixe implique X = Y .
L’ensemble {ε} est un ensemble préfixe maximal. Tout autre ensemble préfixe maximal
est un code.
3.5. CODES PRÉFIXES MAXIMAUX 67
Un code maximal qui est préfixe est en particulier un ensemble préfixe maximal. Notons
que la réciproque n’est pas vraie puisqu’il existe des codes préfixes maximaux qui ne sont
pas des codes maximaux. Cependant, dans le cas des ensembles fins, nous verrons que les
codes préfixes maximaux sont des codes maximaux.
w = x 1 x2 · · · xn p
XA∗ ∩ wA∗ 6= ∅.
Cas 2 : Si w = x, alors w ∈ X.
Cas 3 : Si x ≺ w, alors il existe v 0 ∈ A+ tel que xv 0 = w. Ainsi, w ∈ XA+ .
Ainsi, w ∈ XA− ∪ X ∪ XA+ .
2 ⇒ 1 : L’ensemble des préfixes de XA∗ est XA− ∪ X ∪ XA+ = A∗ . Ainsi, soit w ∈ A∗ , il
existe u ∈ A∗ tel que wu ∈ XA∗ . Le mot w est donc complétable à droite dans XA∗ .
Remarque 3.5.5. Si X = {ε}, alors XA∗ = A∗ . Or A∗ est dense à droite alors que X
n’est pas complet à droite puisque X ∗ = {ε} n’est pas dense à droite. Ceci montre donc
que la proposition précédente ne se généralise pas au cas X ⊂ A∗ .
Nous allons démontrer l’analogue de la Proposition 3.1.5 dans le cas des ensembles
préfixes maximaux. Considérons les familles suivantes :
1. La famille M des ensembles préfixes maximaux ;
2. La famille D des idéaux à droite qui sont denses à droite ;
3. La famille P des ensembles fermés par préfixe qui ne contiennent pas d’idéaux à
droite.
Démonstration. Remarquons que ces applications ne sont que les restrictions des applica-
tions définies dans la Proposition 3.1.5. C’est évident pour celles des points 1 et 2, nous le
vérifierons ci-dessous pour le point 3.
1. Soit X un ensemble préfixe maximal. Tout mot u ∈ A∗ est comparable pour l’ordre
préfixe avec un mot de X. En effet, supposons que u et x sont incomparables pour
tout x ∈ X, i.e. x n’est pas préfixe de u et u n’est pas préfixe de x. Alors X ∪ {u}
est encore un ensemble préfixe, ce qui contredit la maximalité de X. On a alors
Cas 1 : Si u ≺ x alors il existe u0 ∈ A∗ tel que uu0 = x ∈ X ⊂ XA∗ .
Cas 2 : Si u = x alors u ∈ X ⊂ XA∗ .
Cas 3 : Si x ≺ u alors il existe v ∈ A∗ tel que xv = u ∈ XA∗ .
On en conclut donc que XA∗ est dense à droite.
Soit I un idéal à droite qui est dense à droite. Vu la Proposition 3.1.3 nous savons
déjà que l’ensemble I\IA+ est préfixe. Montrons que pour tout w ∈ A∗ , il existe
i ∈ I\IA+ tel que w est comparable avec i.
Soit w ∈ A∗ . Puisque I est dense à droite, il existe u ∈ A∗ tel que wu ∈ I. Soit i
/ IA+ . On a donc soit i ≺ w soit
le plus petit préfixe de wu tel que i ∈ I. Alors i ∈
i = w soit w ≺ i.
Ainsi, I\IA+ est un ensemble préfixe maximal.
2. Soit I un idéal à droite qui est dense à droite. On sait déjà, vu la Proposition 3.1.5,
que A∗ \I est fermé par préfixe. Montrons alors que A∗ \I ne contient pas d’idéal à
droite.
Procédons par l’absurde et supposons que I 0 ⊂ A∗ \I est un idéal à droite. Soit i0 ∈ I 0 .
On a alors i0 w ∈ I 0 pour tout w ∈ A∗ , ce qui contredit le fait que I est dense à droite
puisque i0 n’est pas complétable à droite dans I.
Soit P un ensemble fermé par préfixe ne contenant pas d’idéal à droite. On sait déjà,
vu la Proposition 3.1.5, que A∗ \P est un idéal à droite. Montrons alors que A∗ \P est
dense à droite.
Soit w ∈ A∗ . Puisque wA∗ est un idéal à droite, on sait que wA∗ 6⊂ P . Il existe donc
u ∈ wA∗ \P . Dès lors, u = wv pour un certain v ∈ A∗ . Donc wv ∈ A∗ \P , ce qui
montre que w est complétable dans A∗ \P .
3. Soit X un ensemble préfixe maximal. Vu le point 1, on sait que XA∗ est dense à
droite. Par la Proposition 3.1.2, on sait que X, XA+ et XA− sont des ensembles
disjoints deux-à-deux et par la Proposition 3.5.3, on sait que A∗ = XA− ∪ X ∪ XA+ .
Il vient alors :
A∗ \XA∗ = A∗ \(X ∪ XA+ ) = XA− .
70 CHAPITRE 3. CODES PRÉFIXES
Théorème 3.5.8. Soit X un code préfixe. L’ensemble X est complet à droite si et seule-
ment si X est un code préfixe maximal.
Nous pouvons exprimer la maximalité d’un code préfixe en termes de séries formelles
comme le montre le théorème suivant.
Théorème 3.5.9. Soient X un code préfixe sur A et P = XA− l’ensemble des préfixes
propres des mots de X. L’ensemble X est préfixe maximal si et seulement si on a les
conditions équivalentes suivantes :
X − ε = P (A − ε) (3.5)
et
A∗ = X ∗ P . (3.6)
Démonstration. Posons R = A∗ \XA∗ . Si X est préfixe maximal alors XA∗ est dense à
droite. Par la Proposition 3.1.2, nous savons que les ensembles XA− , X, XA+ sont disjoints
deux à deux. Ainsi, grâce à la Proposition 3.5.3, il vient
P (A − ε) = R(A − ε).
3.5. CODES PRÉFIXES MAXIMAUX 71
Pour terminer cette section, nous allons caractériser les codes préfixes maximaux au
moyen des automates acceptant les sous-monoïdes qu’ils engendrent.
Proposition 3.5.14. Soit X un code préfixe sur A. Les assertions suivantes sont équiva-
lentes :
1. L’ensemble X est préfixe maximal.
2. L’automate minimal de X ∗ est coaccessible.
3. Tous les états de l’automate minimal de X ∗ sont récurrents.
4. L’état initial de l’automate minimal de X ∗ est récurrent.
5. L’ensemble X ∗ est le stabilisateur d’un état récurrent d’un automate déterministe.
Démonstration.
1 ⇒ 2 : Soit AX ∗ = (QX ∗ , q0,X ∗ , q0,X ∗ , A, δX ∗ ) l’automate minimal de X ∗ . Soit q ∈ QX ∗ .
Puisque AX ∗ est accessible, il existe un mot u ∈ A∗ tel que δX ∗ (q0,X ∗ , u) = q. Par le
Théorème 3.5.8, X est complet à droite. Ainsi u est complétable à droite dans X ∗ , donc
il existe un mot v ∈ A∗ tel que uv ∈ X ∗ . Il vient que δX ∗ (q, v) = δX ∗ (δX ∗ (q0,X ∗ , u), v) =
δX ∗ (q0,X ∗ , uv) = q0,X ∗ . L’état q est donc coaccessible.
2 ⇒ 3 : Soit q ∈ QX ∗ et u ∈ A∗ . Puisque AX ∗ est accessible, il existe v ∈ A∗ tel que
δX ∗ (q0,X ∗ , v) = q. Par hypothèse, l’automate minimal est coaccessible, il existe donc w ∈ A∗
tel que δX ∗ (δX ∗ (q, u), w) = q0,X ∗ . Ainsi δX ∗ (q, uwv) = δX ∗ (q0,X ∗ , v) = q.
3 ⇒ 4 : Évident.
4 ⇒ 5 : On a X ∗ = L(AX ∗ ) = {w ∈ A∗ |δX ∗ (q0,X ∗ , w) = q0,X ∗ } = Stab(q0,X ∗ ) et q0,X ∗ est
récurrent par hypothèse.
5 ⇒ 1 : Soient A = (Q, i, F, A, δ) un automate déterministe et q ∈ Q un état récurrent tel
que X ∗ = Stab(q) = {w ∈ A∗ |δ(q, w) = q}. Soit u ∈ A∗ , il existe v ∈ A∗ tel que δ(q, uv) =
q, puisque q est récurrent. Ainsi, uv ∈ Stab(q) = X ∗ . Il vient alors que X est complet à
droite. Ainsi, par le Théorème 3.5.8, l’ensemble X est un code préfixe maximal.
3.6. QUELQUES OPÉRATIONS SUR LES ENSEMBLES PRÉFIXES 73
1. Si X et les Yi sont préfixes (resp. préfixes maximaux) alors Z est préfixe (resp. préfixe
maximal).
2. Si Z est préfixe alors tous les Yi sont préfixes.
3. Si X est préfixe et Z est préfixe maximal, alors X et les Yi sont préfixes maximaux.
ww0 = xv.
Soit i ∈ I tel que x ∈ Xi . Puisque Yi A∗ est dense à droite, il existe v 0 ∈ A∗ tel que
vv 0 ∈ Yi A∗ . Donc ww0 v 0 = xvv 0 ∈ Xi Yi A∗ ⊂ ZA∗ , ce qui montre que ZA∗ est dense
à droite. Par la Proposition 3.5.6, l’ensemble Z est préfixe maximal.
2. Soient y, yu ∈ Yi et x ∈ Xi avec i ∈ I. On a xy, xyu ∈ Z. Or Z est préfixe donc
u = ε, ce qui montre que les ensembles Yi sont donc bien préfixes.
3. Puisque Z est préfixe maximal, on sait que ZA∗ est dense à droite. Étant donné que
ZA∗ ⊂ XA∗ , on en tire que XA∗ est également dense à droite. Ainsi, X est préfixe
maximal. Pour montrer que les Yi sont préfixes maximaux, nous allons montrer que
Yi A∗ est dense à droite.
Soit w ∈ A∗ . Pour tout x ∈ Xi , xw est complétable à droite dans ZA∗ . Il existe alors
t ∈ A∗ tel que xwt ∈ ZA∗ . Donc il existe z ∈ Z et u ∈ A∗ tels que xwt = zu. Il
existe alors x0 ∈ Xj et y 0 ∈ Yj tels que z = x0 y 0 . Il vient alors xwt = x0 y 0 u. Puisque
X est préfixe on a x = x0 . Il s’ensuit que i = j et donc wt = y 0 u ∈ Yi A∗ . Ainsi, w est
complétable à droite dans Yi A∗ .
Corollaire 3.6.2. Si X et Y sont des codes préfixes (resp. codes préfixes maximaux) alors
XY est un code préfixe (resp. code préfixe maximal).
Démonstration. Supposons que X est un code préfixe (resp. code préfixe maximal). Par le
corollaire précédent, le produit X n est un code préfixe (resp. code préfixe maximal).
Inversement, supposons que X n est préfixe. Puisque X n = X n−1 X, par le point 2 de la
Proposition 3.6.1, il vient que X est préfixe. Dans le cas où X n est préfixe maximal, alors
on conclut par le point 3 que X est préfixe maximal.
Définition 3.7.2. Un code X de la forme 3.7 est appelé un code sémaphore. L’ensemble
S ⊂ A+ est l’ensemble des sémaphores de X.
Soit X = (A∗ S)\(A∗ S)A+ un code sémaphore. Un mot x est dans X si et seulement
s’il se termine par un sémaphore mais qu’aucun de ses préfixes propres ne se finit par un
sémaphore.
On justifie l’emploi du terme « sémaphore » de la façon suivante : lorsqu’on lit un mot
de X ∗ , chaque occurrence d’un sémaphore dans ce mot est un « signal » indiquant la fin
d’un facteur dans la décomposition en mots de X 1 .
Les quelques propositions suivantes nous donnent des caractérisations des codes séma-
phores. Nous rappelons au lecteur que dans le cas où X ⊂ A+ , l’ensemble X est préfixe si
et seulement si X est un code préfixe.
Proposition 3.7.3. Soit X ⊂ A+ non vide. L’ensemble X est un code sémaphore si et
seulement si X est préfixe et A∗ X ⊂ XA∗ .
Démonstration. Supposons tout d’abord que X est un code sémaphore. Il existe alors
S ⊂ A+ non vide tel que X = (A∗ S)\(A∗ S)A+ . Par définition, on sait directement que X
est un code préfixe. Montrons donc que A∗ X ⊂ XA∗ .
1. Tout comme un sémaphore ferroviaire indique la fin d’un canton.
3.7. CODES SÉMAPHORES 75
L’exemple suivant nous montre qu’être un code préfixe maximal n’est pas suffisant pour
être un code sémaphore.
Exemple 3.7.4. Considérons l’ensemble X = {a2 , aba, ab2 , b} sur l’alphabet A = {a, b}.
Il s’agit d’un code préfixe. On sait aussi que l’ensemble X étant fini, il est fin. De plus, la
loi uniforme de Bernoulli sur A est telle que
Ainsi par la Proposition 3.5.12, X est un code préfixe maximal. Cependant, X n’est pas
un code sémaphore puisque ab ∈ A∗ X mais ab ∈ / XA∗ .
Démonstration. Supposons que X est un code sémaphore. S’agissant d’un code préfixe
maximal, il est complet à droite vu le Théorème 3.5.8. Montrons alors que X ∩A∗ XA+ = ∅.
Vu la proposition précédente, on sait que A∗ X ⊂ XA∗ . On a donc A∗ XA+ ⊂ XA+ . Ainsi,
il vient
X ∩ A∗ XA+ ⊂ X ∩ XA+ .
L’ensemble X étant préfixe, nous savons, grâce à la Proposition 3.1.2, que X ∩ XA+ = ∅,
d’où la conclusion.
Supposons maintenant que X est complet à droite et que X ∩ A∗ XA+ = ∅. Puisque
X ∩ XA+ ⊂ X ∩ A∗ XA+ = ∅, on en tire que X est préfixe par la Proposition 3.1.2. Pour
vérifier que X est bien un code sémaphore, nous allons montrer que A∗ X ⊂ XA∗ . Soit
w = ux ∈ A∗ X avec u ∈ A∗ et x ∈ X. L’ensemble X étant complet à droite, il existe un
mot v ∈ A∗ tel que uxv ∈ X ∗ . Il existe donc x0 ∈ X et y 0 ∈ X ∗ tels que uxv = x0 y 0 . Puisque
X ∩ A∗ XA+ = ∅, ux n’est pas un préfixe propre de x0 . Ainsi, ux ∈ x0 A∗ ⊂ XA∗ .
Démonstration. Supposons que X est un code sémaphore. On sait donc que c’est un code
préfixe maximal. Montrons que P est fermé par suffixe.
Soit p = uq ∈ P avec u, q ∈ A∗ . Par définition de P , il existe un mot v ∈ A+ tel que
pv ∈ X. Le mot q ne peut pas être dans XA∗ sinon pv = uqv ∈ X ∩ A∗ XA+ = ∅. Il
s’ensuit que q ∈ A∗ \XA∗ . Or, on sait par la Proposition 3.7.5 que X est complet à droite.
Ainsi, XA∗ est dense à droite et A∗ = XA− ∪ X ∪ XA+ . Il vient donc q ∈ XA− = P .
Inversement, supposons que X est un code préfixe maximal et que P est fermé par
suffixe. Par le Théorème 3.5.8, X est complet à droite. Nous allons montrer que X ∩
A∗ XA+ = ∅ et grâce à la Proposition 3.7.5 nous pourrons conclure que X est un code
sémaphore.
Procédons par l’absurde. Supposons qu’il existe x ∈ X ∩A∗ XA+ . Il existe donc u ∈ A∗ , x0 ∈
X et v ∈ A+ tels que x = ux0 v. On a alors que ux0 ∈ P . L’ensemble P étant fermé par
suffixe, il vient que x0 ∈ P , ce qui contredit le fait que X est préfixe.
Proposition 3.7.11. Si X et Y sont des codes sémaphores, alors XY est un code séma-
phore.
Inversement, si XY est un code sémaphore et si X est un code préfixe, alors X est un
code sémaphore.
Démonstration. Supposons que X et Y sont des codes sémaphores. Par le Corollaire 3.6.2,
XY est un code préfixe. Vu la Proposition 3.7.3, pour montrer que XY est un code sé-
maphore, il nous reste à montrer que A∗ XY ⊂ XY A∗ . Puisque X et Y sont des codes
sémaphores, on a A∗ X ⊂ XA∗ et A∗ Y ⊂ Y A∗ . Il vient donc
A∗ XY ⊂ XA∗ Y ⊂ XY A∗ .
Inversement, supposons que XY est un code sémaphore et que X est un code préfixe.
Pour montrer que X est un code sémaphore, il nous reste à montrer que A∗ X ⊂ XA∗ .
Soit w = ux ∈ A∗ X avec u ∈ A∗ et x ∈ X. Soit y un mot de Y supposé de longueur
minimale. Puisque XY est sémaphore, on a A∗ XY ⊂ XY A∗ . Il vient alors wy = uxy =
x0 y 0 u0 , pour x0 ∈ X, y 0 ∈ Y et u0 ∈ A∗ . Étant donné que y est de longueur minimale, on a
|y| ≤ |y 0 | ≤ |y 0 u0 | et par conséquent |ux| ≥ |x0 |, ce qui montre que ux ∈ XA∗ .
Si XY est un code sémaphore, alors Y n’est, quant à lui, pas nécessairement sémaphore,
comme nous le montre l’exemple suivant.
Exemple 3.7.12. Soient X = a∗ b et Y = {a2 , aba, ab2 , b} des ensembles définis sur l’al-
phabet A = {a, b}. Comme nous l’avons vu dans l’Exemple 3.7.4, Y est un code préfixe
maximal mais n’est pas un code sémaphore. Par contre, l’ensemble X est un code séma-
phore. En effet, nous voyons que X est préfixe. De plus, soit w ∈ A∗ X. Il existe u ∈ A∗ et
n ∈ N tels que
w = uan b.
2. Pour tout ensemble Y ⊂ A∗ , l’ensemble X = Y \A+ Y est suffixe. De plus, A∗ X = A∗ Y et X est
l’ensemble minimum avec cette propriété.
78 CHAPITRE 3. CODES PRÉFIXES
Comme nous l’avons déjà mentionné, tous les résultats s’appliquant aux codes préfixes
sont adaptables au cas des codes suffixes. Il est clair que nous pouvons passer d’un code
préfixe à un code suffixe au moyen d’une bijection qui associe à un mot son miroir. Cepen-
dant, dans le cas des codes sémaphores, nous obtenons le résultat suivant, plus surprenant,
nous permettant de passer d’un code sémaphore à son dual, qui est alors suffixe, au moyen
d’une bijection associant à un mot l’un de ses conjugués.
Définition 3.7.14. Deux mots x et y sont conjugués s’il existe des mots u, v ∈ A∗ tels
que x = uv et y = vu. On dit que y est un conjugué de x.
X = J\JA+ et Y = J\A+ J.
L’ensemble D(x) ne contient donc que des suffixes de x. Remarquons que D(x) 6= ∅ puisque
x ∈ D(x). Ainsi, chaque D(x) contient un plus petit élément.
3.7. CODES SÉMAPHORES 79
β(x) = dg,
où d est le plus petit mot de D(x) et g est tel que x = gd. De cette manière β(x) est bien
un conjugué de x et β(x) ∈ J. Montrons alors que β(x) ∈ J\A+ J = Y .
Supposons le contraire, supposons qu’il existe x ∈ X tel que
β(x) = dg = uj,
plus petit mot de D(x). Donc β(x) ∈ Y , ce qui montre que l’application β est bien définie.
Considérons maintenant, pour y ∈ Y
γ(y) = he
geu = gd = x et uge = he ∈ J,
ce qui montre que u ∈ D(x) et contredit le fait que d est le plus petit mot de D(x). On en
déduit alors que d = e et g = h. On obtient donc
γ(β(x)) = γ(eh) = he = gd = x.
Ainsi, les applications β et γ sont bien inverses l’une de l’autre, ce qui montre que β est
une bijection.
80 CHAPITRE 3. CODES PRÉFIXES
et
Y = SA∗ \A+ SA∗ = {a2 , a2 b, ba, bab, b2 }.
Le tableau suivant nous fournit, pour chaque mot x de X, ses suffixes, l’ensemble D(x) et
son image par β.
x Suffixes 6= ε de x D(x) d g β(x)
aa a, aa a, aa a a aa
ba a, ba ba ba ε ba
bb b, bb b, bb b b bb
aba a, ba, aba a, ba, aba a ab aab
abb b, bb, abb b, bb, abb b ab bab
On constate effectivement que les mots de Y sont bien les images par β des mots de X.
Les codes sémaphores ont la propriété d’être en bijection avec un code suffixe par une
application qui associe à un mot l’un de ses conjugués. Ceci n’est pas vrai pour les codes
préfixes quelconques, comme nous le montre l’exemple suivant.
Exemple 3.7.17. Considérons l’ensemble X = {ab, ba, c, ac, bca} sur l’alphabet A =
{a, b, c}. Il est évident que c’est un code préfixe. Supposons qu’il existe une bijection β
de X dans un code suffixe Y qui à x associe un de ses conjugués.
x Conjugués
ab ab , ba
ba ba, ab
c c
ac ac, ca
bca bca, cab, abc
Il est clair, vu le tableau ci-dessus, que Y contient forcément c, ab et ba. De plus, il doit
contenir ca. Si ce n’est pas le cas, il contient alors ac et c contredisant le fait qu’il est
suffixe. Cependant, les conjugués de bca ont des suffixes égaux à c, ab, ca, ce qui montre
qu’une telle bijection β ne peut exister.
Bibliographie
81