Académique Documents
Professionnel Documents
Culture Documents
formels
Calculabilité et complexité
Cours complet
Exercices d'application
Tous les corrigés détaillés
'^ ib e r t
Langages formels
Calculabilité et complexité
Cours et exercices corrigés
^^ibert
Déjà parus dans la collection de manuels universitaires scientifiques
Pierre Wassef
Algèbre. Arithmétique pour l'informatique.
Cours et exercices corrigés - L2 & L 3 ,240 pages
Skander Belhaj & A nis Ben Aïssa
Mathématiques pour l'informatique.
Cours et exercices corrigés - L1 & L2 ,464 pages
Violeta F elea & Victor F elea
Introduction à l'informatique. Apprendre à concevoir des algorithmes.
Cours d'algorithmique et problèmes résolus - DUT, L1 et BTS, 320 pages
Mourad C houlli
Analyse fonctionnelle. Équations aux dérivées partielles.
Cours et exercices corrigés - M l, M2 & Écoles d'ingénieurs, 192 pages
Rached Mneimné & Roger Mansuy
Algèbre linéaire. Réduction des endomorphismes.
Rappels de cours et exercices corrigés - L2, L3 & Classes préparatoires scientifiques, 192 pages
Éric C anon
Analyse numérique.
Cours et exercices corrigés - L2 & L 3 ,256 pages
www.vuibert.fr
ISBN 978-2-311-01400-6
La loi du 11 mars 1957 n'autorisant aux termes des alinéas 2 et 3 de l'article 4 h d'une part, que les « copies ou reproductions
strictement réservées à l'usage privé du copiste et non destinées à une utilisation collective » et, d'autre part, que les analyses et les
courtes citations dans un but d'exemple et d'illustration, « toute représentation ou reproduction intégrale, ou partielle, faite sans le
consentement de l'auteur ou de ses ayants droit ou ayants cause, est illicite » (alinéa V’ de l'article 40). Cette représentation ou
reproduction, par quelque procédé que ce soit, constituerait donc une contrefaçon sanctionnée par les articles 425 et suivants du
Code pénal. Des photocopies payantes peuvent être réalisées avec l'accord de l'éditeur. S'adresser au Centre français d'exploitation
du droit de copie : 20 rue des Grands Augustins, F-75006 Paris. Tél. : 0144 0747 70
Préface 7
Introduction 9
R em erciem en ts 11
I Langages formels 13
1 Langages rationnels 15
1.1 Premières définitions........................................................................................................15
1.2 Opérations rationnelles ............................................................................................. 17
1.3 Combinatoire des m o ts.....................................................................................................18
1.3.1 Périodicités.............................................................................. 18
1.3.2 Mots infinis...........................................................................................................23
1.3.3 Motifs inévitables..................................................................................................23
1.3.4 C o d e s .................................................................................................... 27
1.4 Un peu d’o r d r e .................................................................................................................30
1.4.1 Quasi-ordres sur les m o t s .................................................................................. 33
1.4.2 Ordres sur les m ots.............................................................................................. 34
1.4.3 Quasi-ordres sur les arbres.................................................................................. 34
1.5 Langages rationnels.......................................... 38
1.5.1 Expressions rationnelles..................................................................................... 38
1.5.2 Automates ...........................................................................................................39
1.6 Automates déterministes................................................................................................. 46
1.7 Automate m in im a l.......................................................................................................... 49
1.7.1 Q u o tien ts..............................................................................................................49
1.7.2 Congruence de N erode........................................................................................ 52
1.7.3 Calcul de l’automate m inim al............................................................................ 54
1.8 Propriétés de c lô tu re ........................................................................................................57
1.8.1 Opérations booléennes........................................................................................ 58
1.8.2 Morphisme et morphisme inverse...................................................................... 58
1.9 Lemme de l’étoile et sesvariantes....................................................................................61
1.10 Hauteur d’étoile.................................................................................................................65
1.11 Reconnaissance par m orphism e..................................................................................... 66
1.12 Langages sans é t o i l e ........................................................................................................73
1.13 Com plém ents....................................................................................................................79
1.13.1 Conjecture de C e rn ÿ ........................................................................................... 79
1.13.2 Rationnels d’un monoïde quelconque................................................................ 80
Table des matières
Langages algébriques 83
2.1 Grammaires algébriques................................................................................................. 83
2.1.1 Définitions et exemples ..................................................................................... 83
2.1.2 Grammaires réduites........................................................................................... 87
2.1.3 Grammaires p ro p re s ........................................................................................... 88
2.1.4 Forme normale quadratique................................................ •......................... 90
2.2 Systèmes d’équations....................................................................................................... 91
2.2.1 S u b stitu tio n s....................................................................................................... 91
2.2.2 Système d’équations associé à une gram m aire.................................................92
2.2.3 Existence d ’une solution pour S (G) 93
2.2.4 Unicité des solutions p r o p r e s ............................................................................ 94
2.2.5 Théorème de P a r ik h ........................................................................................... 95
2.2.6 Systèmes d’équations en commutatifs ............................................................. 95
2.2.7 Solutions rationnelles des systèmes commutatifs..............................................96
2.3 Arbres de d ériv a tio n .........................................................................................................98
2.3.1 Ambiguïté............................................................................................................. 99
2.3.2 Lemme d’ité ra tio n .............................................................................................100
2.3.3 Applications du lemme d ’ité r a tio n ................................................................. 103
2.3.4 Ambiguïté in h ére n te......................................................................................... 105
2.4 Propriétés de c lô tu re ......................................................................................................106
2.4.1 Opérations rationnelles ................................................................................... 106
2.4.2 Substitution algébrique ........................................................................... 106
2.4.3 Intersection avec un rationnel.......................................................................... 107
2.4.4 Morphisme in v erse.................................... 109
2.4.5 Théorème de Chomsky et Schützenberger..................................................... 110
2.5 Forme normale de G reibach.......................................................................................... 112
2.6 Automates à p i l e ............................................................................................................114
2.6.1 Définitions et exemples ................................................................................... 114
2.6.2 Différents modes d’ac c e p ta tio n ....................................................................... 116
2.6.3 Équivalence avec les g ram m aires.................................................................... 119
2.6.4 Automates à pile déterm inistes....................................................................... 123
2.7 Com plém ents..................................................................................................................126
2.7.1 R éécriture............................................................................................................126
2.7.2 Contenus de p i l e ............................................................................................... 128
2.7.3 Groupe libre ......................................................................................................130
4 C om p lexité 193
4.1 Introduction.....................................................................................................................193
4.1.1 Objectifs ............................................................................................................193
4.1.2 Définition des complexités.................................................................................193
4.2 Complexité en te m p s......................................................................................................194
4.2.1 Théorème d’accélération....................................................................................195
4.2.2 Changements de m o d è le s .................................................................................195
4.2.3 Classes de complexité en te m p s ....................................................................... 196
4.2.4 NP-complétude...................................................................................................201
4.2.5 NP-complétude de Sat et 3Sa t ....................................................................... 203
4.2.6 Exemples de problèmes NP-complets.............................................................. 206
4.3 Complexité en espace ...................................................................................................218
4.3.1 Changement de m o d è le ................................................................................... 218
4.3.2 Classes de complexité en espace....................................................................... 221
4.3.3 Complexités en temps et en esp a ce................................................................. 221
4.3.4 Exemples de problèmes dans PS pace ........................................................... 222
4.3.5 PSPACE-complétude......................................................................................... 223
4.3.6 Espace logarithmique ...................................................................................... 225
4.3.7 NL-complétude...................................................................................................230
4.4 Théorèmes de hiérarchie............................................................................................... 233
4.5 Machines alternantes......................................................................................................234
4.5.1 Définitions et exemples ................................................................................... 234
4.5.2 Complémentation............................................................................................... 236
4.5.3 Automates a lte r n a n ts ...................................................................................... 237
4.5.4 Classes de co m p lex ité...................................................................................... 240
4.6 Com plém ents..................................................................................................................242
B ibliographie 251
Index 253
À Michèle
Préface
Dominique Perrin
Introduction
E LIVRE est une introduction à rinformatique théorique qui couvre aussi bien les
C langages formels que la calculabilité et la complexité. Il existe d’excellents ouvrages
en anglais couvrant ces différents sujets mais très peu en français. Celui-ci tente hum
blement de combler cette lacune.
L’objectif est d’appréhender les limites des ordinateurs et de comprendre ce qu’il est
possible ou impossible de faire avec eux. Cette question est délicate mais fondamentale
puisqu’elle touche à l’essence de la notion de calculable. Elle est considérée tout au long
de cet ouvrage à travers différents modèles de calculs : automates, automates à pile et
machines de Turing.
Les questions de calculabilité et de complexité ne sont abordées que dans la seconde
partie de l’ouvrage. La première partie est consacrée à la théorie des automates qui est un
préambule indispensable. La théorie des automates s’est développée dès la naissance de
l’informatique théorique. Elle en est maintenant le socle sur lequel s’appuie le reste. Bien
que les automates soient un modèle très simple, ils jouissent de remarquables propriétés
et leur étude est encore très active aujourd’hui. La théorie des automates a des liens
étroits avec l’arithmétique, la combinatoire, l’algèbre, la topologie, la logique, la théorie
des jeux et l’algorithmique. Les automates sont aussi au cœur de nombreuses applications
en informatique du génome, en traitement des langues naturelles et en arithmétique des
ordinateurs. La théorie de la complexité s’est épanouie plus récemment que la théorie
des automates mais c’est maintenant un domaine très dynamique. La seconde partie de
cet ouvrage couvre les thématiques centrales de ce vaste sujet. Quelques thématiques
plus spécialisées comme les approximations et les algorithmes randomisés ne sont pas
abordées.
La première partie est consacrée à la théorie des langages formels. Des éléments de
combinatoire des mots et des ordres font office d’introduction. Ces sujets sont trop ra
rement abordés dans ce type d’ouvrages. Les automates finis et les langages rationnels
forment la trame de ce chapitre. Le théorème de Kleene, les automates déterministes
et la minimisation sont incontournables et occupent une place importante. Viennent
ensuite des prolongements dans des sujets moins classiques. La théorie algébrique des
langages et en particulier l’étude des langages sans étoile terminent le premier chapitre.
Le second chapitre est consacré aux grammaires et aux langages algébriques. Les liens
10 Introduction
avec les systèmes d’équations y sont particulièrement développés pour obtenir le théo
rème de Parikh. Après les propriétés principales de clôture des langages algébriques, les
automates à pile sont introduits et étudiés. Cette étude passe par l’équivalence avec les
grammaires et les automates déterministes. Des compléments sur les contenus de pile et
le groupe libre concluent cette première partie.
La seconde partie est consacrée à la calculabilité et à la complexité. Ces deux no
tions fondamentales sont introduites à travers les machines de Turing mais les fonctions
récursives sont également abordées. L’équivalence entre ces deux définitions de la notion
de calculable est démontrée. Le problème de Post et son indécidabilité permettent en
suite d’exhiber des questions plus naturelles, sur les grammaires par exemple, auxquelles
les réponses ne sont pas calculables. Un détour par les machines linéairement bornées
conduit au théorème d’Immerman et Szelepcsényi. La NP-complétude constitue le cœur
du second chapitre mais la complexité en espace est aussi largement développée. L’es
pace logarithmique et l’espace polynomial sont l’un et l’autre étudiés en détail à travers
la notion de complétude. Ce chapitre se termine par une introduction aux machines
alternantes et par la preuve du théorème d’Hartmanis sur les machines à une bande en
temps 0 (n log n).
Ce livre s’adresse aux étudiants en master d’informatique ou de mathématiques. Tout
master d’informatique comporte un cours sur les automates finis, la compilation et les
automates à pile. La calculabilité et la complexité sont indispensables à tout étudiant
désireux d’avoir une base solide en informatique fondamentale. L’approche rigoureuse
conviendra parfaitement aux étudiants en mathématiques ayant une inclination vers
l’informatique. Cet ouvrage couvre une grande part du programme de l’option informa
tique de l’agrégation de mathématiques. Il sera sans nul doute propice à de nombreux
développements pour les leçons d’oral. Des exercices corrigés permettent une bonne as
similation.
Aucune connaissance préalable n’est requise. Il est seulement supposé que le lecteur
maîtrise quelques éléments de mathématiques enseignés en première année universi
taire. Le premier objectif de cet ouvrage est d’introduire et d’expliquer les premières
notions d’informatique fondamentale. De nombreux exemples illustrent les définitions.
Les différentes notions sont mises en perspective et des connexions entre des concepts
en apparence éloignés sont établies. Le second objectif est de permettre d’aller plus loin.
Chacun des chapitres comprend des compléments. Ces compléments ont souvent été
choisis parce qu’ils permettent d’aborder des résultats élégants sans toutefois nécessiter
la mise en place d’une machinerie lourde. Le prix à payer est la technicité de quelques
passages. Les choix ont aussi été guidés par des préférences personnelles assumées. Ces
compléments sont l’occasion de montrer quelques joyaux parmi lesquels, le théorème de
Schüzenberger, le théorème de Parikh et le théorème d’Immerman et Szelepcsényi.
Outre la correction de quelques coquilles, cette seconde édition se distingue de la
première par l’ajout d’un certain nombre d’exercices et de leurs corrections.
Internet
Une page WEB contenant une liste d’errata et d’autres informations se trouve à
l’adresse suivante :
E LIVRE à été écrit à roccasion d’un cours donné aux élèves de première année de
C l’École Normale Supérieure. Des notes de cours ont d’abord été rédigées par les
élèves Gaëtan Bisson, François Garillot, Thierry Martinez et Sam Zoghaib. Ces notes
ont donné l’impulsion initiale à la rédaction de ce livre sans lesquelles il n’existerait
peut-être pas. Je suis très reconnaissant à ces élèves de m’avoir montré la voie. Je
voudrais aussi remercier tous les élèves qui ont assisté à ce cours. Par leurs questions,
remarques et corrections, ils ont continuellement apporté leurs pierres à l’ouvrage. J’ai
aussi une pensée pour Pierre-Alain Fouque, en charge des travaux dirigés, avec qui la
collaboration a été des plus agréable. Ses constantes relectures et suggestions m ’ont été
d’une aide précieuse.
Dominique Perrin a chaleureusement accepté de rédiger un petit mot. Ce geste me
touche énormément.
La rédaction s’est beaucoup nourrie de mes échanges et discussions avec tous mes
collègues et en particulier ceux de mon laboratoire. Qu’ils trouvent ici mes remercie
ments pour leurs contributions souvent imperceptibles mais néanmoins très présentes.
Certains de mes collègues ont même poussé le zèle jusqu’à accepter la relecture de cer
tains chapitres. Un grand merci à Jean Berstel, Luc Boasson et Isabelle Fagnot.
J’aimerais remercier tous ceux qui se sont joints à moi dans la chasse aux coquilles :
Hélène, Jean-Claude, Médo et Michèle. Ils ont mené une traque implacable. Celles qui
restent malgré tous leurs efforts m’incombent entièrement. Un certain nombre d’erreurs
ont été corrigées depuis la parution de la première édition. Un grand merci à tous ceux qui
me les ont signalées : Jean-Paul Allouche, Anne Bouillard, Thomas Capricelli, Stéphane
Caron, Christian Delhommé, Arthur Milchior, Yves Mocquard et Marc Zeitoun.
Je voudrais finalement remercier Michèle pour son soutien sans faille pendant toutes
ces années.
Première partie
Langages formels
Chapitre 1
Langages rationnels
D éfin itio n 1 . 1 . - Un alphabet est un ensemble fini (souvent noté A ou E) dont les
éléments sont appelés lettres ou symboles.
- Un mot w sur l’alphabet A est une suite finie wiW2 •••Wn de lettres de A. L’entier
n est appelé la longueur de w qui est notée \w\.
- Le mot vide noté e ou parfois 1 correspond à l’unique mot de longueur 0.
- Un langage sur l’alphabet A est un ensemble de mots sur A.
- ensemble de tous les mots sur l’alphabet A est noté A* et il est appelé le monoïde
libre sur A.
16 Chapitre 1. Langages rationnels
Un mot est écrit en juxtaposant ses éléments sans séparateur. Par exemple, le mot w
de longueur 3 dont les éléments sont a, 6 et a est simplement écrit aba. Un mot de
longueur 1 est écrit comme son unique lettre. Cette confusion entre une lettre a et le
mot de longueur 1 dont Tunique élément est a est sans conséquence et même souvent
très pratique.
La concaténation des deux mots u = -ui • • • г¿m et î; = vi • • • î;n est le mot noté u • v
ou uv et égal à ui • • • UmVi -"Vn obtenu par simple juxtaposition. C’est une opération
associative dont le mot vide e est Télément neutre. C’est pour cette raison que le mot
vide est parfois noté 1.
Exemple 1.2 . Si г¿ = abaa et v = baby o m . uv = abaabab et vu = bababaa. La concaté
nation n’est pas commutative.
Comme la concaténation est une loi de composition interne associative avec un élé
ment neutre, elle munit Tensemble A* de tous les mots d’une structure de monoïde. Pour
cette raison, la concaténation est aussi appelée produit Ce monoïde est dit libre parce
que les seules équations qu’il satisfait sont celles qui sont conséquences de la définition
de monoïde. Ce fait est énoncé de manière rigoureuse à la proposition 1.123 (p. 67).
La notion de structure libre peut être définie de manière très générale dans le cadre de
l’algèbre universelle [Alm94].
Exercice 1.3. Soit l’alphabet A = {0,1} et soit la suite de mots (/n)n>o définie par
récurrence par / q = 1, / i = 0 et /n +2 = /n + i/n pour n > 0 .
1. Montrer que si n > 2, alors fn se termine par 01 si n est pair et par 10 sinon.
2. Montrer que le mot Qn obtenu en supprimant les deux dernières lettres de /n,
c’est-à-dire fn = gnOl si n pair et fn = Qn^O sinon est un palindrome. On rappelle
qu’un palindrome est un mot qui reste identique lorsqu’il est retourné.
Solution.
1. La première propriété se montre facilement par récurrence sur n. On vérifie en
effet que /2 = 01 se termine par 01 et que /3 = 010 se termine par 10. La relation
/n +2 = /n + i/n montre ensuite que /n +2 se termine comme fn-
2. On remarque que 5^2 = Ps = 0 et ^4 = 010 sont bien des palindromes et on
montre le résultat par récurrence sur n. On suppose le résultat acquis pour fn et
/n+ i et on montre le résultat pour /n + 3 . On suppose d’abord que n est pair. Les
mots fn et /n+ i s ’écrivent alors fn = QnOl et /n+i = pn+ilO où pn et pn+i sont
des palindromes. Les mots /n +2 et /n +3 sont alors égaux à /n + i/n = pn+ilO^nOl
et ^n+ilO^nOl^n+ilO d’où on tire ^n+3 = ^n+ilO^nOl^n+i qui est un palindrome.
Le cas n impair se montre de la même façon.
Un mot U est un préfixe (resp. suffixe) d’un mot w s’il existe un mot v tel que w = uv
(resp. w = vu). Un mot u est un facteur d’un mot w s’il existe deux mots v et v^ tels
que w = vuv\
Exercice 1.4. Soit tü = u;i • • • lün un mot de longueur n. Par un léger abus, on utilise la
notation Wi même si l’entier i n’est pas dans l’intervalle [l;n]. On note ainsi la lettre
Wif où est Tunique entier tel que 1 < i' < n et i^ = i mod n. On appelle occurrence
circulaire d’un mot г¿ = ui • •Up un entier k dans l’intervalle [l;n] tel que Wk^i-i =
pour chaque \ < i <p-
1.2 Opérations rationnelles 17
Montrer que pour tout alphabet A et tout entier k, il existe un mot Wk tel que tous
les mots de longueur k sur A ont exactement une occurrence circulaire dans Un tel
mot est appelé un mot de de Bruijn d’ordre fc. Les mots 1100 et 11101000 sont des mots
de de Bruijn d’ordre 2 et 3 sur l’alphabet {0,1}.
On pourra considérer l’automate dont l’ensemble des états est A^~^ et dont l’en
semble des transitions est {au ub \ a^b e A et u £ Montrer qu’il y a bijection
entre les cycles eulériens de cet automate et les mots de de Bruijn d’ordre k.
Soit A et B deux alphabets. Un morphisme de monoïdes /x de A* dans B* est une
application de A* dans B* qui est compatible avec la structure de monoïde. Ceci signifie
que l’image du mot vide est le mot vide (/x(e) = e) et que jjb{uv) = iJb{u)fi{v) pour tout mot
u e tv à e A * . L’image d’un mot w —W i'-W n ^ st donc égale à ¡i{w) = • • • ii{wn)-
Le morphisme est complètement déterminé par les images des lettres. Un morphisme
est dit effaçant s’il existe une lettre a tel que /i(a) = e.
Exemple 1.5. Soit A l’alphabet {a, 6} et soit /x : A* A* le morphisme de monoïdes
déterminé par /x(a) = ab et /i( 6) = a. Ce morphisme est non-effaçant. L’image du mot
aba par /i est le mot abaab = ab • a • ab.
Exercice 1.6. Un mot w sur un alphabet A est dit double si toute lettre a de A a 0
occurrence ou au moins 2 occurrences dans Wy c’est-à-dire \w\a ^ 1.
1. Montrer que tout mot sur un alphabet à n lettres et de longueur au moins égale à
2^ contient un facteur qui est double.
2. Montrer que la borne 2^ est optimale.
Solution.
1. On montre le résultat par récurrence sur n. Le résultat est évident si n = 1 car tout
mot de longueur au moins 2 sur un alphabet unaire est double. Soit w un mot sur
un alphabet à n lettres de longueur au moins égale à 2^. Il se factorise w = wiW2
où \wi\ = 2^” ^ et \w2 \ > Si w n’est pas double, il existe une lettre a qui
n’apparaît pas dans гí;l ou W2 . Si la lettre a n’apparaît pas, par exemple, dans Wiy
l’hypothèse de récurrence s’applique à wi qui est écrit sur l’alphabet A \ {a} à
n —1 lettres. Le mot wi et donc aussi w contient un facteur qui est double.
2. Soit A l’alphabet {x i, X2, X3, ...} . On définit la suite {zn)n>o de mots par zq = e e t
Zn = Zn-iXnZn-i pour tout n > 1. Chaque mot Zn est sur l’alphabet {æ i,. . . ,Xn}
et il est de longueur 2^^—1. En revanche, il ne contient aucun facteur double. Ces
mots sont appelés mots de Zimin.
D éfin itio n 1.7 (Union, Produit). - Vunion est l’opération qui à deux langages L
et V associe le langage L + L' = LU L'.
- Le produit est l’opération qui à deux langages L et V associe le langage L - L' =
LL' = [uv I г¿ G L et V G L'}.
18 Chapitre 1. Langages rationnels
Exemple 1.8. Soient les deux langages L = {u £ A* \ |г¿| pair } et L' = {u € >1* |
\u\ impair }. On a alors les égalités suivantes.
- L + L' = A* - L V = V = L'L
- L'Ü = L \ {e} - LL = L {L est un sous-mônoïde de A*)
L° = {e}, = LL\ L* = \ J V
i>0
1.3.1 Périodicités
H— h
u
de tü, le mot w se factorise w = {uv)^u où l’entier k vérifie A; > 1, l’entier p est égal
à \uv\ et le mot v est non vide (cf. figure 1. 1).
U U
Un mot w est primitif s’il ne s’écrit pas w = u^ avec k > 2 . Autrement dit, un mot
est primitif si sa longueur est l’unique période qui divise sa longueur (cf. figure 1.2).
Tout mot w s’écrit de manière unique w = où l’entier k vérifie fc > 1 et le mot u est
primitif. L’entier k est égal à 1 quand w est primitif.
Exemple 1. 11. Le mot w = 010101 a P{w) = { 2, 4 , 6 } pour ensemble de périodes. Il n’est
pas primitif car il s’écrit w = (01)^. Le mot w' = 01001010010 a P(iy') = {5,8,10,11}
pour ensemble de périodes. Il est primitif car aucune de ses périodes autre que sa longueur
ne divise sa longueur.
Le plus grand commun diviseur de deux entiers p et q est noté p A q .L e théorème de
Fine et Wilf est le résultat de base de la combinatoire des mots. Les preuves de beaucoup
d’autres résultats font appel à ce théorème.
T héorèm e 1.12 (Fine et Wilf 1965). Si p et q sont deux périodes d^un mot w de
longueur supérieure ou égale à p ^ -q —pA qj alors p A q est aussi une période de w.
U h
Preuve. Siw = €, alors wO et w l sont primitifs. Supposons par l’absurde que w est non
vide et que les mots wO et w l s ’écrivent wO = u^ et w l = pour des entier fe, / > 2
et des mots primitifs u et v. Les longueurs |г¿| et |t;| sont des périodes de w et comme
\w\ = k\u\ —1 = l\v\ —1 > 2max(|г¿|, |t;|) - 1 > |г¿| + |t;| - 1, l’entier d = |г¿| A |î;| est
aussi une période de w par le théorème de Fine et Wilf (théorème 1. 12). Comme d divise
|ti| et |v| et que les mots u et v sont primitifs, on a |t^| = d = \v\. Comme u et v sont
deux préfixes de tü, on doit avoir u = v et ceci contredit le fait que les mots îa et v se
terminent respectivement par les lettres 0 et 1. □
L em m e 1.16. Soit w décomposé comme en (1.1) avec k > 2 et soit q tel que \w \—p <
q < \w\. Soit q = {k —l)p -\-r où \u\ < r < |u| + p. Alors q est une période de w si et
seulement si r est une période de uvu.
Preuve. Pour tout Q < i < \w\ - q = p \u\ - r^ on o. Wi = {uvu)i et Wi^q = {uvu)i^r-
On a donc Wi = Wi-\-q si et seulement si {uvu)i = {uvu)i^r ce qui signifie exactement
que q G P{w) si et seulement si r G P {uvu). □
Preuve. Le cas fc = 1 est trivial et on suppose dorénavant que fc > 2. L’égalité P{u'v'u') =
P{uvu) implique \uvu\ = \u'v'u^\ et donc |ti;| = On remarque ensuite que p = |г¿'г;|
est une période de w'. On fixe un entier 1 < g < |iü| et on montre que q G P{w) si
et seulement si q e P{w^). On considère deux cas suivant que q vérifie q < \w\ - p ou
q > \w\ - p .
On suppose d’abord que q < \ w \ —p. Si q e P(ti;'), on a |tü'| = \w\ > p + q. D ’après le
théorème de Fine et Wilf (théorème 1.12), l’entier d = pA q est aussi une période de w'.
Comme d < p = |u'î;'|, d est aussi une période de w'u'w' et donc de uvu. Comme d divise
p, d est finalement une période de w. La minimalité de p implique d = p. Comme p
divise g, q est une période de w. Si à l’inverse q G P{w)j d’après le lemme 1.14, p divise
q et q est une période de w'.
On suppose maintenant que \w \—p < q < |ti;| et on pose r = q —{k —l)p qui vérifie
|г¿| < r < p + |u|. D ’après le lemme précédent, q G P{w) si et seulement si r G P{uvu) =
P{u'v’u') qui est, encore d’après le lemme précédent, équivalent à g G P(tü'). □
22 Chapitre 1. Langages rationnels
L em m e 1.18. Soit w = uvu comme en (1.1) avec fc = 1. Soit u' G 0 { 0 ,1}* tel que
P{u^) = P{u). Si b G {0,1} est tel que soit primitif alors on a P{w) = P{w')
où w' =
Preuve. Soit q une période de w qui vérifie donc q > p = Elle est donc aussi
période de w' puisque P{u) = P(tx'). Ceci montre l’inclusion P{w) Ç P{w'). Supposons
par l’absurde que cette inclusion soit stricte et soit q le plus petit entier de P {w ')\P {w ).
Comme г¿' commence par un 0, q vérifie q < |u'| ou p - 1 < g < |tü|.
Si q vérifie g < |г¿'|, il est, par définition, la plus petite période de w \ Le lemme 1.14
implique que q divise p et que le mot n’est pas primitif, ce qui est une contra
diction.
Si q est égal à p - 1, on a alors 6 = 0 et l’égalité г¿'l = 0г¿' est à nouveau impossible.
On a donc P < q < \w\ et on pose r = q —p. L’entier r est une période de г¿' et donc
de U . Ceci implique que q est une période de w qui est en contradiction avec la définition
de q. □
La preuve du théorème est effective. Il est même possible d’en déduire un algorithme
qui calcule en temps linéaire en la longueur de w le mot w' tel que P{w) = P{w').
Exercice 1.19. Soient six mots x, y, 2:, x \ y' et z' tels que xyz ^ x'y'z'. Montrer qu’il
existe un entier fco tel que pour tout entier fc > fco, on a xy^z 7^ x'y'^z\
Solution. Si y et 2/' ne sont pas de même longueur, on peut supposer par symétrie que
\y\ > \y'\. Il est alors clair que \xy^z\ > \x^y'^z^\ pour fc assez grand et le résultat est
acquis.
On suppose maintenant que y et y' sont de même longueur. Si xz et x‘z' ne sont pas
même longueur, l’égalité \xy^z\ —\x'y'^z'\ = \xz\ —\x'z'\ montre que xy^z et x'y'^z' ne
sont pas de même longueur pour tout fc > 0. Le résultat est alors évident.
On suppose alors que y et y' sont de même longueur et que xz et x'z' sont aussi
de même longueur. On peut supposer par symétrie que \x\ > \x^\. Si n’est pas un
préfixe de alors xy^z et x'y'^z' sont différents pour fc > 2. Si x'y'^ est un préfixe de
xy^, il existe un mot u tel que x = x^u et uy = yu. D ’après le résultat de l’exercice 1.34,
il existe un mot w et des entiers m et n tels que v = e ty = w'^. Puisque xyz ^ x’y 'z \
les mots w'^z et z' sont différents et on a le résultat.
1.3 Combinatoire des mots 23
On introduit ici les mots infinis parce qu’ils sont très utiles pour l’étude des motifs
inévitables.
Un mot infini X sur un alphabet A est une suite infinie x = xqX\X2 • • • de lettres de A.
L’ensemble des mots infinis sur A est noté A^, Un mot x = x^xix^ • • • est périodique s’il
existe un entier p appelé période tel que Xn = iCn+p pour tout n > 0. Il est ultimement
périodique s’il existe deux entiers l et p tels que Xn = pour tout n > /. Pour un mot
fini U de longueur p, le mot infini de période p et dont les p premières lettres coïncident
avec celles de u est noté u'^. Le lemme 3.83 (p. 189) fournit une caractérisation en terme
de facteurs des mots ultimement périodiques.
On décrit maintenant une façon très classique de construire des mots infinis. Un
morphisme fi de A* dans 5* est naturellement étendu aux mots infinis en posant p{x) =
Pl{xq)p (x i )pl(x 2 ) • • • pour tout mot infini x = xqX\X2 • • • sur A. Quelques précautions
sont nécessaires si le morphisme p est effaçant car p(x) n’est pas nécessairement infini.
Soit ¡JLun morphisme de A* dans A* tel que p(a) commence par la lettre a, c’est-à-
dire p(a) = au pour u e A*. On définit par récurrence la suite de mots finis (u;n)n>o par
wo = a et Wn+i = /-¿(tün)- On montre par récurrence que chaque mot Wn est préfixe du
mot tün+i- Si de plus lim+oo \'^n\ = +oo, la suite de mots Wn converge vers un mot infini
noté fJb^{a). Ce mot est appelé point fixe du morphisme fi car il vérifie p(/x‘*’(a)) = fJi^{a),
Exemple 1.20. Soit A l’alphabet { 0 , 1, 2 } et 'ij) \ A* A* le morphisme défini de la
manière suivante.
{ 0 1-^01
11-^221
2 i- ^2
On vérifie sans peine que le point fixe ^>‘*’(0) est le mot 0^0102 • • • où ao = 0 , ai = 1 si i
est un carré non nul et Ui = 2 sinon.
L’exemple précédent montre que le mot caractéristique des carrés (qui a 1 aux po
sitions qui sont des carrés et 0 ailleurs) est un mot de la forme /¿(^‘^(O)) pour des
morphismes fjb et 'il). Cette propriété reste encore vraie pour l’ensemble {P{n) | n > 0}
des valeurs prises par un polynôme P tel que P{n) est entier pour tout n > 0.
Exemple 1.21. Soit le morphisme fi défini de la manière suivante.
0 1-^01
h-^0
/ = 0100101001001010010100100101001001010010100100101001010•••
Le but de cette partie est d’étudier les mots qui évitent, c’est-à-dire qui ne contiennent
pas comme facteurs certains mots. On suppose fixé un ensemble F de mots et on s’in
téresse aux mots de A* \ A* F A*. Plus particulièrement, la question principale est de
24 Chapitre 1. Langages rationnels
déterminer si cet ensemble est fini ou non. Le lemme suivant reformule cette question
en terme de mots infinis.
Un carré est un mot de la forme uu pour un mot u. L’ensemble F est ici l’ensemble
des carrés non vides. Un mot est dit sans carré s’il ne contient pas de facteur, autre que
le mot vide, qui ne soit un carré. Nous allons voir que sur un alphabet à trois lettres, il
existe des mots sans carré arbitrairement longs.
H— H— H
a Va Va
Sur l’alphabet à deux lettres {0,1}, les seuls mots sans carré sont les mots 010 et
101 et leurs facteurs. Pour un alphabet à trois lettres, on commence par étudier les
chevauchements. Un chevauchement est un mot de la forme uvuvu où u est un mot non
vide et v un mot quelconque. Un mot est dit sans chevauchement si aucun de ses facteurs
n’est un chevauchement. La terminologie est justifiée par la remarque suivante. Un mot w
contient un chevauchement si et seulement si un de ses facteurs a deux occurrences qui
se chevauchent (cf. figure 1.4). Si u; a un chevauchement uvuvu^ le mot uvu a deux
occurrences qui se chevauchent dans w. Réciproquement, soit w un mot ayant deux
occurrences d’un facteur u qui se chevauchent. Soit a la première lettre de u et soit v le
reste de u jusqu’au début de l’occurrence suivante (cf. figure 1.4). Le mot avava est un
chevauchement de w. Ceci montre en particulier qu’un mot ayant un chevauchement a
toujours un chevauchement de la forme avava où a est une lettre.
On commence par montrer qu’il existe des mots arbitrairement longs sans chevau
chement sur l’alphabet A = { 0 , 1}. Soit le morphisme de Thue-Morse r de A* dans A*
défini de la manière suivante.
r Oh-^01
\ Ih^lO
Le mot infini r^{0) et appelé mot de Thue-Morse. On prouve sans difficulté que la n-
ième lettre du mot de Thue-Morse est 0 si le nombre de 1 dans l’écriture binaire de n
est pair et 1 sinon. Le début du mot de Thue-Morse est le suivant.
01101001100101101001011001101001 •• •
Soit X Pensemble (01 + 10)*. Par définition même du morphisme r, tout mot r ’^(O)
appartient à X pour n > 1. On commence par établir une propriété élémentaire de
l’ensemble X .
Preuve, Il est clair que tout mot x de X vérifie l’égalité |x|o = |x|i où \x \a dénote le
nombre d’occurrences de la lettre a dans x. Il s’ensuit que les mots 0x0 et 1x 1 ne vérifient
pas cette égalité et n’appartiennent pas k X . □
Preuve de la proposition. Il suffit de montrer que les mots r^(0) sont sans chevauche
ment. On raisonne par récurrence sur n. Pour n = 1, le mot r(0) = 01 ne contient
pas de chevauchement. Supposons par l’absurde que le mot w = r ’^‘‘"^(0) contienne un
chevauchement. Comme cela a été vu, on peut supposer que ce chevauchement est de
la forme avava où a G {0,1} et v G {0,1}*. Le mot w se factorise donc w = xavavay.
On peut supposer que x est de longueur paire. L’autre cas s’obtient en passant au mot
miroir puisque x e ty ont des longueurs de parités différentes. Si v est de longueur paire,
la seconde occurrence de v commence à une position paire. On en déduit que v et ava
sont des mots de X* et ceci est une contradiction d’après le lemme précédent. Si v
est de longueur impaire, il se factorise v = üv\ Comme le premier et le dernier a de
avava sont à des positions de même parité, la première lettre de y est aussi â et y se
factorise y = ây'. Le mot w se factorise finalement w = xààv'aâv'àày^. Comme x est de
longueur paire, le mot aàv'aàv'aâ est l’image d’un facteur auaua de r^( 0). Ceci est en
contradiction avec l’hypothèse de récurrence. □
a :
Chaque mot r^(0) ne contient pas de facteur 111 et commence par 0 . Il appartient
donc à l’ensemble (0 + 01 + 011)*. On en déduit que pour tout entier n, il existe un
mot Wn sur l’alphabet {0,1,2} tel que or{wn) = r^(0). Le mot Wn est en outre unique.
On note w!^ le mot obtenu en supprimant la dernière lettre de Wn- Chaque mot w!^ est
alors préfixe du mot La suite {wn)n>o converge vers un mot infini que l’on note
^“ ^(r^^iO)). Le début de ce mot est le suivant.
21020121012021020120210121020120-• •
Preuve. Il suffit de prouver que chacun des mots w!^ est sans carré. Supposons par
l’absurde que w!^ contienne un carré uu. On peut supposer que uu a une occurrence qui
n’est pas à la fin de Sinon, on remplace par Comme uua est un facteur de
^n, cr{u)G{u)a{a) est un facteur de r^(0). Les mots C
7(г¿) et a{a) commencent par 0. Le
mot r^( 0) a alors un chevauchement avava contrairement au résultat de la proposition
précédente. □
26 Chapitre 1. Langages rationnels
Le mot infini a ^(r‘^(0)) peut être directement obtenu en itérant un morphisme. Soit
le morphisme /i défini de la manière suivante.
La suite de mots (M^(2))n>o converge vers le mot a ^(r‘*'(0)). En effet, on vérifie l’égalité
r O(J = cr O/Z. En utilisant en outre l’égalité cr(2)0 = r^(0), on montre par récurrence
que a(/x^(2))r^( 0 ) =
Soit le morphisme i/ défini de la manière suivante.
0 h>010
1-^011
Soit u^{0) le point fixe de ce morphisme. Ce mot infini est sans cube. En observant les
façons dont les mots de longueur 2 se découpent sur { 010, 011}, on prouve facilement
que si u^{0) contenait un cube, il contiendrait un cube de longueur strictement plus
petite.
Les carrés et les chevauchements sont des cas particuliers des répétitions qui sont
des puissances non entières de mots. Soit u un mot de longueur p et soit r un nombre
rationnel de la forme r = q/p. On note г¿’', l’unique mot fini de longueur q qui est préfixe
du mot u^. Ainsi un carré est mot de la forme avec r = 2 alors qu’un chevauchement
est un mot de la forme avec r > 2 .
Plus généralement, un motif est un mot p sur un alphabet X de variables. Un mot
sur un alphabet A contient le motif p, s’il possède un facteur de la forme p(p) pour un
morphisme p : X* A* non effaçant. Dans le cas contraire, on dit qu’il évite le motif p.
Les carrés correspondent au motif xx et les chevauchements uvuvu correspondent au
motif xyxyx si V est non vide et au motif xxx si v est vide. Un motif p est dit k-
inévitable si l’ensemble des mots sur un alphabet à k lettres qui évitent p est fini. Il est
dit inévitable s’il est inévitable pour tout entier fc. La référence sur les motifs inévitables
est [Cas02]. Le lemme suivant permet de construire des motifs inévitables.
Preuve. Soit A un alphabet. L’ensemble des mots sur A qui évitent p est fini. Il existe un
entier l tel que tout mot de longueur l contient le motif p. Soit n = \A\^ le nombre de mots
sur A de longueur L Un mot w de longueur n/ + / + n se factorise w = uoaiUia2 • • • anUn
où a i , . . . , ttn sont des lettres et uq, ... ^Un sont des mots de longueur l. Par définition
de n, deux mots Ui et Uj pour i < j sont égaux. Le mot w se factorise donc voUiViUiV2 .
Comme Ui est de longueur Z, il se factorise Ui = vsp{p)v 4 où p est une morphisme
de {X \ {a;})* dans A*. En prolongeant p k X * par p{x) = v^vivz^ le mot w contient le
facteur p{pxp). □
Soit X l’alphabet infini { xq, x\^X2 y. .. }. On définit la suite {zn)n>o des mots de Zimin
par zq = e et Zn-\-\ = ZnXnZn pour tout n > 0 . Grâce au lemme précédent, chacun des
mots Zn est un motif inévitable. La suite des mots de Zimin converge vers un mot infini z.
1.3 Combinatoire des mots 27
Pour tout n > 0, la n-ième lettre de z est Xk si 2^ est la plus grande puissance de 2 qui
divise n. Le début du mot 2; est le suivant.
Z = X q X \ X q X2X{} X i X q X ^ X q X i X q X 2 X q X \ X q X^ X q X i X q X 2 X q X \ X q X^ • • •
1.3.4 Codes
Preuve, On montre facilement par récurrence sur la longueur que tout mot u; de M se
décompose u; = x i • • • Xn où G X . Si lü se décompose w = wiW2 oùwi^W 2 e M - e,
on applique l’hypothèse de récurrence à wi et W2 pour obtenir une décomposition de w.
Si w n’a pas décomposition w = wiW2 i il appartient à X .
Réciproquement, soit un ensemble Y tel que M = Y*. U est clair que tout mot x
de X appartient à Y. Sinon x s’écrit x = yi • • • 2/n avec n > 2 ce qui contredit le fait que
X est indécomposable dans M. □
Preuve. Soit M l’enveloppe libre de X et soit Y le code tel que M = Y*. Tout mot x
de X se décompose x = y i - - yn avec 2/1, . . . , 2/n ^ On définit la fonction f : X Y en
posant /(x ) = 2/1 pour tout mot x e X . On montre que la fonction / est surjective mais
pas injective. Supposons par l’absurde que / n’est pas surjective. Si y n’appartient pas
à f{X )j alors on a l’inclusion X Ç e:-l-(y—y)Y*. On pose alors Z = {Y —y)y* et on montre
facilement que X Ç Z* = e + {Y —y)Y* ce qui contredit le fait que Y* est l’enveloppe
libre de X . Si X n’est pas un code, il existe une relation z = xi> •-Xm = -x!^ avec
xi ^ x[. On vérifie que /( x i ) = f{x[) car le mot 2; a une unique factorisation. □
Le corollaire suivant décrit les codes à deux mots. L’équivalence entre la deuxième et
la troisième proposition peut aussi se montrer directement par récurrence sur la longueur
de uv.
C orollaire 1.33. Pour deux mots u et v, les propositions suivantes sont équivalentes.
- L ^ensemble {u, v} n^est pas un code.
- Il existe un mot w tel que u^v G w*.
- Les mots u et v vérifient uv = vu.
u' € Un tel que xu = u \ Par hypothèse de récurrence, il existe des mots x' G X ,
v' G et G tels que u'w' = w^x\ On a alors v'u' = v^xu = w^x\ On pose
V = v'x G et w = G X^ pour avoir vu = wx^
Dans cette partie, on s’intéresse aux bons quasi-ordres et aux théorèmes de Higman et
de Kruskal. Ces ordres sont souvent utilisés pour prouver la terminaison de systèmes de
réécriture ou de procédures. On rappelle aussi quelques ordres classiques sur l’ensemble
des mots.
Une relation binaire :< sur un ensemble E est un quasi-ordre (on dit aussi préordre)
si elle est réflexive et transitive. Contrairement à un ordre, un quasi-ordre n’est pas
nécessairement antisymétrique. On peut très bien avoir x :< y et y :< x pour deux
éléments distincts x et y. On écrit y h x pour x :<y. On écrit x ^ y si x y et 2/ 2^ x.
À un quasi-ordre sur E est associée une relation d’équivalence « définie par x « y
si X y et y :< X. Le quasi-ordre •< induit alors un ordre sur l’ensemble quotient £■/«.
Deux éléments x et y sont dits incomparables (pour :<) si x y et y x.
Exemple 1.36. Soit E = N l’ensemble des entiers naturels. La relation de divisibilité est
un ordre sur N. Soit la relation :< définie sur N par m- < n s’il existe un entier k tel que
m divise n^, c’est-à-dire si tout diviseur premier de m est aussi diviseur premier de n.
C’est un quasi-ordre qui n’est pas un ordre. On a en effet 6 12 et 12 6 car 6 et 12
ont les mêmes diviseurs premiers.
1.4 Un peu d’ordre 31
T héorèm e 1.37 (Higman). Les propriétés suivantes sont équivalentes pour un quasi-
ordre sur E.
i) tout idéal possède une base finie,
a) toute chaîne croissante 7o Ç Ji Ç /2 Ç • • • dHdéaux est constante à partir d^un
certain rang,
iii) toute suite infinie d^éléments de E contient une sous-suite infinie croissante,
iv) toute suite infinie d*éléments de E contient une sous-suite croissante de lon
gueur 2,
v) toute chaîne décroissante est finie et toute antichaîne est finie,
vi) tout quasi-ordre •<' qui prolonge •< est bien fondé.
Un quasi-ordre qui satisfait Vune de ces propriétés est appelé bon quasi-ordre.
Il y a une différence de terminologie entre le français et l’anglais. En français, un ordre
est implicitement total et le qualificatif partiel est ajouté s’il ne l’est pas. En anglais,
un ordre est supposé partiel et on utilise l’adjectif total ou linear pour préciser qu’il est
total. En anglais, un bon quasi-ordre est appelé well quasi-order souvent abrégé en wqo.
On a vu qu’une relation d’équivalence est un quasi-ordre. Elle est un bon quasi-ordre
si et seulement si elle a un nombre fini de classes. En effet, deux éléments non équivalents
sont incomparables. Pour qu’il n’existe pas d’antichaîne infinie, le nombre de classes doit
être fini. La réciproque est évidente.
Exemple 1.38. L’ordre naturel des entiers naturels est un bon quasi-ordre sur N. L’ordre
naturel des entiers relatifs n’est pas bien fondé sur Z et il n’est donc pas un bon quasi-
ordre. La divisibilité est un ordre bien fondé sur les entiers mais elle n’est pas un bon
quasi-ordre car les nombres premiers forment une antichaîne infinie.
que iv) implique iii). Soit (a:n)n>o une suite d’éléments et soit X = {xi \ Vj > i Xi
Xj et Xi ^ Xj}. Puisque les antichaînes sont finies, l’ensemble X est fini. Pour tout
Xi n’appartenant pas à X , il existe Xj avec j > i tel que Xi :< Xj ou Xi y xj. Si la
première relation est vraie pour au moins une paire on a trouvé une sous-suite
croissante de longueur 2. Dans le cas contraire, on peut facilement extraire une sous-suite
infinie décroissante, ce qui contredirait l’hypothèse. Nous montrons maintenant que iv)
implique iii). Soit (aîn)n>o une suite d’éléments et soit X = {xi \ Wj > i Xi Xj}.
D ’après l’hypothèse, l’ensemble X est fini. Pour tout Xi n’appartenant pas à X , il existe
Xj avec j > i tel que Xi Xj. Il est alors facile d’extraire une sous-suite infinie croissante.
On montre ensuite l’équivalence entre i)-ii) et iii)-iv)-v). Soit (xn)n>o une suite d’élé
ments. Soit Ik l’idéal engendré par la base Bk = {x o ,. . . , xa;}. Puisque la chaîne d’idéaux
I q Ç: h Q h Q ' " est constante à partir d’un certain rang, il existe deux indices k < l
tel que Xk ce qui montre iv). Réciproquement, soit lo Q h Q h Ç: ' " une chaîne
d’idéaux. Si cette chaîne n’est pas constante à partir d’un certain rang, on peut suppo
ser, quitte à supprimer quelques idéaux de la chaîne, que chaque inclusion In Ç /n+i est
stricte. Soit Xn un élément de Jn+i \ / n . La suite (iCn)n>o ne contient aucune sous-suite
croissante de longueur 2. Ceci contredit l’hypothèse que la chaîne d’idéaux n’est pas
constante à partir d’un certain rang.
On montre finalement l’équivalence entre vi) et les autres propriétés. Soit un
quasi-ordre qui prolonge ■<. Soit {xn)n>o une suite d’éléments. D ’après iv), il existe
deux indices k < l tels que Xk :< xi et donc Xk xi. Ceci montre que le quasi-
ordre n’a pas de chaîne infinie décroissante. Réciproquement, le quasi-ordre :< est
son propre prolongement. Ceci montre qu’il est bien fondé. Il reste à montrer qu’il n’a
pas d’antichaîne infinie. On montre que si A est une antichaîne de :< et si :^o est quasi-
ordre quelconque sur A, il est possible de prolonger :< en un quasi-ordre tel que
la restriction de à A est :<q. Soit la clôture transitive de la relation U :<o-
C’est bien sûr un quasi-ordre. Il reste à prouver que pour tous éléments a et 6 de A,
a b implique a :<o b puisque la réciproque est évidente. Si a ■<' 6, il existe une
suite finie XQ^...^Xn telle que xq = Xn = b et Xi ■< ou Xi :<o pour tout
0 < i < n — 1. S i n = l, le résultat est acquis puisque a et 6 sont incomparables
pour On suppose maintenant que n > 2. En utilisant la transitivité de :<0) on peut
supposer que les éléments x i , . .. ,X n-i n’appartiennent pas à A. On a alors Xi :< Xi+i
pour tout 0 < i < n — l e t donc a :< b contrairement à l’hypothèse que a et 6 sont
incomparables pour ■<. Ceci montre que coïncide avec :^o sur A. Si le quasi-ordre •<
a une antichaîne infinie A, on peut le prolonger en utilisant un quasi-ordre :<o sur A
qui contient une chaîne infinie décroissante. Le quasi-ordre obtenu contient encore une
chaîne infinie décroissante et n’est pas bien fondé. □
Soient :<i et :<2 deux quasi-ordres sur des ensembles Ei et Le produit cartésien
El X E 2 est naturellement muni d’un quasi-ordre défini par (xi,X 2) (î/i,2/2) si
xi :<! yI et X2 :<2 2/2- Le résultat suivant est parfois attribué à Nash-Williams.
L em m e 1.39. Si :<i et 1^2 dont des bons quasi-ordres sur E\ et E 2 , alors :< est un bon
quasi-ordre sur Ei x E 2 .
par (m i,... ,mib) < ( n i,... ,nfc) si < rii pour tout 1 < i < k. Le lemme précédent a
pour conséquence le résultat suivant appelé lemme de Dickson.
T héorèm e 1.42 (Higman 1952). Si r< est un bon quasi-ordre sur A, alors :<* est un
bon quasi-ordre sur A*.
Preuve. On dit qu’une suite {un)n>o est mauvaise s’il n’existe pas deux indices k < l
tels que Uk :<* ui et on utilise la caractérisation iv) du théorème 1.37. On raisonne par
l’absurde et on suppose qu’il existe au moins une mauvaise suite. On construit alors par
récurrence une mauvaise suite minimale (an)n>o- Soit uq un mot le plus court possible tel
que Uq soit le premier élément d’une mauvaise suite. Les mots a o ,. .. ,an étant choisis,
г¿n^-l est un mot le plus court tel que a o ,...,^ n + i sont les premiers éléments d’une
mauvaise suite. La suite ainsi construite est mauvaise. Puisque le mot vide vérifie e w
pour tout mot aucun des mots Un n’est vide. Chaque mot Un s’écrit donc Un = anVn
où an est une lettre et Vn un mot. Comme est un bon quasi-ordre, il existe une suite
extraite {ai^)n>o Qui est croissante. On considère alors la suite suivante
obtenue en prenant les io premiers éléments a o ,a i,. .. ,^^0-1 de la suite {un)n>o puis
tous les éléments de la suite {vi^)n>o- Cette nouvelle suite est encore mauvaise. On ne
peut pas avoir k < l < io et Uk :<* ui^ car (an)n>o est mauvaise. La relation Uk :<* Vi^
implique la relation Uk:<* Ui^ et la relation Vi^ v^ implique Ui^ ■<* Uii car a^^ a^.
On obtient alors une contradiction car Vîq est plus court que Ui^. □
34 Chapitre 1. Langages rationnels
Exemple 1.43. D ’après le théorème de Higman, l’ordre des sous-mots sur un alphabet
fini est un bon quasi-ordre. En effet, l’égalité sur A est bien sûr un bon quasi-ordre sur A.
Le quasi-ordre :<* défini sur les suites finies peut être étendu en un quasi-ordre
sur A^ en posant (an)n>o K ) n>o s’il existe une suite strictement croissante
d’indices (¿n)n>o telle que an :< a\^ pour tout n > 0. L’exemple suivant montre que le
théorème de Higman ne se généralise pas à ,
Exemple 1.44. Soit A = N x N l’ensemble des paires d’entiers et soit l’ordre ■< défini
sur A par (m, n) :< (m', n') si m = m' et n < n' ou m < m' et n < m'. On vérifie que
c’est un bon ordre partiel. Pour chaque entier i, soit Xi G A^ donné par
~ 0)) (ï) 1)) (^) 2), (iy 3 ) ,...
La suite (xi)i>o ne contient pas de sous-suite croissante de longueur 2 pour
Pour obtenir une généralisation du théorème de Higman aux suites infinies, des
meilleurs quasi-ordres (better quasi-order en anglais souvent abrégé en bqo) ont été
introduits par Nash-Williams. Pour une définition des meilleurs quasi-ordres et quelques
résultats, on pourra consulter [Alm94, p. 33].
Exemple 1.45. L’ordre des sous-mots est défini sur A^ par (an)n>o (^n)n>o s’il existe
une suite strictement croissante d’indices (¿n)n>o telle que an = pour tout n > 0. Si
l’alphabet A est fini, c’est un bon quasi-ordre sur A^, Ceci provient du fait que l’égalité
est un meilleur quasi-ordre sur A,
L’ordre des sous-mots n’est pas l’ordre le plus naturel sur les mots. Le plus familier
est sans aucun doute l’ordre lexicographique utilisé dans le dictionnaire. On suppose que
A est muni d’un ordre noté <. Deux mots w et vérifient w <iex soit si w est préfixe
de w' soit s’il existe deux lettres a et 6 vérifiant a < 6 et trois mots u, v et v' tels que
w = uav et w' = ubv'. Le mot u est en fait le plus long préfixe commun k w et qui
est noté w A w \ Dans le cas où w est préfixe de îo', on a tü A ly' = îo.
On pourra remarquer que la fonction d définie par d(io,iy') = |ty| + |îo'| —2\w A w'\
est une distance sur l’ensemble des mots.
L’ordre lexicographique est total mais il n’est pas bien fondé dès que l’alphabet a au
moins deux lettres. Sur l’alphabet A = {0,1}, la suite de mots Wn = 0^1 est infinie et
décroissante. Pour cette raison, on considère aussi l’ordre hiérarchique où les mots sont
d’abord classés par longueur puis par ordre lexicographique. Deux mots w et w' vérifient
w <hié si |ty| < |ty'| ou |iy| = \w'\ et w <iex Cet ordre a l’avantage d’être total et
bien fondé.
Le théorème de Higman admet une généralisation aux arbres finis due à Kruskal.
La construction de bons quasi-ordres sur les arbres est essentielle pour la terminaison
de systèmes de réécriture de termes, souvent utilisés pour donner une sémantique aux
langages de programmation fonctionnels.
On commence par rappeler la notion de domaine d’arbre. On note N* l’ensemble des
suites finies d’entiers. Un domaine d ’arbre est sous-ensemble D de N* qui vérifie les deux
conditions suivantes.
1.4 Un peu d’ordre 35
a b a b
/ \ / \
D = {e, 0,1,00,10,11,12,000,001,110,111,1110}
et soit l’arbre t défini sur ce domaine par t{w) = a si гу a un nombre pair de 1 et t{w) = b
sinon. Cet arbre t est représenté à la figure 1.6.
Soit t un arbre de domaine D et soit w un mot sur N. L’arbre w~^t est l’arbre de
domaine w~^D défini par {w~^t){u) = t{wu) pour tout и G w~^D. Cet arbre est appelé
le sous-arbre de t enraciné en w. Si w n’appartient pas au domaine de t, l’arbre w~^D
est vide.
Soit •< un quasi-ordre sur un ensemble A. On définit un quasi-ordre sur l’ensemble
de tous les arbres finis sur A de la façon suivante. Deux arbres t et t' de domaines
respectifs D et D' vérifient t t' s’il existe une fonction injective / de D dans D ' telle
que pour tous w et w' dans D, on ait les propriétés suivantes.
1. t{w) ^
2. f{w Л гу') = f{w ) Л /(îy') et
3. Si w <iex w' alors f{w ) <iex f{w')
où w A w' dénote le plus long préfixe commun de w et w'.
36 Chapitre 1. Langages rationnels
V = {i~Hn I i G N et ZG dom(in)}.
On prétend que est un bon quasi-ordre sur V. Sinon, il existe une mauvaise suite
(^n)n>o d’arbres de V. On peut extraire de cette suite une nouvelle suite (r^)n>o telle
que, pour tous fc < /, les arbres et r[ sont des sous-arbres de tm et tn avec m < n. On
peut donc supposer que la suite (rn)n>o satisfait cette propriété. Soit alors no le plus
petit indice tel que ro est un sous-arbre de tno. On considère la suite
et on constate que cette suite est encore mauvaise et qu’elle contredit la minimalité de la
suite (in)n>o construite. Cette contradiction prouve que est bien un bon quasi-ordre
sur V. Par le théorème de Higman, le quasi-ordre est un bon quasi-ordre sur T>*.
Pour chaque arbre tn, on note kn l’entier max{i | i G dom(tn)}. Les sous-arbres sous
la racine de tn sont donc les arbres 0 ^tn,l ^tn, • • •, Puisque est un bon
quasi-ordre sur P*, il existe deux indices m < n tels que
Puisqu’on a en outre tm{s) tn{e)^ on a finalement tm:^^ tn qui prouve que est un
bon quasi-ordre sur l’ensemble de tous les arbres finis. □
Les théorèmes de Higman et de Kruskal peuvent encore être généralisés aux graphes.
Le théorème de Robertson et Seymour établit que l’ordre par mineur des graphes est
un bon quasi-ordre. On rappelle qu’un mineur d’un graphe G est un graphe obtenu par
contraction d’arêtes d’un sous-graphe de G. Un sous-graphe est le graphe induit par
un sous-ensemble de sommets. La contraction d’une arête consiste à identifier les deux
sommets qu’elle relie. Beaucoup de classes de graphes comme celle des graphes planaires
ou celle des graphes triangulés sont caractérisées par des mineurs interdits. Elles sont
égales à l’ensemble des graphes qui ne contiennent pas certains graphes fixés comme
mineur. La preuve du résultat de Robertson et Seymour est excessivement difficile et
s’étend sur plusieurs centaines de pages.
L’exercice suivant introduit une extension du théorème de Ramsey (théorème 1.114)
aux arbres.
Exercice 1.48. Pour n > 0, on note Bn l’ensemble {0 ,1 }-^ des mots de longueur au
plus n sur l’alphabet {0,1}. Un arbre t est dit monochrome si pour tous Wy w' € dom(t),
on a t{w) = t{w'). Montrer que pour tout arbre t de domaine B 2n sur l’alphabet A =
{a, 6}, il existe un arbre t' monochrome de domaine Bn tel que t' t où l’ordre ■<
sur A est l’égalité.
Solution. On montre, par récurrence sur m + n, que pour tout arbre t de domaine Bm-\-n
sur l’alphabet {a, 6}, soit il existe un arbre ta de domaine Bm sur l’alphabet {a} tel que
ta ty soit il existe un arbre tb de domaine Bn sur l’alphabet {6} tel que tb t. Le
résultat est trivial si m + n < 1. Soit un arbre de domaine Bm+n sur {a, 6} avec m + n > 2.
Par symétrie, on peut supposer que l’étiquette de la racine e est a. On applique alors
l’hypothèse d’induction pour (m — 1) + n aux deux sous-arbres 0~^t et 1~H. S’il existe
un arbre tb de domaine Bn sur {6} tel que tb 0~H ou tb on a trouvé un
arbre tb tel que tb t. Sinon, il existe deux arbres et de domaine Bm -i tels que
t'a ou t'^ l~^t. Comme l’étiquette de la racine est a, on peut construire un
arbre ta de domaine Bm sur l’alphabet {a} tel que ta t.
Exercice 1.49. Soient E et F deux ensembles munis de quasi-ordres (notés tous les
deux :^). Une application f : E F est croissante si pour tous Xyp G Ey la relation
X d y implique la relation f{x) d f {y)-
1. Montrer que si / est croissante et si est un bon quasi-ordre sur E alors d est
un bon quasi-ordre sur f{E ).
Soit A un alphabet. Un quasi-ordre d sur A* est dit régulier si pour tous mots Uy u'y Vy v' e
A* y les deux relations u d u ' et v d v ' entraîne la relation uv d
2. Montrer qu’un quasi-ordre d est régulier si pour tous mots UyU'yVy la relation
U d u ' implique les deux relations uv d u'v et vu d vu'.
Dans les deux questions suivantes, on fixe un quasi-ordre régulier d sur A*. Soient K et
L deux langages.
3. Montrer que si les restrictions de à RT et L sont des bons quasi-ordres, alors sa
restriction à F L est aussi un bon quasi-ordre.
4. On suppose dans cette question que e d u ) pour tout mot w G A*. Montrer que
si la restriction de à F est un bon quasi-ordre, alors sa restriction à F * est
aussi un bon quasi-ordre. On pourra considérer l’ensemble [F]* formé des suites
{w iy ... yWn) finies de mots de F muni de l’ordre d*-
38 Chapitre 1. Langages rationnels
Solution.
1. D ’après le théorème 1.37, il suffit de montrer que toute suite infinie d’élément
de f{E ) contient une sous-suite croissante de longueur 2. Soient (2/n)n>o une d’élé
ments de f{E ). Il existe donc une suite d’éléments (xn)n>o telle que t/n = f{^n)
pour tout n > 0. Puisque ■< est un bon quasi-ordre sur Æ?, il existe i < j tels que
Xi :< Xj et donc yi •< yj car / est croissante.
2. Il suffit d’écrire uv :< u'v •< u'v’ en utilisant successivement les deux hypothèses.
3. On considère l’ensemble E = K x L muni du quasi-ordre produit x D ’après le
lemme 1.39, c’est un bon quasi-ordre sur E. On considère l’application (t^, v) i-> uv
de E dans F = KL. Comme le quasi-ordre est régulier, cette application est
croissante. D ’après la question 1, la restriction de à K L est un bon quasi-ordre.
4. On note [K]* l’ensemble des suites {w i,.. .^Wn) où chaque Wi est un mot de K .
Cet ensemble est à distinguer de K* qui est l’ensemble des mots wi---Wn pour
(tüi,. . . , Wn) dans [K]*. D ’après le théorème de Higman, l’ordre :<* induit sur [K]*
par l’ordre ■< sur K est un bon quasi-ordre. Puisque le quasi-ordre ■< est régulier,
l’application de [K]* dans K* qui associe à chaque suite (tüi,. . . , Wn) son produit
w i- - -Wn est croissante. D ’après la question 1, la restriction de à if* est un bon
quasi-ordre.
On commence par la définition de ces langages qui utilise les opérations rationnelles
et justifie la terminologie.
D éfin ition 1.50 (Langages rationnels). La classe Tl des langages rationnels (sur A) est
la plus petite famille de langages telle que :
i) 0 eTZ et {a} G Tl pour toute lettre a ;
ii) TZ est close pour les opérations rationnelles (l’union, le produit et l’étoile).
opérateurs arithmétiques sont remplacés dans notre cadre par les opérateurs rationnels
et les parenthèses sont encore utilisées pour lever les ambiguïtés.
D éfin ition 1.52 (Expressions rationnelles). La classe S des expressions rationnelles est
la plus petite famille d’expressions telles que :
- 0 G 5, et a G f pour toute lettre a ;
- pour toutes expressions E et E' de f , les expressions E E \ E • E' et E* sont
encore dans £.
Notons que + , • et * sont vus ici des symboles inertes et non des opérations.
Notation 1.53. Pour alléger les notations, Le point dénotant le produit et les accolades
autour des singletons sont omis dans l’écriture des expressions rationnelles. Ainsi l’ex
pression ({a} + {b} • {a})* est écrite (a + 6a)*. De plus, Si A = { a i ,. . . ,an}, on utilise
A comme une abréviation pour ai H-------h a^.
Exemple 1.54. Quelques exemples d’expressions rationnelles.
Exercice 1.55. Donner une description en français des langages donnés par les expressions
rationnelles suivantes : AA, (e-f-A)(e: + A ), (AA)*, A*aA*, A*a6A*, A* aA* bA* et (a6)*.
Solution.
- AA est le langage des mots de longueur 2.
- (e + A)(£: + A) est le langage des mots de longueur au plus 2.
- (AA)* est le langage des mots de longueur paire.
- A* aA* est le langage des mots ayant au moins une occurrence de a.
- A*a6A* est le langage des mots ayant au moins une occurrence du facteur ab.
- A* aA* bA* est le langage des mots ayant au moins une occurrence de a puis ensuite
une occurrence d’un 6.
- (a6)* est le langage des mots commençant par a, finissant par 6 et n’ayant pas
deux a ou deux 6 consécutifs.
1.5.2 Automates
Une autre définition des langages rationnels peut être donnée en utilisant les au
tomates. Il s ’agit d’un type de machines très simples qui sont des cas particuliers des
machines de Turing.
Un automate est en fait un graphe enrichi d’étiquettes sur les arêtes et d’états initiaux
et finaux. Une transition (p, a, q) est notée p g à la manière d’une arête d’un graphe.
Exemple 1.57. Soit A = ( { l,2 } ,{ a ,6 } ,{ ( !,6 , l) ,(l,a ,2 ),( 2 ,6 ,2 ),( 2 ,a , 1 )} ,{ 1 } ,{ !} ) un
automate représenté à la figure 1.7. Cet automate a les deux états 1 et 2. L’état 1 est à
la fois initial (marqué d’une petite flèche entrante) et final (marqué d’une petite flèche
sortante). Il possède quatre transitions représentées comme des arêtes d’un graphe.
D éfin itio n 1.58 (Chemin). Un chemin dans un automate (Q^A^E^I^F) est une suite
finie de transitions consécutives
ai 02
Qo —>qi —> qn
noté aussi de manière concise qo qn- L’état qo est Vétat de départ et qn est Vétat
d^arrivée du chemin. Le mot ai • • • an est Vétiquette du chemin.
D éfin ition 1.60 (Acceptation). Un chemin est acceptant ou réussi lorsque l’état de
départ est initial et l’état d’arrivée est final. Un mot est accepté par l’automate A s’il est
l’étiquette d’un chemin acceptant de A- Le langage des mots acceptés par l’automate A
est noté L{A).
Exemple 1.61. L’ensemble des mots acceptés par l’automate de la figure 1.7 est le langage
{ab*a + b)* des mots ayant un nombre pair d’occurrences de a.
Le théorème de Kleene établit l’équivalence entre les expressions rationnelles et les
automates finis dans le sens où ces deux notions définissent les même langages. Ce
résultat est remarquable car il relie deux notions de natures différentes, combinatoire
pour les expressions rationnelles et opérationnelle pour les automates. Le théorème de
Kleene admet de nombreuses extensions à des structures telles les arbres et les mot
infinis ou même transfinis.
La preuve du théorème utilise les notions d’automate émondé et normalisé, que nous
définissons successivement.
D éfin ition 1.63 (Automate émondé). Un automate est émondé si par tout état passe
au moins un chemin acceptant.
1.5 Langages rationnels 41
Il est clair que les états par lesquels ne passe aucun chemin acceptant peuvent être
supprimés sans changer l’ensemble des mots acceptés par l’automate. Un état q apparaît
sur un chemin acceptant s’il est accessible d’un état initial et si un état final est accessible
à partir de q (on dit que q est co-accessible). L’ensemble des états accessibles et co
accessibles peut être calculé par deux parcours en largeur de l’automate considéré comme
un graphe. On suppose souvent dans la suite que les automates sont émondés.
D éfin ition 1.64 (Automate normalisé). Un automate est normalisé s’il possède un
unique état initial qui n’est l’état d’arrivée d’aucune transition et un unique état final
qui n’est l’état de départ d’aucune transition.
Si l’état initial et l’état final d’un automate normalisé coïncident, aucune transition
n’est adjacente à cet état et l’automate accepte uniquement le mot vide. Sinon, l’auto
mate n’accepte pas le mot vide. La proposition suivante n’est pas nécessaire à la preuve
du théorème mais la construction utilisée dans la preuve est intéressante en soi.
E' = E \ j { i ^ q \3 p e I P ^ q £ E}
Kj{p^ f \ 3 q £ F p ^ q e E )
\j{ i^ f \ 3 p e l 3qeF p ^ q e E ) .
Preuve. Pour un langage L, on note respectivement e{L) et a{L) les langages L fl {e}
et jL \ {e}. Les formules suivantes montrent qu’on peut calculer récursivement ol{L) et
e{L) à partir d’une expression rationnelle de L.
On montre par induction sur (la longueur de) l’expression rationnelle que si L est
rationnel alors a{L) est accepté par un automate normalisé. Pour obtenir un automate
acceptant L, il suffit d’ajouter éventuellement un nouvel état à la fois initial et final pour
accepter le mot vide.
42 Chapitre 1. Langages rationnels
- 0 - ^ — 0 -
On considère d’abord les cas de base. Le langage L = a est accepté par l’automate
de la figure 1.9
Soient Li et ¿2 deux langages rationnels et soient A i et A 2 deux automates nor
malisés acceptant respectivement les langages a{Li) et û;(L2)- Ces deux automates sont
schématisés à la figure 1.10
Al Â2
automates semi-normalisés où seules les conditions sur l’état initial sont satisfaites.
Les constructions pour l’automate du produit et de l’étoile sont un peu plus délicates.
Par contre, ces automates peuvent accepter le mot vide et les constructions limitent le
nombre d’états engendrés. Cette méthode est pratique pour des constructions à la main.
La méthode de Thompson utilise des automates avec ^-transitions qu’il faut ensuite
supprimer. D ’autres méthodes sont basées sur les quotients à gauche calculés directement
sur l’expression. On peut obtenir un automate déterministe par la méthode Brzozowski
ou un automate non déterministe par celle d’Antimirov (cf. [Sak03]).
Pour achever la preuve du théorème de Kleene, nous donnons plusieurs algorithmes
pour calculer une expression rationnelle décrivant le langage accepté par un automate.
Cbi a2 an.
' CLn \ Q g' e t p i , . . . , p n - i e
L’ensemble des mots acceptés par A est égal à l’union finie Il suSit
donc de montrer que chacun des ces langages est rationnel. On procède par récurrence
sur fc. Pour fc = 0, il ne peut pas y avoir d’état intermédiaire dans le chemin. Celui-ci est
donc de longueur 0 ou 1. Pour fc > 0, on distingue les chemins passant par l’état fc + 1
des chemins n’y passant pas. Si le chemin de g à g' passe par l’état fc+ 1, il est décomposé
en un premier chemin de g à fc -h 1, en un certain nombre de cycles autour de fc H-1, puis
44 Chapitre 1. Langages rationnels
= {d \ q q' ^ E }U {e \ si q = q^}
r(^+l) _ r (fc) I r(fc) \*r(^)
g' “ %,g' ^q,k+i\^k-\-i,k+i) ^fc+i,g"
Comme les formules ci-dessus ne font intervenir que les opérations rationnelles, on montre
facilement par récurrence sur k que tous les langages et donc aussi L{A) sont
rationnels.
M éth o d e par élim in ation Cet algorithme manipule des automates dont les tran
sitions sont étiquetées par des expressions rationnelles. La première étape consiste à
normaliser l’automate en utilisant la proposition 1.65. La seconde étape remplace pour
chaque paire d’états (p, g), toutes les transitions p q par une seule transition étiquetée
par l’expression rationnelle Yl{p^a,q)eE ^ chaque étape suivante, un des états autre que
l’état initial et l’état final est supprimé. L’algorithme s’arrête lorsqu’il ne reste plus que
l’état initial et l’état final ainsi qu’une seule transition entre les deux. Le résultat est
alors l’expression rationnelle qui étiquette cette transition.
À chaque suppression d’un état s on ajoute, pour chaque paire (p, q) d’états restants,
à l’expression portée par la transition de p à g l’expression xy*z où y et z sont les
expressions rationnelles portées respectivement par les transitions de p à s, de s à s et
de s k q.
b + ab*a
X + xx*x
-d > < î) -
avec X = b + ab*a
Supposons pour simplifier que l’ensemble des états est { 1 ,... ,n }. La résolution du sys
tème est menée de la façon suivante. La première équation est résolue en X\ en considé
rant les variables X 2, . . . , Xn comme des constantes. L’expression trouvée est substituée
à X i dans les autres équations pour faire disparaître la variable X\ . La seconde équation
46 Chapitre 1. Langages rationnels
est alors résolue en X 2 . Le résultat est substituée à X 2 dans les équations restantes et
dans l’expression de X \ trouvée à la première étape. On procède ainsi jusqu’à la dernière
équation qui donne une expression de Xn- Cette expression est finalement substituée
dans les expressions de X i , . . . , X n -i trouvées aux étapes précédentes.
Exemple 1.68. Pour l’automate de la figure 1.7, on obtient le système
Exemple 1.71. L’automate de la figure 1.7 (p. 40) est déterministe. Par contre, l’automate
de la figure 1.17 n’est pas déterministe. Il accepte le langage A*abA* des mots qui
contiennent au moins un facteur ab.
P ro p o sitio n 1.72. Tout automate est équivalent à (accepte le même langage que) un
automate déterministe.
Ainsi, À est déterministe et accepte le même langage que A comme le montre le lemme
suivant. □
Exemple 1.75. Soient A = {a, 6} et n un entier. Le langage A*aA^ est accepté par un
automate non déterministe ayant n -h 2 états. Par contre tout automate déterministe
acceptant ce langage a au moins 2“^ états.
En — \i —
^i + l| —1 }U {71 — y ij*
D éfin itio n 1.77 (Automate complet). Un automate est complet si pour tout paire (p, a)
de Q X A, il existe un état q tel que p q soit une transition.
Notation 1.78. Dans un automate déterministe complet A = (Q^A^E^I^F)^ on notera
pour tout état q E Q et toute lettre a G A, l’état q • a l’unique état p tel que q p soit
une transition de A.
P ro p o sitio n 1.79. Tout automate (déterministe) est équivalent à un automate (déter
ministe) complet.
Preuve. On introduit un nouvel état p ^ Q appelé puits et on pose Q' = Q U {p}. On
note jR = {(g,a) | g G Q' et Vg' q q^ ^ E } l’ensemble des transitions manquantes.
L’automate complété est l’automate A' défini par A' = {Q\A^E\I^F)^ avec E' =
E \J{q ^ p \ (g,a) E R}. Notons que si A est déterministe, l’automate complété A' Test
également. □
Dans cette partie, on montre que tout langage rationnel est accepté par un automate
minimal qui est le quotient de tout automate déterministe acceptant ce langage. On
étudie ensuite quelques algorithmes permettant de calculer cet automate minimal. Une
très bonne référence pour cette partie est [BBC93].
1.7.1 Quotients
De manière symétrique, on peut aussi définir les quotients à droite d’un langage.
L’intérêt des quotients à gauche réside dans leurs liens avec les automates déterministes.
Exemple 1.82. Soit L = {ab*a -f 6)* le langage des mots ayant un nombre pair d’occur
rences de a. On a les égalités a~^L = b*aL et b~^L = L où b*aL est le langage des mots
ayant un nombre impair d’occurrences de a.
Les formules suivantes permettent de calculer explicitement un quotient a “ ^L puis
un quotient w~^L en procédant par récurrence sur la longueur de w. On parvient ainsi
à calculer tous les quotients à gauche d’un langage.
P ro p o sitio n 1.83. Pour toute lettre a, tous mots u, v et w et tous langages K et L,
on a les relations suivantes qui permettent de calculer les quotients à gauche.
- + L )= + w-^L
- a - \ K L ) = {a-^K )L-\-e{K )a-^L
w -1 (KL) = {w ^K)L -h J2uv=w en notant e{L) = eHL.
- a - 1 (L*) = (a-iL )L *
- w-^L* = E uv=v,<^-"L *){ v -^L)L*
- {uv) ^L = v ^{u ^L).
Le lemme suivant établit le lien fondamental entre les quotients à gauche d’un langage
et les automates déterministes acceptant ce même langage. Des quotients à droite au
raient pu être définis de manière symétrique. Nous avons privilégié les quotients à gauche
parce qu’ils sont justement adaptés aux automates déterministes. Les quotients à droite
auraient été utiles pour les automates co-déterministes, c’est-à-dire qui deviennent dé
terministes lorsque les transitions sont renversées en échangeant état de départ et état
d’arrivée.
L em m e 1.84. Soit A = (Q^A,Ey{i}^F) un automate déterministe acceptant un lan
gage L. Pour tout chemin i q, on a u~~^L = {v \ q ^ f avec f e F}.
La preuve du lemme est triviale. Le lemme a pour corollaire immédiat que le nombre
de quotients à gauche d’un langage est inférieur au nombre d’états de tout automate
déterministe et complet acceptant ce langage. En particulier, le nombre de quotients
à gauche d’un langage rationnel est fini. Cette propriété est en fait caractéristique des
langages rationnels.
P ro p o sitio n 1.85. Un langage L est rationnel si et seulement si il a un nombre fini de
quotients à gauche.
Pour la preuve de la proposition, on introduit la définition suivante.
D éfin itio n 1.86. Soit L un langage rationnel. Vautomate minimal de L est automate
A l = (Q, A, E, / , F) où
Q = {u~^L I U G A*}, / = {L}, F = {u~^L | u G L}
E = {u~^L A- {ua)~^L I U G A* et a G A}.
Exemple 1.87. Les différents quotients à gauche du langage L = (a6)* sont les langages
a~^L = 6L, b~^L = 0 , a~^{bL) = 0 et b~^{bL) = L. En appliquant la construction
donnée dans la preuve de la proposition précédente, on obtient l’automate minimal de L
de la figure 1.22.
1.7 Automate minimal 51
Le nombre d’états de l’automate minimal est bien sûr minimal puisqu’il est égal
au nombre de quotients à gauche. La proposition découle alors directement du lemme
suivant.
Preuve. On montre facilement par récurrence sur la longueur que pour tout mot
on a un chemin L ^ u~^L dans l’automate A l - La définition des états finaux donne
immédiatement le résultat. □
Exercice 1.89. On rappelle qu’un quasi-ordre ■< sur A* est dit régulier si pour tous mots
G A*, les deux relations u :<u^ et v :<v' entraîne la relation uv :< n'v' (cf.
exercice 1.49). Le but de cette exercice est de montrer qu’un langage est rationnel si et
seulement si il est un idéal d’un bon quasi-ordre régulier.
1. Donner une condition nécessaire et suffisante pour qu’une relation d’équivalence
soit un bon quasi-ordre.
2. Donner une condition nécessaire et suffisante pour qu’une relation d’équivalence
soit un bon quasi-ordre régulier.
3. En déduire que tout langage rationnel est bien un idéal d’un bon quasi-ordre
régulier.
On suppose maintenant que le langage L est un idéal d’un bon quasi-ordre régulier :<.
4. Montrer que pour tout u e A*^ u~~^L est encore un idéal d’ordre.
5. Montrer que si u:< u \ alors u~^L Ç u'~^L.
6. En déduire que L a un nombre fini de quotients à gauche et conclure.
Solution.
1. Une relation d’équivalence est toujours un quasi-ordre car elle est transitive. Deux
éléments non équivalents sont incomparables. Pour qu’il n’existe pas d’antichaîne,
il est nécessaire que la relation d’équivalence soit d’indice finie (nombre fini de
classes). Cette condition est aussi suffisante.
2. La relation d’équivalence est un quasi-ordre régulier si et seulement si elle est
compatible avec la concaténation, c’est-à-dire si c’est une congruence. Une relation
d’équivalence est un bon quasi-ordre régulier si et seulement si c’est une congruence
d’indice fini.
3. Il suffit de remarquer que toute union de classes d’équivalence d’une congruence
d’indice fini est un idéal d’ordre pour cette congruence vue comme un quasi-ordre.
52 Chapitre 1. Langages rationnels
4. Soient г¿, v et v ' tels que v G u ~ ^ L et que v -< v '. Le mot u v appartient donc
à L . Comme le quasi-ordre :< est régulier, la relation v :< entraîne la relation
uv u v '. Comme L est un idéal d’ordre, u v ' appartient aussi k L e t v ' appartient
finalement à u ~ ^ L . On a donc montré que u ~ ^ L est un idéal d’ordre.
5. Soient Uy u ' et v tels que u u ' e t que v G u ~ ^ L . Le mot u v appartient donc
à L . Comme le quasi-ordre est régulier, la relation u :< u ' entraîne la relation
uv u 'v . Le mot v appartient donc à u '~ ^ L . On a donc montré l’inclusion u ~ ^ L Ç
u'^^L.
6. Supposons par l’absurde que L ne soit pas rationnel. Il a donc un nombre infini de
quotients à gauche. Il existe donc une suite {un)n>e de mots tels que les quotients
soient distincts. Il est possible d’extraire une suite croissante {u'^)n>o de la
suite (г¿n)n>o• D ’après les deux questions précédentes, les ensembles u '~ ^ L forment
une suite croissante d’idéaux. Cette suite doit donc être stationnaire à partir d’un
certain rang. Ceci contredit le fait qu’ils soient distincts.
On montre dans cette partie que l’automate minimal a en outre la propriété d’être
le quotient de tout autre automate déterministe acceptant le même langage. Il peut
toujours être obtenu en fusionnant des états.
Pour toute paire (p, a) G Q x A d’un automate déterministe, on note, s’il existe, p • a
l’unique état q tel que p ^ q soit une transition. Si de plus l’automate est complet,
P • a est toujours défini. Cette notation peut être étendue à tous les mots en définissant
par récurrence p • (г¿a) = (p • г¿) • a. L’état p - w est alors l’unique état q tel que p ^ q
soit un chemin. On a alors défini une action à droite du monoïde A* sur Q puisque
p • uv = (jp ' u) ' V pour tous mots u et v.
La première propriété signifie que chaque classe d’une congruence ne contient que
des états finaux ou que des états qui ne sont pas finaux. La seconde propriété est qu’une
congruence est compatible avec les transitions de l’automate. Rien dans cette définition
ne concerne l’état initial.
Si ^ est une congruence sur un automate A = (Q, A, £?, {i}, F ), l’automate quotient
A /^ est l’automate {[z]}, {[/] | / G F }) où l’ensemble E' des transitions
est donné par
E' = {[ç] —^ [ç * I ç G Q et a G ^4}.
Cet automate est encore déterministe car la classe [q •a] ne dépend que de la classe de q.
Le lemme suivant montre qu’un automate quotient accepte le même langage.
est un chemin étiqueté par w dans A/'^. Si de plus qo est initial et Qn est final dans Ay
alors [go] est initial et [qn] est final dans A /^ . Ceci prouve l’inclusion L{A) Ç L{A/'^).
Soit maintenant un chemin
d2. an.
[90] ^ [91] [Çn]
La relation ainsi définie est effectivement une congruence d’automates. Elle sature
l’ensemble des états finaux. L’équivalence g G F g' G F obtenue en prenant w = e
dans la définition montre que deux états équivalents sont tous les deux finaux ou tous
les deux non finaux. De plus, l’équivalence q • aw £ F q' • aw £ F implique que si
g et g' sont équivalents, alors g • a et g' • a sont encore équivalents.
La congruence de Nerode est la congruence la plus grossière qui sépare les états
finaux des états non finaux. En effet, si g • tt; est final alors que g' • iî; ne l’est pas, les
états g et g' ne peuvent pas être équivalent car sinon les états g • iî; et g' •tt; le sont aussi.
La proposition suivante donne comment obtenir l’automate minimal à partir de n’im
porte quel automate déterministe.
Exercice 1.94. Montrer que l’automate déterministe obtenu par construction par sous-
ensembles sur l’automate de l’exemple 1.76 possède 2^ états et que cet automate est
minimal.
54 Chapitre 1. Langages rationnels
Méthode itérative
q (ï {q e F ^ q' e F)
q q' q g' et Va G A q a ^ i ç f a
P ro p o sitio n 1.95. Il existe k < \Q\ tel que De plus, pour tout
n > 0 et '^k est la congruence de Nerode.
Preuve. Les deux premières affirmations sont évidentes et on conclut par récurrence. Si
q ^k q' alors (comme ^ • a /fc *u, et donc Lq ^ Lqi d’où q / / / q^- Cela
montre que ^k est moins fine que la congruence de Nerode.
Mais, si q*^kq\ alors pour tout г¿ = ai • • • Un on a :
q ^ai.- - - ^ q n £ F J 0>n.
Algorithme de Hopcroft
Bi = {q G B \ q • a e C } et B 2 = {q G B \ q • a ^ C}
Par extension, une partition de Q est dite stable pour (C, a) si chacune de ses parts est
stable pour (C,a).
La notion de stabilité qui vient d’être introduite permet de reformuler le fait d’être
une congruence pour une partition. Une partition { P i , . . . , de Q compatible avec F
est une congruence si et seulement si elle est stable pour chacune des paire (Pi, a) où Pi
parcourt les parts et a les lettres de l’alphabet.
La preuve du lemme suivant est immédiate. Par contre, le résultat de celui-ci est le
principe même sur lequel est basé l’algorithme de Hopcroft.
Nous allons maintenant analyser cet algorithme. Nous allons en particulier prouver
qu’il termine toujours et qu’il calcule bien la congruence de Nerode. L’implémentation
de cet algorithme est particulièrement délicate. Pour obtenir la complexité annoncée de
n logn , il faut utiliser les structures de données appropriées. Une description complète
de l’implémentation peut être trouvée en [BBC93].
Nous commençons par prouver la terminaison. À chaque itération de la boucle prin
cipale w h ile, soit la partition V est raffinée parce qu’au moins une part B est coupée,
soit le cardinal de 5 a diminué d’une unité. Comme ces deux événements ne peuvent
survenir qu’un nombre fini de fois, l’algorithme s’arrête nécessairement car S devient
vide.
Nous montrons maintenant que la partition V est égale à la congruence de Nerode
lorsque l’algorithme se termine. Il est facile de voir que la congruence de Nerode raffine
toujours la partition P . Chaque coupure réalisée par l’algorithme est en effet nécessaire.
Il reste donc à montrer qu’aucune coupure n’a été oubliée, c’est-à-dire que la partition V
est stable pour chacune des paires (C, a) où C parcourt toutes les parts de V. Dans ce
but, nous allons montrer l’invariant suivant.
Pour obtenir la complexité 0(|A ||(5| log |(5|), il sufiit de montrer que le cardinal de chaque
ensemble {(C, a) | (C, a) traitée et g E Q} est borné par log2 \Q\ pour chaque lettre a et
chaque état q.
Soit un état q et une lettre a. Supposons qu’à une itération donnée de la boucle
principale, une paire (C, a) soit traitée et que la part C contienne q. Soit (C", a) la paire
suivante traitée telle que C' contienne q. Comme les parties C et C" sont des parts de
la partition V et que cette dernière ne peut être que raffinée, la partie C" est contenue
dans C et C' provient d’une coupure de C. Comme l’algorithme ajoute à <S la paire
dont la première composante est de cardinal minimal, on a l’inégalité \C'\ < \C\/2. Ceci
prouve que le nombre de paires (C,a) traitées où C contienne q est au plus log2 |Q| et
termine l’analyse de la complexité de l’algorithme.
Les méthodes pour minimiser s’appliquent lorsque l’automate de départ est déter
ministe. Si ce n’est pas le cas, il peut toujours être d’abord déterminisé grâce à la pro
position 1.72 puis ensuite minimisé. L’exercice suivant donne une autre méthode pour
calculer l’automate minimal en utilisant uniquement des déterminisations.
Exercice 1.99. Pour un automate A = (Q,A, J5,7,T), on note d{A) la partie accessible
de l’automate A construit dans la preuve de la proposition 1.72. On note aussi t{A)
l’automate (Q, ^4, F, I) où l’ensemble des transitions est donné par
E^ = { p ^ q \ q ^ p e E } .
La classe des langages rationnels est très robuste. Elle est close pour d’innombrables
opérations. Ceci est une propriété importante de ces langages et justifie l’intérêt qui leur
est porté. Cette partie donne les principales propriétés de clôture mais la liste est loin
d’être exhaustive.
58 Chapitre 1. Langages rationnels
Il a déjà été vu que le complémentaire d’un langage rationnel est encore rationnel
(cf. corollaire 1.80). Comme la classe des langages rationnels est par définition close par
union, elle est aussi close par intersection.
La classe des langages rationnels est close par morphisme et par morphisme inverse.
Preuve. Il est possible d’obtenir une expression rationnelle pour /x(L) à partir d’une
expression rationnelle pour L en remplaçant chaque occurrence d’une lettre a par fjb{a).
Soit A = (Q, A, E, 7, F) un automate acceptant le langage K . On construit un auto
mate A' pour ayant même ensemble d’états. Il y a une transition p q dans A'
s ’il y un chemin p q dans A. En gardant les mêmes états initiaux et finaux, l’auto
mate A accepte le langage On peut remarquer que si A est déterministe alors
A ’ est aussi déterministe. □
1. Montrer que Si les langages L et V sont rationnels, alors le langage L III L' est
encore rationnel.
2. Montrer en utilisant le théorème de Higman qu’un langage de la forme L III -A*
est toujours rationnel même si L n’est pas rationnel.
Solution. Soient A = (Q, A, E, 7, F) et A' = (Q', A, E ', 7', F') deux automates acceptant
respectivement les langages K et L. On construit l’automate dont l’ensemble d’états est
Q X Q', les ensembles d’états initiaux et finaux sont 7 x 7' et F x F' et dont l’ensemble
des transitions est
\Ma = \Mb et \u\b < \u\a < \u\b + 7ii + • • • + Tik poui tout préfixe U de w. On
peut remarquer qu’une suite n i , . . . ,nfc d’entiers vérifie les conditions ci-dessus si
et seulement si pour tout entier s tel que 1 < s < n i H-------h n^, il existe une suite
d’indices ii < • • • < ir telle que s = rii^ H-------h ni^.
Solution. Soit un mot w appartenant à Il existe des mots wiy...^Wn de (ab)* tels
que w e wi Uî • • • Til Wn- Tout préfixe u de w appartient à un langage ni III • • • III nn
où chaque Ui est un préfixe de Wi. Comme chaque ui vérifie \ui\b < \ui\a < \ui\b + 1, le
mot U vérifie bien sûr les inégalités requises. Inversement le langage des mots vérifiant
les inégalités est accepté par l’automate déterministe ci-dessous.
a ^ a ^ a LL Uj
b ~ Ъ ~ b b b
Soit w un mot accepté par cet automate. Pour 1 < г < n, soit Wi le mot formés
des lettres w qui étiquettent les transitions entre les états г — 1 à г dans le chemin
acceptant w. Il est clair que chaque mot Wi appartient à {ab)* et que le mot w appartient
à гУ1 Ш • • • Ш Wn-
Exercice 1.103. Soit L un langage. Pour tout entier n tel que L contienne au moins un
mot de longueur n, Wn est défini comme le mot le plus petit pour l’ordre lexicographique
de ЬГ\А^. Montrer que si L est rationnel, le langage L = {wn \ ЬПА^ ^ 0 } est encore
rationnel.
Solution. Soit A = (Q,i4, £■, { i} ,F ) un automate déterministe acceptant le langage L.
On considère l’automate Л dont l’ensemble d’états est Q = Q x 2^, l’état initial est
г = (г, 0 ) et l’ensemble d’états finaux est F = {(g, P ) \ PC\ F ф 0 } . L’ensemble Ê des
transitions est donné par
l/l>n 1 / w G A* V ^ e
feL f uvw
1 / = ■« et uv*w C L
Preuve. Soit n le nombre d’états d’un automate acceptant le langage L, par exemple
l’automate minimal de L. Si |/ | > n, un chemin acceptant pour / doit repasser au moins
deux fois par un même état q. Si u^v e tw sont les étiquettes d’un chemin de l’état initial
à g, du circuit de g à g et du chemin de g à un état final, on obtient une factorisation
convenable de / . □
Exercice 1.109. Montrer que l’ensemble des écritures en base 2 des nombres premiers
n’est pas un langage rationnel.
Solution. Soit A l’alphabet {0,1}. Pour un mot u; = 6n *• * sur A, on note [w] l’entier
Pour un entier n > 1, on note (n )2 l’écriture en binaire de n, c’est-à-dire
l’unique mot w = bn-- hot e l que bn = I et n = [w]. Soit L le langage {(p )2 \ p premier}
des écritures en binaire des nombres premiers.
On raisonne par l’absurde et on suppose que le langage L est rationnel. D ’après le
lemme de l’étoile, il existe un entier n tel que tout mot f de L vérifiant |/ | > n se
factorise / = uvw avec 0 < |u| < n et uv*w Ç L. On choisit un nombre premier p tel
que P > 2^^ de telle sorte que le mot / = (p)2 vérifie |/ | > n. Le mot / se factorise
/ = uvw avec 0 < |î;| < n et uv*w C L. Pour tout entier k > 1, on a la formule suivante
ok\v\ _ 1
[uv'^w] = + [w]
D éfin itio n 1.112 (Propriétés (Tk et Un langage L vérifie la propriété (resp. cr^)
pour fc > 0 si pour toute factorisation / = uviV2 • • • VkW où tous les mots Vi sont non
vides, il existe deux indices 1 < i < j < k tels que
sur le langage lui-même alors que les propriétés ak et crjj. portent simultanément sur le
langage et son complémentaire.
Le théorème suivant établit que les propriétés ak et qui généralisent les lemmes
de rétoile sont caractéristiques des langages rationnels. L’intérêt de ce théorème réside
plus dans la technique de preuve et dans l’utilisation astucieuse du théorème de Ramsey
que dans le résultat lui-même.
T h éo rèm e 1.113 (Ehrenfeucht, Parikh et Rozenberg 1981). Pour tout langage L, les
propositions suivantes sont équivalentes.
1. L est rationnel.
2. Il existe k > 0 tel que L vérifie ak .
S. Il existe k > 0 tel que L vérifie
La preuve du théorème s’appuie sur le théorème suivant qui étend le principe des
tiroirs. Ce principe très simple énonce que si n + 1 objets sont rangés dans n tiroirs, deux
objets se trouvent nécessairement dans le même tiroir. Dans le théorème de Ramsey, ce
sont les parties à k objets qui sont rangés dans les tiroirs plutôt que les objets eux-mêmes.
L’affectation des tiroirs est donnée par la fonction / et les tiroirs sont les éléments de
l’ensemble C. Si E est un ensemble, on notera Tensemble des parties à k éléments
de E. Le théorème de Ramsey se démontre par récurrence sur fc, le cas k = 1 étant le
principe des tiroirs. Une démonstration détaillée peut être consultée en [vLW92].
T h éo rèm e 1.114 (Ramsey 1929). Pour tout triplet d^entiers naturels (fc,m ,r), il existe
un entier iV(fc,m,r) tel que pour tout :
- ensemble E tel que \E\ > iV(A;,m,r*),
- ensemble C tel que \C\ = m ,
- fonction f : ^k{E) C,
il existe F Ç E tel que :
- \F\>r;
- i m k i m < 1-
Dans la littérature, les éléments de l’ensemble C sont appelées les couleurs et la
fonction / affecte une couleur à chaque partie à k éléments. La condition \f{^k{F))\ < 1
signifie que toutes les parties à k éléments de F se voient affecter la même couleur. On
dit alors que F est monochrome.
P rem ière é ta p e Soit L un langage qui vérifie crjj. pour un entier k fixé et soit un mot
V e A*. On montre que le langage v~^L vérifie aussi ajj.. Soit alors / , un mot qui s ’écrit
/ = UV1V2 • • • VkW où les mots Vi ne sont pas vides pour 1 < i < k. Les mots u e t w sont
quelconques. En appliquant la condition au langage L et au mot f = vf^ on obtient
une paire (¿, j) et on a alors les équivalences suivantes.
f ev vf eL Par définition de v
vuvi ••• ViVj^i • • • VkW e L Par définition de (iyj)
uvi • •• -VkW e V Par définition de v~^L
S econ d e é ta p e Nous montrons maintenant que le nombre de langages vérifiant ajj. est
fini pour chaque entier k. C’est la partie délicate de la preuve qui fait appel au théorème
de Ramsey. En appliquant ce théorème pour fc = 2 ,m = 2 e t r = fc + l, on obtient un
entier N = iV(2,2, A; + 1).
On note A -^ l’ensemble des mots de longueur au plus N sur l’alphabet A. Soient L
et K deux langages vérifiant crjj. pour un entier k fixé. On montre que si iT et L coïncident
sur les mots de longueur au plus N, c’est-à-dire L fl A -^ = K C\ A -^ , alors les deux
langages K et L sont égaux. Ceci prouve que le nombre de langages vérifiant est fini.
Le nombre de tels langages est en effet borné par 2^ où m = —1)/(|A | —1) est
le nombre de mots de longueur au plus N sur l’alphabet A,
On suppose maintenant que L fl A -^ = K C\ A -^ . Pour tout mot / , on montre par
récurrence sur la longueur |/ | que / appartient à ÜT si et seulement si / appartient à L.
Le résultat est bien sûr immédiat si / est de longueur au plus N.
On suppose alors que |/ | > N. Le mot / est factorisé / = ao •••ünQ où ao,..., ün
sont des lettres et g est un mot quelconque.
On définit maintenant un ensemble de paires d’entiers qui va permettre l’utilisation
du théorème de Ramsey. Toute l’intelligence de cette preuve réside dans l’introduction
de cet ensemble X défini par la formule suivante.
j) I « 0 •••Otaj+i •••attg € L}
Soient E l’ensemble {1 ,...,1 V } des entiers de 1 à AT, C l’ensemble à deux couleurs
C7 = {0 ,1 } et la fonction x de ^ 2 {E) dans C définie par
fl si { i,jj ) e x
= .mon.
U — Q/qq>i • *• diQ—1
Vj= aij_^aij_i+i • --ttij-i pour chaque l < j < k
w — dif^ • • • di>jQ
On étudie ici une classification des langages rationnels basée sur le nombre d’étoiles
imbriquées des expressions rationnelles. La raison pour laquelle on s’intéresse à cette
opération est qu’elle est celle qui donne toute leur puissance aux expressions rationnelles.
Les seuls langages à pouvoir être décrits sans étoile sont les langages finis.
La hduteur étoile h{e) d’une expression rationnelle e est définie par récurrence sur
la structure de l’expression par les formules suivantes.
Exemple 1.115. Les expressions a6 + 6a, (a6 + a)* et (a6*a + 6)* sont respectivement de
hauteur d’étoile 0, 1 et 2.
Il faut remarquer qu’un même langage peut être décrit par plusieurs expressions
rationnelles ayant des hauteurs d’étoile différentes. Par exemple, les deux expressions
(a H- b)* et (a*6)*a* sont de hauteurs d’étoile 1 et 2 mais décrivent le même langage de
tous les mots sur l’alphabet {a, b}, La hduteur d^étoile d’un langage L est définie comme
la hauteur minimale d’une expression rationnelle décrivant L, Les langages de hauteur
d’étoile 0 sont les langages finis.
Exemple 1.116. Le langage (a + 6)* est de hauteur d’étoile 1 puisqu’il est décrit par une
expression rationnelle de hauteur 1 et qu’il ne peut être décrit par une expression de
hauteur 0 parce qu’il est infini.
66 Chapitre 1. Langages rationnels
Un premier résultat sur la hauteur d’étoile est que pour tout entier n, il existe
un langage rationnel de hauteur d’étoile n. On peut en effet montrer que pour tout
entier n > 1, le langage Ln = {w e A* \ \w\a = 0 mod 2^} sur l’alphabet A = {a, b} est
de hauteur d’étoile n. Il existe un algorithme qui calcule la hauteur d’étoile d’un langage
rationnel donné mais celui-ci est très complexe et dépasse le cadre de cet ouvrage.
Comme la classe des langages rationnels est close pour toutes les opérations boo
léennes, il est possible de considérer des expressions utilisant non seulement les opé
rations rationnelles mais aussi toutes les opérations booléennes. On peut d’ailleurs se
limiter à la complémentation puisque l’union et la complémentation permettent d’ex
primer les autres opérations booléennes. La hauteur d’étoile peut être étendue à ces
expressions généralisées en posant
h{0 ) = 0,
h{e^) = h{e).
La hauteur étoile généralisée d’un langage L est la hauteur d’étoile minimale d’une
expression utilisant les opérations rationnelles et booléennes et décrivant L.
Exemple 1.117. Le langage (a + b)* = 0^ est de hauteur d’étoile généralisée 0.
Les langages de hauteur d’étoile généralisée 0 sont appelés langages sans étoile. Ils
sont étudiés en détail et caractérisés de manière algébrique à la section 1.12 (p. 73).
C’est encore un problème ouvert de savoir s’il existe des langages de hauteur d’étoile
généralisée strictement plus grande que 1.
Les langages rationnels peuvent être décrits par des expressions rationnelles ou par
des automates. On donne maintenant une troisième façon plus algébrique de définir ces
langages.
D éfin itio n 1.118 (Monoïde). On appelle monoïde tout ensemble M muni d’une loi de
composition interne associative qui possède un élément neutre noté 1m -
D éfin itio n 1.121 (Morphisme de monoïdes). Soient M et M' deux monoïdes. Un mor
phisme de M dans M' est une application fj, : M qui vérifie :
- /^(1m ) = 1m ',
- fji{xy) = fi{x)n{y)y pour tous éléments x et y de M.
Ceci définit jl de manière unique. Inversement, il est facile de vérifier que la formule
ci-dessus définit bien un morphisme. □
{ 1 si ti; = e
a s i w e aA*
P s i w e bA*
a, 6
a, 6
Pour montrer que tout langage rationnel est reconnu par un monoïde fini, on introduit
quelques définitions. Soient r et r' deux relations binaires sur un même ensemble E. On
définit la composition de ces deux relations, notée rr' par la formule suivante.
On vérifie sans peine que la loi de composition ainsi définie est associative et que l’identité
est un élément neutre. On note TZe le monoïde des relations binaires sur l’ensemble E
muni de cette loi de composition interne.
est un morphisme de A* dans TIq , Son image ¡jl{A*) dans TIq est appelée monoïde des
transitions de l’automate A.
Avec ce morphisme, il suffit de prendre :
F = {r | r n ( / x F ) T ^ 0 }
Une façon équivalente d’exprimer que M' est un sous-monoïde de M est de dire que
M' est inclus dans M , que l’unité de M' coïncide avec l’unité de M et que le produit
de M' est la restriction à M' du produit de M.
Exemple 1.132. Quelques exemples de sous-monoïdes.
- Les sous-monoïdes de A* sont les langages de la forme L* pour LC. A*.
- L’ensemble des parties rationnelles de A* est un sous-monoïde de ^(A *).
Exercice 1.133. On dit qu’un langage est préfixe si L fl LA+ = 0 , c’est-à-dire si un
préfixe stricte d’un mot de L n’est jamais un mot de L. Montrer que l’ensemble des
langages préfixes est un sous-monoïde de ^(A *) et que dans ce monoïde, l’égalité
• • • Km = L\ • • • Ln
n’est vérifiée que si m = n ei Ki = Li pour tout 1 < i < m. Un tel monoïde est dit libre
car il est isomorphe à un monoïde de la forme B*.
D éfin itio n 1.134 (Monoïde quotient). On dit que M est quotient de M' s’il existe un
morphisme surjectif /x : M' i-> M.
D éfin itio n 1.135 (Monoïde diviseur). On dit que M divise M' et on note M <] M' si
M est un quotient d’un sous-monoïde Mi de M' (cf. figure 1.25).
la notion de diviseur pour des objets algébriques est l’équivalent pour les graphes de
la notion de mineur.
70 Chapitre 1. Langages rationnels
Ml M'
7T
On perd Tanti-symétrie lorsque les monoïdes sont infinis comme le montre Texemple
suivant.
Exemple 1.137. On peut illustrer ce fait avec M = {a, 6}* et M' = {a,6,c, d}* (remar
quer que M Ç M '). Et en considérant les morphismes définis par :
fjb: M : w
a i-> aa
b\^ bb
fj,' :M '
c\-> ab
d ^ ba
id id
M2 M[
4. tt' 4. 7t'
id
Ml M'
4- TT
M
D éfin itio n 1.138 (Congruence). Une relation d’équivalence définie sur un monoïde M
est appelée congruence (de monoïde) si pour tous æ, x', 2/ et y' dans M , on a :
X ^
xy ^ x'y'
y^t']
Pour qu’une relation d’équivalence ^ soit une congruence, il suffit que pour tous y
et y' dans M , l’implication y y' "ix,z xyz ^ xy^z soit satisfaite.
P ro p o sitio n 1.139. Si est une congruence sur M , le quotient M/r-j est un monoïde
pour la loi définie par [x][y] = [xy] où [x] désigne la classe de x dans le quotient.
1.11 Reconnaissance par morphisme 71
D éfin itio n 1.140 (Congruence syntaxique). Pour tout langage L Ç A*, on appelle
contexte à o y e A * l’ensemble C{y) = {(a^, z) € {A*Ÿ • xyz G L}. La relation définie
par :
y r>^L y' ^ C{y) = C(y') < ^ ^ x ,z e A*{xyz e L < ^ xy!Z € L)
est appelée congruence syntaxique de L.
Preuve. Si y r^L y', on a ,\/x ,z e A*, C{xyz) = C{xy’z) et donc xyz xy'z. □
la proposition suivante montre que le monoïde syntaxique d’un langage est en quelque
sorte l’équivalent algébrique de l’automate minimal. Il est le plus petit monoïde recon
naissant le langage. Beaucoup de propriétés d’un langage peuvent être déduites de son
monoïde syntaxique.
On commence par prouver un premier lemme qui montre que la relation de division
est compatible avec la reconnaissabilité.
Ce second lemme établit qu’un langage est bien reconnu par son monoïde syntaxique.
Preuve. En utilisant les lemmes 1.144 et 1.143, on obtient immédiatement que, si M{L)
divise M , alors M reconnaît aussi L.
Réciproquement, si M reconnaît L, il existe un morphisme fj, : A* M tel que
L = //“ ^(P) pour une partie P Ç M. On note tt la morphisme canonique de A* dans
M{L). Le monoïde M' = fJi{A*) est un sous-monoïde de M. On va montrer que M{L)
est un quotient de M' ce qui prouvera que M{L) divise M.
On montre que pour tous mots w et si /x(iy) = )u(гí;'), alors on a aussi 7t { w ) =
7t(iî;'). Une paire (t/, v) appartient au contexte C{w) si uwv appartient à L, c’est-à-dire si
appartient à P. Ceci montre que les contextes C{w) et C{w') sont égaux
et que 7r{w) = 7t(u;').
Pour tout élément m de M', on peut définir 7r'(m) = 7t{w ) où w est un mot tel que
fjL{w) = m puisque 7t{w ) est indépendant du choix de w. On vérifie alors sans difficulté
que 7t' ainsi défini est un morphisme surjectif de M' dans M{L).
A* 4 M' C M
I TT / tt'
M{L)
P ro p o sitio n 1.145. Le monoïde syntaxique M{L) d^un langage rationnel L est égal au
monoïde des transitions de Vautomate minimal de L.
Exemple 1.146. Soit le langage L = {àb)* dont l’automate minimal est représenté à la
figure 1.22. On construit son monoïde syntaxique en déterminant toutes les relations
de transitions de l’automate. Comme l’automate est déterministe, ces relations sont des
fonctions. On obtient la table ci-dessous.
Le monoïde associé comporte 6 éléments {1,0, a, a/3, qui vérifient les relations
suivantes. Ceci constitue en fait une présentation par générateurs et relations de ce
monoïde.
a^a = a P a P = ¡3 = ^0^ = 0
La reconnaissance par monoïdes des langages rationnels permet de résoudre rapide
ment certaines questions. Pour illustrer le propos, nous allons montrer la proposition
suivante dont la preuve est grandement facilitée par les monoïdes. Le plus intéressant
1.12 Langages sans étoile 73
0 1 2
1 = e 0 1 2
aba = a 1 2 2
bab = b 2 0 2
0 = bb = aa 2 2 2
ab 0 2 2
ba 2 1 2
bb 2 2 2
aba 1 2 2
bab 2 0 2
n’est pas le résultat en soi mais la technique de preuve. Le résultat est en fait un cas par
ticulier d’une construction beaucoup plus générale. Pour la définition d’une substitution
cf. définition 2.18.
P ro p o sitio n 1.147. Soit a une substitution de A* dans B* et soit K C B* un langage
rationnel. Les deux langages {w | (t { w ) C \ K ^ 0 } et {w \ a{w) Ç K } sont rationnels.
Pour un monoïde M , l’ensemble ^ (M ) des parties de M est naturellement muni
d’une structure de monoïde par le produit P Q = {pq | p G P et ç € Q} pour deux
parties P,Q Ç M.
Preuve. On va montrer que si K est reconnu par le monoïde M , alors les deux langages
L = {w \ a{w) n K ^ 0 } et V = {w \ a{w) Ç K } sont reconnus par le monoïde ÎP(M).
Soit P : P* -> M un morphisme de B* dans un monoïde fini M tel que K =
pour une partie P Ç M. On définit le morphisme p, : A* p{a) = /jL(a{a)).
On vérifie que p{w) = fjb{a{w)) pour tout mot w G A*. Ceci implique que L = p~^{Q)
et L' = /1“ ^(Q') où Q et Q' sont respectivement les ensembles {T \ T C\ P ^ 0 } et
{T I T Ç P } des parties de M qui intersectent P et qui sont incluses dans P. □
Les langages sans étoile sont aussi les langages de hauteur d’étoile généralisée 0 (cf.
section 1.10 p. 65).
74 Chapitre 1. Langages rationnels
D é fin itio n 1 .1 5 0 (Groupe contenu dans un monoïde). On dit qu’un groupe G est
contenu dans un monoïde M si :
1. G C M
2. 'ii9,9')eG ^g.G 9' = 9.M9'
Un monoïde M est apériodique s ’il ne contient que des groupes triviaux, c’est-à-dire
réduits à un seul élément.
Si k est le plus petit entier pour lequel il existe / < A: tel que x^ = x^y les entiers k
et l sont uniques. On note alors Ix = I et px = k —l. Le lemme suivant caractérise les
groupes et les monoïdes apériodiques parmi les monoïdes finis.
L em m e 1.151. Pour un monoïde fini M , les trois propriétés suivantes sont équiva
lentes.
1.12 Langages sans étoile 75
L M est un groupe.
2. Pour tout X e M , on a Ix = 0 et donc = 1.
3. Il existe un entier u) tel que x^ = 1 pour tout x £ M.
Pour un monoïde fini M , les trois propriétés suivantes sont équivalentes.
1. M est apériodique.
2. Pour tout X e M, on a px — l et donc = x^®.
3: Il existe 'un entier u tel que x^^^ .= pour tout x G M.
L’énoncé de ce lemme se traduit en termes imagés de la manière suivante. Dans un
groupe, la poêle à frire est donc sans manche alors qu’au contraire, elle est réduite au
manche dans un monoïde apériodique.
j-i x^ =
Le cas des groupes a été énoncé pour bien montrer l’orthogonalité entre les deux cas
mais il n’est pas utilisé dans la suite. La preuve est laissée à titre d’exercice.
Preuve. Pour le cas des monoïdes apériodiques, la preuve que la condition 1 implique la
condition 2 découle de la remarque suivante. L’ensemble Gx = {x^®, x^®“*"^, .X'-¿x+Px“ 1}
est un monoïde isomorphe à Z/pa;^- Son élément neutre est x'^ où m est l’unique en
tier entre Ix et Za; + pa; — 1 tel que m = 0 mod pa?. Si M est apériodique, on a donc
nécessairement p® = 1.
La preuve que la condition 2 implique la condition 3 est obtenue en posant cj =
max{lx I X G M }.
Il reste à montrer que la condition 3 implique la condition 1. Si G est un groupe
contenu dans M, on a l’égalité Cette égalité implique immédiatement que g
est l’identité de G et que le groupe G est trivial. □
Exemple 1.152. Le monoïde syntaxique du langage (aa)*^ est constitué des trois éléments
{ l,a ,a ^ } avec la relation = a. Le sous-ensemble {a,a^ } est isomorphe au groupe
T héorèm e 1.153 (Schützenberger 1965). Pour tout langage rationnel L, les trois condi
tions suivantes sont équivalentes.
1 . Le langage L est sans étoile.
Preuve. D ’après le lemme 1.151, il existe un entier oj tel que s^ = s^^^ pour tout
élément s du monoïde. On écrit alors les égalités
m = pmq = p LJm q lü = pLJm qCJ^-4-1 = mq
et on procède pareillement pour m = pm. □
1.12 Langages sans étoile 77
\ m^MfjL{a)nfi(b)M J
Preuve. Puisque m ф 1m ^les deux ensembles m M et M m ne contiennent pas l’élément
neutre 1 m d’après le lemme de simplification.
D ’après le lemme précédent, un mot w vérifie /jl(w ) = m si et seulement si fji(w) G
mM П M m et m G Мц(и})М.
On commence par montrer que ¡jl( w ) G m M si et seulement si w se factorise uav tel
que n = p(u) vérifie n ^ m M et npi(a)M = mM. L’appartenance ¡i(w) G M m se traite
de manière symétrique. Soit и le plus long préfixe de w tel que р(и) ^ mM. Ce mot и
existe puisque le mot vide est un préfixe de w et p,(e) = 1m n’appartient pas mM. Ce
mot U est par définition différent de w. Le mot w se factorise w = uav tel que n = ц(и)
vérifie n ^ m M et п/л(а)М = mM.
Soit w un mot tel que m ^ Mfi(w)M. On montre que w se factorise soit w = uav
où 771 ^ Mfjb(a)M soit w = uavbt tel que n = /jl( v ) vérifie m G М р(а)пМ П Mnji(b)M
et m ^ Mii(a)nfx(b)M. Soit v' un plus petit facteur de w tel que m ^ Mfji(v')M. Un
tel mot existe car m ^ Mfi(w)M. Si u' est réduit à une lettre a, on a u; = uav où
m Ф M p(a)M . Si u' est de longueur au moins 2, u' s’écrit u' = avb avec les propriétés
requises. □
78 Chapitre 1. Langages rationnels
Pour tout m, on pose r(m) = \MmM\, La preuve que /jb~^{m) est un langage sans
étoile est faite par récurrence sur \M\ —r{m) :
- si r(m) = |M |, alors m = 1m et on a
M -'(l) = {e}
p “ ^(0) = A*{aa -h bb)A*
p-^{afi) = (a6)+ = {aA* H A*b) \ A*{aa -h bb)A*.
Exercice 1.162. Donner une expression sans étoile pour le langage {ab -\-ba)*.
1.13 Compléments 79
1.13 Compléments
I 1 si q = 0 q+ 1 si q < n —l
q -a =
I q sinon
q-b
{ 0 si q = n —l
b b
- Les automates C3 et C4
Exemple 1.163. Les automates C3 et C4 de la figure 1.28 sont synchronisants. Ils sont
effectivement synchronisés par les mots ah^a et ab^ab^a de longueur 4 et 9. Il est un peu
80 Chapitre 1. Langages rationnels
plus délicat de prouver que ce sont les mots synchronisants les plus courts de C3 et C4 .
On montre de même que le mot synchronisant le plus court de Cn est le mot
de longueur (n - 1)^.
L’exercice 4.29 étudie le calcul de la longueur d’un plus petit mot synchronisant. Il
est en particulier montré que cette longueur est bornée par (n^ —n )/3.
L’étoile if* est en fait le plus petit sous-monoïde de M contenant i f et il est appelé le
sous-monoïde engendré par if . La notation comporte une certaine ambiguïté puisque if*
peut noter le monoïde libre sur l’alphabet i f où le sous-monoïde engendré par i f dans M.
Cette confusion est sans conséquence dans la mesure où on identifie très souvent une
suite finie fci,. . . , fcn avec son produit fci • • • ¿n dans M. L’application qui envoie toute
suite fci, . . . , fcn sur fci • • • fcn est d’ailleurs un morphisme du monoïde libre if* dans le
monoïde M.
D éfin itio n 1.164. Soit M un monoïde. La famille notée R atM des parties rationnelles
est la plus petite famille de parties de M telle que
- 0 6 Rat M et {m } e Rat M pour tout élément m de M ;
- R atM est close pour les opérations rationnelles (l’union, le produit et l’étoile).
est le produit m i • • • mn dans M des étiquettes des transitions qui constituent le chemin.
Le comportement d’un automate est l’ensemble des étiquettes des chemins acceptants
(c’est-à-dire commençant dans un état initial et se terminant dans un état final). Le
théorème de Kleene s’étend facilement à un monoïde quelconque. La preuve faite dans
le cas d’un monoïde libre reste valide.
T héorèm e 1.165. Une partie d^un monoïde M est rationnelle si et seulement si elle
est le comportement d^un automate sur M.
1.13 Compléments 81
La construction du groupe libre ainsi que ses parties rationnelles sont décrites à la
section 2.7.3 (p. 130).
Pour illustrer ces notions, on va donner quelques exemples dans le cas d’un monoïde
A* X B* pour deux alphabets A et B, Une partie rationnelle de A* x B* est aussi appelée
une relation rationnelle ou encore une transduction rationnelle. Un élément de A* x B*
est une paire (w, v) de mots sur A et B qui est souvent notée u\v en particulier pour les
étiquettes des automates.
b\e b\c
Les deux familles Rec M et Rat M coïncident lorsque M est un monoïde libre mais
l’inclusion de la proposition précédente peut être stricte si M n’est pas libre. Si M
est un monoïde de la forme A* x P*, les parties reconnaissables sont les unions finies
d’ensembles de la forme K x L où K et L sont respectivement des parties rationnelles
de A* et B*. La diagonale A = {{w^w) | ti; G A*} = {(a,a) | a G A}* est une partie
rationnelle de A* x A* qui n’est pas reconnaissable.
Preuve. Soit ¡jl un morphisme de M dans un monoïde fini N tel que K = /x“ ^(P) pour
une partie P C N . Soit A = (Q, M, P , J, F ) un automate sur M dont le comportement
est L. On construit un automate dont le comportement est K DL. L’ensemble des
états est Q x les états initiaux sont ceux de / x { !//} et les états finaux sont ceux
de F X P. Les transitions sont les triplets de la forme ((p,n),m , (g,n/x(m))) où (p,m ,g)
est une transition de A. □
Chapitre 2
Langages algébriques
2 .1 .1 D é fin itio n s e t ex e m p le s
Une grammaire algébrique est en quelque sorte un système de réécriture qui en
gendre un ensemble de mots à partir d’un axiome. Afin de bien distinguer les lettres des
mots engendrés des lettres intermédiaires, l’alphabet est partagé en lettres terminales
et en lettres non terminales appelées variables. Seules les variables peuvent subir une
réécriture.
D éfin ition 2.1 (Grammaire algébrique). Une grammaire algébrique G est un triplet
(A, V, P) où A et V”sont des alphabets finis et disjoints et où P est une partie finie de
U X (A U V y . Les symboles de A sont appelés terminaux et ceux de V sont appelés
84 Chapitre 2. Langages algébriques
non terminaux ou variables. Les éléments de P sont appelés règles. Chaque règle est une
paire (X, u) où X est une variable et u est un mot sur l’alphabet A + V.
Les grammaires définies ici sont appelées algébriques pour les distinguer de gram
maires plus générales qui sont abordées au chapitre suivant (cf. définitions 3.56 et 3.57
p. 171). Le terme algébrique sera justifié en montrant que les langages engendrés par les
grammaires sont solutions de systèmes d’équations polynomiales (cf. proposition 2.25
p. 93). Comme toutes les grammaires considérées dans ce chapitre sont algébriques, elles
seront simplement appelées grammaires dans le reste de ce chapitre.
On note X u lorsque (X, u) e P est une règle de la grammaire. Par extension, si
(X,t^i),. . . , (XyUn) sont des règles, on écrit X ui -----+ Un- Les éléments X et w
d’une règle X u sont respectivement appelés membre gauche et membre droit de la
règle.
Exemple 2.2. Soit la grammaire G = (A, V, P) définie par
A = {a, 6}, V = {5 }, P = {S -^ a S b + e)
Cette grammaire a deux lettres terminales a et 6, une seule variable S et deux règles
(5, aSb) et (5, e). On verra que le langage engendré par cette grammaire est {aP'h^ | n >
0}.
Lorsqu’une grammaire est donnée de manière explicite, on se contente souvent de
donner les règles. Les variables de la grammaire sont alors implicitement les symboles
qui apparaissent comme membre gauche des règles et toutes les autres lettres sont im
plicitement des lettres terminales. Pour la grammaire donnée ci-dessus, on aurait pu
simplement écrire P = { 5 -> aSh -h e}.
D éfin ition 2.3 (Dérivation). Soit G = (A, V,P) une grammaire et soient u e i v deux
mots sur A -\-V . On dit que u se dérive en (ou produit) v et on note u v lorsque il
existe /3 e {A V)* et X e V tels que :
u = aX ^ , V = awP et {X w) e P
La dérivation est dite gauche (respectivement droite) si a (respectivement /?) appartient
à A*. Ceci signifie que c’est la variable la plus à gauche (respectivement à droite) qui
est réécrite.
Pour fc = 0, on note u ^ V si u = V et pour fe > 1, on note u -h v sMl existe des
mots ui, U2, . . . , Uk-i tels que u ui Uk-i —^ v. Plus généralement, on notera
г¿ A î; s’il existe un entier fc > 0 tel que u ^ v. La, relation est donc la clôture
réfiexive et transitive de la relation
Exemple 2.4. Soit G la grammaire donnée à l’exemple 2.2. La variable S peut se dériver
en le mot aSb qui se dérive à nouveau en aaSbb^ qui se dérive encore en aaaSbbb qui se
dérive finalement en a^b^ : S a^b^. Il est facile de voir que les mots w E A* tels que
S ^ w sont justement les mots de la forme aP’b^ pour n > 0.
Les langages algébriques sont aussi appelés langages hors contexte parce que lors
d’une dérivation, le remplacement de la variable X par w dans le mot u = aX P est
indépendant des contextes a et /3. Il existe aussi des grammaires contextuelles (cf. sec
tion 3.7.2) dont les membres gauches de règle ne sont plus simplement des variables mais
des mots qui permettent de spécifier le contexte de remplacement d’une variable.
2.1 Grammaires algébriques 85
D éfin ition 2.5 (Langage engendré). Soit G = (A, V, P) une grammaire et soit u un mot
sur (i4+V')*. On note respectivement Lg {u) et Lg {u) les langages {u € (A+V')* | î/ A u}
et Lg {u) n A*
Dans une grammaire G, une variable S q appelée axiome est parfois distinguée. Le
langage engendré par la grammaire est alors implicitement le langage L g {Sq).
D éfin ition 2.6 (Langage algébrique). Un langage est dit algébrique s’il peut être en
gendré par une grammaire, c’est-à-dire s’il est égal à L g {S) pour une variable S d’une
grammaire G.
Exemple 2.7. Soit G la grammaire donnée à l’exemple 2.2. Le langage L g {S) est égal à
{à^b'^ I n > 0} qui est donc un langage algébrique.
Grâce au lemme fondamental 2.11 et à la clôture des langages algébriques par pro
duit (cf. proposition 2.51), on constate que L g {u ) est encore algébrique pour tout mot
U e {A + V y . La notation L g peut être étendue aux langages en posant L g {K) =
\JueK^G{u) pour K c {A + v y . La clôture des langages algébriques par substitu
tion algébrique (cf. proposition 2.53) montre que L g {K) reste algébrique quand K est
algébrique.
Exemple 2.8. Quelques exemples de grammaires et de langages algébriques.
1. Le langage a*b est engendré par la grammaire S aS-\-b. Il sera montré que tous
les langages rationnels sont algébriques.
2. Grammaire
A = {a, 6, c}
S^AS + e
A —y AB -f- a
B ^ B C -\- b
<c ^ C A + c
3. Langage de Dyck sur n paires de parenthèses.
5. Langage de Goldstine
L = {a^^ba^^b---a^^b \ k > 0 et 3 j > 0,Uj j}
Le langage L est égal à L g {S) où la grammaire G est constituée des règles suivantes.
Tq —> aTo + e
Tl ^ Tob
T2 -^TiT 2 + e
Ts TiT^a + T1T2 + aTo
S —y T36T2
On vérifie facilement que Lg (To) = a*, L g (Ti ) = a*b, L g {T2 ) = (a*6)*, L g {Ts) =
{ à ^ ^ b à ^ ^ b \ k > O e t n k ^ k } e t L g (S) = L.
Exercice 2.9. Montrer que Tensemble des palindromes écrits sur un alphabet A est un
langage algébrique. Montrer que le complémentaire de ce langage est aussi algébrique.
Solution, Pour simplifier, on suppose que Talphabet est A = {a, 6}. L’ensemble des
palindromes sur cet alphabet est engendré par la grammaire S -> aSa + bSb + a + 6 + e:.
Le complémentaire est engendré par la grammaire S -)►aSa + bSb + aTb H- 6Ta, T
aTa H“ aTb + bTa + bTb a b
Exercice 2.10. Soit A un alphabet ne contenant pas le symbole # . Montrer que les deux
langages
Li — {ww' I G A*yW ^ et |tt;| =
¿2 = \w^w' £ A* et w ^ w'}
sont algébriques.
Les résultats de cet exercice sont à comparer avec ceux de l’exercice 2.49.
Solution. On suppose pour simplifier que A est l’alphabet {a, b}. La preuve se généralise
sans problème à un alphabet plus large. Le langage L\ est égal à LaLi U LbLa où les
langages La et Lb sont respectivement égaux à {uav | |n| = |v|} et {ubv | |t^| = |i;|}. On
tire facilement une grammaire de cette expression.
Le langage L 2 est égal à l’union non disjointe des langages L^^ L:^^ Lab et Lba définis
par les formules suivantes.
L< = {wif^w' I \w\ < \w'\} et symétriquement pour L>
Lab = {uavif^u^v^ I \u\ = |tx'|} et symétriquement pour Lba
Le langage L< est égal à L g {S) où la grammaire G est donnée par
Le langage Lab est égal à L g>{So) où la grammaire G' est donnée par
SbT
S —^ üSd "1“ dSb “1“ bSd "1“ bSb aT*^
T -^ T d + Tb + e.
2.1 Grammaires algébriques 87
Le lemme suivant énonce un résultat très simple mais il permet de formaliser beau
coup de preuves en raisonnant sur la longueur des dérivations. Il établit que les dériva
tions partant d’un mot u = U\U2 se décomposent en des dérivations partant de u\ et
des dérivations partant de U2 et que ces deux types de dérivations sont indépendantes.
L g {u v ) = L g {u ) L g {v )
Preuve. Il est aisé de combiner les dérivations u\ — v\ et г¿2 V2 pour obtenir une
dérivation U\U2 v\V2 de longueur k\ + fc2- La réciproque se montre par induction
sur k. □
Exercice 2 .1 2 . On considère le langage L = L g {S) o ù la grammaire G contient les règles
S aSSh + c. Montrer que tout langage rationnel inclus dans L est fini.
Solution. D ’après le lemme de l’étoile, tout langage rationnel infini contient un langage
de la forme uv*w où u^v et w sont des mots et v est non vide. Il suffit donc de montrer
que L ne contient aucun langage de cette forme.
On montre facilement par récurrence sur la longueur de la dérivation que tout mot w
de L vérifie l’égalité \w\a = \w\b. On montre ensuite que tout mot w de L vérifiant
\w\ > 2 ^ - 1 pour un entier n > 0 possède un préfixe u tel que \u\a — \u\b > n — 1.
Le seul mot obtenu par une dérivation de longueur 1 est le mot w = c^ qui vérifie la
propriété. L’entier n est au plus égal à 1 et le préfixe u = e de w convient. Si w est
obtenu par une dérivation de longueur au moins 2, il se factorise w = awiW2 b où les
mots wi et W2 appartiennent à L. Un des deux mots wi et u)2 est de longueur au moins
2^-1 _ 1. Sinon le mot w est de longueur au plus 2 + 2(2^"^ —2) = 2^ - 2 contrairement
à l’hypothèse \w\ > 2 ^ - 1 . Si wi vérifie > 2^“ ^ - 1, il possède par hypothèse de
récurrence un préfixe ui tel que |г¿l|a — \ui\t > n —2. Le préfixe u = aui de w vérifie
alors \u\a — \u\b > n — 1 . Si W2 vérifie \w2 \ > 2 '^~^ — 1, il possède par hypothèse de
récurrence un préfixe U2 tel que |u 2|a —\u2 \b^i^ —2. Le préfixe u = aw\U2 de w vérifie
encore \u\a - |г¿|b > n - 1 puisque |tüi|a = \wi\b.
Soit u^ v et w des mots tels que v soit non vide et que uv*w soit inclus dans L.
Puisque luv'^wla = \uv^w\b pour tout entier n, on a |v|a = \v\b. Il s’ensuit que pour tout
entier n et pour tout préfixe de uv'^w, on a l’inégalité \ z \ a — \z\b < \uvw\a- Comme
cette majoration est indépendante de n et donc de la longueur de uv'^w^ il y a une
contradiction avec la propriété énoncée ci-dessus pour les mots de L.
Les manipulations sur les grammaires algébriques sont souvent facilitées par des
règles d’une forme particulière. Il existe plusieurs formes normales de grammaires plus ou
88 Chapitre 2. Langages algébriques
moins élaborées. Nous commençons par quelques formes normales très faciles à obtenir.
Nous insistons sur le côté calculatoire pour bien montrer que ces formes normales peuvent
être effectivement calculées.
La notion de grammaire réduite est Tanalogue pour les grammaires de la notion
d’automate émondé. De manière intuitive, une grammaire est réduite si elle ne contient
pas de variable trivialement inutile.
D éfin ition 2.13 (Grammaire réduite). Une grammaire G = (A^V^P) est dite réduite
pour 5o G F si
1. pour tout 5 G F , L g {S) 7^ 0 ,
2. pour tout 5 G F , il existe u^v e { A F)* tels que S q A uSv.
La première condition signifie que toute variable peut produire un mot et la seconde
condition signifie que toute variable peut être atteinte à partir de la variable 5 q.
Preuve. Pour réduire, on applique successivement les deux étapes suivantes. Il est à
noter que Tordre des étapes est important.
La première étape consiste à supprimer des variables S telles que L g {S) = 0 . On
définit par récurrence une suite {Un)n>o d’ensembles de symboles de A + F par
Uo = A,
Un+i = U n ^ { S e V \ S - ^ v j e t w e U*} pour n > 0.
Puisque l’ensemble A + V est fini et que la suite (i7n)n>o est croissante, celle-ci est
constante à partir d’un certain rang. Soit U l’ensemble Un>o prouve par récur
rence sur la longueur d’une plus petite dérivation que t/fl F est l’ensemble {S | L g {S) ^
0 } . On supprime alors les variables qui n’appartiennent pas à U fl F et toutes les règles
où ces variables apparaissent.
La seconde étape consiste à supprimer toutes les variables inaccessibles à partir de
l’axiome S q. On définit par récurrence une suite (Wn)n>o d’ensembles de variables par
Wo = {5o},
Wn+i = W n U { S e V \ 3 S ' eWn^S' uSv avec it, u G {A-\- F)*}.
Puisque F est fini et que la suite (Wn)n>o est croissante, celle-ci est constante à par
tir d’un certain rang. On montre que l’ensemble W = Un>o à l’ensemble
{ 5 I iSo ^ uSv avec u^v e A * } en utilisant le fait que L g {S) est non vide pour toute
variable S. Ainsi, W ne contient que les variables accessibles depuis Sq. La grammaire
réduite est obtenue en ne conservant que les variables de W et que les règles faisant
uniquement intervenir ces variables. □
Nous continuons de mettre les grammaires sous des formes plus faciles à manipuler
en éliminant certaines règles souvent gênantes.
2.1 Grammaires algébriques 89
D éfinition 2.15 (Grammaire propre). Une grammaire G = (A, V,P) est propre si elle
ne contient aucune règle de la forme 5 e ou de la forme S ^ S' pour S', 5' E U.
P ro p ositio n 2.17. Pour toute grammaire G = (-4, V,P) et tout S G V, il existe une
grammaire propre G' = (^4, U ',P ') et S' E V telle que L g'{S') = L q {S) \ {e}.
La preuve de la proposition donne une construction effective d’une grammaire propre.
Elle utilise la notion de substitution qui est maintenant définie.
Uo = { S \ S ^ e],
Un ^ i = U n U { S \ S - w et w G U*}.
La suite {Un)n>o est constante à partir d’un certain rang. On montre par récurrence que
U = Un>o l’ensemble { 5 | S' A e} des variables qui produisent le mot vide. On
introduit la substitution cr de (A + F)* dans {A-\-V)* par
a{a) = a pour a G A
ÎS + 6 si S 6
a(5 ) = pour s G V.
yS sinon
La première étape consiste alors à procéder aux deux transformations suivantes sur
la grammaire G. L’idée intuitive est de remplacer par le mot vide dans les membres
droits de règles les variables qui produisent le mot vide.
1. Supprimer les règles S e.
2. Ajouter toutes les règles S u o\i S w est une règle et u G (t { w ).
On montre par récurrence sur la longueur des dérivations que dans la nouvelle gram
maire, chaque variable engendre les même mots au mot vide près.
La seconde étape consiste à supprimer les règles de la forme 5 5' où 5 et 5'
sont deux variables. Puisqu’aucune variable ne produit le mot vide, on a une dérivation
S' A 5' si et seulement si il existe des variables S i , . . . , Sn telles que Si = S, Sn = S' et
Si Si+i pour tout l < i < n —l. La relation A restreinte aux variables est donc la
clôture transitive et réfiexive de la relation restreinte aux variables.
90 Chapitre 2. Langages algébriques
La seconde étape consiste alors à procéder aux deux transformations suivantes sur
la grammaire G. L’idée intuitive est de remplacer par une seule dérivation une suite de
dérivations Si Si+i suivie d’une dérivation Sn 'iv où w ^ V.
1. Supprimer les règles S S\
2. Ajouter les règles S w où S ^ et S' w est une règle avec w
On vérifie sans difficulté que la grammaire obtenue est propre et qu’elle engendre le
même langage.
Une autre méthode consiste à d’abord quotienter l’ensemble V par la relation d’équi
valence = définie par
s = s' (5 4 5' et 5' A S).
La grammaire obtenue engendre le même langage car S = implique que L g {S) =
Lg (S'). La relation A devient alors un ordre sur le quotient. On supprime alors les règles
S S' où S est maximal pour cet ordre en ajoutant les règles S' w pour chaque
règle S w. Le processus est itéré avec les nouvelles variables devenues maximales pour
l’ordre A . □
Nous terminons par la forme normale quadratique appelée aussi forme normale de
Chomsky. Celle-ci permet en outre de savoir si un mot est engendré par une grammaire.
D éfin ition 2.21 (Forme normale quadratique). Une grammaire est en forme normale
quadratique si toutes ses règles sont d’une des formes suivantes :
—S 'S'iiS'2 ou iSi, 1S2 G U
— S —y a ou a G A
Il faut remarquer qu’une grammaire en forme quadratique est nécessairement propre.
En particulier, elle ne peut pas engendrer le mot vide.
P ro p o sitio n 2.22 (Forme normale quadratique). Pour toute grammaire G = (A, V, P)
et tout S e V , il existe une grammaire en forme normale quadratique G' = (A, U', P')
et S' G V' telles que L g '{ S ') = L g {S) \ {e}.
Preuve. Grâce à la proposition 2.17, on peut supposer que la grammaire G est propre.
Ensuite, la construction se décompose à nouveau en deux étapes.
La première étape consiste à se ramener à une grammaire où tous les membres droits
de règles sont soit une lettre terminale soit un mot formé uniquement de variables, c’est-à
dire d’une des formes suivantes.
2.2 Systèmes d'équations 91
- S a OÙ a e A
—S ^ S 1 S 2 • • • Sn où Siy... ySn € V
Soit V' = {Va I a G i4} un ensemble de nouvelles variables en bijection avec A. Soit G'
la grammaire (^4, V U V \ P') où P' est l’ensemble [Va a | a G A} U { 5 a{w) \ S
w e P } et où a est la substitution définie par a{S) = S pour S G V et a{a) = Va pour
aeA.
Dans la seconde étape, les règles S ->• 5 i • • • 5n avec n > 2 sont supprimées et
remplacées par d’autres nouvelles règles. Dans ce but, on introduit les nouvelles variables
S[y... y et on remplace 5 5 i • • • 5n par les n règles suivantes.
5 S iS '2
SI SiSl^i pour 2 < г < n - 1
Sn-i —> Sn-lSn
□
Une conséquence de la forme normale de Chomsky est qu’il existe un algorithme
pour savoir si un mot donné est engendré par une grammaire également donnée. On
a déjà vu qu’il est possible de savoir si une grammaire engendre le mot vide. Dans
une grammaire en forme quadratique, chaque dérivation remplace une variable par une
lettre terminale ou augmente le nombre d’occurrences de variables dans le mot. Il s’ensuit
qu’une dérivation d’une variable à un mot w formé de lettres terminales est de longueur
au plus 2\w\. Pour savoir si une grammaire G engendre un mot w non vide, on remplace
d’abord la grammaire G par une grammaire équivalente G' en forme normale quadratique
puis on examine toutes les dérivations de longueur au plus 2|ti;| de G'. Cet algorithme
n’est pas très efficace car le nombre de dérivations est exponentiel. La transformation
d’une grammaire quelconque en une grammaire en forme normale quadratique peut aussi
beaucoup augmenter la taille de la grammaire. On verra qu’il existe l’algorithme de
Соске, Kasami et Younger pour déterminer en temps polynomial si un mot est engendré
par une grammaire.
On va voir que les langages algébriques sont les solutions des systèmes polynomiaux,
ce qui justifie la terminologie. On utilisera cette approche pour montrer le théorème de
Parikh qui établit que tout langage algébrique est commutativement équivalent à un
langage rationnel.
2.2.1 Substitutions
X i^ X iX 2 + e
X 2 —y (1X 2 H" b»
92 Chapitre 2. Langages algébriques
Г Li = L1L2 + s
^ L 2 = (1 L 2 H" b
en les langages Li et L 2 sur l’alphabet A,
On introduit quelques notations pratiques qui aident à formaliser ceci. Soit G =
{AyV^P) une grammaire dont l’ensemble des variables est V = { X i , ... ,X n} et soit
L = ( Li , . . . , Ln) un n-uplet de langages sur A. On définit successivement des opérations
de substitution par
e(b) = {e}
a{L) = {a} pour a € A
Xi{L) = Li
xy{L) = x{L)y{L) pour x , y e { A + V)*
K{L) = ( J w{L) pour K Ç {A + V)*
w^K
On notera la cohérence dans le cas particulier L = ( X i , . . . ,Xn) avec la notation
a ( X i , . . . , Xn) marquant une simple dépendance en X i , . . . , Xn.
Le point important est de voir que l’on procède bel et bien à une substitution des
Xi par les Li correspondants.
Î'g M = '^{Lg )-
Preuve. Le résultat est déjà vrai sur les symboles de base e, a et X^ :
L g {s ) = e = s {L g )
L g {o) = a = o^Lg )
LG{Xi) = Xi{LG).
2.2 Systèmes d’équations 93
On écrit w = Wi ,. .Wn où tüi, . . . , lün sont les lettres de w et on applique les règles de
substitution données ci-dessus.
Voyons à présent le lien entre solutions du système associé et langages engendrés par
les Xi.
La relation essentielle entre la grammaire et son système associé est que les langages
engendrés forment une solution du système. Cette solution est en outre la plus petite
comme l’établit la proposition suivante.
P ro p o sitio n 2.25 (Minimalité des langages engendrés). Soit G = (A, V,P) une gram
maire avec V = { X i , . . . , X n } . Alors L g est la solution minimale (pour ^inclusion
composante par composante) du système S{G) associé à G.
L em m e 2.26. Soit G = (A, V ,P) une grammaire et soit L une solution du système
S {G). Si les deux mots w et w' sur (A -f V)* vérifient w alors w{L) D w \L ).
Preuve. Il suffit de montrer le résultat pour une seule dérivation. Le cas général se prouve
par récurrence sur la longueur de la dérivation. Supposons que w = uXiV uzv = w'
où Xi Z est une règle de la grammaire. Puisque L est solution de S (G), on a l’égalité
Li = l’inclusion Li D z{L). Il en découle que w{L) D w'{L). □
L aiX i) = Y .
Xi^a
= E
Xi-^a
Le prix à payer pour avoir l’unicité d’une solution est de se restreindre aux grammaire
propres et par conséquent aux solutions propres.
D éfin ition 2.27 (Solution propre). Une solution L de 5(G ) est dite propre si tous les
Li sont propres, c’est-à-dire ne contiennent pas le mot vide e.
P ro p o sitio n 2.28 (Unicité des solutions propres). Soit G une grammaire propre. Alors
L q est Vunique solution propre de 5(G ).
Preuve. Puisque G est propre, L q est propre, et la proposition précédente nous dit que
L q est une solution de 5(G ). Ainsi L q est une solution propre.
Pour un entier /, on introduit la relation qui capture le fait que deux langages
coïncident pour les mots de longueur inférieure à l. Pour deux langages K et K ' et un
entier /, on note K ^ K ‘ si l’égalité
est vérifiée. Cette notation est étendue aux n-uplets composante par composante. Soient
L = ( Li , . . . , Ln) et V = (L'i,. . . , deux solutions propres de G. On va montrer par
récurrence sur l que L V pour tout entier / > 0 ce qui prouve que L = L \
Pour 1 < i < n, on introduit le langage fini Si = {w \ X{ w} de sorte que le
système 5(G ) s’écrit maintenant
Comme L et L' sont propres, aucune de leurs composantes ne contient le mot vide
et on a L ~ L'.
Supposons L ^ V pour Z> 0 et montrons L L', c’est-à-dire
ou encore
Si{L) Si(L^) pour 1 < г < n.
Soit donc 1 < г < n fixé, et soit w e Si (c’est-à-dire un mot tel que Xi w)^ que l’on
écrit w = w i .. .Wp où chaque Wj est soit une lettre de A, soit une variable Xk € V.
L’entier p est non nul car la grammaire G est propre.
2.2 Systèmes d'équations 95
D éfin ition 2.29. Deux mots w et w' sont dits anagrammes s’il existe n lettres a i , . . . , an
et une permutation a de { 1 , . . . , n} telle que i/; = a i . .. an et ta' = a^^(i). . . a^^(n). L’en
semble des anagrammes d’un mot w est noté w.
Une conséquence du théorème est que sur un alphabet unaire, c’est-à-dire avec une
seule lettre, tous les langages algébriques sont rationnels. Par contre, dès que l’alphabet
contient deux lettres, il existe des langages algébriques commutatifs (c’est-à-dire clos
par passage à un anagramme) qui ne sont pas rationnels. Un exemple est le langage
’{w I |ii;|a = \w\b} des mots ayant autant d’occurrences de a que d’occurrences de b.
Les grandes étapes de la preuve sont les suivantes. On associe à une grammaire un
système d’équations en commutatif et on montre que les langages engendrés par une
grammaire propre sont l’unique solution du système. On montre de manière indépen
dante que tout système en commutatif admet aussi une solution rationnelle. Une autre
preuve plus élémentaire se trouve en [Koz97, p. 201].
L’exemple suivant illustre l’énoncé du théorème.
Exemple 2.31. Au langage algébrique {a^b'^ | n > 0}, on peut par exemple associer
le langage rationnel R = {ab)* tel que L = R.
Nous montrons ici que les langages algébriques engendrés par une grammaire propre
sont la solution unique du système commutatif associé à la grammaire.
96 Chapitre 2. Langages algébriques
Soit G = (i4, Vy P) une grammaire dont l’ensemble des variables est V = { X i , . . . , Xn)
et soit L = ( L i , . . . , Ln) un n-uplet de langages sur A. Soient u e i v deux mots sur l’al
phabet A + V . Siû = v alors u{L) = v{L), Cette propriété s ’étend aisément aux langages.
Si les deux langages J et K sur A -\-V vérifient J = K alors l’égalité J{L) = K{L) est
vérifiée.
Soit G = {Ay Vy P) une grammaire dont on suppose par commodité que l’ensemble
des variables est { X i , . . . ,X n}. On associe à cette grammaire un système d’équations
S {G) obtenu en considérant le système S {G) pour les langages de la forme K . Une
solution de S (G) est donc un un n-uplet L = ( L i , . . . , Ln) de langages tel que
P ro p o sitio n 2.32 (Unicité des solutions propres en commutatif). Soit G une grammaire
propre. Alors L q est Vunique solution propre de S {G).
Preuve. La preuve de la proposition 2.28 peut être reprise mutatis mutandis. En effet
l’argument essentiel de cette preuve est un argument de longueur qui reste valable dans
le cas commutatif. □
Nous montrons ici que tout système d’équations en commutatif associé à une gram
maire admet une solution rationnelle. Pour cela, on considère des grammaires générali
sées où l’ensemble des productions de chaque variable n’est plus un ensemble fini mais
un ensemble rationnel de mots.
D éfin ition 2.33. Une grammaire étendue G est un triplet {Ay V, P) où A et V sont des
alphabets finis et disjoints et où P est une partie de F x (A -f F)* telle que pour tout
X eV y l’ensemble {w | (X, w) G P } est rationnel.
P {X ) = Q (X )X
OÙ Q{X) peut être choisi rationnel. Il suffit de prendre pour Q{X) l’ensemble des mots
de P {X ) où la première occurrence de X a été supprimée.
Le système S{G) s’écrit alors
L = Q{L)L + T.
Q{R)R + T = Q{Q(T)*T)Q{T)*T + T
= Q{T)Q{T)*T + T par le lemme précédent
= Q{T)*T Q{T)* = Q {T)Q{TY-\-e
= R.
Comme la grammaire Go a une seule variable, on utilise le cas précédent pour obtenir
une solution Bo(X') du système <S(Go) qui vérifie donc l’égalité suivante.
Ro(X') = So(Ro(X'),X') ( 2. 1)
On introduit la grammaire étendue G' en remplaçant, dans les autres règles, X q par
la solution Ro(X^) de <S(Go). Plus formellement, la grammaire G' est donnée par
Il faut remarquer que la grammaire G' est étendue même si la grammaire G ne Test
pas. En effet, la variable X q est substituée par un langage rationnel. Ceci explique la
nécessité de considérer des grammaires étendues pour la preuve du théorème.
^ Puisque G' a n variables, l’hypothèse de récurrence peut être appliquée. Il existe n
- langages rationnels i î i , . . . , iln sur A qui forment une solution ü ' = ( ü i , . . . , En) du
^système 5(G '). Ils vérifient donc les égalités
D éfin itio n 2.36 (Arbre de dérivation). Soit G = (A, V, P) une grammaire. Un arbre
de dérivation est un arbre fini étiqueté par A U V U {e} vérifiant la propriété suivante.
Si S est rétiquette d’un nœud interne et si a i , . . . , an sont les étiquettes de ses fils alors
5 ai ••• an est une règle de G. La frontière d’un arbre de dérivation est le mot obtenu
par concaténation des étiquettes des feuilles de gauche à droite. Si la frontière contient
au moins une variable, l’arbre est un arbre de dérivation partielle
T
/ \ r
s T a S â
€ a S a
e a S a
Exemple 2.37. Soit la grammaire définie par les règles { 5 ->> 5T + £:,r aSa}, La
figure 2.1 exhibe un arbre de dérivation pour cette grammaire. La frontière de cet arbre
est le mot aaaàaâ.
P ro p o sitio n 2.38. Le langage L g {S) (resp. L g {S)) est Vensemble des mots w e A*
(resp. {A + V y ) tels quHl existe un arbre de dérivation (resp. partielle) ayant S à la
racine et dont la frontière est w.
Preuve. La preuve est immédiate dans la mesure où un arbre de dérivation est simple
ment une autre façon de visualiser une dérivation. Une preuve formelle peut être faite
par récurrence sur la longueur de la dérivation. □
2.3.1 Ambiguïté
La notion d’ambiguïté est l’analogue pour les grammaires du non déterminisme des
automates. De manière intuitive, une grammaire est non ambiguë, si elle engendre chaque
mot d’une façon au plus. Contrairement au cas des automates, toute grammaire n’est
pas équivalente à une grammaire non ambiguë. Certains langages algébriques ne sont
engendrés que par des grammaires ambiguës.
D éfin itio n 2.39 (Grammaire ambiguë). Une grammaire G est dite ambiguë s’il existe
un mot ayant au moins deux arbres de dérivation distincts étiqueté à la racine par la
même variable S.
100 Chapitre 2. Langages algébriques
S S
/ \ / \
s s S s
s
/\
s
I
a
I
a s
/\s
a
I I
a
Exemple 2.41. La grammaire S SS + a est ambiguë car le mot aaa a deux arbres de
dérivations (cf. figure 2.2). Par contre, le langage engendré Lg (S) = a+ est non ambigu
car il est également engendré par la grammaire S aS a qui est non ambiguë.
Les propositions 2.48 et 2.50 établissent qu’il existe des langages algébriques inhé-
remmént ambigus.
Le but de cette partie est d’établir un analogue du lemme de l’étoile pour les langages
algébriques. Pour cette raison, ce lemme dû à Ogden est aussi appelé lemme dHtération.
Il permet de montrer que certains langages ne sont pas algébriques ou que certains
langages algébriques sont inhéremment ambigus. On commence par un lemme purement
combinatoire sur les arbres.
Soit un arbre où certaines feuilles sont distinguées. On dit que :
- un nœud est distingué lorsque le sous-arbre dont il est racine contient des feuilles
distinguées.
- un nœud est spécial lorsqu’il a au moins deux fils distingués.
Par définition, un nœud spécial est aussi distingué. Le parent d’un nœud distingué est
encore distingué. En particulier, la racine de l’arbre est distinguée dès que l’arbre a au
moins une feuille distinguée. Rappelons qu’un arbre est dit de degré m si chaque nœud
a au plus m fils. Le lemme suivant établit un lien entre le nombre de feuilles distinguées
et le nombre de nœuds spéciaux qui se trouvent sur une même branche.
L em m e 2.42. Soit t un arbre de degré m avec k feuilles distinguées. Si chaque branche
de t contient au plus r nœuds spéciaux, alors k < n f .
Preuve. Pour deux nœuds x et x' d’un arbre, on appelle plus petit ancêtre commun le
nœuds 2; où les deux chemins de x et de x' à la racine se rejoignent. Les nœuds x et x'
sont deux descendants de z mais ils ne sont pas descendants d’un même fils de z. Si x
et x' sont deux feuilles distinguées, leur plus petit ancêtre commun est donc un nœud
spécial.
2.3 Arbres de dérivation 101
Preuve, m la longueur maximale des membres droits des règles. Puisque / appar
tient à ¿G (5'), il existe un arbre de dérivation t dont la racine est étiquetée par S et
dont la frontière est le mot / . Par définition de m, l’arbre t est de degré m. Les feuilles
distinguées de t sont celles étiquetées par les lettres distinguées de / .
On pose r = 21^1 + 2 et i f = + 1. Comme l’arbre t a i f feuilles distinguées, il
a, d’après le lemme précédent, au moins une branche B ayant au moins r + 1 nœuds
spéciaux xo^...yXr. Chaque nœud Xi a par définition au moins deux fils distingués dont
l’un est sur la branche B. Le nœud Xi est dit gauche (respectivement droit) s’il a un
autre fils distingué à gauche (respectivement à droite) de la branche B. Il peut être
simultanément gauche et droit : il est alors arbitrairement considéré comme gauche.
Parmi les r + 1 = 2\V\ + 3 nœuds x o, . .. ,Xr., au moins \V\ + 2 d’entre eux sont tous
gauches ou tous droits. On pose alors k = \V\ + 1. Par symétrie, on suppose qu’il
existe des indices 0 < io < • • • < ik < r tels que les nœuds 2:^0, • • •, soient gauches
(cf. figure 2.3 pour un exemple). Comme k est supérieur au nombre de variables, deux
nœuds Xj^ et Xj^ parmi les nœuds Xi^,... Xi^ sont nécessairement étiquetés par la même
variable T.
Le mot est alors découpé comme le suggère la figure 2.4. Le fait que le nœud Xi^
soit gauche garantit que a contienne des lettres distinguées. De même, les nœuds Xj^ et
102 Chapitre 2. Langages algébriques
Xq
/ \
/ X
/ \
Xj
/ \'
/ \
/ \
a u P V 'y
F igure 2.4 - Découpage d’un mot par le lemme d’Ogden
2.3 Arbres de dérivation 103
Dans le cas où toutes les lettres de / sont marquées, on obtient le corollaire suivant.
C orollaire 2.44 (Théorème de Bar-Hillel, Perles et Shamir). Pour tout langage algé
brique Lj il existe N > 0 tel que pour tout mot f E L, si \f\ > N alors on peut trouver
une factorisation f = aupvy tel que \uv\ > 0, \u^v\ < N et au^jSv'^'y e L pour tout
n > 0.
Dans cette partie, on applique le lemme d’itération pour montrer que certains lan
gages classiques ne sont pas algébriques et que certains langages algébriques sont inhé-
remment ambigus. Nous commençons par une application directe du corollaire précédent.
Preuve. Le corollaire précédent suffit pour prouver que le langage L n’est pas algébrique.
Soit N l’entier fourni par le corollaire. On considère le mot f\ = a^b^c^ € L qui se
factorise f\ = au/Svy tel que fn = au^^v'^j G L pour tout n > 0. Chacun des mots u
et V ne contient qu’une seule des lettres a, b ou c. Sinon le mot /2 n’appartient pas à
a*b*c* D L. Il en découle que /2 ne peut pas appartenir à L car les nombres d’occurrences
de a, 6 et c ne sont plus égaux. □
C orollaire 2.46. La classe des langages algébriques n^est close ni par intersection ni
par complémentation.
Preuve. Le langage {a^6^c^ | n > 0} est l’intersection des deux langages algébriques
{d^b^c^ I m ,n > 0} et {a^6^c^ | m ,n > 0}. Puisque la classe des langages algébriques
est close par l’union, elle ne peut pas être close par complémentation. Sinon, elle serait
aussi close par intersection.
On peut aussi montrer directement que la classe des langages algébriques n’est pas
close par complémentation en considérant le langage L = {a^b^c^ | m ^ n ou n ^ p}.
Ce langage est bien sûr algébrique mais son complémentaire ne l’est pas. Pour montrer
ce dernier fait, on constate que le langage a*b*c* D {A* \ L) est égal à | n > 0}
qui n’est pas algébrique. On utilise la propriété que l’intersection d’un langages rationnel
et d’un langage algébrique est encore algébrique (cf. proposition 2.54) pour conclure. □
Preuve. Supposons qu’il existe une grammaire G telle que L = L g {S). Soit k l’entier
fourni par le lemme d’itération. On applique le résultat au mot / = où les k
lettres distinguées sont les lettres b. D ’après le lemme d’itération, il existe des dérivations
S 4 b^Té
Nous terminons par une application assez astucieuse du lemme d’itération pour mon
trer qu’il existe des langages inhéremment ambigus.
Preuve. Chacun des langages {a ^ 6^c^ | m, n > 0 } et {d^V^c^ | m, n > 0} est bien sûr
algébrique et le langage L est donc aussi algébrique. Soit G = (A, F, P) une grammaire
telle que L = L g {Sq)- On montre que la grammaire G est ambiguë en montrant qu’un
mot de la forme a^b^c^ a au moins deux arbres de dérivation.
Soit k l’entier fourni par le lemme d’itération. On applique le résultat au mot /1 =
^kfjk^k-\-k\ Yes k lettres distinguées sont les b. D ’après le lemme d’itération, il existe
des dérivations
So A aS^ A auSv^ A a u ^ vj = /1
Les conditions impliquent que u = d^ et v = b'^ pour un entier 0 < z < fc. En itérant
k\/i fois la dérivations S A uSv on obtient un arbre de dérivation pour le mot / =
aj-bre Contient un sous-arbre dont la frontière ne contient que des
lettres a et 6 dont au moins k\ —k lettres b.
En appliquant le même procédé au mot /2 = a^'^^’b^c^y on obtient un autre arbre
de dérivation pour le même mot / . Cet arbre contient un sous-arbre dont la frontière ne
contient que des lettres 6 et c dont au moins fc! —fe lettres b. Cet arbre est donc différent
du premier arbre trouvé. □
Li = {ww I w G A*}
L 2 = {w # w I w G A*}
L 3 = {wi^w' \WyW^e A*yW w' et |u;| = \w'\}
de / en au fivj tel que \uv\ > 0, \uPv\ < N. Cette dernière condition empêche d’avoir
U= V = ouu = V = b^.Le mot n’appartient pas L et c’est une contradiction.
Le langages L 3 est plus délicat à traiter. On considère à nouveau la langage L 3 =
L3 n qui est égal à {à^b^#aPb^ j m + n = p + g et m ^ p}. Si ce langage
est algébrique, le lemme d’Ogden fournit un entier N et on note M = N\. On considère
le mot / = . On applique le lemme d’Ogden en marquant les N
premiers a. On obtient une factorisation / = au^v^ tel que |г¿î;| > 0, \u^v\ < N. Le
mot U est nécessairement de la forme pour k < N .L e mot v est aussi de longueur k.
Il est égal à ou à b^ et ces lettres se situent à droite du # . Si v est égal à 6^, on peut
en pompant obtenir le mot car k divise M. Comme ce mot n’est
pas dans L, le mot v est égal à a^. Le mot P est alors de la forme . On
applique à nouveau le lemme d’Ogden au mot P en marquant N lettres b. On obtient
une factorisation où u' est de la forme b^' et v' est de longueur fc' et ne
contient que des a ou que des b. Si est de la forme b^ , on obtient une contradiction
en pompant. Si v' est de la forme , on recommence avec Comme le nombre de b
est beaucoup plus grand que le nombre de a, on aboutit à une contradiction après un
certain nombre d’étapes.
Il est souvent difficile de montrer qu’un langage algébrique donné est inhéremment
ambigu. Lorsque le lemme d’itération n’est pas adapté, une autre méthode consiste à
utiliser la fonction génératrice du langage L définie par
Î l {z ) = 53 a„ = |L n i4"|.
n >0
Si le langage est non ambigu, la fonction / l (^) est algébrique car elle est solution du
système commutatif associé à une grammaire non ambiguë qui engendre L. En utilisant
cette méthode, on peut par exemple montrer le théorème suivant (cf. exemple 2.8 p. 85
pour la définition du langage de Goldstine).
Preuve. Nous donnons juste une idée de la preuve qui fait appel à des éléments d’analyse
pour lesquels nous renvoyons le lecteur à des ouvrages spécialisés. Un mot n’est pas dans
le langage de Goldstine soit parce qu’il se termine par la lettre a soit parce qu’il est de la
forme baba^ba^b • • • à^b pour n > 0 . Ceci montre que la fonction génératrice du langage
de Goldstine est égale à (1 - z ) / { l —2 z) —g{z) où la fonction g{z) est égale à
n>l
Cette partie est consacrée à quelques propriétés de clôture classiques des langages
algébriques. Nous montrons que la classe des langages algébriques est close pour les
opérations rationnelles, les substitutions algébriques, les morphismes inverses et l’inter
section avec un langage rationnel. Ces différentes propriétés permettent d’aborder le
théorème de Chomsky et Schützenberger qui établit que les langages de Dyck sont en
quelque .sorte les langages algébriques génériques. Tout langage algébrique est l’image
par un morphisme d’une intersection d’un langage de Dyck avec un langage rationnel.
On commence par les opérations rationnelles qui montrent que les langages algé
briques généralisent les langages rationnels.
P ro p o sitio n 2.51 (Opérations rationnelles). Les langages algébriques sont clos par
union, concaténation et étoile.
Preuve. Soient G = {A, V, P) et G' = (A, P') deux grammaires telles que L = L g {S)
et L' = L g'(S"). On suppose sans perte de généralité que V fl F' = 0 .
- Le langage L -h L' est égal à L g i (So) o ù la grammaire Gi est égale à {A, { 5 q} U
F u r , { 5 o - ^ 5 + 5'}UPuP')
- Le langage LL' est égal à LcaC^'o) où la grammaire G 2 est égale à {A, {5o} U F U
F',{5o-^55'}UPUP')
- Le langage L* est égal à L g ^(Sq) o ù la grammaire G3 est égale à {A, {5o}UV, {S q
SS q + ^} U P )
□
Le corollaire suivant découle directement de la proposition précédente.
Preuve, Soient G = (A, V^P) une grammaire telle que L = L g {S) et a : A ÎÎ(P*),
une substitution algébrique. Pour tout a € A, soit G a = {B,Va,Pa) une grammaire
telle que cr(a) = LoaiSa)- Quitte à renommer des variables, on peut supposer que les
ensembles de variables de toutes ces grammaires sont disjoints deux à deux.
On considère alors la grammaire G' = {B^V U |Ja P' U |Ja ^a) où P' = { 5 ^
p{w) \ S w £ P } où \e morphisme p est défini par p{S) = S pour tout S £ V, et
p{a) = Sa pour tout a £ A. Cette grammaire engendre (t{L). □
On montre dans cette partie que l’intersection d’un langage rationnel et d’un langage
algébrique est encore un langage algébrique.
P ro p o sitio n 2.54 (Intersection avec un rationnel). Si L est un langage algébrique et
K un langage rationnel, alors K C\L est algébrique.
L’intersection de deux langages algébriques n’est pas algébrique en général comme
cela a été vu au corollaire 2.46 (p. 103).
Preuve. Soit G = {A,V,P) une grammaire telle que L = L g {T). Sans perte de généra
lité, on peut supposer que G est en forme normale quadratique. Cette condition n’est
pas indispensable à la preuve mais simplifie les notations.
M é th o d e des a u to m ates Soit A = {QyA,E, {¿}, { / } ) un automate normalisé accep
tant le langage K. Le langage KC\L est engendré par la grammaire G' = {A, V \ P')
définie de la façon suivante.
V' = { S p , \ S £ V e t p,q £Q},
L = aLh + Û{e + f ) Û.
L= I m, n, p, g > 0}
= {a'^Va^b^ \ i j j i k , £ > 0 et i + k = j + £}
= {w e K \ \w\a = |tü|i,}
m+ n= 2
n+p= j
p+ g= k
q+ m = £
4. La grammaire G est ambiguë car le mot w = abab a deux arbres de dérivations cor
respondant aux dérivations S UU abab et S aTb abab. La grammaire
suivante G' est non ambiguë et le langage L est égal à L g '{S).
S ^ V - \ - UTU
V ^ a V b -h U U
T -> 6Ta + ba
U —y aUb + ab
5. Par le lemme de l’étoile, tout langage rationel infini contient un langage de la forme
uv*w où u^v^w e A* et V ^ e. Il suffit donc de montrer que L ne contient aucun
langage de cette forme. Si u contient des lettres a et des lettres 6, alors uv'^w ^ K
pour n assez grand. Il s ’ensuit que u ne contient que des a ou que des b. Pour n
assez grand, le mot uv^w n’appartient pas à {w | \w\a = |iî;|6} qui contient L.
6. Pour un mot w £ A*^ on note S{w) = \w\a —\w\b. Soient X et y des langages tels
que L = X Y . Pour tout mots x € X et y G y , on a ô{x) = —S{y). On en déduit
que si x ,x ' G X , alors S{x) = i(x ') et que si y, y' G y , alors i(y ) = S{y'). On
note ¿(X) et 5 (y ) ces valeurs communes. Comme le mot abab appartient à L, on
a ¿(X) = Ô{Y) = 0 ou ¿(X ) = -S {Y ) = 1.
2 .4 .4 M o rp h ism e in v e rse
On montre dans cette partie que l’image inverse par un morphisme d’un langage algé
brique est encore algébrique. Le résultat n’est pas immédiat pour la raison suivante. Tout
mot w d’un langage algébrique a une factorisation w = w i - - Wm induite par un arbre
de dérivation. Si le mot w est aussi l’image par un morphisme /x d’un mot îx = ai • • • a^,
il a une autre factorisation w = w[ - où w!^ = fi{ai). Ces deux factorisations ne
coïncident pas a priori La preuve du résultat s’appuie sur une décomposition astucieuse
d’un morphisme inverse avec des morphisme alphabétiques. Cette décomposition est en
soi un résultat intéressant. On commence par la définition d’un morphisme alphabétique.
(J* < ^ G*
si i = 0 , .. [a si i = 0
g{a,i) = et
si Z > 1 \e SI Z > 1
où h{a)[i] est une notation pour la ¿-ième lettre du mot h{a). Il reste encore à vérifier
que les morphismes définis conviennent mais c’est de la pure routine. □
Po = { T ^ Y , a r + e},
ûGAo
Pi = {S T uiT • • • TUfiT I Ui G { y U Al)*, S —> h{ui • 'Un) GP} .
On vérifie que la grammaire G' engendre le langage h~^{L). Ensuite, pour étendre ce
résultat à un morphisme h quelconque, il suffit d’appliquer le lemme précédent. L’inter
section avec le rationnel K découle de la propriété précédente. □
Le théorème suivant établit que les langages de Dyck (cf. exemple 2.8 p. 85 pour
la définition) sont des langages algébriques génériques. Ils sont générateurs du cône des
langages algébriques. On peut consulter [Aut87] pour une preuve plus détaillée de ce
théorème.
2.4 Propriétés de clôture 111
Preuve. La condition est suffisante grâce aux propriétés de clôture des langages algé
briques.
Réciproquement, soit G = (A, V,P) une grammaire telle que L = L g {Sq) pour S q G
V. D ’après la proposition 2.22, on peut supposer que G en forme normale quadratique.
Les règles de G sont donc de la forme S S 1 S2 pour 8 1 , 8 2 ou de la forme 8 a
pour a e A. f^our chaque règle r du premier type, on introduit six nouveaux symboles
Or, hr, Cry âr, br et Cy. Pour chaque règle r du second type, on introduit deux nouveaux
symboles ar et Soit A' l’ensemble de toutes les nouvelles lettres introduites :
Soit Dn le langage de Dyck sur l’alphabet de parenthèses A'. L’entier n est donc égal
à trois fois le nombre de règles de la forme 8 8 1 8 2 plus le nombre de règles de la
forme 5 -> a. On définit alors la grammaire G' = (A ',V ,P ') où les règles de G' sont
en correspondance avec les règles de G. Pour chaque règle r de G, il existe une règle r'
de G' définie de la manière suivante.
- Si r est la règle 8 8 1 8 2 , alors r' est la règle 8 arbr8 ibrCr8 2 Cràr^
- Si r est la règle 8 a, alors r' est la règle 8 arâr-
On définit finalement le morphisme cp : A'* -> A* de la façon suivante. Si r est une
règle de la forme 8 -> 8 1 8 2 , on pose ip par (p{ar) = ^{br) = p{cr) = (p{âr) = (p(br) =
ip{cr) = €. S ir est une règle de la forme 5 —> a, on pose (p{ar) = a et (p{ür) = e.
Les définitions des règles de G' et du morphisme p impliquent immédiatement que
L = L g {8 o) = (p {Lg '{8 o))> L’inclusion L g '{ 8 q) C D* découle directement de la forme
particulière des règles de G'. Il reste maintenant à définir un langage rationnel K tel que
LG^{8 o) = D*^r\K.
On va définir un langage local K qui exprime les contraintes entre les paires de
lettres consécutives de A' dans L g '{ 8 q). Soit A q l’ensemble des lettres où r est une
règle ayant 8 0 pour membre gauche. Soit K le langage local K = A qA'* \ A^*WA'* où
l’ensemble W est défini par
U {aràr I r = 5 -> a}
U {brat, âtbr \ r = 8 8182 et t = 81
Preuve. Il est facile de vérifier que le morphisme ^ défini par '(¡){ak) = aia^ai et =
àià^ài pour 1 < A: < n convient parfaitement. □
nüT -DI
LfG'iSoh
J
D%
D éfin itio n 2.61 (Forme normale de Greibach). Une grammaire G = (A^V^P) est
en forme normale de Greibach si chacune de ses règles est de la forme S w où w
appartient à AV*. Si de plus chaque w appartient à A + AV + la grammaire est
en forme normale de Greibach quadratique.
P ro p o sitio n 2.62 (Forme normale de Greibach). Toute grammaire propre est équiva
lente à une grammaire en forme normale de Greibach quadratique.
La preuve initiale de Greibach donnait seulement une grammaire en forme normale
non quadratique. Nous allons d’abord présenter une première preuve plus élémentaire
qui donne une grammaire en forme normale de Greibach. Nous donnons ensuite la preuve
due à Rosenkrantz qui est plus concise et donne en plus une grammaire en forme normale
quadratique. Le théorème peut encore être raffiné en introduisant des formes normales
bilatères où les membres droits des règles appartiennent à A + AA H- AVA H- AVVA. La
preuve de ce résultat dû à Hotz est cependant plus difficile.
Preuve élémentaire. Il suffit de trouver une grammaire avec des règles de la forme S w
oùw e A{A-\-Vy. On se ramène alors à une grammaire en forme normale de Greibach en
2.5 Forme normale de Greibach 113
introduisant une nouvelle variable Ta avec la règle Ta a pour chaque lettre terminale a
et en remplaçant chaque occurrence de a par Ta dans les autres règles.
Soit G = (i4, V, P) une grammaire où on suppose que V = { X i , . . . , Xn}. On pose
Go = G et on définit par récurrence une suite Go, . . . , Gn de grammaires telles que dans
chaque grammaire Gi les variables X i , . . . n’apparaissent pas en tête des membres
droits de règles. On suppose avoir construit la grammaire G^-i et on construit la gram
maire Gi par les deux étapes suivantes.
1. On commence par supprimer Xi en tête des productions de Xi. Soient
les règles de G i-i ayant Xi comme membre gauche où les mots w i , ... ^Wp ne com
mencent pas par la variable Xi. Par hypothèse de récurrence, les mots wiy. ..y Wp
ne commencent pas par une variable Xj pour 1 < 3 < i — 1 . On introduit une
nouvelle variable X- et on remplace les règles précédentes par les nouvelles règles
Xi + • • *+ WpX[ H- w\ + *• • + Wp
Xl U\X[ + • • • + UkX^ + + • • • + Uk-
■ A —y cbA^ 4" a
^ AB -|- d
A' -^ B A '^ -B
Go BC + b G\
B
>GA + c
C ->• CA-\-c
' A —^ dA! “1“ il
A —y cbA^ “h CL
A' hB'A' + hA' + bB' + b
A! -> bB'A! -F bA! -\-bB' + b
B -^bB' + h
G2< B ^ b B '-}-b Gs<
B' cC'B' + cB' + cC' + c
B' --y GB' + G
C -> c C + c
G ^ CA+ c
c ^ aA 'C + dC^ “h dA^ “h d
X - ^ P.
X ^ X R + S.
X -^ S Y
Y -^ R Y + I
XkÇiRij
X SY
Y R!Y + 1
est encore équivalente à la grammaire G, On supprime les e-règles de G" pour obtenir
une grammaire en forme normale de Greibach quadratique équivalente à G. □
contient tous les symboles qui peuvent être mis dans la pile. La transition effectuée
par l’automate dépend de l’état de contrôle, de la lettre lue dans le mot d’entrée et du
symbole au sommet de la pile. Chaque transition remplace le symbole au sommet de la
pile par un mot éventuellement vide sur l’alphabet de pile. Ce dernier cas correspond à
un dépilement. Effectuer une transition fait passer à la lettre suivante du mot d’entrée
qui est donc lu séquentiellement de gauche à droite. On introduit aussi des e-transitions
qui ne lisent aucune lettre du mot d’entrée. Ces transitions ne sont pas absolument
nécessaires dans le cas des automates non déterministes. Il est possible de les supprimer
même si ce n’est pas immédiat. Par contre, ces e-transitions sont indispensables pour
les automates déterministes.
D éfin itio n 2.64 (Automate à pile). Un automate à pile est constitué d’un alphabet
d’entrée A, d’un alphabet de pile Z dont un symbole initial € Z, d’un ensemble fini
d’états Q dont un état initial qo et de transitions de la forme q^z ^ q \ h avec g, q' G Q,
2/ G A U {e}, G Z et G Z*. Le mot y qui est soit une lettre soit le mot vide est
Vétiquette de la transition.
L’état initial qo est l’état de contrôle dans lequel se trouve l’automate à pile au début
d’un calcul. Tout au long d’un calcul, la pile de l’automate n’est jamais vide. Le calcul
se bloque dès que la pile devient vide. Le symbole de pile initial zq est le symbole qui
est mis dans la pile avant de commencer tout calcul.
Une configuration d’un automate est un état instantané de l’automate qui comprend
l’état de contrôle et le contenu de la pile. Le contenu de la pile est vu comme un mot sur
l’alphabet de pile. On appelle configuration une paire (g, h) de Q x Z*, La configuration
initiale est (qo^zo) où qo et zq sont respectivement l’état initial et le symbole de pile
initial. La notion de calcul pour un automate à pile est l’équivalent d’un chemin pour
un automate fini. Il est constitué d’une suite d’étapes de calcul consistant à effectuer
une transition de l’automate.
D éfin itio n 2.65 (Calcul d’un automate à pile). Une étape de calcul est une paire de
configurations (C, C") notée C ^ C' telles que C = (p, zw)^ C = (g, hw) et p ,z ^ q,h
est une transition de l’automate. Un calcul de l’automate est une suite d’étapes de calcul
consécutives :
2/2, 2/n,
Cn.
Le mot 2/1 ■ •2/n est Vétiquette du calcul.
Effectuer une transition p^z ^ q^h d’un automate à pile consiste à passer de l’état p
à l’état g, à lire le mot 2/ et à remplacer le symbole 2; du sommet de pile par le mot h.
Une transition est impossible dès que la pile est vide et le calcul se bloque. La transition
peut soit dépiler si h est vide, soit remplacer le symbole de sommet de pile si h est de
longueur 1, soit empiler si h est de longueur au moins 2. On parle d’e-transition lorsque
y est le mot vide.
On utilise la même notation pour une transition et une étape de calcul dans la mesure
où une transition p^z ^ q^h peut être vue comme une étape de calcul de la configuration
(p, z) à la configuration (g, h) en prenant w = e.
Dans la définition précédente, le contenu de la pile est écrit de haut en bas. Le sommet
de pile se situe donc à gauche du mot de pile. Certains ouvrages utilisent la convention
inverse où le sommet de pile se situe à droite. Aucune des conventions n’est parfaite
116 Chapitre 2. Langages algébriques
et n’évite de passer au mot miroir dans certaines preuves. La convention adoptée dans
cet ouvrage simplifie la preuve d’équivalence entre grammaires et automates à pile (cf.
théorème 2.71). Par contre, la preuve en complément que l’ensemble des contenus forme
un langage rationnel (cf. théorème 2.84) nécessite un passage au mot miroir.
Il reste à définir les configurations finales qui déterminent les calculs acceptants et
par conséquent les mots acceptés par l’automate. Il existe plusieurs modes d’acceptation
pour définir ces configurations finales. Les principaux modes utilisés sont les suivants.
Ils sont tous équivalents pour les automates non déterministes. Pour les automates dé
terministes, le mode d’acceptation par pile vide est plus faible car le langage accepté est
nécessairement un langage préfixe.
p ile v id e : les configurations finales sont toutes les configurations de la forme (g, e)
où la pile est vide.
éta t final : les configurations finales sont toutes les configurations de la forme (g, w)
où l’état q appartient à un sous-ensemble F d’états distingués de Q et où le contenu
de la pile est quelconque.
so m m et de p ile : les configurations finales sont les configurations {q^zw) où le
sommet de pile z appartient à un sous-ensemble Z q de symboles de pile distingués
de Z.
com bin aison : toute combinaison des trois premiers.
Un mot / est accepté par un automate à pile s’il existe un calcul d’étiquette / de la
configuration initiale (qo^zo) à une configuration finale.
Exemple 2.66. Soit l’automate à pile défini sur les alphabets d’entrée et de pile A = {a, b}
et Z = {z} avec les états Q = {qo^Qi} et comportant les trois transitions suivantes :
Cet automate à pile accepte par pile vide Tensemble des palindromes non vides (cf.
exercice 2.9 p. 86). Il fonctionne de la façon suivante. Dans la première moitié du mot,
l’automate empile les lettres lues. Dans la seconde moitié du mot, il vérifie que les lettres
lues coïncident avec les lettres dépilées. Plus précisément, les deux transitions de ço à qi
remplacent le symbole de pile initial par la lettre lue. Tant que l’automate est dans
l’état çi, il empile la lettre lue. Le passage de qi à q2 se fait soit en empilant la lettre
lue pour un palindrome de longueur paire soit en l’ignorant pour un palindrome de
longueur impaire. Dans l’état Ç2, l’automate dépile et vérifie que les lettres coïncident.
Cet automate n’a aucun moyen de déterminer la moitié du mot. Il est donc essentiel
qu’il soit non déterministe.
P ro p o sitio n 2.68 (Équivalence des modes d’acceptation). Les différents modes d^ac-
ceptation sont équivalents dans la mesure où ils permettent tous d*accepter exactement
les mêmes langages (les langages algébriques).
Un des problème des automates à pile est que le calcul se bloque dès que la pile
devient vide. Cette difficulté peut être contournée en utilisant des automates à fond
de pile testable qui peuvent tester si le sommet de pile est le dernier symbole dans la
pile. Un automate est dit à fond de pile testable si son alphabet de pile est partitionné
Z = Z q \S Zi de sorte que le contenu de la pile de toute configuration accessible a un
symbole de Z q au fond de la pile et des symboles de Zi au dessus. Ceci signifie que le
contenu de pile appartient k Z^Zq. Lorsque l’automate voit un sommet de pile de Z q il
sait que celui-ci est le dernier symbole de la pile.
Il est possible de transformer un automate à pile quelconque en un automate à fond
de pile testable. Pour cela, il faut doubler la taille de l’alphabet de pile en introduisant
une copie z de chaque lettre z de Z. On pose alors Zq = {^ | € Z} et Zi = Z. Chaque
transition p^z q^h donne alors les deux transitions p ,z ^ q^h et p^z q, h!'^ si
h = h^z' avec ft' G Z* et z^ G Z. La première transition est utilisée lorsque la pile
contient au moins deux symboles et la seconde lorsque z est l’unique symbole dans la
pile.
Preuve. Nous montrons uniquement l’équivalence entre les acceptations par pile vide et
par état d’acceptation. Les autres preuves sont similaires.
Soit un automate qui accepte par pile vide. On suppose qu’il est à fond de pile testable
avec une partition Z = Zq \S Z\ des symboles de pile. On ajoute un nouvel état qui
devient l’unique état final. Ensuite, chaque transition q^z ^ q \e avec z e Z q qui vide
la pile est remplacée par une transition q ,z -h q^^e qui fait passer dans l’état final.
Soit un automate qui accepte par état d’acceptation. On suppose encore qu’il est
à fond de pile testable avec une partition Z = Zq l±l des symboles de pile. Il faut
faire attention que certains calculs peuvent se bloquer en vidant la pile. On ajoute deux
nouveaux états q- et et toutes les transitions de la forme g + , 2; ç+, e pour z G Z.
Ces transitions permettent de vider la pile dès que l’état est atteint. Pour chaque
transition ç',ft où ç' est final, on ajoute une transition q^z ^ g+,6: permettant
d’atteindre l’état Toute transition q^z ^ q \e avec z G Z q qui vide la pile sans
atteindre un état final est remplacée par une transition q^z q^^z qui fait passer
dans q- sans vider la pile. □
Exercice 2.69. Donner un automate à pile qui accepte le langage de Dyck D* (cf.
exemple 2.8 p. 85 pour la définition).
118 Chapitre 2. Langages algébriques
Solution, On construit un automate à pile A qui accepte le langage de Dyck par état
d’acceptation. L’automate A a deux états go et q\. L’état go est initial et l’état gi est
final. L’alphabet de pile est Z = {;s:o,âi,. . . ,ân} où zq est le symbole de pile initial.
L’ensemble E des transitions est donné ci-dessous.
Cet automate fonctionne de la façon suivante. Si l’automate lit a^, la lettre âi est empilé
quelque soit le symbole de haut de pile. Si l’automate lit âf, le symbole de haut de pile
doit être âi et celui-ci est dépilé. Cet automate accepte aussi le langage de Dyck par pile
vide.
On appelle automate à un compteur un automate à pile à fond de pile testable avec
seulement deux symboles de pile. La partition de l’alphabet de pile est nécessairement
^0 = { zq} et Zi = {z\}. Si Zo ou Z\ est vide, le nombre de contenus de pile est fini et
l’automate à pile est en fait un automate fini. Les contenus de la pile sont les mots de
zI zq. La seule information pertinente de la pile est le nombre de symboles dans celle-ci.
La pile est en fait utilisée comme un compteur pouvant contenir un entier positif ou nul.
Ceci justifie la terminologie. Le fond de pile testable permet à l’automate de tester si
la valeur du compteur est nulle. L’automate construit dans la solution de l’exercice 2.69
est un automate à un compteur pour n = 1. Pour n > 2, le langage de Dyck D* ne peut
pas être accepté par un automate à un compteur.
Exercice 2.70. Un automate à pile A est dit normalisé si pour toute transition p, z ^ q^ h
de A, le mot h qui remplace 2; sur la pile appartient à e + 2;+ Z 2; où Z est l’alphabet de
pile. Ceci signifie que chaque transition peut soit dépiler un symbole (cas h = e), soit
laisser inchangé le symbole de haut de pile (cas h = z)^ soit ajouter un symbole sur la
pile (cas h G Zz).
1. Montrer que tout automate à pile est équivalent à un automate à pile normalisé.
2. Montrer que tout automate à pile sans e-transition est équivalent à un automate
à pile normalisé sans e-transition.
Solution.
1. La normalisation d’un automate à pile est relativement aisée si les ^-transitions
sont autorisées. Chaque transition p, z -% g, /1 où h = /in • • • est remplacée par
une première transition p , 2: gi,e^ qui dépile le symbole 2?. On ajoute ensuite des
transitions go, qi^hiz' pour chaque z' G Z pour empiler le premier symbole h\
quel que soit le symbole z' en haut de la pile. On ajoute encore des transitions
qi-i^hi-i -% gi, hihi-i pour empiler les symboles hi pour 2 < z < n —l e t finale
ment une transition qn -i,h n -i q,hnhn-i pour empiler le dernier symbole hn-
Les états go, . . *, gn-i sont bien sûr des nouveaux états introduits spécialement
pour la simulation de la transition p, 2?^ g, h.
2. La normalisation d’un automate à pile devient plus délicate si les ^-transitions ne
sont plus autorisées. L’idée générale est de regrouper les symboles de la pile en
blocs que l’on considère comme un nouvel alphabet. Le dernier bloc non complet
est codé au niveau des états du nouvel automate.
2.6 Automates à pile 119
On montre dans cette partie que les automates à pile sont équivalents aux grammaires
dans le sens où les langages acceptés par les automates à pile sont exactement les langages
engendrés par les grammaires.
Preuve. On commence par montrer que pour toute grammaire G, il existe un automate
à pile qui accepte les mots engendrés par G. Soit G = (A, V, P) une grammaire telle que
L = L g {S q). On suppose que toute règle de G est soit de la forme S -^ w avec w G V*^
soit de la forme S a avec a e A .l\ suffit pour cela d’introduire une nouvelle variable
Va pour chaque lettre a de A. Cette transformation est identique à la première étape de
la mise en forme normale quadratique (cf. la preuve de la proposition 2.22).
On construit un automate à pile sur l’alphabet d’entrée A. Son alphabet de pile
est l’ensemble V des variables de G et le symbole de pile initial est la variable 5 q. cet
automate a un unique état qo et il accepte par pile vide. Il possède une transition pour
chaque règle de G. Son ensemble de transitions est donné par
Pour les règles du premier ensemble, une lettre de l’entrée est lue et un symbole de pile
est dépilé. Pour les règles du second ensemble, aucune lettre de l’entrée n’est lue et un
ou plusieurs symboles de piles sont empilés. Il est facile de vérifier que cet automate
simule les dérivations gauches de la grammaire.
Lorsque la grammaire est en forme normale de Greibach, l’automate équivalent peut
être construit sans utiliser d’e-transition. On suppose que toute règle de S est de la
forme S aw où a £ A et w G V*. L’ensemble des transitions de l’automate est alors
donné par
{qo, S qo,w \ S ^ aw e P }.
égalités suivantes.
g'eQ
{y \ Q.'i ^ Q. 'i
U (J y^qiyq'yZi
q ,z—fq \,z \
^ U y^qiyq2,ziLq2^q\z2
q,z^qi,z\Z2
La première égalité traduit simplement que l’automate A accepte le langage L par pile
vide et que l’état initial et le symbole de pile initial sont respectivement qo et zq, La
seconde égalité s’obtient en analysant le début du calcul de (g, z) à {q\ e). Si la première
transition dépile z, le calcul s’arrête immédiatement et le mot / est égal à l’étiquette y
de la transition. Si la première transition remplace z par zi, il faut alors un calcul qui
dépile z\. Si la première transition remplace z par 2^2, il y a alors un calcul qui dépile
d’abord z\ puis Z2 > L’évolution de la hauteur de pile lors de ce calcul est illustrée à la
figure 2.7.
Ces égalités se traduisent directement en une grammaire ayant pour variables les
triplets de la forme [q^q^^z). Il est à remarquer que si l’automate ne possède pas d’e-
transition, alors la grammaire obtenue est en forme normale de Greibach. □
q.S^q^ASA q.S^q^A q ^ S^ q ^e q ^A ^q ^e
q^S^q^BSB q^S^q^B q^B —> q,e
Soit ^ un automate à pic ayant les deux propriétés suivantes. Les étiquettes des
transitions sont des lettres distinctes et chaque transition est de la forme q^z ^ g',h
avec h = h = Z OMh Çl Z Z Z est l’alphabet de pile de A. On introduit un automate
A q sans pile et un automate à pic A \ avec deux états. Les états (respectivement initiaux
et finaux) de Ao sont ceux de A et ses transitions sont les transitions de la forme p q
s’il existe z et h tels que p^z q,h soit une transition de A. L’automate A i a un
état qo et qui est initial et un état qi qui est final. Son alphabet de pile est celui de A.
Son ensemble Ei de transitions est défini par la formule suivante.
^ ^ qiif^ \ G Q Py Z ^ q^ h G E et \h\ 1}
7. Montrer que le langage accepté par A^ est égal à l’intersection des langages ac
ceptés par Ao et A i.
8. Montrer que le langage accepté par A i est linéaire.
9. Montrer qu’un langage accepté par un automate à pic est linéaire.
Solution.
1. Soit G = (AyVyP) une grammaire telle L = L g {Sq) pour une variable So- Le
morphisme p peut être étendu à (A+V)* en posant p{S) = S pour toute variable S.
Le langage p{L) est égal à L q »{Sq) o ù la grammaire G' = (A, V, P ') est définie par
P' = { 5 —> p{w) I 5 -> G P }. Si la grammaire G est linéaire, la grammaire G'
est encore linéaire.
2. La grammaire construite dans la preuve de la proposition 2.54 est encore linéaire
si la grammaire du langage algébrique est linéaire.
3. L’automate construit dans la preuve du théorème 2.71 pour le passage d’une gram
maire à un automate à pile n’est pas un automate à pic même si la grammaire
est linéaire. Soit G = (A, V, P ) une grammaire linéaire. On construit un automate
à pile A acceptant par pile vide. Ses alphabets d’entrées et de pile sont respecti
vement A et A 3 - V. Cet automate possède un état initial qo. Pour chaque règle
S uTv où lA = ai • • • ttn, on introduit n — 1 nouveaux états ç i , . . . , qn-i et les
transitions suivantes :
qo^cb^qo^^ pour a G A.
Cet automate est à pic et il accepte L g {So) si le symbole de pile initial est So.
4. Soit A un automate à pile quelconque. Chaque transition p, z /i où |h| > 2 est
remplacée par plusieurs transitions. Si h = • • • Zn, on introduit n —2 nouveaux
2.6 Automates à pile 123
états Ç2, • • •, Çn-1 et la transition p^z ^ h est remplacée par les n - 1 transitions
qn-i,Zn-\Zn
qiyZi qi-iyZi-iZi pour 3 < z < n - 1
Q2 ,Z2 q,ZiZ2 .
Si l’automate de départ est à pic, l’automate obtenu est encore à pile. Chaque
transition qui faisait croître la taille de la pile de n —1 unités a été remplacée par
n — 1 transitions qui font croître la pile d’une seule unité.
5. Cette construction est un peu plus délicate. L’idée principale est de construire un
automate qui mémorise le sommet de pile dans l’état et qui le remplace par un
autre symbole.
6. La langage accepté par l’automate A est l’image du langage accepté par A' par le
morphisme qui envoie chaque lettre üt sur la lettre ou le mot vide qui étiquette la
transition T dans A. D ’après le résultat de la question 1, le langage accepté par A
est linéaire.
7. Dans la mesure où les lettres qui étiquettent les transitions sont distinctes, le mot
d’entrée détermine complètement les calculs dans A^ Ao etAi^ Le fait que le calcul
sur une entrée / soit réussi dans et Ai signifie respectivement que la suite
d’états et la suite des mouvements de piles sont corrects. Le calcul est donc aussi
réussi dans A. La réciproque est évidente.
8. On constate que l’automate Ai est à pic. Un calcul commence dans l’état qo où
les transition augmentent la taille de la pile. Le calcul passe ensuite dans l’état qi
où les transitions diminuent la taille de la pile. Chaque lettre de l’entrée lue par
une transition qui empile un symbole S est en correspondance avec la lettre qui
dépile le symbole S. On en déduit immédiatement une grammaire linéaire pour le
langage accepté par Ai.
9. Le langage accepté par Ao est rationnel et celui accepté par Ai est linéaire. D ’après
les résultats des questions 2 et 7, le langage accepté par A^ est linéaire. D ’après la
question 6, le langage accepté par A est linéaire.
La définition d’un automate à pile déterministe est technique même si l’idée intuitive
est relativement simple. L’intuition est qu’à chaque étape de calcul, il n’y a qu’une seule
transition possible. Ceci signifie deux choses. D ’une part, si une e-transition est possible,
aucune autre transition n’est possible. D ’autre part, pour chaque lettre de l’alphabet
d’entrée, une seule transition au plus est possible.
D éfin itio n 2.75. Un automate à pile (Q, Z, qo^ z q ) est déterministe si pour toute
paire (p, z) Aq Q X Z,
- soit il existe une unique transition de la forme p^z q^h et il n’existe aucune
transition de la forme p^z ^ q^h pour a G
- soit il n’existe pas de transition de la forme p^z q, h et pour chaque lettre a e A^
il existe au plus une transition de la forme p.^z q^ h.
124 Chapitre 2. Langages algébriques
Exemple 2.76. L’automate de l’exemple 2.66 n’est pas déterministe. Pour la paire (go>
cet automate possède une e-transition qo^z qi^e et une transition ^ ço»zzz. Le
langage L\ = | ^ > 0} est accepté par pile vide par l’automate à pile déterministe
ayant les états Q = {çO)Çi,Ç2} et comportant les quatre transitions suivantes :
Dans le cas des automates à pile déterministes, les différents modes d’acceptation
ne sont plus équivalents. L’acceptation par pile vide permet seulement d’accepter des
langages préfixes, c’est-à-dire des langages tels que deux mots du langage ne sont jamais
préfixe l’un de l’autre.
Un langage algébrique est dit déterministe s ’il est accepté par un automate à pile
déterministe. L’intérêt de cette classe de langages est sa clôture par complémentation qui
montre par ailleurs que cette classe est une sous-classe stricte des langages algébriques
(cf. corollaire 2.46 p. 103).
Preuve. La preuve de ce théorème n’est pas très difficile mais elle recèle quelques diffi
cultés techniques. Soit A un automate à pile déterministe acceptant par état final. Soient
E ei F son ensemble de transitions et son ensemble d’états finaux. La première difficulté
est que certains calculs de A peuvent se bloquer avant d’avoir entièrement lu l’entrée. Ce
blocage peut survenir soit parce que l’automate n’est pas complet soit parce que la pile
devient vide. La seconde difficulté est qu’un calcul ayant lu entièrement l’entrée puisse
encore être prolongé avec des e-transitions. Il s’ensuit qu’il n’y a pas vraiment unicité du
calcul bien que l’automate soit déterministe. Ce prolongement peut en outre être infini.
La première difficulté se résout facilement avec les techniques habituelles. On peut
supposer que l’automate est à fond de pile testable. La procédure pour rendre un auto
mate à fond de pile testable préserve en effet le déterminisme de l’automate. L’alphabet
de pile Z est alors partitionné Z = Z q^ Z i et le contenu de pile de chaque configuration
accessible appartient k ZI Z q.
Pour éviter les blocages de l’automate, on ajoute deux états et ainsi que les
transitions suivantes :
On complète alors l’automate. Pour toute paire {p, z) e Q x Z telle qu’il n’existe pas de
transition de la forme p^z ^ q^ h, avec y e A U {e}, on ajoute une transition p^z q^^z.
On supprime ensuite les transitions qui vident la pile. On remplace chaque transition
p^z ^ q^e ok Z appartient à Z q par la transition p^z ^ qj^^z s\ q est final ou par la
p ^ z ^ q - ^ Z sinon. Si l’état q ^ est ajouté à l’ensemble des états finaux, l’automate ainsi
transformé accepte les mêmes mots que A.
Il faut remarquer qu’il est tout à fait possible que l’automate obtenu ne puisse pas
lire entièrement une entrée / bien qu’il soit complet. Le calcul sur / peut, après avoir
lu un préfixe de / , se poursuivre par une infinité d’er-transitions et ne jamais lire la fin
du mot / . Une des transformations que nous allons appliquer va supprimer ces calculs
infinis uniquement constitués d’e-transitions.
2.6 Automates à pile 125
La seconde difficulté provient des e-transitions qui peuvent prolonger un calcul après
la lecture de la dernière lettre. Elle se résout par plusieurs transformations successives
de l’automate. On commence par transformer l’automate pour qu’il vérifie la propriété
suivante. Son ensemble d’états est partitionné en deux ensembles Q q et Q\ et tout calcul
se termine dans un état de Q\ s ’il a visité un état final après la lecture de la dernière
lettre de A et il se termine dans un état de Qo sinon. La transformation de l’automate
introduit une copie q de chaque état q. On pose alors Qo = Q et Qi = {g | g € Q}- Les
transitions de l’automate sont alors les suivantes :
Les transitions étiquetées par une lettre a passent dans un état de Qo ou de Qi suivant
que l’état d’arrivée est final ou non. Les ^-transitions font passer dans Qi dès qu’un état
final est rencontré et font rester dans Qi ensuite.
Nous sommes maintenant en mesure de traiter les suites d’e-transitions qui peuvent
prolonger un calcul après la lecture de la dernière lettre. Soit C = (g,^) une confi
gurations avec un seul symbole z dans la pile. On considère le calcul maximal formé
d’e-transitions qui peut être effectué à partir de C. Ce calcul peut être fini ou non. Si
il est fini, il se termine soit dans une configuration avec une pile vide soit dans une
configuration avec une pile non vide mais où aucune e-transition ne peut être effectuée.
La possibilité que la pile se vide n’est pas exclue car nous n’avons pas supposé que z
appartienne à Z q. Soit X l’ensemble des configurations (p,z) telles que le calcul maxi
mal formé d’e-transitions à partir de (p, soit infini. On note X q (resp. Xi ) l’ensemble
des configurations de X telle que ce calcul infini formé d’e-transitions ne rencontre pas
d’état final (resp. rencontre un état final), c’est-à-dire reste dans les états de Qo (resp.
dans des états de Qi). Nous appliquons une nouvelle transformation qui supprime les
calculs infinis formés d’e-transitions. Chaque transition p, 2^ g, ft où (p, z) appartient
à X est remplacée par une transition p^z q-^z si (p,z) appartient à X q et par une
transition p^z q^,z si (p, z) appartient à X \.
Nous appliquons une dernière transformation qui permet de prendre en compte les
calculs maximaux finis formés d’e-transitions. On note Y l’ensemble des configurations
(p, z) telles que p appartient à Qo et qu’il n’existe pas de transition de la forme p^z q, ft.
Puisque l’automate est complet, il y a pour chaque (p, z) de Y et chaque lettre a une
transition de la forme p^z ^ qa^ha- On ajoute alors pour chaque configuration (p , z) un
nouvel état p^, une transition p, z Pz^z et des transitions P;^» z ^ qa>, ha qui remplacent
alors les transitions p^z qa^ ha
ll faut remarquer que les calculs formés d’e-transitions à partir d’une configuration
(p, zw) qui se terminent en vidant le z de la pile n’ont pas été modifiés. Ils se poursuivent
à partir d’une nouvelle configuration {p\z'w ') o n w = z'w' et peuvent à nouveau vider
126 Chapitre 2. Langages algébriques
z ’ de la pile et ainsi de suite jusqu’à arriver finalement à une configuration sans d’e-
transition possible.
Soit A' l’automate obtenu à l’issue de toutes les transformations et soit F' = { g -} U
{Pz I (Pî^) ^ son ensemble d’états finaux. On vérifie que l’automate A' accepte le
complémentaire du langage accepté par l’automate A-
Les ensembles X , X q, X i et F peuvent être effectivement calculés à partir de A et
par conséquent l’automate A^ aussi. □
Preuve. La construction par les triplets de Ginsburg construit une grammaire équiva
lente à un automate. Les dérivations de la grammaire sont alors en bijection avec les
calculs de l’automate de départ. On obtient donc une grammaire non ambiguë si chaque
mot accepté est l’étiquette d’un unique calcul.
Le problème est qu’il n’y pas unicité du calcul dans un automate à pile déterministe
à cause des ^-transitions qui peuvent prolonger un calcul acceptant après la lecture de la
dernière lettre. Par contre, on peut forcer l’unicité du calcul en utilisant des transforma
tions similaires à celles utilisées dans la preuve de la proposition précédente. On obtient
alors une grammaire non ambiguë en appliquant la méthode des triplets de Ginsburg. □
2.7 Compléments
Cette partie est consacrée à quelques compléments sur le groupe libre et les contenus
de pile des automates. Dans les deux cas, l’approche est basée sur des réécritures. On
commence donc par rappeler quelques résultats très classiques de réécriture.
2.7.1 Réécriture
X
*/ \ *
Une relation est confluente si pour tous éléments x, y et y' tels que x ^ y et
a; A y', il existe un élément z tel que y ^ z et y' ^ z. Cette propriété est représentée
par la flgure 2.8. Elle aussi appelée propriété diamant. La confluence est parfois appelée
propriété de Church-Rosser par référence à la confluence de la /3-réduction du A-calcul
qui a été prouvée par Church et Rosser. L’intérêt principal de la confluence est qu’elle
garantit l’unicité de la forme normale.
P ro p o sitio n 2.81. Si la relation est confluente, tout élément se réduit en au plus
un élément en forme normale.
La confluence est souvent difficile à vérifler. Pour contourner cette difficulté, on in
troduit deux propriétés plus faciles à vérifler. Une relation -> est fortement confluente
si pour tous éléments x, y et y' tels que x y et x y \ il existe un élément tel
que y = Z ou y Z et y^ Z . Une relation est localement confluente si pour tous
éléments a;, y et y' tels que a; -> y et a: —> y', il existe un élément tel que y ^ z
et y^ ^ Z . Les propriétés de confluence forte et de confluence locale sont représentées
à la flgure 2.9. La terminologie est cohérente car la confluence forte implique bien la
confluence.
P ro p o sitio n 2.82. Toute relation fortement confluente est confluente.
Preuve. Soient trois éléments x, y et y' tels que x ^ y e t x ^ y ' . Par déflnition, il existe
deux suites yo, • ♦•, 2/m et y¿, . . . , y^ d’éléments telles que yo = y¿ = x, ym = y,y'n = 2/'>
yi -> y¿+i pour 0 < i < m — l e t y ^ — y[^^ pour 0 < i < n —1 . On montre l’existence
de tel que y ^ z et y' z par récurrence sur n. Si n = 0, le résultat est trivial
puisque y' = X et que z = y convient. On suppose maintenant que n > 1. On définit
par récurrence une suite d’éléments zq, . . . , Zm de la, manière suivante. On pose zo = yi.
On suppose avoir défini Zi tel que yi Z{. On applique alors la confluente locale pour
trouver Zi^i tel que y¿+i -> et Zi A On peut alors appliquer l’hypothèse de
récurrence à y[ puisque y[ se réduit en n — 1 étapes à y' et en certain nombre d’étapes
à Zm On trouve alors tel que Zm ^ z et y' ^ z et donc tel que y A 2^et y' A z. □
128 Chapitre 2. Langages algébriques
La confluence d’une relation de réécriture est souvent une façon d’obtenir une forme
normale unique. Dans ce cas, la réécriture doit aussi être noethérienne pour assurer
l’existence de la forme normale. L’hypothèse du lemme précédent est alors naturelle et
peu contraignante.
Preuve. Soit une relation noethérienne et localement confluente. Puisque est noe
thérienne, tout élément se réduit à au moins un élément en forme normale. On va montrer
que tout élément se réduit en fait à un seul élément en forme normale. Cela suffit pour
prouver la confluence de la relation — Si les trois éléments x, y, et y' vérifient x A y
et X y', il existe des éléments z et z' en forme normale tels que y et y' A z'. On
déduit des relations x ^ z z ^ z' que z — z'.
Supposons qu’il existe deux éléments en forme normale et z' tels que x z et
X z^. On construit par récurrence une suite d’éléments (xn)n>o tels que xq x i ->
• • •. On pose xo = X et on suppose avoir défini Xi tel qu’il existe deux éléments Zi et
en forme normale tels que Xi A Zi et X{ ^ z\. Il existe alors des éléments y et y' tels
que Xi-^ y ^ Z i e t x i - ^ y' ^ z[. Si y = y ’, on choisit Xi+i = y. Sinon, on applique la
confluence locale pour trouver 2^en forme normale tel que y ^ z et y' ^ z. z ^ Zi^
on choisit Xi+i = y, Zi+i = z^^i et z!^^i = Sinon on choisit Xf+i = y', Zi^i = z et
^¿+1 = O
Nous allons utiliser les résultats sur les relations confluentes pour montrer que les
contenus de pile des configurations accessibles d’un automate à pile forment un langage
rationnel. Soit un automate à pile (cf. définition 2.64) d’alphabet d’entrée A, d’alphabet
de pile Z, d’état initial qo et de symbole de pile initial zq. On définit le langage H de la
manière suivante.
H = { h € Z * \ 3 f € A * 3 q Ç Q (qo,zo) A {q,h)}
MonoYde polycyclique
sur An et un indice i tel que w = uaiàiV et w' = uv, La relation est noethérienne
puisque w w' implique \w\' = |iü| —2. On vérifie aussi facilement qu’elle est fortement
confiuente et donc confiuente d’après la proposition 2.82. On note p(w) l’unique mot
irréductible tel que w A p{w). On définit alors la relation d’équivalence sur A* par
w w' si p{w) = p{w^). Cette relation est en fait une congruence sur A*. Le monoïde
polycyclique engendré par An est alors le monoïde quotient A * /~ .
Le lemme suivant établit un lien entre le monoïde polycyclique et le langage de Dyck
(cf. exemple 2.8 p. 85).
L em m e 2.85. Le langage {w \ p(w) = e} est égal au langage de Dyck sur n paires
de parenthèses.
Preuve. On montre par récurrence sur la longueur de la dérivation que tout mot de
langage se réduit au mot vide. Inversement, on montre par récurrence sur la longueur
de la réduction que tout mot qui se réduit au mot vide est dans le langage de Dyck. □
C orollaire 2.87. Pour tout langage rationnel K de A*, le langage p{K) = {p{w) | w G
K } est rationnel.
Preuve. Le langage L = {w' \ 3w Ç: K lü A lü'} est égal à cr~^{K) et il est donc
rationnel d’après la proposition 1.147. Le langage p{K) est égal à L \U I L i
il est donc aussi rationnel. □
Preuve du théorème 2.84. Pour un mot w = wi --Wn^ on note w le mot miroir Wn'"Wi
obtenu en renversant le mot w. On montre que le langage miroir H = {h \ h £ H} est
rationnel, ce qui implique immédiatement que H est aussi rationnel.
Soit A un automate à pile. Quitte à renommer les symboles de pile, on suppose
que l’alphabet de pile de .A est { a i , . . . , a n } . Soit E l’ensemble des transitions de A. On
définit un morphisme p de dans A* en posant p{r) = zh pour toute transition r égale
k Z ^ q\ h. Deux transitions r et r' de A sont dites consécutives si l’état d’arrivée
de r est l’état de départ de r'. Il faut bien noter que deux transitions consécutives ne
peuvent pas nécessairement être enchaînées dans un calcul. En effet, le dernier symbole
de pile empilé par r n’est pas le même que le symbole de pile dépilé par r'. Le fait
qu’elles puissent être enchaînées dépend même du contenu de pile dans le cas où le mot
empilé par r est vide. On note K l’ensemble des suites consécutives de transitions de A.
Cet ensemble est bien sûr rationnel. On a alors l’égalité
H = p{zoii{K)) n { a i , . . . , a„}*
qui montre, grâce au corollaire précédent, que H est rationnel. □
130 Chapitre 2. Langages algébriques
T h éo rèm e 2.88 (Benois 1969). Une partie X Ç F (An) est une partie rationnelle
de F{An) si et seulement si i{X) est une partie rationnelle de A *.
Le corollaire suivant découle immédiatement du théorème de Benois.
C orollaire 2.89. La famille des parties rationnelles de F{An) est close pour les opéra
tion booléennes (unionj intersection et complémentation).
Les parties reconnaissables du groupe libre sont les unions finies de classes d’un
sous-groupe d’indice fini. En effet, si p est un morphisme de monoïde de A * d a n s un
monoïde fini M , alors M est nécessairement un groupe et p est en fait un morphisme
de groupe.
Sous-groupes rationnels
Calculabilité et complexité
Chapitre 3
Calculabilité
3.1 Préliminaires
3.1.1 Graphes
Le but de cette partie est de regrouper les définitions de plusieurs notions concer
nant les graphes. Ces différentes notions sont utilisées tout au long de cet ouvrage. Le
vocabulaire des graphes s’avère en effet très pratique pour énoncer certaines propriétés.
Les automates qui sont un des objets centraux du premier chapitre sont très proches
des graphes dans la mesure où il peuvent être vus comme des graphes enrichis. Les
graphes fournissent également beaucoup de problèmes fondamentaux dans le cadre de
la calculabilité et de la complexité qui seront abordées dans ce chapitre et au chapitre
suivant.
On appelle graphe orienté un couple ( V , jB ) o ù V est un ensemble quelconque de
sommets et où £* Ç y x F est l’ensemble des arêtes. L’ensemble E est en fait une relation
binaire sur l’ensemble des sommets. Un graphe est une façon commode de manipuler et
visualiser une relation binaire. Un graphe peut aussi être vu comme un automate sans
états initiaux et sans états finaux et dont les transitions n’ont pas d’étiquette. Une arête
(г¿, v) est souvent notée u v comme une transition d’automate. Les sommets u et v
sont respectivement appelés sommet de départ et sommet d^arrivée de cette arête.
Exemple 3.1. Soit le graphe G = (V, E) donné par V = { 0 , 1, 2 ,3} et
Un graphe non orienté est un graphe où les arêtes n’ont pas d’orientation. Les deux
arêtes (u, v) et (v, u) ne sont pas distinguées. L’ensemble des arêtes est alors plutôt un
ensemble de parties à deux éléments qu’un ensemble de paires. Il est possible de passer
d’un graphe orienté à un graphe non orienté en identifiant toute paire (i 6, v) avec la paire
(vju). Inversement, tout graphe non orienté peut être vu comme un graphe orienté qui
possède les deux arêtes (г¿, v) et (î;, u ) pour chaque arête {u, v} du graphe non orienté.
Grâce à cette vision d’un graphe non orienté, les différentes notions de chemins et de
composantes connexes s’adaptent facilement aux graphes non orientés.
3.1.2 Logique
—
1 A 0 1 V 0 1
0 1 0 0 0 0 0 1
1 0 1 0 1 1 1 1
On suppose fixé un ensemble V de variables. Les formules de la logique proposition
nelle sont les formules construites à partir des variables et des constantes 0 et 1 avec la
négation -I et les deux connecteurs A et V. On appelle littéral une formule égale à une
variable x ou à la négation -«x d’une variable. Le littéral -«x est souvent notée x. La
fonction X i-> X est étendue à tous les littéraux en posant x = x pour toute variable x.
Ainsi, l dénote x si Z = x et Z dénote x si Z = x. La formule suivante est un exemple de
formule utilisant les variables x i, X 2, xs, X4 et X 5.
La validité de ces formules du premier ordre est donnée par la sémantique habituelle
en mathématiques. La validité est uniquement définie pour les formules closes.
D éfin itio n 3.2 (Formules closes). Une formule close est une formule sans variable libre,
c’est-à-dire une formule où toute variable est sous la portée d’un quantificateur.
La formule donnée ci-dessus est close alors que la formule 3n m = n + n ne l’est pas
car la variable m est libre.
D éfin itio n 3.3 (Forme prénexe). Une formule (p est en forme prénexe si elle a la forme
(p = Q 1X1 Q 2 X2 . . . QnXn'^ où chaque quantificateur Qi est soit le quantificateur univer
sel V ou le quantificateur existentiel 3 pour tout 1 < i < n et où la formule 'il; est sans
quantificateur.
Il est vrai que toute formule de la logique du premier ordre peut être transformée en
une formule équivalente en forme prénexe. Ce résultat s’obtient facilement en renommant
les variables et en faisant commuter les quantificateurs avec les connecteurs.
3.2 Introduction
On commence par définir la notion de problème puis de codage qui permet de passer
d’un problème à un langage. On introduit ensuite les machines de Turing qui nous
serviront de modèle de calcul.
3.2 Introduction 139
D éfin itio n 3.4 (Problème de décision). Un problème de décision est la donnée d’un
ensemble E dHnstances et d’un sous-ensemble P Ç E des instances dites positives pour
lesquelles la réponse est oui,
•
Exemple 3.5. On peut considérer les problèmes suivants :
- Nombres premiers : l’ensemble E des instances est l’ensemble N des entiers naturels
et P = {n I n premier}.
- Automates (acceptation) : E = {{A,w) | A automate et w mot}, P = {{A,w) |
A accepte w},
- Graphes connexes : E = { G \ G graphe fini}, P = { G \ G est connexe}.
- Grammaires ambiguës : E = {G \ G grammaire}, P = {G \ G ambiguë} ou encore
P' = {G I L g {S) ambigu}.
3 .2 .2 N o tio n d e c o d a g e
Les machines de Turing que nous allons introduire pour définir la notion de calcula-
bilité sont semblables aux automates. Elles travaillent sur des mots d’un alphabet fixé.
Pour que les instances d’un problème puissent être données en entrée à ces machines,
il est indispensable que ces instances soient représentées par des mots. La même pro
blématique se pose en programmation. Tous les objets manipulés par un programme
doivent avoir une représentation interne dans l’ordinateur. Il s’agit donc d ’avoir une
représentation sous forme de mots des objets considérés.
La façon dont est donné un objet peut avoir une incidence sur la difficulté de répondre
à une question sur cet objet. Un entier peut par exemple être fourni de plusieurs façons
différentes. Il peut être donné par son écriture en base 10 mais il peut aussi être fourni
par la liste de ses facteurs premiers écrits eux-mêmes en base 10. La question de savoir
si cet entier est premier ou non est très différente selon la manière dont il est donné.
Elle requiert un certain travail dans le premier cas alors qu’elle est relativement triviale
dans le second cas.
Pour éviter ce genre de problèmes liés au codage, on impose que le codage soit naturel
même si cette notion n’est pas formellement définie. C’est en fait une question de bon
sens.
D éfin itio n 3.6 (Langage d’un problème). Pour associer un langage à un problème, on
utilise un codage qui est une fonction naturelle injective de E dans S*. Le codage de
X e E est noté (x). Le langage associé à un problème P est l’ensemble Lp = {{x) | x G P}
des codages des instances positives.
G raphes. On peut adopter le codage suivant sur l’alphabet S formé des chiffres 0
et 1, des parenthèses ( et ) et de la virgule Soit G = {V^E) un graphe
fini. On associe un numéro entre 0 et |Fl — 1 à chaque sommet de V. Le co
dage (v) d’un sommet v est l’écriture binaire du numéro de v. Le codage (V)
de l’ensemble V est formé par les codages des sommets séparés par des vir
gules et entourés par des parenthèses. Chaque arête (u^v) est codée par le mot
{{u),{v)) sur E et le codage (E) est aussi formé par les codages des arêtes sé
parés par des virgules et entourés par des parenthèses. Le codage du graphe G
est finalement le mot ((F ), (E)). Le codage du graphe de la figure 3.1 est le mot
((0 , 1, 10, 11), ((0 , 1), (1, 10), (1, 11), ( 10, 11), ( 11, 0), (11, 1), (11, 10))).
Introduction
Une machine de Taring se compose d’une partie de contrôle et d’une bande infinie
sur laquelle se trouvent écrits des symboles. La partie de contrôle est constituée d’un
nombre fini d’états possibles et de transitions qui régissent les calculs de la machine. Les
symboles de la bande sont lus et écrits par l’intermédiaire d’une tête de lecture/écriture.
Dans la suite, cette tête est simplement appelée tête de lecture même si elle permet de
lire et d’écrire.
a b B A b a b A b A a A B # # # #
Les machines de Turing sont une abstraction des ordinateurs. La partie de contrôle
représente le microprocesseur. Un élément essentiel est que le nombre d’états est fini.
Ceci prend en compte que les microprocesseurs possèdent un nombre déterminé de re
gistres d’une taille fixe et que le nombre de configurations possibles est fini. La bande
représente la mémoire de l’ordinateur. Ceci comprend la mémoire centrale ainsi que les
mémoires externes telles les disques durs. La tête de lecture représente le bus qui relie
le microprocesseur à la mémoire. Contrairement à un ordinateur, la mémoire d’une ma
chine de Turing est infinie. Ceci prend en compte qu’on peut ajouter des disques durs
à un ordinateur de façon (presque) illimitée. Une autre différence entre une machine
de Turing et un ordinateur est que l’ordinateur peut accéder à la mémoire de manière
directe (appelée aussi aléatoire) alors que la tête de lecture de la machine de Turing ne
se déplace que d’une position à chaque opération.
Le contrôle de la machine est constitué d’un nombre fini d’états ço, • • •, Çn- A chaque
instant, la machine se trouve dans un de ces états. Au départ, la machine se trouve
dans l’état qo qu’on appelle état initial. Le calcul d’une machine de Turing est formé
3.2 Introduction 141
d’une suite étapes de calcul qui sont effectuées par la machine. Chaque étape consiste
à changer l’état de contrôle, écrire un symbole sous la tête de lecture et déplacer la tête
de lecture d’une position vers la gauche ou la droite. Les étapes de calcul possibles sont
décrites par les transitions de la machine. Les transitions constituent en quelque sorte
le programme de la machine.
Définition
D éfin itio n 3.8. Une machine de Turing M est un septuplet (Q, S, F, E, qo, F, # ) où
- Q = {ço> • • • >Çn} est un ensemble fini d^états de contrôle.
- S est Valphabet d^entrée. C’est un ensemble fini de symboles qui ne contient pas
le symbole blanc # . Cet alphabet est utilisé pour écrire la donnée initiale sur la
bande.
- F est Valphabet de bande. C’est un ensemble fini qui comprend tous les symboles
qui peuvent être écrits sur la bande. Ceci inclut bien sûr l’alphabet d’entrée E et
le symbole blanc # .
- E est un ensemble fini de transitions de la forme (p, a, g, 6, x) où p et g sont des
états, a et 6 sont des symboles de bande et x est un élément de {<, >}. Une transition
(p, a, g, 6, x) est aussi notée p^a-^ q, 6, x.
- qo est Vétat initial dans lequel se trouve machine au début d’un calcul.
- F est l’ensemble des états finaux appelés aussi états d*acceptation.
- # est le symbole blanc qui, au départ, remplit toutes les positions de la bande
autres que celles contenant la donnée initiale.
Configurations et calculs
A, A, > A ,A ,>
machine. Le reste de la bande est rempli par des symboles blancs. La bande de la machine
est constituée d’une suite infinie de cellules qui contiennent chacune un symbole. La
tête de lecture est placée sur le premier symbole du mot d’entrée. Ensuite, la machine
commence son calcul jusqu’à arriver éventuellement dans un état où elle accepte l’entrée.
La bande de la machine est infinie mais à tout moment du calcul, il n’y a qu’une partie
finie de celle-ci qui contienne des symboles non blancs. L’information contenue par la
bande est donc finie mais elle peut croître indéfiniment.
Pour décrire le fonctionnement précis d’une machine de Turing, il est nécessaire
d’introduire la notion de configuration. Une configuration d’une machine de Turing est
l’état global de la machine à un instant donné. Elle comprend
1. l’état de contrôle qui est un élément de Q,
2. le contenu de la bande,
3. la position de la tête de lecture sur la bande.
Si la machine se trouve dans un état g, la configuration est écrite uqv où u est le
contenu de la bande (strictement) à gauche de la tête de lecture et v est le contenu de
la tête à droite de la tête de lecture (cf. la figure 3.4). Le symbole sous la tête de lecture
est donc le premier symbole de v. Quand on décrit une configuration de la machine, les
symboles blancs qui se trouvent dans la partie infinie à droite de la bande sont omis.
Ceci permet de décrire une configuration de façon finie. Si par exemple, la machine de
la figure 3.4 se trouve dans l’état g, sa configuration est abBAbabbqbBAaAB parce que
le contenu de la bande avant la tête de lecture est abBAbabb et que le contenu après la
tête de lecture est bBAaAB suivi de symboles blancs. Tous les symboles # à droite sont
implicites et ne sont pas écrits.
Au départ, la bande contient la donnée initiale et la tête de lecture se trouve sur la
première position de la bande. La configuration initiale s’écrit donc qow où qo est l’état
3.2 Introduction 143
État q
B im B a A B # # # #
u
F igure 3.4 - Configuration abBAbabbqbBAaAB
toutes les transitions p, a g, 6, x où p est final. La machine se bloque alors dès que son
état de contrôle est final et elle accepte les mêmes mots.
x, x , >
CLy Cb^ ^
CZtj Cby ^
b, b,<
Exemple 3.12. La machine représentée à la figure 3.5 accepte Tensemble {ty | \w \a = |ty|5}
des mots sur l’alphabet E = {a, b} ayant le même nombre d’occurrences de a et de b.
Une machine à deux bandes est donnée pour ce langage à l’exemple 3.18. Nous donnons
ci-dessus la suite des configurations d’un calcul acceptant de la machine sur l’entrée
aababb.
Utilisation
Il y a deux modes d’utilisation des machines de Turing. Le premier mode est d’uti
liser une machine comme accepteur et le second est d’utiliser une machine comme un
calculateur.
Dans le mode accepteur^ on fournit un mot d’entrée à la machine et celle-ci répond
par oui ou par non. Quand la machine répond om, on dit que le machine accepte le mot.
La machine définit alors l’ensemble des mots qui sont acceptés. Par convention, on dit
que la machine accepte un mot w s’il existe au moins un calcul acceptant avec w comme
entrée, c’est-à-dire qui commence avec la configuration qç^w. L’élément important de
cette définition est qu’un seul calcul acceptant suffit pour que la machine accepte même
si d’autres calculs bloquent ou n’atteignent jamais une configuration acceptante.
3.2 Introduction 145
D éfin itio n 3.13 (Langage accepté). On dit que w, un mot de E* est accepté par
une machine de Turing M s’il existe un calcul acceptant de configuration initiale q^w.
L’ensemble des mots acceptés par M est noté L(M),
Il est à noter que comme pour les automates, la notion d’acceptation est dissymé
trique. S’il existe à la fois des calculs acceptants et des calculs non acceptants pour une
même entrée, c’est l’acceptation qui l’emporte. Cette dissymétrie pose problème pour
la complémentation. Comme pour les automates, il faut se ramener à des machines dé
terministes. Une autre solution est d’utiliser les machines plus générales que sont les
machines alternantes.
Beaucoup de problèmes sur les machines de Turing se ramènent à des problèmes sur
les graphes en considérant le graphe des configurations. Du coup, les algorithmes sur
les graphes jouent un rôle essentiel. Le théorème de Savitch (théorème 4.30) peut par
exemple être vu comme un résultat sur l’accessibilité dans les graphes en espace log^ n.
Le graphe des configurations d’une machine de Turing M est le graphe dont l’en
semble des sommets est l’ensemble de toutes les configurations de M et dont les arêtes
sont les paires (C, C") de configurations telles que C -> C'. Un chemin dans ce graphe
est donc un calcul de la machine M .
L’acceptation d’une entrée par la machine se ramène à un problème d’accessibilité
dans le graphe des configurations. En effet, l’entrée w est acceptée par M si et seulement
si il y a un chemin de la configuration initiale qow à une configuration acceptante.
Le graphe des configurations est infini. Par contre, on s ’intéresse souvent à une partie
finie de ce graphe. Si la machine M s’arrête sur toutes les entrées w, l’ensemble des
configurations accessibles à partir d’une configuration initiale qow est fini. La recherche
d’une configuration acceptante peut alors se faire par un parcours du sous-graphe des
configurations accessibles à partir de qow. Si on dispose d’une borne sur le temps ou
l’espace utilisé par la machine sur une entrée de taille n, on a alors une borne sur la
taille des configurations qui détermine un sous-graphe fini du graphe des configurations.
La déterminisation d’une machine de Turing (cf. proposition 3.21) se fait par un
parcours en largeur de l’arbre des calculs. Cet arbre est en fait un dépliage du graphe
des configurations. La machine déterministe équivalente à une machine M effectue en
fait un parcours en largeur du graphe des configurations de M .
146 Chapitre 3. Calculabilité
3.2.5 Normalisation
Le but de cette partie est de montrer qu’on peut toujours supposer qu’une machine
de Turing possède deux états spéciaux et tels que :
i) est final (g+ G F) et n’est pas final (g_ ^ F ),
ii) la machine se bloque dès qu’elle est dans un des états ou q- ,
iii) la machine se bloque uniquement dans les états q^ et q- .
Plus formellement, on a la proposition suivante.
Pour montrer ce résultat, nous allons montrer qu’à partir d’une machine A4, il est
toujours possible de construire une machine de Turing A4' qui accepte les mêmes entrées
que A4 et qui vérifie les propriétés ci-dessus. La machine construite A4' est très proche de
la machine A4 et hérite de beaucoup de ses propriétés. Si la machine A4 est déterministe,
la machine A4' est encore déterministe. Chaque calcul dans A4 est prolongé dans A4'
d’au plus une étape de calcul. En particulier, si la machine A4 n’a pas de calcul infini,
la machine A4' n’a pas non plus de calcul infini.
Analyse
L’idée générale de la construction est de faire en sorte que pour chaque configuration
C =uqv de A4' avec q différent de et g_, il existe une configuration C' telle que
C -> C". Le principe est d’ajouter de nouvelles transitions pour éviter les blocages. Nous
commençons par analyser les causes de blocage afin de les détecter. Une machine de
Turing peut se bloquer dans un état q pour deux raisons.
1. La première raison est qu’aucune transition n’est possible. Si la machine est dans
l’état P, lit un symbole a sous la tête de lecture mais n’a pas de transition de la
forme p^a qyb,x avec x G {<,>}, alors elle reste bloquée dans cette configuration
de la forme upav.
2. La seconde raison est que certaines transitions sont possibles mais que ces transi
tions conduisent à un déplacement de la tête de lecture vers la gauche alors que
cette tête est justement sur la première position de la bande. Si la machine est
dans l’état p et lit le symbole a sur la première position de la bande mais n’a
pas de transition de la forme p, a q^b^> qui déplace la tête de lecture vers la
droite, alors elle reste bloquée dans cette configuration de la forme pav. En effet,
la définition des machines de Turing impose qu’une machine ne peut pas effectuer
une transition qui déplacerait la tête de lecture hors de la bande.
3.2 Introduction 147
La première idée est de supprimer les transitions sortantes des états finaux pour que
la machine se bloque dès qu’elle atteint un de ces états. Ensuite, tous ces états finaux
sont fusionnés en un seul état Il faut ensuite faire en sorte que tous les autres blocages
aient lieu dans l’unique état q-. L’idée générale est d’ajouter un nouvel état q- k M
et d’ajouter des transitions pour que la machine A i' passe dans cet état dès qu’elle se
bloque dans un état non final. Le premier type de blocage est facile à détecter dans la
machine M . Il suffit de trouver toutes les paires (p, a) telles qu’il n’existe pas de transition
p^a q^b^x avec x € {<, >}. Le second type de blocage est plus délicat à détecter puisque
la machine M* doit savoir quand sa tête de lecture se trouve sur la première position de
la bande. Pour contourner cette difficulté, on ajoute de nouveaux symboles de bandes
à la machine Ai'. Pour chaque symbole de bande a de A i, la machine Ai' contient
le symbole a et un autre symbole correspondant â. L’alphabet de bande A i' est donc
r' = r u { â I a G r } . Ces nouveaux symboles seront uniquement utilisés dans la première
position de la bande et serviront à la machine pour détecter cette position. L’alphabet
d’entrée de Ai' est identique à celui de A i. La première opération de la machine A i'
est de remplacer le premier symbole a de l’entrée par le symbole a correspondant pour
marquer la première position de la bande. À cette fin, on ajoute deux nouveaux états q^
et q[ et quelques transitions. Ensuite toutes les autres transitions de M ' remplacent un
caractère a par un caractère b et un caractère ü par un caractère b. Ainsi, la première
position de la bande contient toujours un symbole de la forme à et toutes toutes les autres
positions contiennent des symboles de la forme a. C’est exactement la même idée qui a
été utilisée pour rendre à fond de pile testable les automates à pile (cf. section 2 .6 .2).
Soit M = (Q, S ,r,E ,gO )^ , # ) une machine de Turing. Nous décrivons la machine
de A i' qui accepte les même entrées mais qui se bloque uniquement dans un des deux
états ou g_. Par rapport à la machine A i, la machine A i' possède quatre nouveaux
états Çq) Qi Q- uiais elle a perdu les états finaux qui sont remplacés par g+.
- États :Q ' = { Q \ F ) U q[,q+, q -}
- Etat initial : q^
- États finaux : F' = {g+}
- Alphabet de bande : F' = F U {â | a G F}
- Alphabet d’entrée : E' = E
- Caractère blanc : #
Il reste à décrire l’ensemble F ’ des transitions de A i'. Cet ensemble est décomposé en
F ' = Fo U F l U F 2 U F 3 suivant l’état p dans lequel se trouve la machine. Les ensembles
Fo, F l, F 2 et F 3 sont définis ci-dessous.
P = 9o
La première transition est chargée de remplacer le premier caractère a de E U { # }
de l’entrée par le caractère â correspondant.
P = Qi
La seconde transition est chargée de remettre la tête de lecture sur la première
position de la bande et de passer dans Tancien état initial qo pour commencer le
calcul.
El = Wi , a- ¥ g o ,û ,< i I a e T } .
Ensuite, on ajoute des transitions spécifiques pour éviter que M ' ne se bloque dans
des états autres que et q-. On pose U l’ensemble des paires (p,a) telles que
M ne possède pas de transitions p, a g, 6, x avec x G {<, >} et V l’ensemble des
paires (p, a) telles que M ne possède pas de transitions p, a ^ 6, >. On définit
alors l’ensemble F 3.
E:^ = { p y ü ^ q-yüy>\ s i( p ,a ) G Î /}
U { p ,â -> I si (p, a) G ¡7}
U { p , â g _ , â , > I si (p,a) G F }
Il est facile de vérifier que si la machine M est déterministe, alors la machine M'
construite est également déterministe.
3.2.6 Variantes
Bandes bi-infinies
On commence par une variante où la bande est infinie à gauche comme à droite.
Cette variante permet d’éviter le blocage de la machine sur la première position de la
bande mais elle est plus éloignée du fonctionnement réel d’un ordinateur où les mots
mémoire sont numérotés à partir de zéro.
3.2 Introduction 149
-5 -4 -3 -2 -1 0 1 2 3 4 5 6
# # # # B * b # A b a B # B # # # # #
D éfin itio n 3.15 (Machine à bande bi-infinie). Une machine à bande bi-infinie est for
mellement identique à une machine de Turing, mais la bande est indicée par tous les
entiers de Z (cf. figure 3.6).
P ro p o sitio n 3.16 (Équivalence). Toute machine de Turing à bande bi-infinie est équi
valente à une machine de Turing (c^est-à-dire qui accepte le même langage). Inversement
toute machine de Turing est équivalente à une machine de Turing à bande bi-infinie.
Preuve. Pour simuler les calculs d’une machine de Turing sur une machine à bande bi-
infinie, il suffit de marquer le début de bande en écrivant à la position —1 un nouveau
symbole $ n’appartenant pas à F. Comme aucune transition ne permet de lire ce symbole,
la machine se bloque dès qu’elle repasse par cette position de la bande.
Pour simuler les calculs d’une machine à bande bi-infinie sur une machine de Turing,
l’idée est de replier la bande en 0. La case de numéro —i se retrouve en dessous la case
de numéro i. Une case fictive remplie d’un nouveau symbole $ est mise sous la case de
numéro 0 (cf. figure ci-dessous). Ceci permet en outre à la machine de reconnaître la
première position de la bande.
0 1 2 3 4 5 6 7
A b a B # B # #
$ # b # B # # #
-1 -2 -3 -4 -5 -6 -7
Le nouvel alphabet de bande est F x (FU {$}) puisqu’on considère à chaque position i
de la nouvelle bande le couple des caractères aux positions (z, —z) dans l’ancienne bande.
De plus la case de numéro 0 contient un symbole de F x {$}.
On écrit l’entrée sur la partie supérieure de la bande : l’alphabet d’entrée devient donc
S X { # } , le nouveau caractère blanc (# , # ) et il est donc toujours exclu de l’alphabet
d’entrée. La première opération de la machine consiste à mettre le symbole $ dans la
partie inférieure de la première case de la bande en remplaçant le symbole (a, # ) par
(a, $).
La machine doit mémoriser si elle lit la partie supérieure ou la partie inférieure de
la bande. Les nouveaux états sont donc les paires de Q x { t , i } où t et 4- signifient
respectivement que la machine lit la partie haute ou la partie basse de la bande
On transcrit alors les transitions de la machine d’origine, en prenant garde au fait
que la nouvelle machine se déplace désormais en sens contraire lorsqu’elle lit la partie
inférieure de la bande. □
— }_____________________
Bb c B B c \ a \ b A b b b Ai i t # # # # i
Contrôle
— ______________
(a b A a a B A b a b\^a Ac * C # # # ;
la machine dépend de l’état de contrôle et des symboles de bandes lus par toutes les
têtes de lecture. La transition spécifie les symboles qui doivent être écrits par les têtes
de lecture ainsi que les déplacements de chacune de ses têtes de lecture.
D éfin itio n 3.1 7 (Machine à plusieurs bandes). Une machine à k bandes est une machine
disposant de k bandes, chacune lue par une tête de lecture indépendante (cf. figure 3.7).
Une transition est alors un élément de l’ensemble Q x x Qx x {<,>, V } ^ , où V
permet éventuellement de laisser immobiles certaines têtes de lecture.
elle est dans Tétât 1 ou 2 suivant que le nombre de a lus est plus grand ou plus petit
que le nombre de b lus. La position de la tête de lecture de la deuxième bande mémorise
la différence entre le nombre de a et le nombre de 6. La machine passe finalement dans
Tétat acceptant 3 si à la fin de la lecture, le nombre de a est égal au nombre de 6.
La proposition suivante établit que ce qui peut être calculé par une machine à plu
sieurs bandes peut aussi être calculé avec une seule bande. L’ajout de plusieurs bandes
n’augmente pas la puissance de calcul.
B b cB B c a b A b b 6A # # # # # 1
Contrôle 00000 1000000000000
a bA a aB A b a b c a A a c# # #
000000000 100000000
a cA cBB A c a c a# # # ## # #
000 100000000000000
Preuve. Soit M une machine de Turing à k bandes pour un entier k. On construit une
machine de Turing M à une seule bande qui accepte les mêmes entrées.
Une première solution est de construire une machine M ' qui stocke les contenus des k
bandes sur une seule bande en les séparant par un nouveau symbole $. Outre le contenu
des bandes, A i' doit aussi garder trace des positions des k têtes de lecture. Elle possède
donc un symbole de bande qui est placé juste avant les symboles qui étaient sous les
têtes de lecture de A i. La simulation d’une seule transition de M se fait en parcourant
toute la bande pour noter dans l’état de contrôle les symboles sous les k têtes de lectures.
En fin de bande, la machine M ' choisit la transition de A i à effectuer en fonction de
l’état et des k symboles. La machine effectue un nouveau parcours de la bande pour
changer les caractères sous les k têtes de lecture puis déplacer les k têtes de lecture.
Une seconde solution consiste à coller les k bandes pour en faire une seule sur l’al
phabet r^. Comme il faut aussi garder trace des positions des k têtes de lecture, on
agrandit encore l’alphabet pour avoir une seule bande sur l’alphabet (F x { 0 , 1})^ (cf
figure 3.9). De nouveau, la simulation d’une seule transition de A i se fait par deux
parcours successifs de toute la bande de A i. □
Déterminisme
D éfin itio n 3.20 (Machine de Turing déterministe). Une machine A i est déterministe
si pour chaque paire (p,a) G Q x F, il existe au plus un triplet {q^b^x) G Q x F x {<,>}
tel que p, a -> g, 6, a: G £?.
La définition ci-dessus à été donnée pour une machine à une seule bande. Elle s’étend
facilement au cas des machines à plusieurs bandes. Les machines des figures 3.3 et 3.5
sont déterministes.
La proposition suivante établit que tout ce qui peut être calculé par une machine
non déterministe peut aussi être calculé par une machine déterministe.
P ro p o sitio n 3.21. Toute machine de Taring M est équivalente à une machine Ai'
déterministe. Si, de plus, A i est sans calcul infini, la machine Ai' est aussi sans calcul
Preuve.
3.2 Introduction 153
C5 Ce C7
Cg Cio Cl Cil
Cs C4
Cg Cio Cl Cil
C4
On prouve ici le lemme de König qui a été utilisé dans la preuve de la proposition
précédente. Ce lemme est en fait un argument de compacité sous une forme un peu
déguisée.
L em m e 3.22 (König 1936). Tout arbre infini dont tout nœud est de degré fini contient
une branche infinie.
Preuve. On construit par récurrence une suite {xn)n>o de nœuds qui forment une
branche infinie de l’arbre. On prend pour xq la racine de l’arbre. On suppose avoir
choisi un nœud Xn tel que le sous-arbre enraciné en Xn est infini. Puisque Xn a un
nombre fini de fils, au moins un des sous-arbres enracinés en l’un de ses fils est infini.
On choisit alors comme nœud Xn+i un tel fils de Xn- □
3.3 Langages récursivement énumérables 155
directement la machine M sur chaque mot car celle-ci peut avoir des calculs infinis.
L’idée consiste à simuler la machine sur un nombre maximal de transitions puis d’aug
menter progressivement ce nombre maximal de transitions. On obtient alors l’algorithme
ci-dessous.
for ail A; > 0 do
for ail w tel que \w\ < k do
if M accepte w en au plus k étapes th en
écrire w suivi de $ sur la bande de sortie
Algorithme 2: Énumérateur de L
In p u t w
loop
rep eat
Exécuter rénumérateur
u ntil l’énumérateur écrit $
if w est égal au mot écrit th en
accepter
□
Un argument de cardinalité montre qu’il existe des langages non récursivement énu-
mérables. Pour tout alphabet E, l’ensemble de tous les langages sur E n’est pas dénom
brable. Au contraire, l’ensemble des machines de Turing et donc des langages récursi
vement énumérables est dénombrable. Cet argument est semblable à celui qui montre
qu’il existe des nombres transcendants parce que l’ensemble des nombres algébriques est
dénombrable. L’exemple suivant exhibe un langage qui n’est pas récursivement énumé-
rable. La construction de ce langage est basée sur un argument diagonal très classique.
L’argument diagonal est un peu le couteau suisse de la calculabilité et de la complexité.
La plupart des résultats non triviaux utilisent cet argument sous une forme ou une autre.
Exemple 3.26 (Langage diagonal). Soit un alphabet E fixé égal, par exemple, à { a ,6}.
Puisque l’ensemble des machines de Turing est dénombrable, on indexe par les entiers les
machines de Turing d’alphabet d’entrée E. On obtient ainsi une suite •••
de toutes les machines de Turing sur E. On indexe aussi les mots de E* pour obtenir
une suite - . de tous les mots sur E. On définit alors le langage L par
Preuve. Soient L et L' deux langages acceptés par des machines M et M ' qu’on peut
supposer à une seule bande grâce à la proposition 3.19. On construit des machines Myj
et Mr\ qui accepte respectivement les langages L U L' et L fl V .
On construit une machine M \j avec deux bandes. La machine commence dans un
premier temps par recopier son entrée de la première bande sur la seconde bande. Dans
un second temps, la machine alterne, transition par transition la simulation de M sur la
première bande et la simulation de M ' sur la seconde bande. La machine M \j accepte
dès qu’une des deux machines M et M ' accepte.
Pour la machine A^n, on peut procéder de la même façon en alternant les simulations
des deux machines M et M ' et en acceptant lorsque les deux ont accepté. Une autre
solution est de simuler d’abord M sur l’entrée après avoir sauvegardé cette entrée sur
une autre bande, puis de simuler lorsque M a accepté. Si l’une des deux machines
ne s ’arrête pas, le calcul de M n est également infini. Si les deux machines acceptent, la
machine M n accepte. □
Exercice 3.28. Soit M = (Q, E, F, E, qo, F, # ) une machine de Turing d’état initial go-
1. Montrer qu’on peut toujours supposer que
i) aucune transition n’arrive dans l’état qo,
ii) la machine a un seul état final g/ et aucune transition ne part de cet état g/,
iii) tous les calculs acceptants sont constitués d’un nombre pair d’étapes de calcul
et sont par conséquent des suites de longueur impaire de configurations.
Dans la suite, on supposera que M satisfait ces trois conditions. Pour un mot w =
ai • • • Un, on note w le mot an • • • ai obtenu en renversant l’ordre des lettres. Pour un
mot w et un entier z, on note U{w) le mot w si i est pair et w sinon. Soit $ une nouvelle
lettre n’appartenant pas à Q U F. On note, respectivement C C {Q U F)*, Co C C et
Cf C C, l’ensemble des configurations de M et les ensembles de configurations initiales
et finales. On définit le langage K par
Les problèmes et les langages décidables sont ceux pour lesquels il existe un algo
rithme qui donne la réponse à chaque instance. Par algorithme, on entend une méthode
qui donne la réponse correcte en un temps fini.
D éfin ition 3.29 (Langage décidable). Un langage L Ç E* est decidable s’il existe une
machine de Turing M sans calcul infini {i.e. la machine M s’arrête sur toute entrée)
telle que L = L(M). On dit que la machine M décide le langage L.
Les langages décidables sont parfois appelés récursifs. Par définition même, les lan
gages décidables sont récursivement énumérables. On verra à la proposition 3.33 qu’il
existe des langages récursivement énumérables qui ne sont pas décidables. On commence
par quelques propriétés de clôture des langages décidables.
P ro p o sitio n 3.30 (Opérations booléennes). Si les deux langages L,L' Ç E* sont déci-
dableSj alors les langages L U L', L n L' ei E* \ L sont aussi décidables.
Preuve. Soient M et M ' deux machines de Turing sans calcul infini qui acceptent les
langages L et L'. Les machines A4u et Ain construites dans la preuve de la proposi
tion 3.27 sont sans calcul infini et elles acceptent les langages L U L' et L fl V .
3.4 Langages déddables 159
D ’après les propositions 3.21 et 3.14, on peut supposer que la machine M est déter
ministe et normalisée. En échangeant les rôles des états g+ et ç_, on obtient une machine
qui accepte le complémentaire S* \ L de L. □
Pour une machine AA et un mot w, on note respectivement (JA), (w) et (JA,w) les
codages de A4, lü et de la paire (JA,w). Le codage de (JA,w) peut être par exemple
{A4)$(t/;} où le symbole $ n’apparaît ni dans le codage de JA ni dans le codage de w.
On définit maintenant le langage d^acceptation noté Lç par
Le = {(JA,w) \ w e L ( J A ) } .
Preuve. On construit une machine universelle JAu avec deux bandes. La première bande
reçoit l’entrée qui est le codage (JA,w) d’une machine de Turing JA et d’une entrée w.
La machine JAu va simuler le calcul de JA sur l’entrée w. La seconde bande de JAu est
utilisée pour contenir la configuration de la machine JA au cours du calcul. Cette bande
est initialisée avec la configuration çow obtenue en recopiant l’état initial de JA et la
donnée w. Ensuite, pour chaque étape de calcul, la machine JAu recherche dans (JA) une
transition applicable sur la configuration puis l’applique pour obtenir la configuration
suivante. □
In p u t (M)
1: if *4 accepte {M^ {M)) th en
2: rejeter
3: else
4: accepter
Algorithme 4: Machine Q
Il n’est pas toujours aussi facile d’établir directement qu’un langage ou un problème
est indécidable. On utilise alors une réduction pour se ramener à un autre problème
indécidable. On commence par la définition d’une fonction calculable.
D éfin ition 3.35. Une fonction / : E* —> Г* est calculable s’il existe une machine de
Turing qui pour toute entrée w s’arrête avec f{w) sur la bande.
Comme toute machine de Turing est équivalente à une machine de Turing détermi
niste, toute fonction calculable l’est aussi par une machine de Turing déterministe. La
classe des fonctions calculables est close pour de nombreuses opérations. En particulier,
la composée de deux fonctions calculables est encore une fonction calculable.
La notation A <m B suggère que le problème A est moins compliqué que le pro
blème B. L’indice m provient de l’expression anglaise many to one qui s’oppose à one
to one et qui indique que la fonction / n’est pas nécessairement injective. Plusieurs ins
tances de A peuvent être réduites à la même instance de B. Puisque la composée de
deux fonctions calculables est calculable, la relation <m est bien sûr transitive.
3.4 Langages décidables 161
Preuve. Si A <m -B, il existe une machine M qui s’arrête toujours et qui, pour toute
entrée w £ E % calcule un mot f{w) G tel que w E L a si et seulement si f{w) E L b -
Le problème B étant décidable, il existe une machine M ' qui s’arrête toujours telle que
L{M') = L b .
On définit une machine Ai" qui prend en entrée un mot w E Cette machine
commence par simuler la machine M sur w pour calculer f{w). Elle simule ensuite la
machine Ai' sur f{w). Elle accepte finalement w si A i' accepte f{w) et rejette sinon.
Par construction la machine Ai" s’arrête toujours. De plus, un mot w est accepté
par Ai" si et seulement si f{w) e L b - Il s’ensuit que L(Ai") = L a - □
C o ro lla ire 3.38 (Réduction). Si A <m B et si A est indécidable^ alors B est indéci
dable.
P r o p o s itio n 3.39. Les deux langages L 0 = {(A i) | L{M) ^ 0 } et L^é = {(A i, A i') |
L{M) 7^ L (A i')} sont indécidables.
Preuve. Pour utiliser le corollaire précédent et montrer que le langage L 0 est indécidable,
on construit une réduction de Lç à L 0 . Pour toute paire (A^, w) on considère la machine
M w définie de la manière suivante. La fonction / qui associe {Mw) à (M^w) est bien
In p u t u
i{ u = w th en
simuler Ai sur w
else
rejeter
Algorithme 5: Machine
sûr calculable par une machine de Turing déterministe. De plus on a aussi l’équivalence
w E L(M) 4=^ L(Mw) 7^ 0 car le mot w est le seul mot qui puisse être accepté
par M w La fonction / ainsi définie est donc une réduction de Lç à L 0 . Le corollaire
précédent assure que le langage L 0 est indécidable.
Pour utiliser à nouveau le corollaire précédent et montrer que le langage est
indécidable, on construit une réduction de L 0 à L^. On choisit une machine fixe AÎ 0
qui accepte le langage vide. Il suffit, par exemple, de prendre pour M 0 une machine
sans aucun état final. La fonction g qui associe (Ai, AÎ 0 } à (Ai) est bien sûr calculable
par une machine de Turing déterministe. De plus, on a l’équivalence L(Ai) 7^ 0 4=^
L(M) 7^ L ( M 0 ). La fonction g ainsi définie est donc une réduction de L^ à L 0 . Le
corollaire précédent assure que le langage L^ est indécidable. □
Les deux résultats de la proposition précédente sont en fait deux cas particuliers
d’un théorème plus général. On dit qu’une propriété P sur les langages récursivement
162 Chapitre 3. Calculabilité
énumérables est non triviale s’il existe au moins un langage récursivement énumérable L
qui vérifie P et au moins un langage récursivement énumérable V qui ne vérifie pas P.
T héorèm e 3.40 (Rice). Pour toute propriété non triviale P sur les langages récursive
ment énumérablesy le problème de savoir si le langage L{M) d^une machine de Taring M
vérifie P est indécidable.
Preuve. Soit le langage Lp = {(A i) | L{M) vérifie P} des codages des machines de
Turing dont le langage vérifie la propriété P. Pour montrer que ce langage est indécidable,
on donne une réduction du langage Lç au langage Lp et on conclut de nouveau grâce
au corollaire précédent.
Quitte à remplacer la propriété P par sa négation, on peut toujours supposer que
le langage vide ne vérifie pas la propriété P. Puisque P n’est pas triviale, il existe une
machine de Turing Mo telle L{Mo) vérifie P.
Pour toute paire (Mjw) on considère la machine Mw définie de la manière suivante.
In p u t U
1: if A4 accepte w th en
2: simuler Mo sur u et retourner le résultat
3: else
4: rejeter
Algorithme 6: Machine Mw
Exercice 3.41. Montrer que si le langage L est récursivement énumérable (resp. déci
dable), alors le langage L* est encore récursivement énumérable (resp. décidable).
Solution. Soit M une machine de Turing qui accepte le langage L. On construit une
machine A4' non déterministe qui accepte le langage L*. Cette machine fonctionne de
la façon suivante. Elle commence par factoriser de façon non déterministe son entrée w
enw = wi-- - Wn. Cette factorisation peut être matérialisée par l’insertion de marqueurs
sur la bande. Ensuite, la machine A4' vérifie que chacun des facteurs Wi appartient à L
en simulant la machine A4. Il est clair que si la machine A4 s’arrête sur toutes les entrées,
c’est encore le cas pour la machine A4.
Exercice 3.42. Soit L C E* un langage qui n’est pas décidable et soit L' = E* \ L son
complémentaire. Soit le langage LT = OL + IL' où 0 et 1 sont deux symboles. Montrer
que le langage K et son complémentaire LT' ne sont pas récursivement énumérables.
3.5 Problème de correspondance de Post 163
3.5.1 Présentation
La question est alors de savoir s’il existe une façon de disposer côte-à-côte des dominos
pris dans la liste de telle sorte qu’on lise le même mot en haut et en bas. Comme certains
indices de i l , . . . , Zn peuvent être égaux, il est possible de réutiliser plusieurs fois le même
domino de la liste.
Le problème PCP peut aussi être formulé en termes de morphismes. Soit A l’alphabet
{ a i , . . . , Um} et soient p, et v les deux morphismes de A* dans E* définis respectivement
par p{ai) = Ui et i/(ai) = Vi. L’instance de PcP ( u i , u i ) , . . . , {umyVm) a une solution si
et seulement si il existe un mot w ^ A* tel que p{w) = v{w).
164 Chapitre 3. Calculabilité
ab c ab abc abcababc
a bcab a bc abcababc
Afin de montrer que Pcp est indécidable, on introduit une variante très proche de
PCP. Elle diffère seulement dans le fait que le premier domino de la solution est imposé.
Son principal intérêt est de faciliter la preuve de l’indécidabilité de Pcp.
¿1 = 1 et uiUi^ Vi^.
3.5.2 Indécidabilité
On va montrer que les deux problèmes Pcp et P cpm sont indécidables. On commence
par montrer que les deux problèmes sont équivalents.
Preuve. On montre d’abord que si PcPM est décidable, alors Pcp est aussi décidable.
Soit (г¿l, v i ) , . . . , (u^n, Vm) une instance de PcP. Une solution ¿ i , . . . , ¿n de cette instance
de P cp est aussi une solution de l’instance (ui^, Uij), (ui, u i ) , . . . , {umi Vm) de P cpm o ù
la paire (ui^yVi^) a été placée en tête. L’instance de Pcp a une solution si et seulement
si une des m instances de P cpm obtenues en mettant en tête l’une des paires a une
solution. Ceci montre que si P cpm est décidable alors PcP est décidable.
Il faut remarquer qu’on a ramené une instance de PCP à m instances de PcPM. Ce
n’est pas une réduction <m où chaque instance du premier problème est réduite à une
seule instance du second problème. Il s’agit en fait d’une réduction de Turing qui est
généralement notée < t -
On montre maintenant que si PCP est décidable, alors PcPM est aussi décidable. On
effectue une véritable réduction qui transforme une instance de P cpm en une instance
de P cp équivalente.
Soit {uiyVi)y... y{urri) Vm) une instance de P cpm. On introduit un nouveau symbole $
n’appartenant pas à E et on pose E' = E U {$}. On définit les deux morphismes p et s
de E* dans E'* par p{a) = $a et s{a) = a$ pour toute lettre a de E. On vérifie que pour
tout mot iî; de E*, on a l’égalité p{w)$ = $s{w).
3.5 Problème de correspondance de Post 165
Soit 1,^2 . . . , in une solution de l’instance de PCPM, c’est-à-dire une suite telle l’éga
lité uiUi2 = viVi^ soit vérifiée. En utilisant la relation p{w)$ = $s(u;),
on obtient l’égalité p{ui)p{ui^) - •p {u ij$ = $ 5(î^i)5(ui2) • • qui se traduit par
l’égalité U2m+1< • • • < _ , < + m = v'2m+iVi2 ---‘^ L-Æ+m- O» Constate que la suite
2m + 1,¿2, . . . , in-iyin + m est une solution de l’instance de PcP.
Une solution i l , . . . , i n de PCP est dite minimale si elle ne se décompose pas en
deux solutions i i , . . . ,ip et i p+i ,. . . ,in pour 1 < p < n. On vérifie que les seules solu
tions minimales de cette instance de PcP sont les suites d’indices i i , . .. ,in vérifiant les
conditions suivantes :
- il = 2n + 1,
- 1 < ifc < m pour tout 2 < fc < n —1,
- m -h 1 < in < 2m.
et alors, par construction, l , i 2, • • • —m est à chaque fois une solution de l’ins
tance de PcPM. Les solutions non minimales sont obtenues en prenant des concaténations
de solutions minimales. On retrouve ces concaténations par les occurrences du mot $$
dans le mot . Ceci montre que l’instance de départ de P cpm a
une solution si et seulement si l’instance de Pcp associée a une solution. La fonction
qui calcule l’instance de P cp associée à l’instance de P cpm donnée est calculable par
machine de Turing déterministe. On en déduit qu’on a trouvé une réduction de PcPM à
P cp. □
T héorèm e 3.48 (Post 1946). Les deux problèmes Pcp et PcPM sont indécidables.
Dans le résultat précédent, la taille de l’alphabet sur lequel sont écrits les mots ui
et Vi n’est pas fixée. En fait, le problème PcP reste indécidable même si la taille de cet
alphabet est fixée à 2. Par contre P cp est décidable sur un alphabet unaire.
Preuve. Comme P cp et P cpm sont équivalents, il suffit de montrer que P cpm est indé
cidable. On va exhiber une réduction du langage Lç. à PcPM. Soit une instance de Lç
formée par une machine de Turing M et une entrée w. D ’après la proposition 3.14, on
peut supposer que la machine M est normalisée. On peut en outre supposer que si la
machine accepte, elle termine avec une bande remplie de symboles blancs # . Pour cela,
on ajoute quelques transitions qui se chargent de remplir la bande avec # une fois que
la machine a atteint l’état d’acceptation Ceci signifie qu’on peut supposer que la
dernière configuration d’un calcul acceptant est la configuration
Le mot w est accepté par la machine M s’il existe un calcul qow = Cq Ci
• • • —>> C/ = de la configuration initiale qow à la configuration acceptante On
construit une instance de PcPM telle que ses solutions minimales produisent le mot
Co$Ci$---$Cz.
Cette instance est formée par toutes les paires suivantes de mots :
- une première paire (e:, qow$) pour initier le calcul.
166 Chapitre 3. Calculabilité
€ #$ pa cpa $9+
qow$ #$ $ bq qcb e
On vérifie que toute solution de cette instance de PCPM provient nécessairement d’un
calcul acceptant le mot w. Hormis la première et la dernière paire, chaque paire contient
le même nombre de symbole $ dans ses deux composantes. Le première paire imposée in
troduit un décalage qui ne peut être rattrapé que par la dernière. Chaque paire contribue
à une configuration Ci avec sa première composante et à la configuration suivante Ci^i
dans le calcul avec sa seconde composante. □
On a alors le lemme.
n
s ^ ^UiSoi -f- s.
i=l
Pour le langage on considère les trois cas suivant que w est un suffixe propre de
• • • Ui^, que w est de longueur supérieure Ui^ ou que w et Ui^ diffèrent
par une lettre. Le langage L[^ est égal à L g {S) o ù la grammaire G possède les règles
3.5 Problème de correspondance de Post 167
suivantes.
rn __
s —> ^ ^ U jS a i + E uRcbi H~ ^ ^ u T d i H" ^ ^ U ib V d i
i= l l< i< m l< i< m l<i<m
|xt|=|wi| |w|<|wi| 6€E
ui^ui
S Si S2
51 -> ^ ^ U iS id i + y ^ U jd j
i=l i= l
m m
5 2 —> ViS2di + v%di.
i=l i=l
168 Chapitre 3. Calculabilité
P ro p o sitio n 3.53 (Quines). Il existe des machines de Turing qui écrivent leur propre
codage. De telles machines sont appelées Quines.
Preuve. On considère des machines de Turing qui calculent des fonctions et qui s’arrêtent
sur toute entrée. On suppose que ces machines sont normalisées. Elles possèdent un
unique état final / où se termine tout calcul. Pour simplifier la composition, on suppose
aussi que les machines s’arrêtent avec la tête de lecture sur la première position de la
bande. Pour deux machines M et on note M M ' la machine obtenue en composant
de manière séquentielle les machines M et M'. Pour une entrée Wy la machine M M '
donne le résultat du calcul de M' qui a pris pour entrée le résultat du calcul de M
sur w.
On commence par construire les machines suivantes.
1. Étant donnés les codages (M) et {M') de deux machines de Turing, la machine C
calcule le codage {MM') de la machine MM'.
2. Étant donné un mot Wy la machine Vw calcule le mot w.
3. Pour une entrée Wy la machine Ko affiche le codage (Vw) de la machine qui affiche w.
3.6 Théorème de récursion 169
'P{n)
e - ^ { n ) ^ {V(n)R)
□
On illustre la preuve de la proposition en montrant comment celle-ci permet de
donner un programme en langage C qui affiche son propre code. La même méthode
pourrait être appliquée dans n’importe quel autre langage de programmation.
Le premier problème à résoudre est un problème de notation. Lorsqu’un caractère
>Il J )y inclus dans une chaîne il doit être précédé d’un caractère d’échappe
ment Pour une chaîne w sur l’alphabet ASCII, on note w la chaîne obtenue en
insérant un caractère ' \ ’ avant chaque caractère ’ ” ^ ou ’ \ \ Si u; est par exemple la
chaîne char alors la chaîne w est char ♦ \ ”\ \ ' a ’\ \ \ \ \ " .
Le second problème est qu’un programme C ne peut pas relire ce qu’il a écrit. La
machine Vw est donc transformée en une fonction qui retourne une chaîne de caractères.
Pour la chaîne w égale à char * " \ ’a ’\ \ " , la fonction Vw s’écrit de la manière suivante
en langage C.
La machine K est transformée en une fonction qui affiche le code de Vw- Elle s’écrit
de la manière suivante en langage C.
v o i d R ( c h a r * w) {
p rin tfC 'ch a r * P (){ retu rn
w h i l e (*w != ’ \ 0 O {
if (*w == ’ W ’ Il *w ==
p rin tfC 'W " );
p r i n t f ("yoc", *w++);
}
p r in tf
}
Le code de la machine Q est finalement le suivant.
v o id char* P ( ) { r e tu r n
v o id m a in (){
char* w = P ();
p rin tfC 'ch a r * P (){ retu rn
w h i l e (*w != ' \ 0 O {
i f (*w == Il *w ==
p r in tfC 'W " );
p r i n t f ("y*c", *w++) ;
170 Chapitre 3. Calculabilité
p r i n t f ( » \ » ;}••);
p r in tf w );
où les . . . sont remplacés par ti) où tü est le code void main(){ . . . } de la fonc
tion main.
Il est bien sûr possible de faire plus concis comme l’exemple suivant qui contourne le
problème du caractère d’échappement en utilisant le code ASCII de la quote ’"’ qui est
34 en décimal.
□
Une façon d’énoncer le théorème de récursion est de dire qu’il est possible d’utiliser
le code d’une fonction dans la définition même de cette fonction. La majorité des lan
gages de programmation permettent la définition récursive de fonctions. Il s’agit alors
d’autoriser des appels à une ou plusieurs fonction dans la définition même de cette ou
de ces fonctions. Le théorème de récursion autorise une forme beaucoup plus générale
de récursivité en permettant la manipulation même du code de la fonction. Certains
langages de programmation comme Python rendent possible l’inspection et la manipu
lation du code. On parle alors d’introspection et d’intercession. L’intérêt de cette forme
de programmation est plus théorique que pratique car elle conduit à des programmes
difficiles à comprendre et à maintenir. Nous illustrons cette forme de programmation
en démontrant le théorème de point fixe qui explique les limites des transformations
automatiques de programmes.
T héorèm e 3.55 (Point fixe). Soit t une fonction calculable par machine de Taring qui
à {M ) associe une machine de Taring M ' = t{M). Alors, il existe une machine M telle
que M et t(M) sont équivalentes.
Preuve. On considère la machine M suivante qui est correctement définie d’après la
proposition précédente :
Par construction même de M , les machines M et t{M) sont équivalentes. □
3.7 Machines linéairement bornées 171
In p u t w
1: X (M)
2; y i - t { x )
3: simuler y sur l’entrée w
Le théorème de récursion peut aussi être utilisé pour donner une autre preuve de
l’indécidabilité du langage Lç. Il s’agit en fait d’une preuve très similaire à celle que
nous avons donnée mais l’argument diagonal est caché dans l’utilisation du théorème de
récursion.
Les machines linéairement bornées sont des machines qui utilisent uniquement la
portion de la bande où est écrite l’entrée. Ces machines jouent un rôle important pour
plusieurs raisons. D’une part, elles caractérisent les langages engendrés par les gram
maires contextuelles qui généralisent les grammaires algébriques. D ’autre part, elles se
situent à la frontière de l’indécidabilité puisque le problème de l’acceptation est décidable
alors que le problème du vide est indécidable.
3.7.1 Définition
Une machine de Turing M est dite linéairement bornée si elle n’écrit pas en dehors
de l’espace utilisé par la donnée.
Comme on peut toujours supposer qu’une machine de Turing n’écrit pas le symbole
blanc # (en le dupliquant éventuellement en un autre symbole # '), on peut aussi dire
qu’une machine linéairement bornée est une machine telle que si p, # -> g, 6, x est une
transition alors, & = # et a; = <. Ceci empêche la machine de modifier les symboles
blancs présents sur la bande.
L’espace utilisé par une machine linéairement bornée peut être augmenté en ajoutant
de nouveaux symboles à l’alphabet de bande. Cet espace disponible reste cependant
proportionnel à la taille de l’entrée car l’alphabet de bande demeure fini. Ceci justifie la
terminologie.
D éfin ition 3.56. Une grammaire est un quadruplet (A, V, P, S) où A est un alphabet
fini, V un ensemble fini de variables, S E V est l’axiome et P est un ensemble fini de
règles inclus dans {A + V)* x (A + V)*.
172 Chapitre 3. Calculabilité
Une règle {w,w') e P est encore notée w -> w \ La notion de dérivation des gram
maires algébriques (cf. définition 2.1 p. 83) s’étend de façon naturelle à ces grammaires
plus générales. Un mot u se dérive en un mot u' s’il existe des mots € (^ + V)*
et une règle w w' tels que u = aw/S et = aw^p. On note A la clôture réflexive
et transitive de la relation L’ensemble engendré par la grammaire est par définition
l’ensemble L g {S) = { w G A* | S' A u;}.
D éfin ition 3.57. Une grammaire est dite contextuelle si toutes ses règles sont de la
forme suivante.
i) soit la règle S e qui permet d’engendrer le mot vide à partir de l’axiome,
ii) soit une règle uTv uwv o ù T G V est une variable, UyV G {A + V)* sont des
mots formés de lettres et de variables e t w G {A -\-V\ {S})"*" est un mot non vide
formé de lettres et de variables autres que l’axiome.
P ro p o sitio n 3.58. Un langage L C A'^ est engendré par une grammaire contextuelle
si et seulement si il est engendré par une grammaire croissante.
Une grammaire contextuelle qui ne contient pas la règle S ^ e est une grammaire
croissante. Si L est engendré par une grammaire contextuelle, celle-ci ne contient pas la
règle S
La réciproque est un peu plus délicate. Elle consiste à transformer une grammaire
croissante en une grammaire contextuelle équivalente. Chaque règle de la grammaire
croissante est remplacée par plusieurs règles dans la nouvelle grammaire croissante qui
est construite. Quitte à introduire une nouvelle variable pour chaque lettre de A, on
peut supposer que les règles de la grammaire croissante sont des deux formes suivantes.
- soit de la forme S a pour une variable S g V e t une lettre a G Ay
- soit de la forme 5^^ • • • Si^ ■^jm avec m > n > 1.
Les règles de la forme S a sont laissées inchangées. Chaque règle de la forme
3.7 Machines linéairement bornées 173
-> Zi • -
* • • *^jmy
Zi • • • Zk-iS^^Jk • Zfc_2Sj^_i
Z\- “ Z/5_2S j ^_i • • • Sj *^k— sSji^_2 *’ ’^jmî
^ iS j 2 • • • s.
où Zi, ^ 2, . . . , Zk-i sont k —1 nouvelles variables propres à la règle remplacée. Il est
facile de vérifier que les nouvelles règles simulent l’ancienne règle.
Les grammaires croissantes permettent de démontrer le résultat suivant.
T héorèm e 3.59. Un langage est engendré par une grammaire contextuelle si et seule
ment si il est accepté par une machine de Turing linéairement bornée.
Preuve. Étant donné une grammaire quelconque, on peut toujours faire une machine
de Turing non déterministe qui devine la dérivation à l’envers. La machine accepte
lorsqu’elle trouve l’axiome. Si la grammaire est contextuelle, l’espace mémoire utilisé
diminue au cours du calcul. On obtient donc une machine linéairement bornée.
Réciproquement, soit M = (Q,E,r,jE7,go»^j#) une machine linéairement bornée.
Sans perte de généralité, on peut supposer que la machine a un seul état final g/,
c’est-à-dire que F = {qf}. On construit alors la granamaire contextuelle (i4, F ,P ,5 )
suivante. L’alphabet A est l’alphabet d’entrée E de A i. L’ensemble V de variables est
{S} U (r X E) U (Q X r X E) qui contient l’axiome S', les paires (a, b) formées d’une lettre
a € r de l’alphabet de bande et d’une lettre 6 € E de l’alphabet d’entrée ainsi que les
triplets (g, a, b) formés d’un état q G Qy d’une lettre a G F de l’alphabet de bande et
d’une lettre 6 G E de l’alphabet d’entrée. L’ensemble P contient les règles des trois types
suivants.
- Règles d’initialisation
- une règle S S(a, a) pour chaque a G A,
- une règle S {qo,a^ a) pour chaque a £
- Règles de simulation
- une règle (g,a,c)(d,e) (6,c)(p,d,e) pour chaque transition g,a p , 6,> de
M et chaque c, e G E et d G F,
- une règle (d,e)(g,a,c) {p^d^e){b^c) pour chaque transition q^a p,by< de
M et chaque c, e G E et d G F,
- Règles de terminaison
- une règle (g/, 6, a)(d, e) u(g/, d, e) pour chaque a, e G E et 6, d G F,
- une règle (g/, b,a) a pour chaque a G E et 6 G F,
□
174 Chapitre 3. Calculabilité
3.7.3 Décidabilité
Le langage Xyj est accepté par une machine linéairement bornée qui peut être
effectivement construite à partir de la machine M et de w. La machine Ai' doit vérifier
que Co = que Ci -> Q + i pour 0 < i < A; et que Ck est acceptante. On a alors les
équivalences
w G L(A4) Xy, ^ 0 <=^ L{M') ^ 0
qui montrent que le problème de l’acceptation pour les machines de Turing se réduit au
problème du vide pour les machines linéairement bornées. Le problème du vide pour les
machines linéairement bornées est donc indécidable. □
3.7.4 Complémentation
Nous montrons dans cette partie que la famille des langages acceptés par des ma
chines linéairement bornées est fermée par complémentation. Ce théorème est un très
joli résultat. Nous donnons ensuite une généralisation à un cadre beaucoup plus large.
T h éorèm e 3.62 (Immerman et Szelepcsényi). Pour toute machine M linéairement
bornée et non déterministe, il existe une machine Ai' linéairement bornée et non déter
ministe qui accepte le complémentaire du langage accepté par A i.
Soit L un langage accepté par une machine linéairement bornée M . Pour une entrée
u; G S* de A i, on note N{w) le nombre de configurations de A i qui peuvent être atteintes
par M à partir de l’entrée w, c’est-à-dire de la configuration initiale q^w. On a l’inégalité
N{w) < pour une constante K bien choisie. Le nombre N{w) peut donc être écrit
en base K sur une bande de longueur |iî;|.
On construit une machine A i' linéairement bornée et non déterministe qui accepte
le complémentaire E* \ L du langage L. Pour une entrée w, le calcul de Ai' comprend
les deux étapes principales suivantes.
3.7 Machines linéairement bornées 175
1. calcul de N{w)
2. déterminer si u; G L en utilisant N{w)
On commence par décrire Pétape 1 puis on décrit Tétape 2 .
Calcul de N{w)
On construit dans cette section une machine linéairement bornée et non déterministe
qui calcule N{w) à partir de w. On rappelle qu’une machine non déterministe calcule
une fonction / si pour chaque entrée il existe au moins un calcul acceptant et que de
plus chaque calcul acceptant produit la valeur f{w).
Pour l’entrée w, on note C{w)^ l’ensemble des configurations contenues dans l’espace
\w\. On note également Ck{w) l’ensemble des configurations qui peuvent être atteintes
en au plus k étapes de calcul de A i à partir de la configuration initiale qqw. On note
finalement Nk{w) le cardinal de l’ensemble Ck{w). La suite {Nk{w))k>o est bien sûr
croissante. Le nombre N q{w ) est par définition égal à 1 et le nombre N{w) est égal
à Nk{w) où k est le plus petit entier tel que Nk{w) = Nk+i{w). Pour calculer N{w)^ il
suffit donc de savoir calculer Nk^i{w) à partir de Nk{w). La procédure suivante calcule
Nk+i{w) à partir de Nk{w).
L’algorithme suivant prend en entrée la valeur de Nk{w) et calcule de façon non
déterministe Nk-\-i{w). Il s’arrête soit en donnant la valeur exacte de Nk-\-i{w) soit sur
un échec mais au moins un calcul conduit à la valeur de Nk^i{w), Cet algorithme fonc
tionne de la façon suivante. Il parcourt toutes les configurations de C{w). Pour chacune
d’entre elles, il détermine si elle appartient à Ck+i{w) et il retourne à la fin le cardi
nal de cet ensemble. L’algorithme procède de la façon suivante pour déterminer si une
configuration c appartient à Ck-\-i{w). Il parcourt à nouveau toutes les configurations c'
de C{w) et pour chacune d’entre elle, il choisit de façon non déterministe si elle appar
tient à Ck{w). Si l’algorithme choisit que c' appartient à C{w)^ il le vérifie en trouvant de
façon déterministe un calcul de longueur au plus k conduisant à c'. Si cette vérification
échoue, l’algorithme échoue globalement. Ensuite, si c' est égal à c ou si une transition
de M permet de passer de c' à c, il est acquis que c appartient à Ck-\-i{w). Inversement,
toute configuration de Ck-\-i{w) est bien trouvée ainsi. L’algorithme utilise la donnée
Nk{w) pour vérifier finalement que pour chaque configuration c', il ne s’est pas trompé
en choisissant si c' appartient ou non à Ck{w). Pendant le parcours des configurations c',
l’algorithme compte le nombre de configurations mises dans Ck{w) et vérifie à la fin que
ce nombre est bien égal à Nk{w). Cette vérification assure que l’algorithme n’oublie
aucune configuration de Ck{w). Puisque l’algorithme vérifie aussi que chaque configura
tion mise dans Ck{w) est effectivement dans Ck{w)^ tous les choix de l’algorithme sont
exacts. Si l’algorithme fait un seul mauvais choix, il échoue mais si tous ses choix sont
exacts, il donne la valeur de Nk^i{w).
Acceptation si w ^ L(M)
Nous terminons la preuve du théorème d’Immerman et Szelepcsényi en donnant la
machine Ai' qui accepte le complémentaire du langage accepté par A i. Cette machine Ai'
est donnée sous la forme d’un algorithme.
L’algorithme suivant calcule de façon non déterministe si un mot w n’appartient
pas au langage L(Ai) des mots acceptés par A i. Cet algorithme est assez similaire à
176 Chapitre 3. Calculabilité
l’algorithme précédent pour calculer Nk-\-i{w) à partir de Nk{w). Il fait des choix non
déterministes et il utilise la donnée N{w) pour vérifier à la fin que les choix ont été
corrects. L’algorithme procède de la façon suivante pour déterminer que w n’appartient
pas à L(M). Il parcourt toutes les configurations de C(w) et pour chacune d’entre elles,
il choisit si elle est accessible ou non à partir de qow. Si le choix est positif, l’algorithme
le vérifie en trouvant de façon non déterministe un calcul de qow à cette configuration. À
la fin de ce parcours, le nombre de configurations choisies comme accessibles est comparé
avec N(w) pour vérifier qu’aucune configuration réellement accessible n’a été mise de
côté. Si finalement aucune configuration accessible n’est finale, l’algorithme accepte le
mot car il n’est pas dans L{M),
Extension
Nous allons voir que le théorème précédent peut être établi dans un cadre plus large.
Nous commençons par analyser l’espace utilisé par les deux algorithmes donnés pour
établir le résultat.
Pour chaque entrée les deux algorithmes manipulent un nombre fixe de configu
rations de C{w) et un nombre fixe de compteurs bornés par le cardinal de C{w), Le
premier algorithme utilise par exemple deux configurations c et c', deux compteurs i
et j ainsi que deux configurations et un compteur supplémentaire pour la vérification de
qow c. L’espace nécessaire pour contenir toutes ces données est proportionnel à la
taille maximale d’une configuration de C{w).
L’ensemble C{w) a été défini comme l’ensemble des configurations de taille au plus |u;|
car, dans le cas d’une machine linéairement bornée, cet ensemble contient toutes les
configurations accessibles à partir de qow. Si la machine M n’est pas linéairement bornée,
il faut définir C{w) comme l’ensemble des configurations de taille au plus s{w) où s{w) est
la taille maximale d’une configuration accessible à partir de qow. Cette taille maximale
3.8 Décidabilité de théories logiques 177
Dans toute cette partie, nous considérons la logique du premier ordre où le modèle est
l’ensemble N des entiers. Les opérations sur les entiers que l’on considère sont l’égalité,
l’addition et la multiplication.
D éfin itio n 3.64. On dit qu’une théorie logique est décidable s’il est décidable de savoir
si une formule close est vraie.
178 Chapitre 3. Calculabilité
L’automate pour l’égalité s’obtient très facilement (cf. figure 3.11). Pour l’addition,
on construit un automate co-déterministe en faisant comme s’il lisait de la droite vers
la gauche. Sur la figure 3.12, l’état c est l’état avec retenue et l’état c est l’état sans
retenue.
Pour le passage de Ak-\.i à Ak, on écrit (pk = Qk-\-iXk-hi^k-\-i et on considère deux
cas suivant que Qk-\-i est le quantificateur V ou le quantificateur 3. Dans le premier cas,
on se ramène au second cas en écrivant que (pk = -^3xk-\-i~'(pk-\-i et en utilisant la clôture
par complémentation des langages rationnels. Il ne reste plus qu’à traiter le cas où Qk-\-i
est le quantificateur existentiel.
3.8 Décidabilité de théories logiques 179
( 1, 1, 1) ( 1, 0 , 1)
(1, 0 , 0) (0 , 1, 1)
( 0 , 1, 0 ) (0, 0, 0)
(0 , 0 , 1)
( 1, 1) ( 1, 1)
( 1, 0 ) (0, 1)
( 0 , 0) ( 0, 0 )
( 0, 1, 0)
(ÔAÏ)^
(0 , 1, 1) (1, 0, 0)
( 1. 1, 0)
( 0 , 0 , 0)
Nous avons montré que la logique du premier ordre des entiers munis de l’addition est
décidable. Par contre, cette logique devient indécidable dès qu’on ajoute la multiplication
comme l’établit le théorème de Tarski.
La preuve de ce résultat est difficile et technique et nous ne la donnons pas ici. Elle
consiste à réduire le problème de l’acceptation à ce problème. À toute instance (M^w)
du problème d’acceptation, on associe une formule 3 x (pM,w qui est vraie si et seulement
si le mot w est accepté par la machine M . L’idée est de coder l’existence d’un chemin
acceptant par une formule.
Les fonctions récursives constituent une autre façon de définir la notion de calcu
labilité. Elles sont définies à partir d’un nombre restreint de fonctions élémentaires en
utilisant la composition, un schéma de récurrence et un schéma de minimisation.
Les fonctions récursives sont habituellement définies comme des fonctions qui ma
nipulent des entiers mais il est également possible de considérer des fonctions de mots
comme en [Aut92, p. 68]. Chaque fonction récursive est une fonction d’un sous-ensemble
de dans pour des entiers k et r. On commence par définir la sous-famille des
fonctions primitives récursives qui sont des fonctions totales.
Notations
Comme les fonctions récursives manipulent des A-uplets d’entiers, on adopte quelques
conventions pour simplifier les notations. Un fc-uplet d’entiers est noté ( n i , . . . , n^). Si m
et n sont respectivement un fc-uplet ( m i , . . . ,mfc) et un Z-uplet ( n i , . . . ,n/), le fc-hZ-uplet
( m i , . . . , m^;,ni,. . . , n/) obtenu par concaténation est simplement noté m ,n ou encore
(m,n). En particulier, si / est une fonction dont le domaine est inclus dans on
écrit / ( m , n ) pour / ( m i , *•. . .. ,n^). Cette notation est étendue aux suites de
3.9 Fonctions récursives 181
fc-uplets. Soit P un entier et soient p entiers fci, . .., fcp. Soit k l’entier égal à la somme k\ +
-----h fcp. Si chaque rii est un fc^-uplet . . . , on note n i , r z p ou ( n i , n ^ )
le fc-uplet ( n i , i , . . . ,np,fcp) obtenu en concaténant les p fci-uplets. Si / est une fonction
dont le domaine est inclus dans N^, on écrit / ( n i , . . . ,np) pour / ( n i , i , . . . ,np,fcp).
Définitions
La famille des fonctions primitives récursives est la plus petite famille de fonctions
qui vérifie les conditions suivantes.
i) Les fonctions constantes, les projections, les fonctions de duplication et la fonction
successeur sont primitives récursives.
ii) La famille des fonctions primitives récursives est close pour les schémas de com
position et de récurrehce.
Exemples
On donne ici les exemples classiques de fonctions primitives récursives. Ces fonctions
seront utilisées dans la preuve de l’équivalence avec les machines de Turing.
suivante.
add(0, m) = m
add(n + 1, m) = s(add(n, m))
p{ 0 ) = 0
p{n + 1) = n
sub(n, 0) = n
sub(n, m + 1) = p(sub(n, m))
Comme la récurrence porte sur le second argument, la fonction sub est égale à sub'(p2,Pi)
où la fonction sub' est égale à Rec(pi,p(p 2))-
P ro d u it. La fonction mul définie par mul(n,m) = nm est primitive récursive. Elle
peut en effet être définie de la manière suivante.
mul(0,m) = 0
mul(n + l , m ) = add(mul(n,m),m)
D iv isio n e t reste. Les fonctions div et mod où div(n, m) et mod(n, m) sont respecti
vement le quotient et le reste de la division entière de n par m sont primitives récursives.
La fonction div peut être définie de la manière suivante.
div(0, m) = 0,
div(n -h l , m ) = div(n,m) + eq(m (l + div(n,m)),n + 1)
La fonction mod peut être alors définie par mod(n, m) = n —m div(n, m).
3.9 Fonctions récursives 183
pow(0 ,?n) = 1,
pow(n + 1, m) = mul(pow(n, m), m)
root(0 , m) = 0 ,
root(n -h 1, m) = root(n, m) + eq(m, pow(l -h root(n, m)), n H-1)
log(l,m) = 0 ,
log(n + 1, m) = log(n, m) -h eq(pow(l H- log(n, m), m), n -h 1)
Exercice 3.69. Montrer que la fonction prime définie par prime(n) = 1 si n est un nombre
premier et par prime(n) = 0 sinon est primitive récursive.
Solution. On commence par définir la fonction ndiv(n) qui donne le nombre de divi
seurs de l’entier n. Cette fonction est définie par ndiv(n) = pndiv(n, n) où la fonction
pndiv(p, n) donne le nombre de diviseurs de n inférieurs à p. La fonction pndiv est définie
de la manière suivante.
pndiv (0 , n) = 0 ,
pndiv(p + 1, n) = pndiv(p, n) -h eq0 (mod(n,p -h 1)).
Fonction (FAckermann
Au vu des exemples précédents, il semble que toutes les fonctions usuelles soient
primitives récursives. Le schéma de récurrence utilisé comporte cependant une restriction
forte qui empêche de définir certaines fonctions dont la définition mathématique ne pose
aucun problème. Le schéma de récurrence impose que la valeur de h{n -h l , m ) soit
calculé à partir de n, /i(n, m) et m par une fonction g déjà définie. On définit la fonction
d’Ackermann A de dans N par
A{k^m^n) = n + 1 si A; = 0,
A(fc,m,n) = m si fc = 1 et n = 0 ,
A{k^m^n) = 0 si A; = 2 et n = 0,
A(fc,m,n) = 1 si A; 1,2 et n = 0 ,
A(fc,m,n) = A(k - 1, m, A(Ai,m^n —1)) sinon.
184 Chapitre 3. Calculabilité
Une simple induction sur le triplet montre que la valeur de i4(fc,m,n) est bien
définie pour tous les entiers fc, m et n.
La proposition suivante donne des formules explicites de A{ky m, n) pour les premières
valeurs de k. Ces égalités s’établissent par récurrence sur la paire (m,n).
^ ( l , m , n ) = m + n,
A{2^ m, n) = mn = m H------ h ?n,
n
A(3, m, n) = vnP’ = m x x rn ^
m^
>n
A(4, m, n) = m”
A( 0 ,n) = n + 1,
A(fc + 1, 0 ) = A(fc,l),
A{k + 1, n + 1) = A(fc, A{k + 1, n)) pour n > 0
Le corollaire précédent donne explicitement une fonction qui n’est pas primitive récur
sive. Un argument diagonal fournit aussi une fonction qui n’est pas primitive récursive.
Soit (/n)n>o une énumération de toutes les fonctions primitives récursives de N dans N.
La fonction g définie par g{n) = /n(^) + 1 n’est pas primitive récursive.
3 .9 .2 F o n c tio n s ré c u rsiv e s
Nous allons maintenant montrer le théorème suivant qui établit que les notions de
calculabilité définies par les fonctions récursives et les machines de Turing sont iden
tiques.
T h éorèm e 3.74. Une fonction de dans N^ est recursive si et seulement si elle est
calculable par une machine de Taring.
Pour les machines de Turing, il faut préciser comment sont codés les entiers. Ils
peuvent être codés en binaire, en base 10 ou en base 1. Le choix du codage est en
réalité sans importance puisqu’il est possible de passer d’un quelconque de ces codages
à n’importe quel autre avec une machine de Turing.
Il est facile de se convaincre qu’une fonction récursive est calculable par une machine
de Turing. Les fonctions de base comme les fonctions constantes, les projections, les
fonctions de duplication sont bien sûr calculables par machine de Turing. Ensuite avec
des machines calculant des fonctions / i , •.. ,/p, il n’est pas difficile de construire
des machines de Turing pour les fonctions g{fiy . . . , /p), R ec(/,^ ) et M in(/).
Nous allons maintenant montrer qu’une fonction calculable par une machine de Tu
ring est récursive. Soit M une machine de Turing qu’on suppose déterministe et avec
un seul état d’acceptation q^. On suppose que le machine ne se bloque jamais. Soit n le
nombre d’états de M et soit m le cardinal de son alphabet de bande. On suppose que les
états de M sont les entiers { 0 , 1, . . . , n —1} et que les symboles de bande sont les entiers
{ 0 , 1 , . . . , m - 1}, le symbole blanc # étant l’entier 0. Pour tout mot lü = ao • • • sur l’al
phabet de bande, on associe les deux entiers a{w) = X)^=o et P{w) = Y h=o
obtenus en lisant w comme un nombre écrit en base m avec les unités respectivement à
droite et à gauche pour a et ¡3. Les fonctions a et ^ permettent de considérer les mots
de la bande comme des entiers.
Soit w une entrée de M et soit Co - > • • • - > Cn le calcul de M sur w. On suppose
que chaque configuration Ck est égale à UkQk'^k- On va montrer que la fonction c définie
par
c{P{w),k) = {a{uk),qk,P{vk))
est primitive récursive. À partir des transitions de A i, on peut définir une fonction t
telle que
¿(Pja) = (g, 6, x) si P, a g, 6, x est une transition de M .
On complète t sur № en posant t{i^j) = (0,0,0) si i > n ou j > m. La fonction t
est bien sûr primitive récursive. On note ¿i, ¿2 et t^ les fonctions pi(t), P2 {t) et ps{t) qui
donnent respectivement le nouvel état, la symbole à écrire et le déplacement de la tête
de lecture. On a alors la définition récursive de c.
- c{0 {w),O) = i 0 ,qo,^{w)),
186 Chapitre 3. Calculabilité
û^(^fc+i) = div(a(г¿A;),m),
Qk-\-l — Û/c),
Après avoir introduit les machines de Turing, on a montré que les différentes variantes
de ces machines conduisaient toutes à la même notion de calculable. De même, on a établi
précédemment que les fonctions récursives sont équivalentes aux machines de Turing.
Une fonction est récursive si et seulement si elle est calculable par une machine de
Turing. Beaucoup d’autres modèles de calcul comme le A-calcul ou les machines RAM
ont été introduits. Chacun de ces modèles s’est avéré équivalent (ou plus faible) aux
machines de Turing. Ceci a conduit Church à postuler que tous les modèles de calcul
définissent la même notion de calculable. Ce postulat ne peut bien sûr pas être démontré
mais il est universellement admis.
On appelle machine à k compteurs une machine de Turing à k bandes qui n’écrit que
sur la première position de chaque bande. L’idée essentielle est que la machine n’écrit pas
sur les bandes. La machine est cependant autorisée à écrire sur la première position de
chaque bande afin de changer le symbole à cette position et ainsi être capable de détecter
cette position. La seule information vraiment utile sur chaque bande est la position de la
tête de lecture. Chaque bande est donc utilisée comme un simple compteur contenant un
entier. À chaque transition, chaque compteur peut être comparé avec zéro, incrémenté
par un déplacement de la tête vers la droite ou décrémenté par un déplacement de la
tête vers la gauche. Pour A; = 1, on retrouve la notion d’automate à un compteur. Les
machines RAM sont en fait une autre présentation de ces machines. Les compteurs sont
alors appelés registres et les états sont remplacés par un programme formé d’instructions
d’incrémentation, de décrémentation et de test avec zéro.
Exercice 3.75. 1. Montrer que toute machine de Turing est équivalente à une machine
à 3 compteurs.
2. Montrer que toute machine de Turing est équivalente à une machine à 2 compteurs.
Solution.
1. L’idée principale est semblable à celle utilisée pour l’équivalence entre les machines
de Turing et les fonctions récursives. Le contenu de la bande est scindé en deux
mots au niveau de la tête de lecture. Les deux mots sont interprétés comme des
entiers grâce aux fonctions a et ^ introduites à la section 3.9.3. Ces deux valeurs
sont alors mises dans les deux premiers compteurs de la machine. Le troisième et
dernier compteur sert de compteur temporaire pour les opérations arithmétiques.
La lecture et l’écriture d’un symbole ainsi que les déplacements de la tête de lecture
3.10 Compléments 187
3.10 Compléments
1 0
D éfin itio n 3.77. Soit X un ensemble d’entiers et soit fc > 1 un entier. L’ensemble X
est dit k-rationnel si l’ensemble des écritures des éléments de X en base k est rationnel.
d’entiers est ultimement périodique s ’il existe deux entiers Z> 0 et p > 1 tels que pour
tout entier n supérieur à Z, n appartient à X si et seulement si n + p appartient à X ,
Ces définitions permettent d’énoncer la proposition suivante qui décrit complètement les
ensembles rationnels d’entiers.
P ro p o sitio n 3.78. Pour un ensemble X d^entiers, les conditions suivantes sont équi
valentes.
1 . X est rationnel
Nous allons maintenant étudier les liens entre les notions de fc-rationalité pour dif
férentes valeurs de k. La construction d’un automate acceptant les écritures en base k
des entiers congrus à r modulo q implique immédiatement la proposition suivante.
P ro p o sitio n 3 .79. Tout ensemble rationnel d^entiers est k-rationnel pour tout entier k.
P ro p o sitio n 3.80. Pour tout entiers k > 1 et n > 1, un ensemble X d^entiers est
k-rationnel si et seulement si il est k“^-rationnel
Preuve. Les chiffres utilisés en base sont les entiers de 0 à —1 qui s’écrivent avec
n chiffres en base k. Cette remarque permet de passer d’un automate pour X en base k
à un automate en base k'^. □
On s’intéresse dans cette partie aux machines qui n’écrivent pas sur leur entrée. Si
la machine a plusieurs bandes, elle peut recopier l’entrée de la première bande sur une
autre bande en parcourant l’entrée avec une tête de lecture et en écrivant en même temps
sur une autre bande. Si la machine ne possède qu’une seule bande, l’idée intuitive est
que la machine ne peut pas copier cette entrée sans la modifier. Pour effectuer la copie,
l’unique tête de lecture doit faire des aller-retours entre l’entrée et le reste de la bande.
La machine doit d’une façon ou d’une autre marquer là où elle en est dans la copie.
T h éo rèm e 3.84. Soit M une machine de Taring à une seule bande qui n^écrit jamais
sur son entréef alors le langage L(M) des mots acceptés par M est rationnel.
Le théorème précédent énonce que pour une telle machine de Turing, il existe un
automate qui accepte les mêmes entrées. Par contre, le passage de la machine de Turing
à l’automate n’est pas calculable.
w w
h H
Preuve. Pour montrer que le langage L(M) est rationnel, on montre qu’il est saturé par
une congruence d’indice fini, c’est-à-dire avec un nombre fini de classes. On introduit
quatre fonctions Aq, AJ, AJ et AJ : E* Çp(Q x Q) qui associent à chaque mot w de S*
des ensembles de paires d’états. L’ensemble Aq(u;) est défini comme l’ensemble des paires
(p, q) d’états de M telle qu’il existe un calcul de M de l’état p avec la tête sur la première
lettre de u; à l’état q avec la tête après la dernière lettre de w qui ne lit que des lettres
de w (cf. figure 3.16). Les trois fonctions Aj, Aj et X\ sont définies de manière similaire
190 Chapitre 3. Calculabilité
en considérant les chemins qui restent aussi sur w mais qui partent ou arrivent au début
ou à la fin de w (cf. figure 3.16).
On définit maintenant la relation ^ sur E* par
fA 8M = A8K )
Aj(w) = Aj(tü')
W rsjw
A ?H = A?(«;')
.A}(w) = Aî(w')
h H I- + H
w w
### ###
Par définition, la relation ~ est une relation d’équivalence. Puisque chacune des
quatre fonctions A®, Aj, AÇ et Aj peut prendre au plus valeurs différentes, le nombre
3.10 Compléments 191
de classes de est majoré par On prouve maintenant que ~ est une congruence
de monoïde (cf. définition 1.138 p. 70). Soient г¿, u', v et v' des mots sur E tels que
г¿ ~ u' et î; ~ u'. On montre d’abord l’égalité Лo(г¿u) = Les trois autres égalités
pour Aq, a? et X\ se montrent de manière identique. Un chemin à l’intérieur de uv se
décompose en une suite de chemins à l’intérieur de -u ou î; (cf. figure 3.17). Comme
U ^ u' et V ^ v' les chemins à l’intérieur de г¿ et u peuvent être remplacés par des
chemins à l’intérieur de u' et v'. On montre maintenant que la relation sature L{M).
Soient w et deux mots sur E tels que w w'. Un calcul sur l’entrée w se décompose
en une suite de calculs à l’intérieur de w et hors de w (cf. figure 3.18). Comme w ^ w \
les calculs à l’intérieur de w peuvent être remplacés par des calculs à l’intérieur de w'
pour obtenir un calcul sur l’entrée w \ On a finalement montré que le langage L{M) est
reconnu par le monoïde fini E */^. □
Le théorème précédent montre que si l’on introduit des automates finis qui peuvent
avancer ou reculer d’une position la tête de lecture à chaque transition, ces automates
acceptent encore des langages rationnels. De tels automates sont appelés automates
boustrophédons {2-way automata en anglais). Pour que l’automate puisse détecter le
début et la fin du mot, il est commode d’encadrer le mots par deux symboles # . Le
terme boustrophédon est généralement employé pour qualifier les systèmes d’écriture où
le sens de lecture des lignes est alternativement de gauche à droite et de droite à gauche.
a,<
6,<
Exemple 3.85. L’automate boustrophédon représenté à la figure 3.19 accepte les palin
dromes de longueur 6 . En suivant ce modèle, il est possible de construire un automate
boustrophédon ayant n(n H-1)/2 états pour n impair et n(n + 1)/2 + 1 états pour n pair
qui accepte les palindromes de longueur n. En revanche, tout automate déterministe
acceptant les palindromes de longueur n sur l’alphabet {a, b} a un nombre d’états de
l’ordre de 2^.
Chapitre 4
Complexité
L calculer une solution. Il s ’agit donc de considérer des problèmes calculables mais
de prendre en compte les limitations qui rendent inaccessibles les solutions. Nous verrons
que les deux principales limitations sont le temps et l’espace.
4.1 Introduction
4.1.1 Objectifs
Lorsqu’il existe des algorithmes pour résoudre un problème, ceux-ci peuvent se révé
ler inutilisables dans la pratique parce qu’ils requièrent soit trop de temps soit trop de
mémoire même pour des petits exemples. L’objectif de cette partie est d’identifier et de
caractériser des problèmes pour lesquels il y a peu d’espoir de trouver des algorithmes ef
ficaces. Il s’agit en quelque sorte d’une approche complémentaire de l’algorithmique dont
l’objectif est de développer des algorithmes performants. L’idée est de fournir des argu
ments pour se convaincre que c’est probablement impossible pour certains problèmes.
Un objectif est aussi de classifier les problèmes selon leur complexité en temps ou en
espace mémoire mais avec des échelles beaucoup plus grossières qu’en algorithmique. Il
est davantage question de distinguer les complexités polynomiale et exponentielle que
les complexités linéaire et n logn .
Dans tout ce chapitre, on ne considère naturellement que des problèmes décidables.
On suppose implicitement que toutes les machines de Turing considérées s’arrêtent sur
toutes leurs entrées.
On commence par définir le temps et l’espace utilisés par un calcul. Le temps est le
nombre de transitions effectuées et l’espace est le nombre de cellules de la bande qui sont
visitées. On définit ensuite la complexité en temps et en espace d’une entrée puis d’une
machine de Turing. C’est à chaque fois le cas le pire qui est pris en compte. Le temps et
l’espace nécessaires pour une entrée sont les maxima du temps et de l’espace utilisés par
un calcul sur cette entrée. Ensuite, la complexité en temps et en espace d’une machine
est la fonction qui associe à chaque entier n les maxima des complexités en temps et en
espace des entrées de taille n.
Chapitre 4. Complexité
194
D éfin itio n 4.1 (Complexité). Soit une machine de Turing M (o priori non détermi
niste) et soit 7 = ço'^ —> Oi —r ■• • Cm un calcul de M d entrée w.
- le temps calcul 7 est m.
—l’espace s/^('y) de ce calcul 7 ®st maxo<»<m l^tl-
On définit alors la complexité en temps (resp. en espace) pour une entrée w comme la
plus grande complexité en. temps (resp. en espace) des calculs d’entrée w.
tM (^) — (7 ) SM (^) = (7 )
^ m a x (i^ (n ),n ) et ^
Le théorème suivant énonce qu’on peut toujours accélérer une machine d’un facteur
constant. Le principe est identique à l’idée de passer d’un processeur 32 bits à un pro
cesseur 64 bit pour augmenter la vitesse de travail. Pour que le résultat soit vrai, il faut
cependant supposer que le temps soit suffisant pour lire l’entrée. Cette condition est
nécessaire pour éviter les cas pathologiques comme les machines en temps constant.
T ao ai Û2 as U4 Û>5
r' aoi a i 0 2 ,0 3 U 4 , ÎI 5
Chaque transition de la machine bi-infinie est simulée par exactement une transition
de la machine à bande infinie. Sur chaque entrée, le nombre de transitions effectuées est
le même pour les deux machines. La transformation n’induit donc aucun changement de
la complexité en temps.
Nous avons montré au chapitre précédent que toute machine à plusieurs bandes est
équivalente à une machine à une seule bande. Une machine à une seule bande peut
simuler une machine à k bandes en mettant sur sa bande les contenus des k bandes
séparés par un symbole spécial. La simulation d’une seule transition de la machine à
196 Chapitre 4. Complexité
Nous avons également montré au chapitre précédent que toute machine de Turing est
équivalente à une machine de Turing déterministe. Soit M une machine non déterministe.
Une machine déterministe M ' peut simuler M en essayant successivement tous ses
calculs. Pour chaque entrée w, la machine M ' effectue un parcours de l’arbre de tous
les calculs de M sur w. Comme on suppose M s’arrête toujours, cet arbre est fini. La
machine peut dans ce cas faire un parcours en profondeur de cet arbre.
Le nombre de calculs possibles pour pour une entrée de taille n est borné par
^ gg|. jg nombre maximal de transitions qui peuvent être effectuées à par
tir d’une configuration quelconque. L’entier k est le cardinal maximal des ensembles
5(p, a) = {(g, b ,x ) \ p , a q ,b ,x G E } pour tous p 6 Q et a G P. On a donc montré le
résultat suivant.
P ro p o sitio n 4.5. Toute machine de Taring M est équivalente à une machine de Taring
déterministe M ' telle que
tM'{n) =
Il faut noter le changement radical de complexité induit par le passage d’une machine
non déterministe à une machine déterministe.
D éfin itio n 4 .6. Pour une fonction / : N M+, on définit les classes
- TiME(/(n)) est l’ensemble des problèmes décidés par une machine de Turing dé
terministe (à plusieurs bandes) en temps 0 (/(n )).
4.2 Complexité en temps 197
- NTlM E(/(n)) est l’ensemble des problèmes décidés par une machine de Turing non
déterministe (à plusieurs bandes) en temps 0 {f{n)).
On définit alors les classes de complexité suivantes.
P = IJ TlME(n*’) NP = y NTiME(n*)
fc>0 k> 0
Exp T im e = IJ T ime(2”*') NE xp T im e = IJ NT ime(2"*‘)
fc>0 fc>0
Le fait que la définition précédente soit basée sur des machines à plusieurs bandes
plutôt que sur les machines à une seule bande est sans grande importance. La proposi
tion 4.4 indique que l’on aurait obtenu les mêmes classes avec les machines à une seule
bande. Il est en revanche essentiel de distinguer les machines déterministes des machines
non déterministes.
Il existe bien sûr beaucoup d’autres classes de complexité. Par exemple la classe
fc-ExpTiME est la classe des problèmes qui peuvent être résolus par une machine déter
ministe dont le temps de calcul est borné par une tour d’exponentielles de hauteur fc.
P ro p o sitio n 4.7. Les classes de complexité introduites vérifient les inclusions suivantes.
P ç N P ç E xp T ime ç NE xp T ime.
Les inclusions entre ces classes et leurs classes duales sont représentées à la figure 4.1.
Pour chaque classe C, on note classe co-C la classe duale qui contient les complé
mentaires des problèmes dans C. Si les classes C et co-C sont égales, la classe C est
dite autoduale. Toutes les classes de complexité définies par des machines déterministes
comme P et E xp T ime sont bien sûr autoduales. Le théorème d’Immerman et Szelepc-
sényi établit que toutes les classes de complexité en espace sont également autoduales.
198 Chapitre 4. Complexité
w[i,j]
w
n
F igure 4.2 - facteur w[iyj] de w
In p u t Mot w = a i ' - a n
1: for 1 < г < j < n d o / / Initialisation
2 E ij 0
3 for 1 < г < n d o / / Cas i = j
4 for a il règle 5 a do
5 if ai = a t h e n
6 Ei^i i Ei^i U {a}
7 for l < d < n —I d o / / Cas i < j : d = j —i
8 for 1 < г < п — d d o
9 for i < k < i + d do
10 for a il règle S Si S 2 d o
11 if Si G Ei^k et S 2 G Ek+i^i^d t h e n
12 ^ -®г,г+й U { 5 }
de déterminer pour une formule (p donnée s’il existe une affectation donnant la
valeur 1 à y?. Un exemple d’une instance de Sat est la formule suivante.
Nous commençons par montrer que Нам-Path est bien dans la classe N P. Une
machine non déterministe peut décider ce problème en temps polynomial de la façon
suivante. Elle choisit d’abord de façon non déterministe un ordre total sur les sommets.
Ensuite, elle vérifie que la suite des sommets constitue bien un circuit hamiltonien de s
à t. Le choix d’un ordre quelconque sur les sommets peut être fait au pire en temps
quadratique. La vérification que c’est un circuit hamiltonien se fait en temps linéaire
ou quadratique suivant la représentation du graphe. Si le graphe n’a pas de chemin
hamiltonien, aucun calcul n’est acceptant. Au contraire, s’il existe au moins un chemin
hamiltonien, le calcul qui choisit l’ordre des sommets obtenus en suivant ce chemin
accepte.
Nous montrons maintenant que le problème S at est aussi dans la classe N P. Une
machine non déterministe peut décider ce problème en temps polynomial de la façon
suivante. Elle choisit d’abord de façon non déterministe une affectation en attribuant à
chaque variable la valeur 0 ou 1. Ensuite, elle vérifie que cette affectation donne bien la
valeur 1 à la formule considérée. Il existe au moins un calcul acceptant si et seulement
si la formule est satisfaisable.
Les deux algorithmes donnés pour les problème Sat et Нам-Path suivent le même
schéma. Ils commencent par choisir de façon non déterministe une éventuelle solution
puis ils vérifient en temps polynomial qu’il s ’agit effectivement d’une solution. Ce schéma
se généralise à tous les problèmes de la classe NP. Les problèmes de la classe P sont ceux
pour lesquels l’existence d’une solution peut être déterminée en temps polynomial. Au
contraire, les problèmes de la classe N P sont ceux pour lesquels une solution peut être
vérifiée en temps polynomial. La définition et la proposition suivantes rendent rigoureuse
cette intuition.
Exercice 4.14. Montrer que si le langage L est dans la classe P (resp. N P), alors le
langage L* est aussi dans la classe P (resp. N P).
4.2.4 NP-complétude
Réduction polynomiale
D éfin itio n 4.15 (Réduction polynomiale). Soient A et B , des problèmes codés respec
tivement par L a Qt LB sur les alphabets Tía et T b - Une réduction polynomiale de A k
B est une fonction / : calculable en temps polynomial par une machine de
Turing déterministe telle que :
w £ L a 4=^ f { w ) G L b -
Com plétude
L’idée intuitive est que les problèmes NP-complets sont les plus difficiles des pro
blèmes NP puisque tous les problèmes de N P se ramènent à ces problèmes. Pour montrer
qu’un problème est NP-difficile et en particulier NP-complet, on utilise généralement la
proposition suivante qui découle directement des définitions.
Pour utiliser la proposition précédente afin de'montrer qu’un problème est NP-
complet, il faut déjà disposer d’un problème NP-complet. Le théorème de Cook et Levin
en fournit deux.
4 .2 .5 N P -c o m p lé tu d e d e S a t e t 3 S a t
La notion de NP-complétude est pertinente parce qu’il existe des problèmes NP-
complets. C’est un résultat étonnant car on aurait pu imaginer une hiérarchie infinie de
problèmes dans la classe NP. Les premiers problèmes NP-complets à avoir été trouvés
sont les problèmes S at et 3S at . Le problème 3S at est souvent très pratique pour
prouver que d’autres problèmes sont NP-complets car il se prête bien à des réductions.
Le problème S at est le problème de la satisfaisabilité d’une formule du calcul proposi
tionnel (cf. exemples 4.10 et 4.13). Le problème 3S at est le problème de la satisfaisabilité
d’une formule du calcul propositionnel où cette formule est en forme normale conjonctive
avec au plus trois littéraux par clause. Une instance de 3S at est donc une conjonction
Cl A • • • A ca; de A; clauses où chaque clause Ci est une disjonction li^i V k ^2 V /¿,3 de trois
littéraux qui sont chacun soit une variable Xk soit la négation Xk d’une variable. La
formule ( f ci-dessous est un exemple d’une telle formule sur les variables x, y et 2;.
(p = { x \ / y W z ) A { x \/ ÿ V z ) A { x \/ y \ / z)
Théorèm e 4.19 (Cook et Levin 1971). Les deux problèmes Sat et 3S at sont NP-
complets,
La preuve du théorème se fait par deux réductions successives. Une première réduc
tion polynomiale de n’importe quel problème de N P au problème Sat est donnée. C’est
le cœur même de la preuve. Ensuite une seconde réduction polynomiale de S at à 3S at
est explicitée.
N P-Com plétude de S a t
effet ajouter quelques états et quelques transitions permettant de prolonger autant que
nécessaire les calculs acceptants.
Comme la machine M fonctionne en temps n^, elle utilise au plus cellules. Les
configurations sont de longueur au plus n^, qu’on supposera égale à quitte à ajouter
des symboles # dans l’écriture des configurations.
Ces configurations sont écrites les unes sous les autres pour obtenir le tableau 4.1 de
symboles de l’alphabet A = r u Q comme ci-dessous.
Conf. 0 n"'
Co = Ço Wi W2 W3 #
Ci = Qi W2 W3 #
C2 = w[ W'2 Q2 W3 #
C3 #
On cherche à écrire (pw qui code l’existence d’un tel tableau formé par les configura
tions successives d’un calcul acceptant sur w.
Pour chaque paire (z, j) telle que 0 < i j < et pour chaque symbole a de A, soit
Xij^a une variable qui code le fait que la case ( i j ) contienne ou non le symbole a. Le
nombre de ces variables est qui est polynomial en n. La formule (fyj est écrite
en utilisant les variables Xi^^a-
La formule (p^ se décompose en une conjonction (po A (pi A (p2 A (p3 où chacune
des quatre formules (poy (piy <P2 et (p3 code un des aspects de l’existence d’un chemin
acceptant. La formule (po code le fait que chaque cellule contient un unique symbole de
A et la formule (pi code que la première ligne du tableau est bien qow. La formule cp2 code
le fait que chaque ligne est obtenue en appliquant une transition de M et la formule (p3
code que le calcul est bien acceptant. Il reste à expliciter les quatre formules (po^ ^2
et (p3 ,
La formule (po est la conjonction d’une formule pour chaque paire (¿, j). Cette dernière
garantit qu’au moins une des variables Xij^a a la valeur 1 pour un symbole a de A mais
que deux variables Xij^a et Xij^b pour a ^ 6 ne peuvent avoir la valeur 1 simultanément.
La formule <po s ’écrit de la façon suivante
\
90= A /\ V Xij^a')
0< i ,j < n ^ üya'sA
\ aj^a' / .
La formule ip3 assure qu’au moins une des cases de la dernière ligne du tableau
4.2 Complexité en temps 205
V?3=V ( V
EF \ 0<j<n*'
ç )
La formule (/?2 est un peu plus délicate à écrire. Il faut remarquer que le contenu
d’une case (z, j) dépend uniquement des contenus des trois cases au-dessus (z —1, j —1),
(z —1, j) et (z —1, J + 1) et de la transition qui a été effectuée par la machine pour passer
de la configuration C i-\ à la configuration C^. En fait, il est seulement nécessaire de
connaître la transition effectuée lorsqu’une des trois cases au-dessus contient l’état de la
configuration Ci_i. Si les trois symboles contenus dans les trois cases au-dessus sont des
symboles de bande, alors le symbole de la case (z, j) est identique au symbole de la case
(z—1,^') juste au dessus. Si l’état de la configuration C i-\ se trouve dans la case (z —1, j),
alors l’état de la configuration Ci se trouve dans la case (z, j — 1) ou (z, j + 1) suivant
que la configuration effectuée ait déplacé vers la gauche ou la droite la tête de lecture.
Ces remarques impliquent qu’il est possible de vérifier que la ligne z est bien obtenue
à partir de la ligne z — 1 uniquement en regardant les contenus des fenêtres de taille
2 X 3. La machine M étant fixée, on considère tous les contenus possibles des fenêtres
de taille 2 x 3. Le nombre de ces contenus possibles ne dépend que de l’alphabet et des
transitions de la machine. C’est donc un nombre fixe qui ne dépend pas de n. Le fait que
six cases du tableau correspondent s’écrit comme une conjonction de six variables
Le fait que toutes les parties de six cases du tableaux correspondent à un des contenus
possibles des fenêtres s’exprime par la conjonction pour 0 < z, j < d’une disjonction
sur les différents contenus. Ceci est une formule de taille polynomiale en n.
A A
\ / \
V V æi V
/ \ / \ / \
1 X4 X2 A X2
/ \
Xi -1 -1 X3
Xi X5
On considère Varbre syntaxique de la formule y?. Les nœuds internes de cet arbre sont
étiquetés par les opérateurs A et V et les feuilles par les variables. L’arbre syntaxique
de la formule
i p = ((xi V X 4) A (X2 V ( x i A X5))) V (xi A ( x 2 V X 3)
X = ÿ = {x W y) A {x W ÿ)
X = {y A z ) = (x V ÿ V A (x V y) A (x V z)
x = { y y z) = { x y y V z) A {x y ÿ) A {x y z)
qui permettent de remplacer chacune des égalités de (^' par une conjonction de deux ou
trois clauses. Comme la taille de l’arbre est proportionnel à la taille de (/?, la taille de (/?'
est également proportionnelle à celle de (p.
Exercice 4.20. Montrer que les classes NP et co-NP sont égales si et seulement si il
existe un problème NP-complet dont le complémentaire est aussi dans NP.
Solution. Si les classes NP et co-NP sont égales, le complémentaire de n’importe quel
problème de N P est encore N P par définition de la classe co-NP.
Supposons que le problème A est NP-complet et que son complémentaire est aussi
dans NP. Soit B un problème de NP qui se réduit donc en temps polynomial à A.
La même réduction réduit le complémentaire de B au complémentaire de A. Comme le
complémentaire de A est dans NP, le complémentaire de B l’est aussi. Ceci montre que
tout problème dans co-NP est aussi dans NP. Par symétrie, l’inclusion inverse est aussi
vraie et les deux classes sont égales.
Dans cette partie, on donne quelques exemples classiques de problèmes qui sont NP-
complets. On commence par trois problèmes sur les graphes, le chemin hamiltonien, la
clique et la couverture de sommets et on termine par le problème de la somme d’en
tiers. Dans chacun des cas, la NP-complétude est prouvée en donnant une réduction
polynomiale de 3S at au problème considéré.
Chemin hamiltonien
On rappelle qu’un chemin hamiltonien d’un graphe G est un chemin qui passe une
fois et une seule par chaque sommet de G. Le problème du chemin hamiltonien est de
4.2 Complexité en temps 207
Le graphe global est obtenu en mettant bout à bout les gadgets pour obtenir une
sorte de chapelet et en ajoutant les sommets des clauses (cf. figure 4.7). Le gadget d’une
208 Chapitre 4. Complexité
variable est relié au sommet de chaque clause où elle apparaît. Si la variable x apparaît
dans la clause c^, il y a deux arêtes reliant le sommet de la clause Ci et les sommets
- 1 et 2 i du gadget de variable x. Si la variable x apparaît positivement, il y a une
arête du sommet 2 i - 1 vers le sommet de Ci et une autre arête du sommet de Ci vers
le sommet 2 i du gadget de x. Si la variable x apparaît négativement dans Cf, les arêtes
sont inversées, il y a une arête du sommet 2 i vers le sommet de Ci et une autre arête du
sommet de Ci vers le sommet — 1 du gadget de x (cf. figure 4.6).
La construction est illustrée sur la formule (p = {xq ^ x\W X2 ) A {xq V ¿2 V xs) A {xi V
V ¿ 3). Les entiers fe et m sont égaux à 3 et à 4 et on obtient le graphe représenté à la
figure 4.7.
Le sommet s est le premier sommet du gadget de la première variable et le sommet t
est le dernier sommet du gadget de la dernière variable. On vérifie qu’il y a un chemin
hamiltonien dans la graphe construit si et seulement si la formule (p est satisfaisable.
Un chemin hamiltonien de s k t doit parcourir tous les sommets des gadgets et tous
les sommets des clauses. Chaque gadget d’une variable peut être parcouru de gauche
à droite ou de droite à gauche. Ce choix correspond à affecter 1 ou 0 à la variable du
gadget. Lorsque le gadget est parcouru de gauche à droite, il est possible de faire un
détour par les sommets des clauses où la variable apparaît positivement. Si la variable
apparaît négativement, le détour est impossible car il faudrait revenir en arrière sur un
sommet déjà visité. Lorsque le gadget est parcouru dans l’autre sens, il est au contraire
possible de visiter les sommets des clauses où la variable apparaît négativement.
Si la formule (p est satisfaisable, il existe une affectation v telle que v{(p) = 1. Un
chemin hamiltonien du graphe Gy, peut être construit en parcourant le gadget de chaque
4.2 Complexité en temps 209
Clique
On commence par la définition d’une clique dans un graphe. Une clique de taille k
est un sous-graphe complet de taille k.
D éfin itio n 4.22 (Clique). Soit G un graphe. Une clique de taille fc de G est un ensemble
de k sommets parmi lesquels deux sommets distincts sont toujours reliés par une arrête.
Soit (f une instance de 3S at, c’est-à-dire une formule en forme conjonctive telle que
chaque clause contienne trois littéraux. Soit fc le nombre de clauses de (p,
V? = (¿1 V ¿2 V Î3 ) A • • • A (/3fc-2 V h k - i Vh k)
On introduit alors le graphe non orienté G^p ayant 3fc sommets. Chacun des som
mets correspond à un littéral de p. Deux sommets de G^p sont reliés par une arête s’ils
n’appartiennent pas à la même clause et si les littéraux correspondants ne sont pas
contradictoires. Par non contradictoire, on entend que l’un n’est pas égal à la négation
de l’autre. L’ensemble des sommets est donc { ! , . . . ,3fc} et l’ensemble E des arêtes est
donc défini de la manière suivante.
sont jamais reliés par une arête. Une clique peut donc contenir au plus un littéral par
clause et elle est de taille au plus fe.
Supposons d’abord que la formule est satisfaisable. Il existe donc une affectation
des variables telle que (p vaille 1. Ceci signifie qu’au moins un littéral par clause vaut la
valeur 1. Choisissons un tel littéral dans chacune des clauses pour former un ensemble
de k littéraux. Comme tous ces littéraux valent 1, deux d’entre eux ne peuvent pas être
contradictoires et ils sont donc reliés par des arêtes. C’est donc une clique de taille k
dans Gfp,
Supposons maintenant que contienne une clique de taille fc. Comme les littéraux
d’une même clause ne sont pas reliés, cette clique contient un littéral exactement dans
chaque clause. Montrons alors qu’il existe une affectation qui rend tous ces littéraux
égaux à 1. Chaque littéral de cette clique est égal k Xi ou à Pour que ce littéral
vaille 1, on impose la valeur 1 ou 0 à la variable correspondante Xi. Comme tous les
littéraux de la clique sont reliés par une arête, ils ne sont pas contradictoires deux à
deux. Ceci signifie que deux littéraux quelconques de la clique concernent deux variables
distinctes Xi et xj avec i ^ j ou alors ils concernent la même variable Xi mais ils imposent
la même valeur à la variable xi. On obtient alors une affectation cohérente des variables
apparaissant dans la clique. En affectant n’importe quelle valeur à chacune des autres
variables, on obtient une affectation qui donne la valeur 1 à la formule p.
Une arête (u, v) d’un graphe est dite adjacente à un sommet s si s est égal à ou
à V. Une couverture de taille k d’un graphe G est un sous-énsemble G de k sommets tel
que toute arête de G est adjacente à au moins un des sommets de G.
Preuve. Le problème V ertex-C over est dans NP. Un algorithme pour résoudre ce
problème commence par choisir de façon non déterministe les k sommets г ¿ l , . . . , puis
vérifie que chaque arête du graphe est bien adjacente à un de ces sommets.
4.2 Complexité en temps 211
Pour montrer que le problème V ertex-C over est NP-difRcile, on va réduire polyno-
mialement le problème 3S at à V ertex-C over. À chaque instance de 3S a t , on associe
une instance de V ertex-C over qui a une solution si et seulement si Tinstance de 3S at
en a une. Soit (p une instance de 3S a t , c’est-à-dire une formule en forme conjonctive
telle que chaque clause de (p contienne trois littéraux. On note k le nombre de clauses
de y? et m le nombre de variables apparaissant dans (p,
À cette formule (^, on associe un graphe non orienté ayant 3A;-h2m sommets. Chaque
sommet du graphe est en outre étiqueté par un littéral. À chaque variable Xi corres
pondent deux sommets étiquetés par les littéraux Xi et Xi. Ces deux sommets sont reliés
par une arête. Cette partie du graphe est appelée le gadget de la variable Xi. À chaque
clause correspondent trois sommets, un étiqueté par chaque littéral de la clause. Ces
trois sommets sont reliés entre eux par trois arêtes. On ajoute en outre une arête entre
chacun des trois sommets d’une clause et le sommet de la variable qui est étiqueté par
le même littéral. Cette partie du graphe est appelée le gadget de la clause.
La construction est illustrée sur la formule </? = (xq V x i V 0:2) A (¿0 V ¿2 V X3) A (xi V
X2 V X 3) . Les entiers fc et m sont égaux à 3 et 4 et on obtient le graphe représenté à la
figure 4.9.
Somme d'entiers
Le problème de la somme d’entiers est le suivant. Soit donnée une suite finie d’entiers
iCi,. . . , Xfe et un entier s. Le problème est de savoir s’il est possible d’extraire une sous-
suite de la suite donnée de manière à obtenir une suite dont la somme est égale à s. Plus
formellement, il s ’agit de trouver une suite croissante d’indices 1 < ii < Î2 < • • • < in < k
telle que Xi^ -\-------
P ro p o sitio n 4.25. Le problème de la somme d'entiers est NP-complet
Preuve. Le problème SUBSET-SUM est dans NP. Un algorithme pour résoudre ce pro
blème commence par choisir de façon non déterministe les indices ¿i, Z2, . . . , in puis vérifie
que la somme -----h Xi^ a pour valeur s.
Pour montrer que le problème SuBSET-SuM est NP-difficile, on va réduire polyno-
mialement le problème 3S at à SuBSET-SuM. À chaque instance de 3S a t , on associe
une instance de S ubset -S um qui a une solution si et seulement si l’instance de 3S at en
a une. Soit (p une instance de 3S a t , c’est-à-dire une formule en forme conjonctive telle
que chaque clause de (p contienne trois littéraux. On note k le nombre de clauses de ip et
m le nombre de variables apparaissant dans (p. Soient cq, ..., Ck-i les k clauses de ip et
soient iCo,. . . , Xm-i les m variables de (p. Pour une variable Xi^ on note p{i) l’ensemble
des numéros des clauses où xi apparaît positivement et n(i) l’ensemble des numéros des
clauses où Xi apparaît négativement.
À cette formule y?, on associe un ensemble de 2 (m H- k) entiers qui vont s’écrire avec
m + fc chiffres en base 10. À chaque variable Xi correspond deux entiers pi et définis
de la façon suivante.
Pi = 10*=+* + 10^'
j€p{i)
m = 10*'+* + Y 10^
jGn(i)
Les entiers pi et Ui s ’écrivent en base 10 avec m +fc chiffres égaux à 0 ou à 1. Pour
le chiffre à la position k + i et les chiffres aux positions de p{i) sont des 1 et tous les
autres chiffres sont des 0. Pour Ui, le chiffre à la position fc+z et les chiffres aux positions
de n{i) sont des 1 et tous les autres chiffres sont des 0 .
À chaque clause Cj, on associe deux entiers qj et qui sont tous les deux égaux à
10^ . Les entiers qj et g'- s’écrivent en base 10, avec k chiffres égaux à 0 ou à 1. Le chiffre
à la position j est un 1 et tous les autres sont des 0 .
On définit finalement le nombre s par la formule suivante.
s= Y 10'''^*+3 Y
0< i < m 0<j<k
4.2 Complexité en temps 213
Les entiers fc et m sont égaux à 3 et 4. Les entiers no, poî Piy ^ 2, P2, ^ 3, P4, QOy Qiy
Q2 et s sont donnés dans le tableau 4.2.
X3 X2 Xi Xq C2 Cl Cq Valeur
=
PO = 0 0 0 0 0 1001
no = 0 0 0 1 0 1 0 1010
Pi = 0 0 1 0 1 0 1 10101
ni = 0 0 1 0 0 0 0 10000
P2 = 0 1 0 0 1 0 1 100101
n2 = 0 1 0 0 0 1 0 100010
P3 = 1 0 0 0 0 1 0 1000010
ns = 1 0 0 0 1 0 0 1000100
Ço,Ço = 0 0 0 0 0 0 1 1
91.9Î = 0 0 0 0 0 1 0 10
92,92 = 0 0 0 0 1 0 0 100
s= 1 1 1 1 3 3 3 1111333
Exercice 4.26. Un k-coloriage d’un graphe non orienté G = (V^E) est une fonction c
de V dans { 0 , . . . , A; —1} telle que pour toute arête (u, u), on ait c{u) ^ c(u). Un graphe
est dit k-coloriable s’il admet un fc-coloriage. On appelle fc-COLOR le problème de savoir
si un graphe est fc-coloriable.
1. Montrer que le problème 2-COLOR est dans P. On pourra montrer qu’un graphe
est 2-coloriable si et seulement si tous ses cycles sont de longueur paire.
2. Montrer que le problème 3-COLOR est NP-complet. On pourra utiliser les gadgets
de la figure 4.10
Solution.
1. Comme un cycle de longueur impaire n’est pas 2-coloriable, tous les cycles d’un
graphe 2-coloriable sont nécessairement de longueur paire.
Pour tout entier fc, un graphe est fc-coloriable si et seulement si chacune de ses com
posantes connexes est fc-coloriable. Il suffit donc de considérer un graphe connexe
pour montrer la réciproque. Soit G = {V,E) un graphe connexe dont tous les
cycles sont de longueur paire. Soient u et v deux sommets de G et soient 7 et 7 '
deux chemins de u k v. Comme G n’est pas orienté, le chemin 7 ' peut aussi être
vu comme un chemin de v k u. En mettant bout à bout 7 et 7 ', on obtient un
cycle qui est donc de longueur paire. Il s’ensuit que les longueurs de 7 et 7 ' sont
de même parité. On a donc montré que pour chaque paire de sommets {u, v) tous
les chemins de г¿ à v sont de même parité.
On définit alors la relation sur V par г¿ u si les chemins de u k v sont
de longueur paire. On vérifie sans peine que c’est une relation d’équivalence. On
montre ensuite qu’elle a au plus deux classes. Soient trois sommets îx et v et w. Si
u V et u il existe des chemins de longueurs impaires de à u et de à ty.
En mettant bout à bout ces chemins, on obtient un chemin de longueur paire de v
à lü et on a donc v ^ w. Si {u, v) est une arête du graphe, u e t v ne sont pas dans
la même classe. On a donc montré que la relation ~ a deux classes Cq et Ci. On
obtient alors un 2-coloriage en posant c{u) = i si u e Ci pour tout u e G.
Il faut remarquer qu’on peut retrouver la relation 'v. à partir de n’importe quel
2-coloriage d’un graphe connexe. On a en fait montré que si un graphe connexe
G est 2-coloriable, alors il admet un seul coloriable à l’échange près des couleurs.
On peut vérifier si un graphe G est 2-coloriable avec un parcours en largeur ou en
profondeur de G. A chaque arête (г¿, v) du graphe, si v est visité pour la première
fois, on lui affecte 1 - c{u) et sinon, on vérifie que c{v) = 1 —c(г¿).
2. Le problème 3-CoLOR est bien sûr dans la classe NP. Il suffit de choisir une
affectation des couleurs aux sommets puis de vérifier en temps linéaire que c’est
bien un fc-coloriage.
4.2 Complexité en temps 215
Pour montrer que le problème 3-COLOR est NP-difficile, on va donner une ré
duction en temps polynomial de 3Sat à 3-COLOR. À chaque formule ip en forme
normale conjonctive, on va associer un graphe Gtp qui est 3-coloriable si et seule
ment si la formule (p est satisfaisable. Le graphe G^p est construit de la façon
suivante. Il possède 3 sommets 0, 1 et 2 reliés entre eux. Si Gip a un 3-coloriage,
ces trois sommets sont coloriés par des couleurs différentes. Comme les couleurs
peuvent être permutées, on peut supposer que les sommets 0, 1 et 2 sont respecti
vement coloriés par 0, 1 et 2. Pour chaque variable x, le graphe G ^ possède deux
sommets x et x reliés entre eux et reliés au sommet 2 (cf figure 4.10). Dans un
éventuel 3-coloriage, ces deux sommets sont donc coloriés par 0 et 1. Le choix de
colorier X par 0 ou 1 correspond aux deux affectations de la variable x. Les deux
autres gadgets de la figure 4.10 permettent de réaliser les portes V et A. En effets,
les trois sommets ii, ¿2 et o sont reliés au sommet 2 et ne peuvent être coloriés
que par 0 ou 1. On vérifie en outre que le sommet o peut être colorié par 1 si et
seulement si un des deux sommets i i et Î 2 pour le premier gadget (ou les deux
pour le second) est colorié par 1. On construit ainsi par induction sur la taille de la
formule un graphe ayant un sommet particulier o qui peut être colorié par 1 si
et seulement si la formule ip est satisfaisable. En ajoutant une arête supplémentaire
entre ce sommet o et le sommet 0, le graphe G ^ est finalement 3-coloriable si et
seulement ip est satisfaisable.
Exercice 4.27. Soit (p une formule en forme normale conjonctive. Une affectation v des
variables est appelée une affectation symétrique si chaque clause de ip contient deux
littéraux l et V tels que v{l) ^ v{V). Le problème S ymSat est de savoir si une formule en
forme normale conjonctive avec au plus trois littéraux par clause possède une affectation
symétrique.
1. Montrer que le problème SymS at est NP-complet.
Le problème Set S plit consiste à savoir, étant donnés un ensemble fini E et k sous-
ensembles Fl , . . . , Ffe de F, s’il est possible de partitionner E en deux sous-ensembles
disjoints E l et E 2 tels que E i H F j ^ 0 pour l < j < 2 e t l < j < k .
2. Montrer que le problème S et Split est NP-complet.
Solution.
1. Le problème SymSat est dans la classe N P puisque qu’on peut vérifier en temps
polynomial qu’une affectation est symétrique. Pour montrer que ce problème est
NP-difficile, on donne une réduction en temps polynomial de 3S at à SymS at.
Soit ip une formule en forme normale conjonctive avec au plus trois littéraux par
clause. On suppose que ip est la conjonction ci A • • • A Cm où chaque clause Ci est la
disjonction li^i V/i ,2 VZi,3• On introduit m -h 1 nouvelles variables ;^i, . . . , et on
définit une formule ip’ utilisant ces nouvelles variables et celles de ip. La formule ip’
est la conjonction A •••A où chaque est la conjonction
vérifie sans difficulté que v' est une affectation symétrique de Réciproquement,
soit v' une affectation symétrique de y?'. Comme 1 —u' est aussi une affectation
symétrique de on peut supposer que v'{z) = 0. Si v \z i) = 0 , on doit avoir
= 1- Si v^{zi) = 1, on doit avoir ^'(/¿,1 V /¿,2) = 1- Dans les deux cas, on a
V k ^2 V /¿,3) = 1. On a finalement v'{(p) = 1 et cp est satisfaisable.
2. Le problème S et S plit est bien sûr dans la classe NP. Pour montrer qu’il est
NP-difficile, on donne une réduction de SymSat à S et S plit. Soit (p une formule
normale conjonctive. On définit une instance de S et Split de la façon suivante.
L’ensemble E est l’ensemble de toutes les variables de (p et leur négations. Pour
chaque variable z^ on ajoute un ensemble Fz égal à {z^ z ] qui impose que z et z
ne peuvent être mise dans le même ensemble Ei. Pour chaque clause c égale à
Zi V- • -V/fc, on ajoute un ensemble Fc = {ii> • • • j h }-H est alors très simple de vérifier
que cet instance de S et S plit est positive si et seulement si a une affectation
symétrique. Le calcul de l’instance de S et Split se fait en temps polynomial.
Exercice 4.28. On appelle expression sans étoile une expression rationnelle n’utilisant
pas l’étoile. Le langage défini par une telle expression est donc fini.
1. Montrer que problème de savoir si le langage d’une expression sans étoile est dif
férent d’un langage fixé est NP-complet.
Solution. On donne une réduction polynomiale du problème 3Sat à notre problème. Soit
y? = Cl A • • •Acfc une formule en forme conjonctive telle que chaque clause Ci contienne au
plus trois littéraux. Soit {xi,...^ X n } les variables apparaissant dans cp. Si une variable
apparaît positivement et négativement dans la même clause, cette clause est toujours
satisfaite et elle peut être supprimée. On identifie chaque affectation v des variables
avec le mot v sur l’alphabet B, de longueur n et égal à v{xi) • • •v{xn)- On associe
ensuite à chaque clause Ci la langage Li = {v \ v{ci) = 0} des mots correspondants aux
affectations donnant la valeur 0 à Cf. Ce langage Li est décrit par l’expression sans étoile
Ei = Xi^i • • • Xi^fi ou
Solution.
comme ensemble d’états. Les transitions de l’automate A^p sont données par
_ fo si Xj apparaît dans Ci
pour l < i < k et l < j < n
ij+i sinon
, J0 si apparaît dans Ci ^^ ^ ^^ ^ ^
i,j '0 = < pour l < z < f c e t l < j < n
[qiji-i sinon
Qi,n-\-i *û — Çi,n+i ' b —0 pour 1 <i < k
0 •a = 0 •6 = 0.
Il a été vu que les changements de modèles peuvent avoir une incidence plus ou moins
grande sur la complexité en temps. Le passage de plusieurs bandes à une seule bande
donne une explosion quadratique (cf. proposition 4.4) alors que le passage d’une machine
non déterministe à une machine déterministe impose une explosion exponentielle (cf.
proposition 4.5). Au contraire, les changements de modèle ont moins d’incidence sur la
complexité en espace.
Le passage d’une machine à bande bi-infinie à bande infinie ne change pas la com
plexité en espace puisque l’espace utilisé reste identique. En effet, la simulation est
effectuée en repliant la bande sur elle-même. L’espace utilisé n’est pas augmenté.
Le passage d’une machine à k bandes à une machine à une seule bande peut être
réalisé en mettant bout à bout les contenus des k bandes sur l’unique bande séparés par
un caractère spécial. Le nombre de cases de bande utilisées est égal à la somme des cases
utilisées sur les k bandes. L’espace reste encore inchangé.
Le passage d’une machine non déterministe à une machine déterministe change la
complexité en espace mais de façon plus modérée que la complexité en temps. Le théo
rème suivant énonce qu’il est possible de simuler une machine non déterministe avec une
machine déterministe en utilisant seulement le carré de l’espace.
4.3 Complexité en espace 219
T h éorèm e 4.30 (Savitch 1970). Soit s une fonction de N dans R"*’ telle que s{n) > n
pour tout n assez grand. Toute machine non déterministe qui fonctionne en espace s{n)
est équivalente à une machine de Turing déterministe en espace 0 (5^(n)).
Preuve. Soit M une machine de Turing fonctionnant en espace s{n). Sans perte de gé
néralité, on peut supposer que cette machine possède un seul état final g/. On modifie
la machine pour qu’avant d’accepter, elle efface la bande en remplaçant chaque sym
bole par le symbole blanc # . L’objectif de cette transformation est d’avoir une seule
configuration acceptante égale à g/.
On commence par définir une fonction ACCESS qui prend en paramètre deux confi
gurations C et C" de M ainsi que deux entiers t et r. La fonction retourne vrai s’il
existe un calcul de C à C' de longueur au plus t qui n’utilise que des configurations
intermédiaires de taille au plus r. La fonction est récursive et fonctionne de la façon
suivante. Si t = 0 ou t = 1, elle se contente de tester si C et C' sont égales ou s ’il existe
une étape de calcul de de C à C". Sinon, elle parcourt toutes les configurations C" de
taille au plus r et pour chaque configuration C", elle teste s’il existe un calcul dont C"
est la configuration médiane.
Il est alors facile de donner une machine déterministe M ' équivalente à M . Pour chaque
entrée w de taille n, la machine A4 ' calcule la valeur de s{n) puis utilise la fonction
220 Chapitre 4. Complexité
A ccess avec t = et r = «(n). L’espace utilisé est alors borné par 0{K ^ s‘^{n)) =
0(s2 (n )).
Nous ne supposons plus que la fonction s(n) est calculable et nous allons utiliser à
nouveau la fonction A ccess pour contourner cette difficulté. Soit w une entrée de taille n
et soit m la taille maximale d’une configuration accessible à partir de la configuration
initiale qow. Nous donnons ci-dessous un algorithme qui calcule la valeur de m en utilisant
un espace borné par O(m^). Comme m < s(n), cet espace est donc borné par 0(s^(n)).
Pour chaque entier fc > n + 1, on note iV^, le nombre de configurations de taille au
plus k accessibles par un calcul à partir de qow en utilisant des configurations de taille
au plus k. Par définition, la suite {Nk)k>o est croissante et elle est bornée par le nombre
de configurations de taille au plus s(n). Il existe donc un entier k tel que
Réciproquement, si k est le plus petit entier tel que alors k est égal à m
et Nk est le nombre total de configurations accessibles à partir de qow. Supposons par
l’absurde qu’il existe une configuration accessible à partir de qow avec un calcul utilisant
des configurations de taille au moins fc + 1. On considère la première configuration de ce
calcul de taille fc + 1. Cette configuration existe car la taille des configurations ne varie
que d’une unité au plus à chaque étape de calcul. Comme cette configuration est de taille
fc + 1 et que celles qui la précèdent dans le calcul sont de taille au plus fc, elle prouve
que Nk^i > Nky d’où la contradiction. L’algorithme suivant calcule la valeur de m.
In pu t w de taille n
1: k
2; i < r - Q
3: repeat
4: k i.—fc -|- 1
5: N ^i
6: i i—0
7: for all C de taille au plus fc do
8: if A ccess (^oi^,C', 2^^,fc) th en
9: 2 2 - f- 1
10: u ntil i = N
11: return fc
Comme fc est borné par m, l’espace utilisé par chaque appel à A ccess est borné par
0{rn?). L’espace nécessaire aux variables i et N est borné par m si ces entiers sont codés
en binaire. L’espace global utilisé par l’algorithme précédent est donc au plus O(m^).
Une machine déterministe M ' équivalente à M fonctionne de la façon suivante. Elle
calcule d’abord la valeur de m avec l’algorithme précédent puis utilise ensuite la fonction
A ccess avec t = 2 ^ ^ et r = m pour décider s’il y a un calcul de qow à la configuration
acceptante ç/. □
Comme pour le temps, on introduit des classes de problèmes déterminées par l’espace
nécessaire à leur décision.
Nous étudions maintenant quelques relations entre les classes de complexité en temps
et en espace. La proposition suivante résume les relations entre les différentes classes de
complexité introduites jusque là.
P ro p o sitio n 4.32. Les classes de com plexité in tro d u ites vérifien t les in clu sio n s su i
vantes.
P ç NP ç PS pace ç E xp T ime ç NE xp T ime ç Exp Space.
Les inclusions entre ces classes et leurs classes duales sont représentées à la figure 4.11.
Le théorème de hiérarchie (corollaire 4.55 p. 233) permet de montrer que les inclusions
P Ç Exp T ime et PS pace Ç Exp Space sont strictes. Pour les inclusions intermédiaires,
rien n’est connu même si la thèse généralement admise est qu’elles sont toutes strictes.
222 Chapitre 4. Complexité
Le problème est de savoir si une formule quantifiée close (sans variable libre) est
vraie. La proposition suivante établit que le problème QSat peut effectivement
être résolu en espace polynomial. On verra que ce problème joue pour la classe
PS pace un rôle identique à celui du problème Sat pour la classe NP.
Le problème QSat est une généralisation naturelle du problème Sat o ù il y a une
quantification existentielle implicite. Soit (p une formule de la logique propositionnelle
sur les variables , . . . , La formule cp est une instance positive de Sat si et seulement
si la formule 'ip = 3x\ • • • 3xn^ est une instance positive de QSat.
1: S olveQSat(^)
2: i f ^ n’a pas de quantificateurs t h e n
3: return eval(^)
4: i f ^ -0 t h e n
5: return SolveQSat(V^[x <- 0])V SolveQSat(V^[2: <- 1])
6: i f ^ = Va; -0 t h e n
7: return S olveQSat('0[x <r- 0])A SoLVEQSAT('0[a; 1])
4.3.5 PSpace-complétude
Il est essentiel que la notion de PSPACE-complétude soit définie avec des réductions
polynomiales en temps. En effet, comme le théorème de Savitch permet de rendre dé
terministes les machines de Turing en espace polynomial, tout problème de la classe
P S PACE se réduit en espace polynomial au problème trivial.
De manière plus générale, la complétude relative à une classe est toujours définie en
utilisant des réductions qui sont plus faibles que les machines de la classe. Le théorème
suivant montre qu’il existe des problèmes PSPACE-complets.
3C" V D ,D '
[(D = C A D ' = C") V (D = C" A D ' = C')] ФL t/2 J,D ,D '-
La formule exprime qu’il existe une configuration intermédiaire C" telle qu’il
existe des calculs de C à C" et de C" à C' de longueur au plus t / 2 . La taille de
est proportionnelle à logt.
Comme la machine M fonctionne en espace n^, elle fonctionne en temps au plus 2^^
pour une constante K . L’acceptation d’une entrée w se réduit dont à la satisfaisabilité
de la formule ^t.qoWyCf pour t = 2^^ qui est de taille polynomiale; □
Bande d’entrée
61bIc1616| c|g| 6|g| 6|g|#|#|#|#|#|#|#|#|#|#|#|#|#| 7
3 bandes de travail
X
■B| bIc |g|B| c |g| b|i4| bIbIb|i4|#|#|#|#|#
Contrôle
l
a b A a ii B A b ci b \ ^ a A c i c # # #
1
^ |c|B |gN c|g|c|g|#|#|#|#|#|#|#
1
g|b |g|b |g|b |g|b |g|g|b |#|#|#|#|#|#|#|#|#|#|#|#|#
Bande de sortie
On s’intéresse à des problèmes qui peuvent être résolus avec un espace logarithmique
en la taille de l’entrée. Cette question est uniquement pertinente si l’espace occupé par
l’entrée n’est pas pris en compte dans l’espace utilisé par la machine. On introduit pour
cela une variante des machines de Turing. Dans cette partie, on suppose que chaque
machine a deux bandes spéciales appelée bande entrée et bande de sortie. La machine
n’écrit jamais sur la bande d’entrée. Plus formellement, chaque transition écrit sur cette
bande le caractère qui vient d’y être lu. Sur la bande de sortie, la tête de lecture ne
se déplace que vers la droite. Cette dernière contrainte signifie que la machine ne peut
jamais effacer ce qu’elle y a écrit. Cette bande se comporte un peu comme une impri
mante. En contrepartie de ces deux contraintes, l’espace utilisé ne prend pas en compte
ces deux bandes particulières. La taille d’une configuration est le nombre de cellules
utilisées sur les autres bandes. En utilisant cette convention sur les machines de Turing,
on peut définir les deux classes suivantes.
L = SPACE(logn) et NL = NSPACE(logn).
226 Chapitre 4. Complexité
La base du logarithme est sans importance puisque toutes les complexités sont définies
à un facteur multiplicatif près. Ces deux classes de complexité jouent un rôle important
d’une part parce que des problèmes intéressants s’y trouvent et d’autre part parce qu’elles
fournissent des sous-classes de P. On commence par donner quelques relations entre ces
nouvelles classes de complexité et la classe P.
P ro p o sitio n 4.38. Les classes de complexité introduites vérifient les inclusions sui
vantes.
L Ç NL = co-NL C P.
sa tête de lecture sur la deuxième bande, elle peut écrire cette différence en binaire sur
la deuxième bande. L’incrémentation et la décrémentation de cet entier nécessitent alors
plusieurs transitions mais l’espace utilisé devient logarithmique.
Exemple 4.40. Le problème Path de savoir s’il existe un chemin entre deux sommets
donnés s et i d’un graphe orienté G est dans la classe NL.
Une machine non déterministe cherche un chemin de s à i en partant de s puis
en suivant les arêtes du graphe pour passer d’un sommet à un autre. Si la machine
atteint elle accepte l’entrée car elle a trouvé un chemin. En même temps que la
machine découvre le chemin, celle-ci compte le nombre de sommets parcourus. Si ce
nombre dépasse le nombre de sommets du graphe, la machine s’arrête et rejette l’entrée.
La machine s’arrête donc sur toutes les entrées puisqu’elle visite des sommets en nombre
au plus égal au nombre de sommets de G, La machine peut repasser plusieurs fois par
un même sommet car elle ne mémorise pas les sommets déjà visités comme cela est
fait dans les parcours en largeur ou en profondeur d’un graphe. Sinon, l’espace utilisé
ne serait pas logarithmique. S’il existe un chemin de s à i, la machine a au moins un
calcul acceptant car il existe toujours un chemin de longueur inférieure au nombre de
sommets. Lors de sa recherche, la machine mémorise au plus deux sommets pour suivre
les arêtes et le nombre de sommets visités. Toute cette information occupe un espace au
plus logarithmique.
Il a été montré par Reingold en 2005 que l’accessibilité dans un graphe non orienté
est dans la classe L mais c’est un résultat très difficile.
On introduit maintenant la notion de réduction en espace logarithmique. On com
mence par définir la notion de fonction calculable en espace logarithmique.
Une fonction / : S* -)> r* est calculable en espace logarithmique s’il existe une
machine déterministe en espace logarithmique, qui pour toute entrée calcule f{w)
sur sa bande de sortie. Comme la taille de f{w) n’est pas prise en compte dans l’espace
de la machine, cette taille n’est pas nécessairement logarithmique. Par contre, l’inclusion
L Ç P montre que la taille de f{w) est polynomiale en la taille de w.
D éfin ition 4.41 (Réduction logarithmique). Soient A et B, des problèmes codés res
pectivement par L a L B sur les alphabets et E^. Une réduction logarithmique de A
à B est une fonction / : E^ -> E^ calculable en espace logarithmique par une machine
de Turing déterministe telle que :
w e L a 4= > f{w) e L b -
Preuve. Soient f et g des fonctions calculables en espace logarithmique par des machines
de Turing déterministes M f et Mg ayant respectivement m et n bandes de travail. On
construit une nouvelle machine M calculant la composée f o g ayant m + n + 2 bandes de
travail. Les m premières bandes de M servent à la simulation de M f et les n suivantes
à la simulation de Mg. Les deux dernières bandes sont utilisées pour mémoriser les
positions des têtes de lecture de la bande d’entrée de A i/ et de la bande de sortie de Mg.
Comme g{w) est de taille polynomiale, ces deux positions peuvent être représentées par
des entiers dont les écritures en base 2 sont de taille logarithmique. La machine M simule
chaque étape de calcul de la machine M f . Pour chacune de ces étapes, la machine M
simule entièrement le calcul de la machine Mg sur l’entrée w depuis le début jusqu’à
ce que celle-ci écrive le symbole lu par la machine M f . Il est possible de retrouver ce
symbole grâce aux deux bandes supplémentaires de M qui mémorisent les positions des
têtes de lecture. □
C orollaire 4.44. Si A <iog B et B est dans la classe L, alors A est aussi dans la
classe L.
Le théorème de Cook et Levin établit que le problème 3Sat est NP-complet. Lorsque
la formule en forme normale conjonctive a au plus deux littéraux par clause, le problème
de la satisfaisabilité devient beaucoup plus facile. Afin d’illustrer la réduction <iog nous
allons montrer que le problème 2Sat de la satisfaisabilité d’une formule avec deux litté
raux par clause se réduit en espace logarithmique au problème Path de l’accessibilité.
Il faut noter que ce n’est pas 2Sat mais sa négation qui est considérée dans la
proposition précédente. Il découle de cette proposition que le problème 2Sat appartient
à la classe co-NL et donc à NL puisque ces deux classes sont égales. Une conséquence
directe de la proposition précédente est que le problème 2Sat est dans la classe P.
Ce résultat montre la différence importante entre 2Sat et 3S at puisque ce dernier est
NP-complet.
Preuve. Soit y? une formule en forme normale conjonctive avec au plus deux littéraux
par clause. On associe à (/? un graphe orienté G^,. Les sommets de G^p sont les variables Xi
de (p et leurs négations xi. Les arêtes de G<^ sont les paires Î Z' où i V V est une clause
de (f. Chaque clause l V V induit donc les deux arêtes l V et V ^ l de G^. Il faut
4.3 Complexité en espace 229
remarquer que si / Z' est une arête de alors V l est aussi une arête de G^. Il
s’ensuit que s’il y a un chemin de Zà i' dans alors il y a aussi un chemin de de V k l
dans Gtp,
La propriété clé du graphe ainsi construit est l’équivalence suivante entre la
satisfaisabilité de (/? et l’absence de certaines paires de chemins dans Gip.
4.3.7 NL-complétude
On montre que parmi les problèmes de la classe NL, certains sont les plus compliqués
dans le mesure où chaque problème de NL se réduit en espace logarithmique à ces
problèmes. On commence par la définition de la NL-complétude qui est l’analogue de
la NP-complétude. Les réductions polynomiales sont remplacées par les réductions en
espace logarithmique.
L’intérêt de cette définition réside bien sûr dans l’existence de problèmes NL-complets
comme l’établit le théorème suivant. Nous montrons successivement que les problèmes
Path et 2Sat sont NL-complets.
Preuve. Il a déjà été montré que le problème Path est dans la classe NL. Il reste à
montrer que tout problème de NL se réduit en espace logarithmique à PATH. Soit A un
problème de NL qui est décidé par une machine M non déterministe en espace loga
rithmique. Une entrée w est acceptée par M s’il existe un calcul acceptant à partir de
4.3 Complexité en espace 231
Puisque le problème Path est NL-complet, il suffit maintenant d’utiliser une réduc
tion en espace logarithmique pour montrer qu’un autre problème est NL-complet.
Preuve. Comme les classes NL et co-NL coïncident, il est équivalent de montrer que le
complémentaire de 2Sat est NL-complet. Comme le problème Path est NL-complet, il
suffit de prouver que ce problème se réduit en espace logarithmique au complémentaire
de 2Sat. à toute instance (G, s, t) de Path, on associe une formule (p qui a la propriété
de n’être pas satisfaisable si et seulement si il y a un chemin de s k t dans G. La
construction est inspirée de la construction utilisée dans la preuve que 2S at se réduit
en espace logarithmique à Path. Il s’agit en fait de la construction inverse. Soit (G, s, t)
une instance du problème Path. On suppose pour simplifier qu’il n’y a aucune arête
arrivant sur le sommet s et aucune arête sortant du sommet t. On construit alors une
formule (f dont l’ensemble des variables est l’ensemble V des sommets du graphe G. On
définit une fonction // qui à chaque sommet t; de G associe un littéral par la formule
suivante.
, . \v
<”>={ï
-
s iv = t.
La formule p est alors donnée de façon suivante.
p = sA A H{u) V n{v)
(u,v)eE
où E est l’ensemble des arêtes de G. La preuve que cette formule n’est pas satisfaisable
si et seulement si il y a un chemin de s à t dans G est identique à la preuve de la
proposition 4.45. Comme la formule (p est évidemment calculable en espace logarithmique
à partir de (G, s, t), on a montré que 2S at est NL-complet. □
Solution. Il faut faire attention au fait que la donnée est ici le couple {A^ w) formé de
l’automate A et du mot w. Il s’agit du problème uniforme par opposition au problème
où l’automate A est fixé. Dans ce cas, le problème de savoir si un mot w est accepté
peut être décidé en temps linéaire et en espace constant que A soit déterministe ou non.
Si A n’est pas déterministe, on le remplace par un automate déterministe équivalent.
L’automate déterministe peut alors être considéré comme une machine de Turing qui
fonctionne en temps linéaire et sans espace de travail auxiliaire.
1. La machine de Turing mémorise l’état courant de l’automate et la lettre courante
du mot w. Pour ces deux informations, la machine mémorise en fait leurs posi
tions dans l’entrée avec un espace logarithmique. Pour chaque lettre du mot u;, la
machine recherche dans l’automate la transition qui peut être effectuée et change
l’état courant. Elle accepte si le dernier état est final.
2. Pour montrer que ce problème est NL-complet, il faut d’abord montrer que ce
problème est bien dans la classe NL et qu’il est NL-difficile. Si on remplace la
machine de la question précédente par une machine non déterministe qui choisit
la transition à effectuer dans l’automate, on obtient que le problème est dans NL.
Pour montrer qu’il est NL-difficile, on donne une réduction en espace logarithmique
de Path à notre problème. À chaque instance (G, s, t) de Path o ù G = (V, E), on
associe l’automate A = (Vi{a},-E, { s } ,{ i} ) sur un alphabet unaire. En ajoutant
la transition t t, il y a chemin de s k t dans G si et seulement si le mot w =
est accepté par A. L’automate A et le mot w peuvent bien sûr être calculés en
espace logarithmique à partir de (G, s,t).
Exercice 4.51. 1. S’inspirer de la preuve du théorème de Savitch pour montrer que
le problème P ath peut être décidé par une machine déterministe en temps log^ n.
2. En déduire l’inclusion NL Ç 1 ? où 1? désigne la classe des problèmes décidables
par une machine déterministe en temps log^ n.
Solution.
1. Par analogie avec la fonction A ccess utilisée dans la preuve du théorème de Sa
vitch, on peut définir une fonction récursive qui calcule s’il y a un chemin de s k t
de longueur au plus n où n est le nombre de sommets du graphe. Le nombre maxi
mal d’appels imbriqués est logn et chaque appel utilise un espace de l’ordre de
logn pour mémoriser deux sommets du graphe et un entier inférieur à n. L’espace
total est de l’ordre de log^ n.
2. Puisque le problème P ath est NL-complet, tout problème de NL se réduit en
espace logarithmique à P ath . Tout problème de NL se résout donc en espace
log^ n.
Exercice 4.52. On appelle automate multi-tête un automate qui lit l’entrée avec plu
sieurs têtes de lectures indépendantes qui se déplacent dans les deux sens. Un automate
à fc-têtes est un automate (Q, A, E, / , F) où E est un sous-ensemble de Q x x Qx
{<, V,>}^. Une configuration de l’automate est constitué de l’état interne et des k posi
tions (¿1, . . . , ik) des têtes de lecture. Une transition ( g , a i , . . . , ak^g ' , ^ i , . . . , Xk) permet
à l’automate d’une passer d’une configuration d’état interne q où les symboles aux po
sitions (¿1, . . . ,Zfc) des têtes de lecture sont ( a i , . . . ,afc) à une configuration d’état où
les positions des têtes (¿i, .-.^ik) vérifient ij = ij —1 si Xj = <3, z'- = ij si Xj = V et
z' = Zj + 1 si Xj = > pour tout l < j < k . Pour que l’automate puisse détecter le
4.4 Théorèmes de hiérarchie 233
début et la fin du mot, l’entrée de l’automate est encadrée à gauche et à droite par un
marqueur.
1. Montrer qu’un langage est accepté par un automate multi-tête si et seulement s’il
est accepté par une machine de Turing en espace logarithmique.
Solution. L’idée principale de la preuve est que si l’entrée est de taille n, l’écriture en
binaire d’une position dans l’entrée est de taille logn.
Pour passer d’un automate à k têtes à une machine de Turing en espace logarith
mique, il suffit d’ajouter k bandes de travail où sont stockées les positions des k têtes de
lecture de l’automate. Il alors facile de simuler l’automate avec la machine de Turing.
La réciproque est aussi facile. Le contenu de chaque bande de travail de la machine
de Turing est interprété comme un entier écrit dans la base |r|. Quitte à découper le
contenu de la bande en plusieurs morceaux, on peut supposer que l’entier ne dépasse
par la longueur de l’entrée. Il est alors mémorisé par l’automate par une tête de lecture
sur l’entrée.
On montre que si le temps ou l’espace alloué est augmenté, la classe des problèmes
qui peuvent être résolus croît strictement. Il est cependant nécessaire de supposer que
la ressource supplémentaire soit réellement utilisable. Ceci fait l’objet de la définition
suivante.
D éfin ition 4.53. Une fonction / : N N est dite constructible en temps (resp. en
espace) s’il existe une machine de Turing qui calcule pour une entrée 1^ le mot en
temps 0 (/(n )) (resp. en espace 0 (/(n )).
Pour la définition de fonctions constructibles en espace pour /(n ) < n, il faut utiliser
des machines de Turing avec une bande d’entrée et une bande de sortie séparées comme
cela a été fait pour l’espace logarithmique.
Il est facile de vérifier que la classe des fonctions constructibles en temps ou en
espace contient toutes les fonctions usuelles n i-> [lognj, n i-^ LV^Jj qu’elle est
close pour la somme, le produit, l’exponentiation, la composition et toutes les opérations
raisonnables.
La preuve que chacune des inclusions est stricte est basée sur un argument diagonal.
Il est important de noter que ces inclusions ne concernent que les classes de complexité
des machines déterministes.
Preuve. La preuve est pratiquement identique pour les deux inclusions. On construit
une machine de Turing déterministe qui fonctionne en temps (ou en espace) 0 ( /( n ) ) et
qui accepte un langage qui ne peut pas être accepté par une machine déterministe en
temps (ou en espace) 0 (g(n)).
On suppose fixé un codage des machines de Turing sur un alphabet E. On ajoute
un nouveau symbole $ et on construit une machine Mo d’alphabet d’entrée E U {$}. La
234 Chapitre 4. Complexité
machine Mo accepte des entrées de la forme {M)$^ où M est une machine de Turing
sur l’alphabet E U {$} et k est un entier. Si une entrée w n’est pas de cette forme, elle
est rejetée par Mo- Si l’entrée w est de la forme {M)î^, Mo simule la machine M sur
l’entrée w en ne dépassant pas le temps (ou l’espace) f{\w\). Pour ce faire, Mo a au
préalable calculé sur une bande. Si la simulation de la machine M dépasse le
temps (ou l’espace) f{\w\)^ l’entrée w est rejetée par Mo- Si la simulation de M sur w
aboutit, Mo accepte si et seulement si M rejette. □
Nous introduisons des machines de Turing dites alternantes qui généralisent les ma
chines non déterministes. D ’une certaines façon, les machines alternantes sont aux ma
chines non déterministes ce que ces dernières sont aux machines déterministes. Dans
une machine déterministe, il y a un unique calcul possible pour chaque entrée. Le non
déterministe rend possibles plusieurs calculs sur une même entrée. Celle-ci est acceptée
si au moins un de ces calculs est acceptant. L’acceptation utilise donc une quantification
existentielle qui constitue une certaine dissymétrie entre un langage et son complémen
taire. L’idée des machines alternantes est de rétablir la symétrie en introduisant une
quantification universelle dans la notion de calcul.
4 .5 .1 D é fin itio n s e t e x e m p le s
Une machine alternante est très proche d’une machine de Turing usuelle. Elle possède
en plus une partition de ses états en deux classes. La différence se situe véritablement
dans la notion de calcul.
D éfin ition 4.56 (Machine alternante). Une machine alternante est une machine de
Turing où l’ensemble Q des états est partitionné Q = Les états de Qy et Q a
sont appelés états existentiels et universels. Par extension, une configuration C = uqv
est dite existentielle (resp. universelle) si q est existentiel (resp. universel).
Un calcul d’une machine non déterministe est une suite de configurations consécu
tives. En revanche, un calcul pour une machine alternante est un arbre.
D éfin ition 4.5 7 (Calcul). Un calcul d’une machine alternante est un arbre fini, étiqueté
par des configurations et vérifiant les deux conditions suivantes.
i) Si un nœud X de l’arbre est étiqueté par une configuration existentielle (7, alors x
a un seul fils étiqueté par une configuration C' tel que C C'.
ii) Si un nœud x de l’arbre est étiqueté par une configuration universelle C, alors x
a un fils étiqueté O pour chaque configuration C' telle que C C .
Il faut faire attention à une confusion. Chaque calcul d’une machine non déterministe
est une suite de configurations. L’ensemble de ses calculs forme donc un arbre. Pour une
machine alternante, chaque calcul est déjà un arbre en soi.
4.5 Machines alternantes 235
Cette notion de calcul peut être visualisée de la façon suivante. Lorsque la machine
est dans un état existentiel, elle choisit une transition comme le ferait une machine
déterministe et Teffectue pour modifier sa configuration. Lorsque la machine est dans
un état universel, elle se clone en autant de copies que de transitions possibles. Chacune
des copies prend alors en charge une des transitions et commence une nouvelle branche
du calcul. Il faut donc imaginer que lors d’un calcul, il existe de multiples copies de la
machine. Chacune de ces copies a bien sûr un état et des bandes de travail propres.
Les machines alternantes constituent bien une généralisation des machines non dé
terministes. Si tous les états d’une machine alternante sont existentiels, un calcul est un
arbre où chaque nœud a un seul fils. On retrouve le fonctionnement usuel d’une machine
de Turing non déterministe. Si une machine alternante M est en fait déterministe, son
fonctionnement comme machine alternante est identique à son fonctionnement usuel.
Puisque pour toute configuration C il existe au plus une seule configuration C telle que
C ^ tout calcul se réduit à une seule branche. On retrouve alors la définition d’un
calcul pour une machine de Turing classique.
D éfin ition 4.58 (Acceptation). Une branche d’un calcul est acceptante si au moins un
état final apparaît sur celle-ci. Un calcul est acceptant si
i) l’étiquette de la racine est la configuration initiale
ii) toutes ses branches sont acceptantes.
Le fait que chacune des branches doit être acceptante signifie que lorsque la machine
se clone dans un état universel, chacune des copies doit atteindre un état acceptant
pour que le calcul soit globalement acceptant. Les états universels réalisent donc un et
logique. Au contraire, les états existentiels réalisent un ou logique dans la mesure où la
machine, dans un de ces états, doit trouver au moins une transition qui conduit à un état
acceptant. Ceci justifie les notations Qv et Q a pour les ensembles d’états existentiels et
universels.
Pour illustrer la notion de machine alternante, nous donnons une machine alternante
qui décide le problème QSat. Rappelons qu’une instance de ce problème est une formule
booléenne quantifiée et close (cf. exemple 4.33). L’instance est positive si la formule est
vraie. La machine de Turing est décrite sous la forme d’un algorithme. Il est possible de le
traduire en une description explicite d’une machine de Turing même si c’est relativement
fastidieux.
L’algorithme fonctionne de la façon suivante. Il reçoit une formule close avec des
variables et des constantes 0 et 1. Pour simplifier, on suppose la formule mise en forme
prénexe. Si la formule est sans quantificateur, elle ne contient que des constantes et des
opérateurs. Il suffit donc de l’évaluer. Cette évaluation peut être réalisée en temps linéaire
dans n’importe quel langage de programmation en manipulant son arbre syntaxique. Ceci
conduit à une machine de Turing déterministe en temps polynomial pour l’évaluation.
Si la formule contient au moins une quantification, celle-ci est traitée de la façon
suivante. Si le quantificateur est existentiel, la machine choisit la valeur 0 ou 1 pour
remplacer la variable et continue avec la formule obtenue. Si le quantificateur est uni
versel, la machine utilise un état universel pour se cloner. Une première copie continue
avec la variable remplacée par 0 et une seconde copie continue avec la variable remplacée
par 1.
Cet algorithme est très semblable à l’algorithme S olveQSat utilisé pour montrer
que le problème QSat est dans la classe PS pace. La méthode de résolution est identique
236 Chapitre 4. Complexité
1: A lTERQSat(^)
2: if ^ sans quantification t h e n
3: eval(^)
4: if ^ th en
5: A lterQSat (^[V^ ^ 0])V A lterQSat(^[V» 4- 1])
6: if ^ = th en
7: A lterQSat (^[V^ <- 0])A A lterQSat(^[^ <- 1])
4 .5 .2 C o m p lé m e n ta tio n
Les machines de Turing alternantes rendent très simple le passage d’une machine
acceptant un langage à une machine acceptant le complémentaire. Ceci contraste avec les
machines non déterministes pour lesquelles il est nécessaire de déterminiser la machine.
Soit M une machine alternante que nous pouvons supposer normalisée. La procédure
de normalisation décrite à la section 3.2.5 s’applique encore à une machine alternante.
Cette procédure ajoute une seule étape de calcul C -> C" si aucune n’était possible.
Le fait qu’une configuration C soit existentielle ou universelle n’a aucune incidence sur
les calculs lorsqu’il existe une seule configuration C' telle que C —>> C'. La machine a
donc deux états particuliers et ç_, que est le seul état final et qu’elle se bloque
uniquement sur ces deux états. Pour toute configuration C = uqv avec q différent de
et g_, il existe au moins une configuration C" telle que C C'.
La machine duale d’une machine alternante normalisée M est la machine obtenue en
échangeant les états existentiels avec les états universels et en échangeant aussi le rôle
de q+ et g_ comme état final. Plus précisément soit Q = Qv ^ Q a la partition des états
de M en états existentiels et universels et soit q+ son unique état final. Les ensembles
d’états existentiels et universels de la machine duale sont respectivement Q a et Qv et
son unique état final est q-.
P ro p o sitio n 4 .59. Soit M une machine alternante normalisée M qui s ^arrête sur
toutes les entrées, La machine duale de M. accepte le complémentaire du langage accepté
par M ,
Preuve. Soit A4' la machine duale de M et soit w une entrée de la machine A4. Nous
montrons que pour toute configuration C accessible de la configuration initiale qow, il
existe un calcul acceptant partant de C dans A4 si et seulement si il n’existe pas de
calcul acceptant partant de C dans A4'. La preuve est par induction sur la profondeur
4.5 Machines alternantes 237
maximale d’un calcul partant de C (acceptant ou non). Le fait que C soit accessible
de qow et que la machine M s’arrête toujours garantit l’existence de cette profondeur
maximale. Il faut remarquer que cette profondeur maximale est la longueur maximale
d’une suite d’étapes de calcul C -> Ci —> • • • —> Cn et qu’elle est la même dans M et
dans M \
Puisque la machine M est normalisée, cette profondeur maximale d’un calcul partant
de C est nulle si et seulement si l’état de C est ou Dans ce cas, le résultat est
immédiat puisque l’état q+ est final dans M et non final dans et inversement pour
Q-‘
On suppose maintenant que cette profondeur est un entier n strictement positif.
L’état q de la configuration C est différent de et q^. On suppose que q est un
état existentiel dans M et donc universel dans M^. Le cas où q est universel dans M
est symétrique. Soit C i , . .. ,Cfc la liste des configurations C' telles que C Par
définition, la profondeur maximale d’un calcul partant d’une des configurations Ci est
inférieure à n et l’hypothèse de récurrence s’applique à chacune des configurations C^.
Supposons qu’il existe un calcul acceptant partant de C. Comme C est existentielle, il
existe un calcul acceptant partant d’une configuration C^q. Par hypothèse de récurrence,
il n’existe pas de calcul acceptant partant de C^q dans M ' . Comme C est universelle
dans Ai', il n’existe pas de calcul acceptant partant de C dans Ai'. Le cas où il n’existe
pas de calcul acceptant partant de C dans M se traite de la même façon. Ceci termine
la preuve de la proposition. □
4 .5 .3 A u t o m a t e s a lte r n a n ts
Nous avons introduit le concept d’alternance pour les machines de Turing mais il s’ap
plique également aux automates. Un automate alternant peut être vu comme une ma
chine de Turing alternante dont toutes les transitions écrivent le symbole lu et déplacent
la tête de lecture vers la droite. Toutes les transitions sont de la forme p, a ç, a, > où
a est une lettre de l’alphabet d’entrée. Les seules configurations possibles dans un calcul
sont alors les configurations de la forme uqv o\iw = uv est l’entrée.
Pour assurer qu’un automate parcoure entièrement l’entrée avant d’accepter, la no
tion de calcul pour un automate alternant est légèrement modifiée. Un calcul est encore
un arbre étiqueté par des configurations mais on impose que toutes les branches ont
même longueur que l’entrée. Le calcul est alors acceptant si toutes les feuilles d’un
238 Chapitre 4. Complexité
1 0 $ 0 1 0 $ 1 1 0
1 5— 5— 5— 5— 5— 5— 5— 7 - 1 6 - 1 6 - 1 6
^ 0 l \ % /
0— 0— 0— 0— 0— 1 1 0 $ 0 1 0 $ 1 1 0
J;,9 — 9 — 9 — 9 — 9 — 9 - 1 1 - 7 - 1 6 - 1 6
^ ^ \ 0 $ 0 1 0 $ 1 1 0
1 3 — 1 2 - 1 2 - 1 2 - 1 2 - 1 2 - 1 4 - 1 0 —6 - 1 6
calcul sont étiquetées par des configurations finales. Une autre façon de définir ces cal
culs serait d’imposer que les transitions conduisant à un état final q soient de la forme
P) # # , > . Cela reviendrait à ajouter un marqueur # à la fin du mot qui permet à
l’automate de détecter la fin du mot. Nous préférons calquer la notion de calcul sur celle
des automates classiques où un calcul acceptant un mot w est de même longueur que w.
Comme toutes les transitions de l’automate avancent la tête de lecture, toutes les
configurations à profondeur k d’un calcul sont de la forme uqv où u est le préfixe de
longueur k de l’entrée w.
Exemple 4.60. Soit l’automate alternant représenté à la figure 4.15 où les états universels
sont marqués par un double cercle. Soit w le mot $011$ 110$010$110 sur l’alphabet
{0,1,$}. Un calcul acceptant le mot w est donné à la figure 4.14. Chaque nœud du
calcul est uniquement étiqueté par l’état au lieu de la configuration complète. Chaque
arête de l’arbre est étiquetée par la lettre de w qui est lue par la transition effectuée. Le
mot w est bien sûr l’étiquette de chacune des branches.
La proposition suivante assure que l’ensemble des mots acceptés par un automate
alternant est un langage rationnel.
P ro p o sitio n 4.61. Pour tout automate alternant à n états, il existe un automate non
déterministe ayant au plus 2^ états qui accepte le même langage.
Preuve. La preuve se fait grâce une construction très proche de la construction par sous-
ensembles utilisée pour la déterminisation d’un automate. Soit A un automate alternant
et soit Q son ensemble d’états. On construit un automate non déterministe B dont chaque
état est une partie de Q. L’ensemble des états de B est donc ^(Q ). Les états initiaux
sont les singletons {¿} où i est un état initial de A. Les états finaux sont les parties P
incluses dans l’ensemble F des états finaux de A. Les transitions sont les transitions
P P' où les parties P et P' vérifient les conditions suivantes. Pour tout état p et
toute lettre a, on note ô{p,a) l’ensemble { q \ p q} des états accessibles de p par une
transition étiquetée par a. La transition P ^ P' est une transition de B si et seulement
si
i) pour tout état existentiel p de P, 5(p, a) fl P' 7«^0 ,
ii) pour tout état universel p de P , 5{p,a) Ç P'.
4.5 Machines alternantes 239
On montre facilement par récurrence sur la longueur de w qu’il existe un chemin {z} P
dans B si et seulement si il existe un calcul de A dont la racine est étiquetée par iw et
dont l’ensemble des états apparaissant aux feuilles est exactement P. Puisque les états
finaux de B sont les parties contenant uniquement des états finaux, il est clair que B
accepte les mêmes mots que A. □
Exemple 4.62. Soit n un entier positif et soit le langage Ln défini sur l’alphabet A =
{ 0 , 1, $} par la formule
sont deux à deux disjoints quand P parcourt toutes les parties de (0 + 1)^. Comme
le nombre de telles parties est justement 2^", on obtient le résultat.
2. Le langage Ln est accepté par un automate alternant ayant 5n+2 états. La méthode
pour passer d’un automate alternant à un automate non déterministe montre que
Ln est accepté par un automate non déterministe ayant au plus états. La
méthode de déterminisation montre que tout langage accepté par un automate
non déterministe à m états est accepté par un automate déterministe ayant au
plus 2^ états. D ’après le résultat de la question précédente, tout automate non
déterministe acceptant Ln a au moins 2^ états.
À la fin du chapitre précédent, nous avons évoqué des automates boustrophédons
qui peuvent avancer ou reculer la tête de lecture à chaque transition. Nous avons en
particulier montré que les langages acceptés par ces automates sont rationnels. Il est
possible d’introduire des automates alternants boustrophédons. Les langages acceptés
par ces automates sont encore rationnels.
Le temps d’un calcul d’une machine de Turing alternante est par définition la profon
deur de l’arbre. L’espace du calcul est la taille maximale d’une configuration apparaissant
dans le calcul.
D éfin itio n 4.64. Pour une fonction / : N —)► on définit les classes
- ATiME(/(n)) est l’ensemble des problèmes décidés par une machine de Turing
alternante en temps 0 {f{n)).
- ASPACE(/(n)) est l’ensemble des problèmes décidés par une machine de Turing
alternante en espace 0 {f{n)).
On définit alors les classes de complexité suivantes.
AP = IJ ATiME(n^)
k> 0
AL = ASPACE(logn) APS pace = J ASPACE(n^)
k> 0
Nous avons introduit ces classes particulières car elles sont reliées à d’autres classes
déjà introduites pour les machines classiques. Il est bien sûr possible de reprendre toutes
les classes déjà vues dans le cadre des machines alternantes. Pour la classe AL, il faut
bien sûr considérer des machines avec une bande d’entrée et une bande de sortie non
prises en compte dans l’espace comme nous l’avons fait pour l’espace logarithmique.
Le théorème suivant relie les classes de complexité pour les machines alternantes
aux classes pour les machines classiques. On retrouve que les classes de complexité des
machines alternantes sont autoduales. Elles sont en relation avec des classes de machines
déterministes ou en espace qui sont autoduales.
T héorèm e 4.65. Si la fonction t : N R"^ vérifie t{n) > n pour n assez grand, on a
ASPACE(i(n)) =
AL = P et A P S pace = E x p T ime
L’intérêt des machines alternantes est multiple. D ’une part, elles offrent un modèle
de calcul avec un certain parallélisme et d’autre part, elles fournissent d’autres caracté
risations de classes déjà introduites comme P , P S pace et E x p T im e . Il faut reconnaître
que le parallélisme de ces machines alternantes est assez théorique et très éloigné des
parallélismes mis en œuvre en pratique. Le nombre de processus, c’est-à-dire la largeur
d’un calcul n’est pas borné. La communication entre processus s’effectue uniquement à
la terminaison de ceux-ci.
être remplie. Le contenu de la case est choisi par une configuration existentielle. Ensuite,
la machine utilise à nouveau des configurations universelles pour vérifier que le contenu
de chaque case est cohérent avec les contenus des cases au dessus qui sont à leur tour
choisies. La machine ne stocke pas le tableau. Elle utilise uniquement un nombre fini de
pointeurs sur des cases du tableau. Elle utilise donc un espace 0{t{n)). □
4.6 Compléments
On montre dans cette partie que toute machine de Turing à une seule bande qui
fonctionne en temps o(n log n) accepte un langage rationnel. L’ingrédient essentiel de
la preuve est l’utilisation des suites de franchissements {cutting sequences en anglais)
qui constituent un outil très classique. L’intérêt du théorème suivant est autant dans le
résultat que dans la technique de preuve.
T héorèm e 4.66 (Hartmanis 1968). Une machine de Taring à une seule bande qui
fonctionne en temps o{n log n) accepte nécessairement un langage rationnel.
Pour montrer que ce résultat est optimal, on commence par donner un exemple de
machine de Turing à une seule bande qui fonctionne en temps 0 (n log n) et qui accepte
un langage non rationnel.
0, 0, >
remplace par 0 un a sur 2 qui reste et un b sur 2 qui reste, tout en vérifiant encore que
la parité du nombre de a est égale à la parité du nombre de b. La machine poursuit ainsi
ses passages qui divisent par 2 les nombres de a et de 6 restant. La machine accepte
quand il ne reste plus aucun a ou 6 sur la bande. Le nombre de passages effectués est
proportionnel à log2 n et la machine fonctionne bien en temps 0 ( n logn). Si |iî;|o ^
la machine échoue au fe-ième passage où k est le plus petit entier tel que \w\a ^ \w\b
mod 2^.
1 2 k fc+1
[PO
P3;
[P4
Soit M une machine de Turing et soit A; > 1 un entier. On dit qu’une étape de calcul
C de M franchit la frontière entre les cases fc et fc + 1 si C = upav^ C" = ubqv et
|w| = fc en appliquant une transition p, a —> g, 6, > ou si C = ucpav^ C' = uqcbv et |w| = k
en appliquant une transition p , a - ^ q^ 6, <. Soit 7 = Co ^ Cn un calcul de M où
chaque configuration Ci est égale à UiqiVi. Soit io < • • • < ¿m la suite des indices où les
étapes Ci Q + i franchissent la frontière k. On appelle suite de franchissements de 7
en fc, la suite d’états po> • • • )Pm où pj = Çij+i- C’est l’état de la machine juste après le
franchissement qui est pris en considération (cf. figure 4.17).
On commence par démontrer quelques propriétés des suites de franchissements puis
on montre un résultat intermédiaire où on suppose que la machine fonctionne en temps
linéaire. Dans la suite, on appelle contenu de bande^ un mot infini x = aoaia 2 . .. constitué
de symboles blancs # à partir d’un certain rang. On dit que 7 est un calcul sur un contenu
de bande x si x est le contenu de la bande au début de 7 . On appelle le type d’un calcul
le fait qu’il soit acceptant ou non. Pour une machine A4, on note respectivement ÎA^(n)
et rM{'^) la longueur maximale d’un calcul et la longueur maximale d’une suite de
franchissements d’un calcul sur une entrée de longueur n. On note |QI le nombre d’états
de M .
Le lemme suivant permet de combiner deux calculs où apparaît la même suite de
franchissements.
L em m e 4.68. Soient x = u y e t x ' = u'y^ deux contenus de bande. Soient 7 et 7 ' deux
calculs sur X et x' tels que la suite de franchissements de 7 en |n| est identique à la suite
de franchissements de 7 ' en |n'|. Alors, il existe un calcul 7 " sur uy' qui est identique
à 7 sur u et à sur yf.
244 Chapitre 4. Complexité
7 h V t............... i ................ ,
I •................................
I •..................................
:.......... f................ .
II :........î
.......... *
•••♦.................
--------- --
Preuve. On construit un calcul 7 " sur uy' en combinant les deux calculs 7 et 7 '. Soit
Po,---)Pn la suite de franchissements de 7 en |г¿| et de 7 ' en \u'\. Le calcul 7 " est
obtenu en raccordant les calculs 7 et 7 ' au niveau des franchissements en po> • • • »Pn-
Le début de 7 " est le début de 7 jusqu’au premier franchissement en po. Ensuite le
calcul 7 " se poursuit comme le calcul 7 ' après le premier franchissement et ceci jusqu’au
deuxième franchissement en p\. Après le deuxième franchissement, il reprend comme 7
jusqu’au troisième franchissement en p 2- L’alternance se poursuit ainsi jusqu’au dernier
franchissement. Le calcul 7 " se termine comme le calcul 7 si n impair et comme 7 ' si n
est pair. □
C o ro lla ir e 4 ,6 9 . Soit 7 un calcul sur une entrée x = uvy tel que les suites de fran
chissements en \u\ et \uv\ sont identiques. Il existe alors des calculs sur uy et uvvy de
même type que 7 .
Preuve. Il suffit d ’appliquer le lemme précédent au deux factorisations x = u-vy = uv*y
de l’entrée x. □
P r o p o s itio n 4 .7 0 . Une machine de Taring M à une seule bande telle que r^ i(n ) < K
pour tout n > 0 accepte nécessairement un langage rationnel.
On rappelle qu’une relation d ’équivalence sur un ensemble E sature un sous-
ensemble F de E si toute classe d ’équivalence de est soit incluse dans F soit disjointe
de F. Dans ce cas, F est égal à l’union des classes qui l’intersectent.
Une relation d ’équivalence sur A* est dite régulière à droite si w w' implique
wa ~ ty'a pour tous m ots w et et toute lettre a G E. Une telle relation est en quelque
sorte une demi congruence puisqu’une congruence est une relation d ’équivalence qui est
4.6 Compléments 245
simultanément régulière à droite et à gauche. Un langage L est rationnel s ’il est saturé
par une relation d ’équivalence d ’indice fini qui est régulière à droite. D ’une part, la
congruence syntaxique est bien sûr régulière à droite. D ’autre part, il est très facile de
construire un automate déterministe à partir d ’une relation d ’équivalence régulière à
droite. Il suffit de prendre pour états les classes de cette relation d ’équivalence et les
transitions de la forme [t/;] [wa] où [u;] dénote la classe de w.
Preuve. On commence par remplacer la machine M par une machine M ' qui accepte
uniquement en rencontrant un symbole # . On suppose la machine M normalisée avec
un état acceptant On ajoute une transition g + , a —> ç + , a , > pour chaque symbole
a G r \ { # } et une transition g + + , # où est un nouvel état qui devient
l’état final. La nouvelle machine M vérifie < K + 1.
Pour un mot d ’entrée w, on note Fyj l’ensemble des suites de franchissements en |ti;|
des calculs sur une entrée de la forme wv pour un m ot v. On définit la relation ^ sur S*
par w si et seulement si Fyj = F^t. Comme les suites de franchissements de M
sont de longueur bornée par ÜT, la relation est d ’indice fini.
Il reste à montrer que la relation ^ est régulière à droite et qu’elle sature le langage L
accepté par M . Soient w et deux mots tels que w ^ et soit a une lettre de E. Soit
PO) • • • )Pn une suite de franchissements de H existe un mot v tel que po» • • ♦>Pn est
la suite de franchissements en \wa\ d ’un calcul 7 sur une entrée wav. Puisque Fyj = Fyj/^
il existe un calcul 7 ' sur une entrée w'v^ ayant même suite de franchissements en \w'\ que
7 en |ti;|. En appliquant le lemme 4.68, on trouve un chemin 7 " sur l’entrée u;" = w'av
ayant même suite de franchissements en \w'\ que 7 en |it;| et qui se comporte comme 7 sur
la partie av de l’entrée. Ceci montre que p o , . . . ,Pn est aussi la suite de franchissements
de 7 " en w'a et appartient donc à F^/a. Par symétrie, on a F^a = Fyj^a et la relation ^
est donc régulière à droite.
Si w est mot d ’entrée accepté par la machine A4, il existe un calcul acceptant 7 sur w
qui se termine sur un symbole Si vérifie il existe un calcul 7 ' sur une
entrée w'v ayant même suite de franchissements en \w^\ que 7 en |u;|. En appliquant à
nouveau le lemme 4.68, il existe un calcul 7 " sur w' ayant même suite de franchissements
en \w^\. Ce calcul peut être choisi acceptant et w' est aussi accepté par M . □
L em m e 4 .7 1 . Soit une machine M telle que tM{’>^) < K'ri pour une constante K . Il
existe une machine M ! équivalente à M telle que tM'(p) < 2Kn et qui n^utilise que la
partie de la bande où est écrite Ventrée.
La proposition suivante due à Hennie est une première étape dans la preuve du
théorème.
P r o p o s itio n 4 .7 2 (Hennie 1965). Une machine de Turing A4 à une seule bande telle
que tMi'^) ^ F'n accepte nécessairement un langage rationnel.
246 Chapitre 4. Complexité
L em m e 4.73. Soit A4 une machine de Taring à une seule bande telle que tM(p) ^
et qui n^utilise que la partie de la bande où est écrite Ventrée. Si un calcul a une suite
de franchissements de longueur supérieure à 2 K \Q \^ + K , alors il existe au moins trois
suites de franchissements identiques de longueur strictement inférieure à K .
Preuve. Soit 7 un calcul sur une entrée de longueur n ayant au moins une suite de
franchissements de longueur supérieure à 2 K \Q \^ + K . Pour i > 1, la longueur de la
suite de franchissements de 7 en z est notée /¿. Puisque la machine est supposée n’utiliser
que la partie de la bande où est écrite l’entrée, la valeur de k est égale à 0 pour tout i > n.
La longueur de 7 est égale à la somme X^ILi Puisque la machine vérifie ¿A^(n) < RTn,
on a l’inégalité h < Kn. Soit L le nombre de suites de franchissement de longueur
strictement inférieure à K . Parmi les n — L suites de franchissements de longueur au
moins égale à au moins une est de longueur supérieure à 2 K \Q \^ + i f . On a alors
les inégalités
n
2K \Q f + K + { n - L - l ) K < Y ,h < K n .
i=l
En simplifiant, on obtient la minoration L > 2\Q\^. Le nombre de suites diflFérentes
de longueur strictement inférieure à i f est 1 + |Q| + • • • + \Q\^~^ qui est majoré par
IQI^ —1. Comme L > 2 |Q |^, il existe au moins trois suites égales de longueur strictement
inférieure à i f . □
Preuve de la proposition ^.7â. Grâce au lemme 4.71, il peut être supposé que la ma
chine A4 utilise uniquement la portion de la bande où est écrite l’entrée. On montre que
r>v4 (n) est borné par 2if|Q |^ -f if . Supposons par l’absurde qu’il existe un calcul sur
une entrée w qui a une suite de franchissements de longueur supérieure à 2 K \Q \^ + if .
Le chemin est en outre choisi de telle sorte que w soit de longueur minimale. D ’après
le lemme précédent, il existe trois suites de franchissements identiques de longueur infé
rieure à if . Deux au moins parmi ces trois suites se situent du même côté de la suite de
longueur supérieure à 2 if |Q |^ -|-if. Grâce au corollaire 4.69, il existe un autre calcul sur
une entrée strictement plus courte que w ayant encore une suite de franchissements de
longueur supérieure à 2if|Q |^ H- if . Ceci contredit le choix de w et montre que r>^(n)
4.6 Compléments 247
On termine par la preuve du théorème 4.66 qui utilise des arguments similaires à la
preuve de la proposition 4.72 mais de manière plus fine.
Preuve du théorème 4-66. Soit M une machine de Turing à une seule bande telle que
lim n-^ooÎAiW /logn = 0 . Si (rA^(n))n>o est bornée, le résultat est acquis grâce à la
proposition 4.70. On suppose donc maintenant que (r>v/i(n))n>o n’est pas bornée. On
définit par récurrence une suite d’entiers (rii)i>o de la façon suivante. On pose no = 0
et rii étant défini, on choisit pour ni+i le plus petit entier tel que r’A/i(ni+i) > r^ (n i).
Par construction, la suite (ni)i>o vérifie r^ (n o) < rA^(ni) < rM(j^2 ) < • *• et elle est
strictement croissante. Pour chaque i > 0, soit 7 ^ un calcul sur une entrée Wi tel que Wi
est de longueur rii et 7^ a une suite de franchissements de longueur rMi'^i)'
Chaque calcul 7^ n’a pas trois suites de franchissements identiques parmi les rii
premières suites. Sinon, deux de ces suites de franchissements se situent du même côté
de la suite de longueur Grâce au corollaire 4.69, il existe un autre calcul sur
une entrée strictement plus courte que Wi ayant encore une suite de franchissements de
longueur rMi'^i)- Ceci contredit le choix de rii. Le nombre de suites de franchissements
distinctes de longueur inférieure ou égale à est 1+ |Q|H----- Ce nombre
est majoré par \Q\^M(ni)-\-i _ Comme chaque suite de franchissements apparaît au plus
deux fois parmi les rii premières, on obtient l’inégalité > rii. En prenant
le logarithme, on a rM {ni) > log|Q| rii - log|Q| 2 - 1 > log|Q| rii - 2. Le temps minimal
d’un calcul 7i survient lorsque toutes les suites de franchissements de longueur j pour
0 < j < r apparaissent deux fois, l’entier r étant le plus petit possible pour que ces
suites soient distinctes. On obtient donc l’inégalité
Exercice 4 .74. Le but de ce problème est de montrer qu’un langage accepté par une
machine de Turing en espace o(loglogn) est nécessairement rationnel. Comme pour
l’espace logarithmique, on considère une machine M = ((3,E,r, J5, çqj-E, # ) ayant une
bande d’entrée sur la laquelle elle n’écrit pas et une bande de sortie dont la tête de
lecture ne recule jamais. Sans perte de généralité, on suppose que M a une seule bande
de travail. On suppose en outre que la machine M n’a pas de calcul infini. On note s(n)
l’espace maximal utilisé par M sur les entrées de taille n.
1. Montrer que si s{n) est borné par une constante, alors M accepte nécessairement
un langage rationnel.
On appelle configuration locale de la machine un triplet formé de l’état interne, du
contenu de la bande de travail et de la position de la tête de lecture sur cette bande de
travail. Les positions des têtes de lecture sur les bandes d’entrée et de sortie ne sont pas
prises en compte.
248 Chapitre 4. Complexité
- 1
Uk/ 2 < < 2N{rikr^
N{uk) - 1
6 . On a supposé que la machine s’arrête sur toute entrée. Elle ne peut donc pas
repasser dans la même configuration locale avec la tête de lecture à la même
position. On obtient donc la majoration rrik < 2N{rik). Le facteur 2 provient du
sens de déplacement de la tête.
8 . Supposns par l’abusrde que L est rationnel et soit N l’entier fourni par le lemme
de l’étoile. Pour k suppérieur à N, le mot (1)2# **• #(2^ - 1)2 se factorise uvw
où V est un facteur de (2^ —1)2 = 1 • • • 1 et où uv'^w appartient à X pour chaque
n > 0. Pour n = 0, on obtient une contradiction car le mot uw n’appartient pas
à X.
9. Pour chaque fc > 1, le mot ( 1) 2# • • • # ( 2*^ — 1)2 est de longueur k2^ — 1. On
montre qu’il existe une machine utilisant un espace log log n si un mot d’entrée
w de longueur n appartient à L. La machine commence par vérifier que le mot
commence par 1# et que le bloc sur { 0 , 1} après le dernier # ne contient que
des 1. Ensuite, elle vérifie pour chaque paire des blocs consécutifs qu’ils sont bien
les écritures en binaire de deux entiers consécutifs. Elle les compare chiffre par
chiffre. Pour cela, la machine mémorise sur sa bande le numéro de la position
qu’elle est en train de comparer dans les deux blocs. Comme les blocs sont de
longueur au plus fc, l’écriture en binaire de cette position utilise un espace au plus
logfc.
Bibliographie
Achevé d ’imprimer en France en juin 2014 - JOUVE, 1, rue du Docteur Sauvé, 53100 M AYENNE
№ 2160701D - D épôt légal : ju in 2 0 1 4
d ’éditeur : 2014_0569
Olivier Carton
Langages formels
Calculabilité et complexité
S o m m a ir e ------------------------------------------------------------------------------------ ^
I. Langages formels 4. Complexité
1. Langages rationnels Au fil de chaque chapitre,
2. Langages algébriques on trouvera des exercices
II. Calculabilité et complexité suivis de leurs corrigés.
3. Calculabilité
Professeur d'informatique à Tuniversité Paris Diderot (Paris 7 ) , O livier Carton enseigne à tous les
niveaux, depuis le L1 jusqu'au M2, les différentes disciplines de l'inform atique: programmation,
algorithm ique... Spécialiste des automates et des langages formels, il a également enseigné durant
plusieurs années à TÉcole normale supérieure de Paris (ENS Ulm).
ISBN 978-2-311-01400-6
www .VUIBERT.fr
9V82311 014006 ъ