Vous êtes sur la page 1sur 484

ements El dalgorithmique

D. Beauquier, J. Berstel, Ph. Chr etienne

6 f evrier 2005

c D. Beauquier, J. Berstel, Ph. Chr etienne, 2003 Premi` ere edition par Masson, 1992.

Version 6 f evrier 2005

Bruno

Sophie

Bruno

Clara

Jrme

Solange

Version 6 f evrier 2005

Version 6 f evrier 2005

` TABLE DES MATIERES

Table des mati` eres


Avant-propos 1 Pr eliminaires 1.1 Les algorithmes et leur co ut . . . . . . . . . 1.1.1 Algorithmes . . . . . . . . . . . . . . 1.1.2 Probl` emes intraitables . . . . . . . . 1.1.3 Sur la pr esentation dalgorithmes . . 1.2 Mesures du co ut . . . . . . . . . . . . . . . 1.2.1 Co ut dans le cas le plus d efavorable 1.2.2 Co ut moyen . . . . . . . . . . . . . . 1.2.3 Co ut amorti . . . . . . . . . . . . . . 1.3 Une borne inf erieure . . . . . . . . . . . . . XIV 1 1 1 2 3 4 4 4 6 9 13 13 14 14 16 17 20 20 26 29 33 35 35 37 37 39 40 42 44 51 51 52

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2 Evaluations Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1 Notations de Landau . . . . . . . . . . . . . . . . . . 2.1.1 Notation O . . . . . . . . . . . . . . . . . . . 2.1.2 Notations et . . . . . . . . . . . . . . . . 2.1.3 Exemples . . . . . . . . . . . . . . . . . . . . 2.2 R ecurrences . . . . . . . . . . . . . . . . . . . . . . . 2.2.1 R ecurrences lin eaires a ` coecients constants 2.2.2 R ecurrences diverses . . . . . . . . . . . . . . 2.2.3 R ecurrences de partitions . . . . . . . . . . . 2.2.4 R ecurrences compl` etes . . . . . . . . . . . . . Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Structures de donn ees 3.1 Types de donn ees et structures de donn ees . . . . . . 3.2 Les structures lin eaires . . . . . . . . . . . . . . . . . 3.2.1 Piles . . . . . . . . . . . . . . . . . . . . . . . 3.2.2 Files . . . . . . . . . . . . . . . . . . . . . . . 3.2.3 Listes . . . . . . . . . . . . . . . . . . . . . . 3.3 Arbres . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.1 Arbres binaires . . . . . . . . . . . . . . . . . 3.3.2 Dictionnaires et arbres binaires de recherche .

Version 6 f evrier 2005

II
3.3.3 Arborescences . . . . . . . . . . . . Files de priorit e . . . . . . . . . . . . . . . Gestion des partitions . . . . . . . . . . . 3.5.1 Le probl` eme union-nd . . . . . 3.5.2 Union pond er ee et compression des 3.5.3 Preuve du th eor` eme . . . . . . . . Notes . . . . . . . . . . . . . . . . . . . . . . . Exercices . . . . . . . . . . . . . . . . . . . . . 3.4 3.5

` TABLE DES MATIERES


. . . . . . . . . . . . . . . . . . . . chemins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 56 61 61 62 65 69 70 73 73 74 74 75 76 77 78 80 81 82 86 89 90 90 93 94 95 95 97 97 102 104 106 111 115 117 117 121 121 122 122 128 130 131 133 134

4 Graphes Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4.1 D enitions et propri et es el ementaires . . . . . . . . 4.1.1 D enitions . . . . . . . . . . . . . . . . . . 4.1.2 Impl ementations dun graphe . . . . . . . . 4.1.3 Chemins, cha nes, circuits, cycles . . . . . . 4.1.4 Lemme de K onig . . . . . . . . . . . . . . . 4.1.5 Graphes sans circuit . . . . . . . . . . . . . 4.2 Accessibilit e . . . . . . . . . . . . . . . . . . . . . . 4.2.1 Algorithme de Roy-Warshall . . . . . . . . 4.2.2 Autres probl` emes daccessibilit e. . . . . . . 4.2.3 Semi-anneaux et accessibilit e . . . . . . . . 4.2.4 Forte connexit e . . . . . . . . . . . . . . . . 4.3 Arbres et arborescences . . . . . . . . . . . . . . . 4.3.1 Arbres . . . . . . . . . . . . . . . . . . . . . 4.3.2 Arborescences . . . . . . . . . . . . . . . . . 4.3.3 Arborescences ordonn ees . . . . . . . . . . . 4.3.4 Arbres positionn es et arbres binaires . . . . 4.3.5 Arbre binaire complet . . . . . . . . . . . . 4.4 Parcours dun graphe . . . . . . . . . . . . . . . . . 4.4.1 Parcours dun graphe non orient e . . . . . . 4.4.2 Parcours en profondeur . . . . . . . . . . . 4.4.3 Parcours en largeur . . . . . . . . . . . . . 4.4.4 Parcours dun graphe orient e . . . . . . . . 4.4.5 Calcul des composantes fortement connexes 4.4.6 Parcours dune arborescence . . . . . . . . . Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Tris Introduction . . . . . . . . . . . . . . . . . 5.1 Tri interne . . . . . . . . . . . . . . . 5.1.1 Le tri rapide . . . . . . . . . 5.1.2 Le tri fusion . . . . . . . . . . 5.1.3 Le tri par tas . . . . . . . . . 5.2 Tri externe . . . . . . . . . . . . . . 5.2.1 Construction des monotonies 5.2.2 R epartition des monotonies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Version 6 f evrier 2005

` TABLE DES MATIERES

III

Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 6 Arbres et ensembles ordonn es Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1 Arbres de recherche . . . . . . . . . . . . . . . . . . . . 6.1.1 D enition . . . . . . . . . . . . . . . . . . . . . . 6.1.2 Rotations . . . . . . . . . . . . . . . . . . . . . . 6.2 Arbres AVL . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.1 D enition . . . . . . . . . . . . . . . . . . . . . . 6.2.2 Insertion . . . . . . . . . . . . . . . . . . . . . . . 6.2.3 Suppression . . . . . . . . . . . . . . . . . . . . . 6.2.4 Arbres balis es . . . . . . . . . . . . . . . . . . . . 6.3 Arbres ab . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3.1 D enition . . . . . . . . . . . . . . . . . . . . . . 6.3.2 Recherche dun el ement . . . . . . . . . . . . . . 6.3.3 Insertion dun el ement . . . . . . . . . . . . . . . 6.3.4 Suppression dun el ement . . . . . . . . . . . . . 6.3.5 Concat enation et scission . . . . . . . . . . . . . 6.3.6 Co ut amorti des arbres 24 . . . . . . . . . . . . 6.4 Arbres bicolores . . . . . . . . . . . . . . . . . . . . . . . 6.4.1 Pr esentation . . . . . . . . . . . . . . . . . . . . 6.4.2 Hauteur dun arbre bicolore . . . . . . . . . . . . 6.4.3 Insertion dans un arbre bicolore . . . . . . . . . . 6.4.4 Suppression dun el ement dans un arbre bicolore 6.5 Enrichissement . . . . . . . . . . . . . . . . . . . . . . . 6.6 Arbres persistants . . . . . . . . . . . . . . . . . . . . . 6.6.1 Ensembles ordonn es persistants . . . . . . . . . . 6.6.2 Duplication de chemins . . . . . . . . . . . . . . 6.6.3 M ethode de duplication des sommets pleins . . . Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Graphes valu es Introduction . . . . . . . . . . . . . . . . . . 7.1 Arbre couvrant de co ut minimum . . . 7.1.1 D enition du probl` eme . . . . . 7.1.2 Propri et es des arbres optimaux 7.1.3 Algorithme g en eral . . . . . . . 7.1.4 Algorithmes sp eciques . . . . 7.2 Chemins de co ut minimum . . . . . . 7.2.1 D enition du probl` eme . . . . . 7.2.2 Existence dune solution . . . . 7.2.3 It eration fondamentale . . . . . 7.2.4 Algorithme de Ford . . . . . . 7.2.5 Graphe sans circuit . . . . . . . 7.2.6 Algorithme de Dijkstra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 145 147 147 150 152 152 154 156 159 160 160 161 161 163 167 169 173 173 175 177 179 182 186 186 188 195 203 203 211 211 212 212 212 214 214 219 220 221 223 224 226 226

Version 6 f evrier 2005

IV
7.2.7 Algorithme A . . . 7.2.8 Algorithme paps Notes . . . . . . . . . . . . . . Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

` TABLE DES MATIERES


. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 232 234 235 239 240 241 242 244 246 251 255 257 263 269 270 272 273 273 275 280 285 289 290 293 293 294 295 295 296 297 301 301 301 303 303 303 304 308 311 312 315 318 318 319

8 Flots 8.1 Pr eliminaires . . . . . . . . . . . . . . . . . . . . . . . . 8.2 Flots dun r eseau . . . . . . . . . . . . . . . . . . . . . . 8.2.1 Existence dun ot compatible de co ut minimum 8.2.2 Quelques probl` emes particuliers . . . . . . . . . . 8.2.3 Trois propri et es fondamentales . . . . . . . . . . 8.3 Probl` eme du ot maximum . . . . . . . . . . . . . . . . 8.3.1 Lalgorithme g en erique de Ford et Fulkerson . . . 8.3.2 Lalgorithme des distances estim ees au puits . . . 8.3.3 Lalgorithme du pr eot . . . . . . . . . . . . . . 8.3.4 Lalgorithme de Karzanov . . . . . . . . . . . . . 8.3.5 Lalgorithme des exc` es echelonn es . . . . . . . . 8.4 Flot de co ut minimum . . . . . . . . . . . . . . . . . . . 8.4.1 Graphe d ecart et conditions doptimalit e . . . . 8.4.2 Probl` eme dual et conditions doptimalit e . . . . 8.4.3 Un algorithme primal . . . . . . . . . . . . . . . 8.4.4 Flot maximum de co ut minimum . . . . . . . . . 8.4.5 Plan de transport de co ut minimum . . . . . . . Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Automates Introduction . . . . . . . . . . . . . . . . . . . 9.1 Mots et langages . . . . . . . . . . . . . 9.2 Automates nis . . . . . . . . . . . . . . 9.2.1 D enition . . . . . . . . . . . . . 9.2.2 Exemples . . . . . . . . . . . . . 9.2.3 Automates d eterministes . . . . . 9.3 Op erations . . . . . . . . . . . . . . . . 9.3.1 Op erations bool eennes . . . . . . 9.3.2 Automates asynchrones . . . . . 9.3.3 Produit et etoile . . . . . . . . . 9.4 Langages rationnels . . . . . . . . . . . . 9.4.1 Langages rationnels : d enitions 9.4.2 Le th eor` eme de Kleene . . . . . . 9.4.3 Expressions rationnelles . . . . . 9.5 Automate minimal . . . . . . . . . . . . 9.5.1 Quotients . . . . . . . . . . . . . 9.5.2 Equivalence de Nerode . . . . . . 9.6 Calcul de lautomate minimal . . . . . . 9.6.1 Construction de Moore . . . . . 9.6.2 Scinder une partition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Version 6 f evrier 2005

` TABLE DES MATIERES


9.6.3 Algorithme de Hopcroft . . 9.6.4 Complexit e de lalgorithme Notes . . . . . . . . . . . . . . . . . . . Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

V
321 327 333 333 337 337 338 339 340 344 346 350 354 358 358 360 364 367 369 370 372 375 376 379 379 380 381 382 386 386 389 390 393 395 403 404 405 406 408 408 411 422 426 427

10 Motifs Introduction . . . . . . . . . . . . . . . . . . . 10.1 Recherche dun motif . . . . . . . . . . . 10.1.1 Un algorithme na f . . . . . . . . 10.1.2 Lalgorithme de Morris et Pratt . 10.1.3 Bords . . . . . . . . . . . . . . . 10.1.4 Lalgorithme de Knuth, Morris et 10.1.5 Lautomate des occurrences . . . 10.1.6 Lalgorithme de Simon . . . . . . 10.2 Lalgorithme de Boyer et Moore . . . . . 10.2.1 Algorithme de Horspool . . . . . 10.2.2 Algorithme de Boyer et Moore . 10.2.3 Fonction du bon suxe . . . . . 10.3 Lalgorithme de Aho et Corasick . . . . 10.4 Recherche dexpressions . . . . . . . . . 10.4.1 Calcul ecace dun automate . . 10.4.2 Recherche doccurrences . . . . . Notes . . . . . . . . . . . . . . . . . . . . . . Exercices . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . Pratt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11 G eom etrie algorithmique 11.1 Notions pr eliminaires . . . . . . . . . . . . . . . . . . 11.1.1 Notations . . . . . . . . . . . . . . . . . . . . 11.1.2 Lignes polygonales, polygones . . . . . . . . . 11.1.3 Ordre polaire, circuit polaire . . . . . . . . . 11.2 Enveloppe convexe . . . . . . . . . . . . . . . . . . . 11.2.1 G en eralit es . . . . . . . . . . . . . . . . . . . 11.2.2 Marche de Jarvis . . . . . . . . . . . . . . . . 11.2.3 Algorithme de Graham . . . . . . . . . . . . 11.2.4 Algorithme dichotomique . . . . . . . . . . . 11.2.5 Gestion dynamique dune enveloppe convexe 11.3 Localisation de points dans le plan . . . . . . . . . . 11.3.1 Cas dun polygone simple . . . . . . . . . . . 11.3.2 Cas dun polygone simple convexe . . . . . . 11.3.3 Cas dune subdivision planaire g en eralis ee . . 11.4 Diagrammes de Vorono . . . . . . . . . . . . . . . . 11.4.1 Diagrammes de Vorono de points . . . . . . 11.4.2 Lalgorithme de Fortune . . . . . . . . . . . . 11.4.3 Diagramme de Vorono de segments . . . . . Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . .

Version 6 f evrier 2005

VI
12 Planication de trajectoires Introduction . . . . . . . . . . . . . . . . . . . . . . 12.1 Translation dun segment . . . . . . . . . . . 12.1.1 Pr esentation du probl` eme . . . . . . . 12.1.2 Pr esentation de lalgorithme . . . . . . 12.1.3 Pr etraitement des donn ees . . . . . . 12.1.4 R esolution du probl` eme de translation 12.2 D eplacement dun disque . . . . . . . . . . . 12.2.1 Introduction . . . . . . . . . . . . . . 12.2.2 R etraction Diagramme de Vorono 12.2.3 Expos e de lalgorithme . . . . . . . . . 12.2.4 Remarques . . . . . . . . . . . . . . . Notes . . . . . . . . . . . . . . . . . . . . . . . . . Index Notes et Compl ements

` TABLE DES MATIERES


431 431 433 433 434 440 445 446 446 447 450 455 455 457 463

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

Version 6 f evrier 2005

LISTE DES FIGURES

VII

Liste des gures


Pr eliminaires 3.1 Larbre de d ecision dun algorithme de tri.

. . . . . . . . . . . . . .

10 28 39 41 43 48 48 55 56 57 57 59 62 64 71 71 74 75 79 80 82 84 90 91 92 93 94 96 96

Evaluations 2.1 Les arbres binaires de hauteur 1 h 2. . . . . . . . . . . . . . . Structures de donn ees 2.1 Une liste et une place. . . . . . . . . . . . . . . . 2.2 Un pile repr esent ee par une liste cha n ee. . . . . . 2.3 La le (c, a, b, c, c, a, b, d, a, c, c, d). . . . . . . . . . 2.4 Eet de chainer(p,q). . . . . . . . . . . . . . . . 2.5 Eet de dechainer(q). . . . . . . . . . . . . . . . 3.1 Une arborescence repr esent ee comme arbre binaire. 4.1 Les arbres parfaits a ` 6, 7, et 8 sommets. . . . . . . 4.2 Un arbre tournoi. . . . . . . . . . . . . . . . . . . 4.3 Un tas (tournoi parfait). . . . . . . . . . . . . . . 4.4 Mise en place de la cl e 7 par comparaison aux ls. 5.1 Partition en trois classes, de noms 1, 3, et 7. . . . 5.2 Compression dun chemin. . . . . . . . . . . . . . 5.3 Un arbre let e. . . . . . . . . . . . . . . . . . . . 5.4 Un tournoi et sa pagode. . . . . . . . . . . . . . . Graphes 1.1 Sous-graphes. . . . . . . . . . . . . . . . . . 1.2 Impl ementations dun graphe. . . . . . . . . 1.3 Un graphe sans circuit. . . . . . . . . . . . . 1.4 Classement par rang. . . . . . . . . . . . . . 2.1 Un graphe orient e et sa matrice dadjacence. 2.2 Un graphe etiquet e. . . . . . . . . . . . . . . 2.3 Un graphe orient e et son graphe r eduit. . . . 3.1 Un arbre a ` quatorze sommets. . . . . . . . . 3.2 Le graphe Gu . . . . . . . . . . . . . . . . . . 3.3 Structure r ecursive dune arborescence. . . . 3.4 Une arborescence. . . . . . . . . . . . . . . . 3.5 Arbre binaire et arbre binaire complet. . . . 3.6 Les premiers arbres binaires complets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Version 6 f evrier 2005

VIII
3.7 3.8 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 Tris 1.1 1.2 1.3 1.4 1.5 1.6 2.1 2.2 2.3 Eeuillage dun arbre binaire complet. . . Compl etion dun arbre binaire. . . . . . . Bordure dun sous-ensemble de sommets. Parcours dun graphe et arbre couvrant. . Parcours en profondeur. . . . . . . . . . Parcours en largeur. . . . . . . . . . . . Un graphe non orient e non connexe. . . . Bordure pour un graphe orient e. . . . . . Un graphe orient e. . . . . . . . . . . . . Rangs dattache et points dattache. . . . Une ex ecution de Desc. . . . . . . . . . Une arborescence. . . . . . . . . . . . . . Un arbre binaire. . . . . . . . . . . . . . Un pivotage. . . . . . . . . . . . . . Dernier echange dun couple invers e. . Appels r ecursifs du tri rapide. . . . . Un peigne . . . . . . . . . . . . . . Un tri fusion. . . . . . . . . . . . . . Un tri par tas. . . . . . . . . . . . . S election et remplacement. . . . . . . Le tri equilibr e. . . . . . . . . . . . . R epartition des monotonies fant omes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

LISTE DES FIGURES


. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 98 98 100 103 105 106 106 107 110 113 116 117 124 125 125 126 130 132 134 135 139 147 148 148 149 149 150 150 151 151 151 152 153 155 155 156 156 157 157 158 158 159

Arbres et ensembles ordonn es 1.1 Un arbre binaire de recherche. . . . . . . . . . . . . 1.2 Un arbre sans balises. . . . . . . . . . . . . . . . . . 1.3 Larbre avec balises. . . . . . . . . . . . . . . . . . 1.4 Larbre apr` es insertion de la derni` ere cl e. . . . . . . 1.5 Insertion de 6 dans larbre balis e. . . . . . . . . . . 1.6 Suppression de 5 dans larbre balis e. . . . . . . . . . 1.7 Larbre A = (x, B, C ). . . . . . . . . . . . . . . . . 1.8 Rotations gauche et droite. . . . . . . . . . . . . . . 1.9 Rotation gauche-droite. . . . . . . . . . . . . . . . . 1.10 Rotation droite-gauche. . . . . . . . . . . . . . . . . 2.1 Un arbre AVL. . . . . . . . . . . . . . . . . . . . . 2.2 Arbres de Fibonacci k pour k = 2, 3, 4, 5. . . . . . . 2.3 Le chemin de r e equilibrage. . . . . . . . . . . . . 2.4 Larbre de racine x avant et apr` es insertion. . . . . . 2.5 Cas (1) : une rotation simple r etablit l equilibre. . . 2.6 Cas (2) : une rotation double r etablit l equilibre. . . 2.7 Le chemin de r e equilibrage. . . . . . . . . . . . . . 2.8 Larbre de racine x avant et apr` es suppression. . . . 2.9 Une rotation simple sur le chemin de r e equilibrage. . 2.10 Une rotation double sur le chemin de r e equilibrage. . 2.11 Arbre de Fibonacci avant la suppression de la cl e 12.

Version 6 f evrier 2005

LISTE DES FIGURES


2.12 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13 5.1 5.2 5.3 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 6.10 6.11 6.12 6.13 Apr` es suppression et r e equilibrage. . . . . . . . . . . . . . . . . . . . Un arbre 24. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Insertion dune feuille, cas c < c i . . . . . . . . . . . . . . . . . . . . Insertion dune feuille, cas c > c i . . . . . . . . . . . . . . . . . . . . R` egle d eclatement. . . . . . . . . . . . . . . . . . . . . . . . . . . . Larbre apr` es insertion de 15. . . . . . . . . . . . . . . . . . . . . . R` egle de fusion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . R` egle du partage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Un arbre 24. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Apr` es suppression de 12 et avant r e equilibrage. . . . . . . . . . . . . Apr` es partage avec le fr` ere droit. . . . . . . . . . . . . . . . . . . . . Apr` es fusion avec le fr` ere gauche. . . . . . . . . . . . . . . . . . . . Un arbre 24 avant la scission par la cl e 36. . . . . . . . . . . . . . . Les deux for ets F1 et F2 apr` es la s eparation. . . . . . . . . . . . . . Reconstitution de larbre a ` partir de la for et F 1 . . . . . . . . . . . . Eclatement de x. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Partage entre les fr` eres s et t. . . . . . . . . . . . . . . . . . . . . . Fusion des fr` eres s et t. . . . . . . . . . . . . . . . . . . . . . . . . . Un arbre bicolore : (a) avec ses feuilles, (b) sans feuilles. . . . . . . . Aectation dune couleur a ` un nud en fonction du rang. . . . . . . Attribution dun rang aux sommets de larbre de la premi` ere gure. . Les trois cas possibles. . . . . . . . . . . . . . . . . . . . . . . . . . Premi` ere phase de linsertion de A dans A. . . . . . . . . . . . . . . R e equilibrage apr` es une insertion : r` egle . . . . . . . . . . . . . . . R e equilibrage apr` es une insertion : r` egles . . . . . . . . . . . . . . . R e equilibrage apr` es une insertion : r` egles . . . . . . . . . . . . . . . R e equilibrage apr` es insertion de A. . . . . . . . . . . . . . . . . . . Premi` ere phase de suppression dun el ement dans un arbre bicolore . R e equilibrage apr` es une suppression : r` egles (a 1 ), (a2 ), (a3 ). . . . . . R e equilibrage apr` es une suppression : r` egles (b 1 ), (b2 ), (b3 ). . . . . . . Suppression de p. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Un arbre 23 a ` liaisons par niveau. . . . . . . . . . . . . . . . . . . Une liste doublement cha n ee sur les sommets dun arbre. . . . . . . Les num eros dordre (en blanc) et les tailles (en noir). . . . . . . . . Persistance par recopie int egrale. . . . . . . . . . . . . . . . . . . . . Duplication de chemin. . . . . . . . . . . . . . . . . . . . . . . . . . Modications de pointeurs dans une rotation gauche. . . . . . . . . . Premi` ere phase de linsertion. . . . . . . . . . . . . . . . . . . . . . Insertion dun nouvel el ement phase 1. . . . . . . . . . . . . . . . . R e equilibrage par rotation gauche lors dune insertion. . . . . . . . . Insertion dun nouvel el ement phase 2. . . . . . . . . . . . . . . . . Suppression dun el ement - phase 1. . . . . . . . . . . . . . . . . . . Suppression de O - phase 1. . . . . . . . . . . . . . . . . . . . . . . . R e equilibrage dans une suppression, r` egles (a), (b), (c). . . . . . . . . R e equilibrage dans une suppression, r` egles (d), (e). . . . . . . . . . . Suppression dun el ement-phase 2 (r` egle (d)). . . . . . . . . . . . . . Recherche de F a ` linstant 4. . . . . . . . . . . . . . . . . . . . . . .

IX
159 160 162 162 163 163 164 164 165 166 166 166 168 168 169 171 172 172 173 175 175 176 177 177 178 178 179 180 181 182 182 184 184 185 187 189 189 190 191 191 192 192 193 194 194 195 197

Version 6 f evrier 2005

X
6.14 6.15 6.16 6.17 6.18 6.19 6.20 6.21 6.22 6.23 6.24 6.25 6.26 6.27

LISTE DES FIGURES


Le sommet contenant L a ete dupliqu e pour contenir G. Le ls gauche de L est dupliqu ea ` linstant t 7 . . . . . . Cas o` u z nest pas plein. . . . . . . . . . . . . . . . . Cas o` u z est plein. . . . . . . . . . . . . . . . . . . . Insertion dun nouvel el ement-phase 1. . . . . . . . . . Insertion dun nouvel el ement-phase 2. . . . . . . . . . Suppression dun el ement-phase 1. . . . . . . . . . . . Comparaison des deux m ethodes. . . . . . . . . . . . Transformation dun arbre 24 en arbre bicolore. . . . Les quatre double-rotations. . . . . . . . . . . . . . . Eet de lop eration Evaser(a, A). . . . . . . . . . . . Arbres binomiaux. . . . . . . . . . . . . . . . . . . . Deux les binomiales, . . . . . . . . . . . . . . . . . . . . . et leur union. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 198 198 199 199 200 200 201 204 205 205 206 208 208 212 213 216 218 220 221 222 223 225 228 228 230 233 234 241 243 245 247 248 251 253 254 255 257 259 261 262 262 266

Graphes valu es 1.1 Un graphe valu e. . . . . . . . . . . . . . . . . . . . . . 1.2 Cycle et cocycle candidats. . . . . . . . . . . . . . . . . 1.3 Arbre couvrant de co ut minimum. . . . . . . . . . . . . 1.4 Arbre couvrant de co ut minimum. . . . . . . . . . . . . 2.1 Un graphe valu e. . . . . . . . . . . . . . . . . . . . . . 2.2 Un circuit absorbant. . . . . . . . . . . . . . . . . . . . 2.3 Construction dune arborescence des chemins minimaux. 2.4 Lit eration de Ford. . . . . . . . . . . . . . . . . . . . . 2.5 Le graphe des etats dun sommet. . . . . . . . . . . . . 2.6 Graphe initial et premi` ere it eration. . . . . . . . . . . . 2.7 Les deux it erations suivantes. . . . . . . . . . . . . . . 2.8 Un graphe valu e et la fonction h. . . . . . . . . . . . . 2.9 Les evaluations de lalgorithme paps. . . . . . . . . . . 2.10 Lalgorithme paps avec un circuit absorbant. . . . . . . Flots 1.1 2.1 2.2 2.3 2.4 2.5 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 Cha ne et cycle el ementaires. . . . . . . . . . . . . Am elioration de la compatibilit e dun ot. . . . . . Probl` eme de transport et r eseau valu e equivalent. . Un ot entier positif. . . . . . . . . . . . . . . . . Lapplication A,B . . . . . . . . . . . . . . . . . . Matrice dincidence dun arbre orient e. . . . . . . Un probl` eme de ot maximum et lun de ses ots. Un graphe d ecart. . . . . . . . . . . . . . . . . . Une coupe. . . . . . . . . . . . . . . . . . . . . . Un probl` eme de ot maximum. . . . . . . . . . . Mise a ` jour de la distance estim ee . . . . . . . . . Initialisation et premi` ere augmentation de distance. Seconde augmentation de distance. . . . . . . . . Premier graphe d ecart dun ot maximum. . . . . Graphe d ecart du pr eot initial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Version 6 f evrier 2005

LISTE DES FIGURES


3.10 3.11 4.1 4.2 4.3 La valeur maximum est atteinte. Le dernier graphe d ecart. . . . Les r eseaux R et R . . . . . . . Premi` ere phase. . . . . . . . . . Seconde phase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

XI
266 267 281 287 288 296 296 296 297 297 297 299 299 300 300 302 302 305 306 309 313 314 316 317 320 324 325 330 334 339 341 342 344 346 349 350 351 352 354 356 358 361 362

Automates 2.1 Automate reconnaissant le langage abA . . . . . . . . . . . . . . . 2.2 Automate reconnaissant le langage A aba. . . . . . . . . . . . . . . 2.3 Automate reconnaissant les mots contenant au moins un b. . . . . . 2.4 Automate reconnaissant les mots contenant un nombre impair de a. 2.5 Tous les mots sont reconnus. . . . . . . . . . . . . . . . . . . . . . 2.6 Automates reconnaissant (i) le mot vide et . . . . (ii) tous les mots sauf le mot vide. 2.7 Un automate reconnaissant le langage A ab. . . . . . . . . . . . . . 2.8 Lautomate d eterminis e. . . . . . . . . . . . . . . . . . . . . . . . 2.9 Lautomate d eterministe et emond e. . . . . . . . . . . . . . . . . . 2.10 Un automate a ` n+1 etats. . . . . . . . . . . . . . . . . . . . . . . 3.1 Un automate asynchrone. . . . . . . . . . . . . . . . . . . . . . . 3.2 Lautomate pr ec edent synchronis e . . . . . . . . . . . . . . . . . 4.1 Automate reconnaissant exactement le mot w = a 1 a2 an . . . . . 4.2 Quel est le langage reconnu par cet automate? . . . . . . . . . . . 4.3 Lexpression rationnelle a(a + a b) b. . . . . . . . . . . . . . . . . 5.1 Un automate reconnaissant X = b a{a, b} . . . . . . . . . . . . . . 5.2 Automate minimal pour X = b a{a, b} . . . . . . . . . . . . . . . 5.3 Un automate qui nest pas minimal. . . . . . . . . . . . . . . . . . 5.4 Un automate quotient. . . . . . . . . . . . . . . . . . . . . . . . . 6.1 Un exemple illustrant lop eration . . . . . . . . . . . . . . . . . . 6.2 Exemple. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3 Automate minimal obtenu a ` partir de celui de la gure 6.2. . . . . 6.4 Un exemple. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.5 Deux automates non d eterministes reconnaissant le m eme langage. Motifs 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 1.11 2.1 2.2 2.3 Le motif glissant sur le texte. . . . . . . . . . . . Echec a ` la i-i` eme lettre du motif. . . . . . . . . . D ecalage dune position. . . . . . . . . . . . . . . D ecalages successifs du motif. . . . . . . . . . . . Lorsque b = a, le d ecalage est inutile si c = a. . . . D ecalages successifs du motif. . . . . . . . . . . . Les graphes des deux fonctions de suppl eance. . . . Automate reconnaissant le langage A abcababcac. . Automate d eterministe A(abcababcac). . . . . . . Automate A(abcababcac), sans ses ` eches passives. Impl ementation de lautomate A(abcababcac). . . . Algorithme de Horspool. . . . . . . . . . . . . . . Algorithme de Boyer-Moore simpli e. . . . . . . . Co ncidence partielle du motif et du texte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Version 6 f evrier 2005

XII
2.4 2.5 2.6 3.1 4.1 4.2 4.3 4.4 4.5 4.6

LISTE DES FIGURES


D ecalage : premier cas. . . . . . . . . . . . . . . . . . . D ecalage : deuxi` eme cas. . . . . . . . . . . . . . . . . . Algorithme de Boyer-Moore complet. . . . . . . . . . . Automate pour lensemble X . . . . . . . . . . . . . . . Automates normaliss . . . . . . . . . . . . . . . . . Automate pour lunion. . . . . . . . . . . . . . . . . . . Automate pour le produit. . . . . . . . . . . . . . . . . Automate pour l etoile. . . . . . . . . . . . . . . . . . . Un automate pour lexpression (a + b) b(1 + a)(1 + a) . Lautomate de Boyer et Moore pour aba. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 362 364 368 371 371 371 372 372 377 381 381 382 383 384 386 388 388 389 391 392 393 394 395 396 397 397 398 399 399 401 402 402 404 405 405 407 407 409 410 410 412 413 414 415

G eom etrie algorithmique 1.1 Lignes polygonales. . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Le contour positif du polygone est ((A, B, C, D, E )). . . . . . . . 1.3 Ordre polaire. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4 p1 O p2 , p2 O p3 , p3 O p1 . . . . . . . . . . . . . . . . . . . 1.5 Un secteur angulaire. . . . . . . . . . . . . . . . . . . . . . . . . 1.6 Insertion entre p3 et p4 . . . . . . . . . . . . . . . . . . . . . . . 2.1 C one enveloppant. . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Adjonction dun point nappartenant pas a ` lenveloppe convexe. . 2.3 Marche de Jarvis. . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4 Circuit polaire . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5 Algorithme de Graham. . . . . . . . . . . . . . . . . . . . . . . 2.6 Exemple. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.7 Cas o` u p est ext erieur a ` P2 . . . . . . . . . . . . . . . . . . . . . 2.8 Si p est supprim e, a, b et c apparaissent. . . . . . . . . . . . . . . 2.9 Enveloppes convexes sup erieure et inf erieure. . . . . . . . . . . . 2.10 Calcul de Inf(v ) . . . . . . . . . . . . . . . . . . . . . . . . . . 2.11 Les fonctions p1 , p2 et G. . . . . . . . . . . . . . . . . . . . . . . 2.12 Les 3 r egions I, II, III auxquelles v peut appartenir. . . . . . . . . 2.13 Les 9 cas du lemme. . . . . . . . . . . . . . . . . . . . . . . . . 2.14 Insertion dun nouveau point m. . . . . . . . . . . . . . . . . . . 2.15 Rotation droite. . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.16 Structure de larbre avant insertion du point p 13 . . . . . . . . . . 2.17 Insertion du point p13 . . . . . . . . . . . . . . . . . . . . . . . . 3.1 Principe de lalgorithme. . . . . . . . . . . . . . . . . . . . . . . 3.2 Le d ecompte des intersections. . . . . . . . . . . . . . . . . . . . 3.3 Cas dun polygone convexe. . . . . . . . . . . . . . . . . . . . . 3.4 Une subdivision planaire. . . . . . . . . . . . . . . . . . . . . . . 3.5 Une subdivision planaire g en eralis ee. . . . . . . . . . . . . . . . . 4.1 Diagramme de Vorono : les sites sont pleins. . . . . . . . . . . . 4.2 Tout point susamment loin sur D est plus proche de b que de a. 4.3 La partie gris ee est dans R(a). . . . . . . . . . . . . . . . . . . . 4.4 Demi-c one associ e au site a. . . . . . . . . . . . . . . . . . . . . 4.5 Le plan de balayage. . . . . . . . . . . . . . . . . . . . . . . . . 4.6 Le front parabolique au temps t. . . . . . . . . . . . . . . . . . . 4.7 Tout point du diagramme de Vorono est point anguleux. . . . . .

Version 6 f evrier 2005

LISTE DES FIGURES


4.8 4.9 4.10 4.11 4.12 4.13 4.14 4.15 4.16 4.17 4.18 Apparition dun nouvel arc . . . . . . . . . . . . . . Apparition de larc : deuxi` eme cas impossible. . . . Un ev enement de type site : cas g en eral . . . . . . . Disparition de et cr eation du sommet s. . . . . . . . Ev enement site avec cr eation dun sommet. . . . . . . Un ensemble de 4 segments ouverts et 6 points. . . . . Diagramme de Vorono form e de 4 demi-droites et dun Le diagramme d eni par deux segments. . . . . . . . . Un diagramme de Vorono . . . . . . . . . . . . . . . . Exemples. . . . . . . . . . . . . . . . . . . . . . . . . Principe de lalgorithme. . . . . . . . . . . . . . . . . . . . . . . . . . . . . arc . . . . . . . .

XIII
. . . . . . 415 . . . . . . 416 . . . . . . 420 . . . . . . 420 . . . . . . 421 . . . . . . 423 de parabole. 424 . . . . . . 425 . . . . . . 426 . . . . . . 428 . . . . . . 429 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432 433 434 435 435 436 436 437 438 438 440 441 441 443 443 444 446 447 448 451 452 454 455 456

Planication de trajectoires 0.1 La translation t(x, y ) . . . . . . . . . . . . . . . . . . . . 0.2 p1 est libre, p2 et p3 sont semi-libres, p4 et p5 ne le sont pas. 1.1 P et caract erisent p. . . . . . . . . . . . . . . . . . . . . 1.2 Partitionnement de lespace libre en cellules. . . . . . . . . 1.3 Le graphe G/2 associ ea ` lexemple de la gure pr ec edente. . 1.4 Emondage des cellules. . . . . . . . . . . . . . . . . . . . . 1.5 Le graphe G/2 (l) obtenu apr` es emondage. . . . . . . . . . 1.6 Choix du segment Sup(p) selon la position de p. . . . . . . . 1.7 Les cellules de L/2 . . . . . . . . . . . . . . . . . . . . . . 1.8 Une cellule. . . . . . . . . . . . . . . . . . . . . . . . . . . 1.9 Ev enements (a) simples ou (b) double. . . . . . . . . . . . . 1.10 D ebuts, milieu et ns. . . . . . . . . . . . . . . . . . . . . 1.11 Segments trait es, actifs, non trait es. . . . . . . . . . . . . . 1.12 L ev enement en cours est une n. . . . . . . . . . . . . . . 1.13 L ev enement en cours est un milieu. . . . . . . . . . . . . . 1.14 L ev enement en cours est un d ebut. . . . . . . . . . . . . . 1.15 g+ (C ) est calcul e au cours de linsertion de s . . . . . . . . 2.1 Exemple dobstacles. . . . . . . . . . . . . . . . . . . . . . 2.2 Une r egion R(s), et la r egion R (s) associ ee (en gras). . . . 2.3 Scission dun arc de parabole. . . . . . . . . . . . . . . . . 2.4 (e) lorsque e est un arc de parabole. . . . . . . . . . . . . 2.5 Un exemple de mouvement utilisant cet algorithme. . . . . 2.6 Composantes connexes des d eplacements libres. . . . . . . . 2.7 Un mauvais d eplacement . . . . . . . . . . . . . . . . . .

Version 6 f evrier 2005

XIV

Avant-propos

Avant-propos
Encore un livre dalgorithmique ! Les ouvrages consacr es a ` lalgorithmique et aux structures de donn ees paraissent, depuis quelque temps, a ` un rythme soutenu et r egulier. Aussi devons-nous expliquer pourquoi un livre suppl ementaire sur ce sujet nous a paru utile. Le pr esent livre se distingue dautres trait es dalgorithmique par deux aspects : dune part, un accent particulier est mis sur les nouvelles structures darbres apparues ces derni` eres ann ees (arbres bicolores, arbres persistants) ; dautre part, nous d eveloppons plus en d etail trois applications de lalgorithmique : loptimisation combinatoire, la recherche de motifs dans un texte, et la g eom etrie algorithmique. Outre leur int er et propre et leur importance intrins` eque, ces trois applications illustrent de fa con exemplaire lusage que lon peut faire de structures de donn ees sophistiqu ees, et les gains en temps et en place qui r esultent de leur emploi judicieux. Pour chacun de ces trois th` emes, nous mettons en place les bases n ecessaires, tant algorithmiques que th eoriques. Puis, nous pr esentons, a ` laide de probl` emes typiques, un echantillon des algorithmes les plus ecaces, employant des structures de donn ees int eressantes. Parmi les algorithmes et les structures de donn ees qui m eritent d etre mentionn es plus sp ecialement, citons : le co ut amorti des op erations de r e equilibrage dans les arbres 24 (chapitre 6) ; les algorithmes de manipulation des arbres bicolores (ibid.) ; les arbres persistants (ibid.) ; les algorithmes de GoldbergTarjan et dAhujaOrlin pour les ots (chapitre 8) ; lalgorithme de Hopcroft de minimisation dun automate ni (chapitre 9) ; les algorithmes de Simon, et de Boyer et Moore pour la recherche de motifs dans un texte (chapitre 10) ; la gestion dynamique de lenveloppe convexe dun ensemble ni de points (chapitre 11) ; lalgorithme de balayage de calcul dune subdivision planaire a ` laide darbres persistants (ibid.) ; lalgorithme de Fortune de calcul du diagramme de Vorono (ibid.) ; deux algorithmes de planication de trajectoires (chapitre 12). Version 6 f evrier 2005

Avant-propos A qui sadresse ce livre ?

XV

Ce livre est issu de cours donn es par les auteurs en licence et ma trise dinformatique et de math ematiques dans les universit es Paris VI et Paris VII, en magist` ere, et pour partie dans divers DEA et DESS. Dans sa forme pr esente, il sadresse principalement aux etudiants en licence et en ma trise dinformatique et de math ematiques, et aux etudiants des ecoles ding enieurs. Nous ne supposons chez le lecteur quune connaissance rudimentaire de linformatique. Les premiers chapitres d ecrivent les bases algorithmiques sur lesquelles sappuieront les chapitres suivants. Le niveau dexposition est, a ` de rares exceptions pr` es, celui des etudiants en licence dinformatique. Organisation du livre Ce livre sorganise en deux parties. La premi` ere partie, constitu ee des chapitres 1 a ` 5, contient un expos e des bases algorithmiques et math ematiques, avec notamment un chapitre sur les techniques d evaluation de co uts dalgorithmes, un bref chapitre sur les structures de donn ees usuelles, un chapitre plus long sur la th eorie des graphes et un chapitre assez succinct sur les algorithmes de tri par comparaison. Les trois premiers chapitres, et en partie les deux chapitres suivants, peuvent etre consid er es comme des chapitres de r ef erence, auxquels on se reportera si n ecessaire. La deuxi` eme partie, consacr ee a ` des th` emes plus avanc es, d ebute par un long chapitre sur les arbres de recherche. Les deux chapitres suivants sont consacr es a ` loptimisation combinatoire. Puis viennent deux chapitres sur la recherche de motifs dans un texte, et enn deux chapitres sur la g eom etrie algorithmique et la planication de trajectoires. Pr esentation des algorithmes Les algorithmes sont pr esent es dans un langage proche de Pascal ; assez rarement, et principalement dans le chapitre 3 (Structures de donn ees), des r ef erences explicites a ` Pascal sont faites, avec des programmes complets, pr ets a ` cuire. Nous nous eor cons de pr esenter les algorithmes avec susamment de d etails pour que l ecriture de programmes soit facile ; en particulier, nous d ecrivons soigneusement les structures de donn ees a ` employer. Contenu du livre Le premier chapitre contient la d enition des diverses mesures du co ut dun algorithme : co ut dans le cas le plus d efavorable, co ut moyen, co ut amorti ; il se termine par une borne inf erieure sur la complexit e du tri par comparaison. La premi` ere section du deuxi` eme chapitre contient la d enition des notations dites de Landau, ainsi que des exemples de manipulation. Dans la deuxi` eme section, nous abordons la r esolution de divers types d equations de r ecurrence auxquelles conduit lanalyse dun algorithme. Nous d ecrivons notamment la r esolution des r ecurrences lin eaires et des r ecurrences de partition. Version 6 f evrier 2005

XVI

Avant-propos

Dans le chapitre 3, nous passons en revue les structures de donn ees el ementaires, a ` savoir les piles, les, listes, ainsi que les arbres binaires et les arbres binaires de recherche. Nous d ecrivons ensuite les les de priorit e et leur impl ementation au moyen de tas. Nous terminons par un algorithme de gestion de partitions. Le chapitre 4 est consacr e aux bases de la th eorie des graphes. Apr` es les d enitions, nous exposons lalgorithme de Roy-Warshall et dautres probl` emes daccessibilit e. Les parcours classiques dun graphe (parcours en profondeur, en largeur) sont d ecrits. Puis, nous pr esentons en d etail lalgorithme de Tarjan de calcul des composantes fortement connexes dun graphe, qui est lin eaire en fonction du nombre darcs du graphe. Le chapitre 5 pr esente trois algorithmes de tri interne eprouv es et ecaces : le tri rapide, le tri fusion et le tri par tas. Nous en donnons lanalyse des co uts en moyenne et dans le pire des cas. Le chapitre se termine par un algorithme de tri externe, le tri polyphas e qui est fond e sur les suites de Fibonacci. Le chapitre 6 contient la description de plusieurs familles darbres binaires de recherche equilibr es. Nous d ecrivons les arbres AVL, puis les arbres ab, avec notamment des op erations plus elabor ees comme la concat enation et la scission, et evaluons le co ut amorti dune suite dop erations. Ensuite, nous pr esentons les arbres bicolores, et enn une r ealisation de structures persistantes sur ces arbres. Le chapitre 7 traite deux probl` emes fondamentaux doptimisation combinatoire : la recherche dun arbre couvrant de co ut minimum et la recherche des chemins de co ut minimum issus dun sommet dans un graphe orient e valu e. Pour le premier probl` eme, nous pr esentons une impl ementation ecace des algorithmes de Kruskal et de Prim. Quant a ` la recherche des chemins de co ut minimum, nous exposons lit eration fondamentale de Ford, lalgorithme de Dijkstra pour des co uts positifs et sa variante A, lalgorithme de Bellman pour un graphe sans circuits et enn lalgorithme Paps. Le chapitre 8 traite des probl` emes de ots optimaux dans les graphes. Nous prouvons dabord le th eor` eme dHoman sur lexistence dun ot compatible, puis etudions les d ecompositions dun ot. Apr` es avoir etabli le th eor` eme de Ford et Fulkerson, nous analysons les algorithmes les plus performants pour le calcul du ot maximum, a ` savoir lalgorithme primal des distances estim ees au puits (algorithme dAhuja et Orlin) et deux variantes ecaces de lalgorithme dual du pr eot, lalgorithme de Karzanov et lalgorithme des exc` es echelonn es. Nous consid erons ensuite le probl` eme du ot de co ut minimum et pr esentons un algorithme d ua ` Goldberg et Tarjan. Nous terminons par lalgorithme dEdmonds et Karp pour la recherche dun plan de transport de co ut minimum. Dans le chapitre 9, pr eliminaire au chapitre suivant, nous pr esentons les bases de la th eorie des automates nis. Apr` es avoir d emontr e l equivalence entre les automates nis et les automates nis d eterministes, nous etablissons le th eor` eme de Kleene qui montre que les langages reconnaissables et les langages rationnels sont une seule et m eme famille de langages. Nous prouvons lexistence et lunicit e Version 6 f evrier 2005

Avant-propos

XVII

dun automate d eterministe minimal reconnaissant un langage donn e. Pour la construction de cet automate, nous pr esentons lalgorithme de Hopcroft de minimisation. Dans le chapitre 10, nous consid erons dabord le probl` eme de la recherche dune ou de toutes les occurrences dun mot dans un texte. Nous pr esentons lalgorithme na f, lalgorithme de Morris et Pratt, et sa variante due a ` Knuth, Morris et Pratt, limpl ementation par automate ni et lalgorithme de Simon, et pour nir lalgorithme de Boyer et Moore, dans sa version de Horspool et dans la version compl` ete. Ensuite, nous consid erons la recherche dune occurrence de plusieurs motifs, et d ecrivons lalgorithme de Aho et Corasick. Dans la derni` ere section, nous etudions la recherche doccurrences de mots d ecrits par une expression rationnelle. La premi` ere section du chapitre 11 contient un rappel de quelques notations classiques en g eom etrie euclidienne, ainsi que la mise en place doutils qui seront utiles dans les sections suivantes. La deuxi` eme section est consacr ee aux algorithmes de calcul de lenveloppe convexe dun ensemble ni de points du plan. Nous terminons par un algorithme plus sophistiqu e de gestion dynamique denveloppes convexes. Quelques probl` emes de localisation dun point dans le plan divis e en r egions sont etudi es dans la troisi` eme section ; on y utilise des structures de donn ees assez complexes, en particulier les ensembles ordonn es persistants. La derni` ere section est consacr ee aux diagrammes de Vorono de points et de segments. Dans le chapitre 12, nous etudions un probl` eme de planication de trajectoires, aussi appel e le probl` eme du d em enageur de piano . Nous donnons des algorithmes performants dans deux cas particuliers typiques : lalgorithme de translation dun segment dans un environnement polygonal d ua ` Schwartz et Sharir, et celui du d eplacement dun disque d ua ` OD unlaing et Yap. Ce dernier utilise les diagrammes de Vorono de segments. Exercices et notes Les chapitres sont en g en eral suivis de notes et dexercices. Les notes bibliographiques sont volontairement succinctes. Leur but nest pas de retracer la paternit e des r esultats ou des algorithmes pr esent es, mais de conseiller des lectures compl ementaires. On y trouvera notamment des renvois nombreux au Handbook of Theoretical Computer Science qui contient, lui, dabondantes listes de r ef erences bibliographiques. Remerciements Nous avons b en eci e, durant la pr eparation de ce livre, de commentaires, discussions et remarques de nombreux coll` egues. Nous remercions en particulier Paul Blanchard, Luc Boasson, Maxime Crochemore, Clara Daquin, Christiane Frougny, Marie-Paule Gascuel, Ir` ene Guessarian, Michelle Morcrette, Dominique Perrin, Michel Pocchiola, Andreas Podelski, Imre Simon, Mich` ele Soria, Volker Strehl, Anne Verroust, Mariette Yvinec. Version 6 f evrier 2005

Chapitre 1

Pr eliminaires
Dans ce chapitre pr eliminaire, nous donnons dabord une classication des probl` emes du point de vue de leur complexit e algorithmique, nous discutons ensuite les mesures de complexit e, puis nous donnons une borne inf erieure sur la complexit e du tri par comparaison.

1.1
1.1.1

Les algorithmes et leur co ut


Algorithmes

Un algorithme est un ensemble dop erations de calcul el ementaires, organis e selon des r` egles pr ecises dans le but de r esoudre un probl` eme donn e. Pour chaque donn ee du probl` eme, lalgorithme retourne une r eponse apr` es un nombre ni dop erations. Les op erations el ementaires sont par exemple les op erations arithm etiques usuelles, les transferts de donn ees, les comparaisons entre donn ees, etc. Selon le niveau dabstraction o` u lon se place, les op erations arithm etiques et les objets sur lesquels elles portent peuvent etre plus ou moins compliqu ees. Il peut sagir simplement dadditionner des entiers naturels, ou de multiplier des polyn omes, ou encore de calculer les valeurs propres dune matrice. Pour un syst` eme de calcul formel, il sagit l` a dop erations el ementaires, parce quelles ont et e programm ees et sont disponibles dans des biblioth` eques, plus ou moins transparentes a ` lutilisateur ; dans un langage comme Pascal, ces op erations ne sont pas disponibles. Il appara t utile de ne consid erer comme v eritablement el ementaires que les op erations dont le temps de calcul est constant, cest-` a-dire ne d epend pas de la taille des op erandes. Par exemple, laddition dentiers de taille born ee a priori (les integer en Pascal) est une op eration el ementaire ; laddition dentiers de taille quelconque ne lest pas. De m eme, le test dappartenance dun el ement a ` un ensemble nest pas une op eration el ementaire en ce sens, parce que son Version 6 f evrier 2005

Chapitre 1. Pr eliminaires

temps dex ecution d epend de la taille de lensemble, et ceci m eme si dans certains langages de programmation, il existe des instructions de base qui permettent de r ealiser cette op eration. Lorganisation des calculs, dans un algorithme, est souvent appel ee sa structure de contr ole. Cette structure d etermine lordre dans lequel il convient de tester des conditions, de r ep eter des op erations, de recommencer tout ou partie des calculs sur un sous-ensemble de donn ees, etc. L` a aussi, des conventions existent sur la fa con de mesurer le co ut des op erations ; la richesse des structures de contr ole d epend fortement des langages de programmation. Le langage Pascal est peut etre lun des plus pauvres dans ce domaine parmi les langages modernes. En g en eral, le co ut des structures de contr ole peut etre n eglig e, parce quil est pris en compte, asymptotiquement, par les op erations el ementaires. En fait, le surco ut provenant par exemple dune programmation r ecursive nest vraiment sensible que lorsquelle entra ne des recopies massives de donn ees.

1.1.2

Probl` emes intraitables

Contrairement a ` une id ee largement r epandue, tout probl` eme ne peut etre r esolu par un algorithme. Ce nest pas une question de taille des donn ees, mais une impossibilit e fondamentale. On doit la preuve de ce fait aux logiciens des ann ees 30 et 40. Pour en donner une d emonstration rigoureuse, il convient evidemment de formuler tr` es pr ecis ement la notion dalgorithme. Il appara t que les possibilit es des ordinateurs et des langages de programmation sont parfaitement couvertes par la d enition math ematique de ce qui est r esoluble algorithmiquement. On est donc en pr esence dune premi` ere dichotomie, entre probl` emes insolubles algorithmiquement et les autres. Parmi les probl` emes qui sont algorithmiquement solubles, on peut encore distinguer une hi erarchie en fonction de la complexit e des algorithmes, complexit e mesur ee en temps de calcul, cest-` a-dire en nombre dop erations el ementaires, et exprim ee en fonction de la taille du probl` eme. La taille elle-m eme est un param` etre qui mesure le nombre de caract` eres n ecessaires pour d ecrire une donn ee du probl` eme. Pour une matrice carr ee a ` coecients born es par exemple, son ordre est un bon param` etre de la taille ; pour un polyn ome, le degr e peut etre une indication de la taille, sauf si lon sait par exemple que le polyn ome na que tr` es peu de coecients non nuls, auquel cas le nombre de coecients non nuls est un meilleur indicateur. Le temps de calcul dun algorithme cro t en g en eral en fonction de la taille des donn ees, et la vitesse de la croissance est une mesure de la complexit e du probl` eme. Une croissance exponentielle ou plus rend un probl` eme intraitable pour des donn ees de grande taille. M eme une croissance polynomiale, disons comme une puissance cinqui` eme de la taille des donn ees, rend la r esolution pratiquement impossible pour des donn ees dune certaine taille. Evidemment, il existe de tr` es nombreux probl` emes pour lesquels tout algorithme a une croissance au moins exponentielle. Dans cette cat egorie, on trouve les algoVersion 6 f evrier 2005

1.1. Les algorithmes et leur co ut

rithmes dont le r esultat lui-m eme est constitu e dun nombre exponentiel ou plus de donn ees. Par exemple, la g en eration de toutes les permutations de n el ements prend un temps plus quexponentiel, simplement parce quil y a n! permutations. Il existe toute une classe de probl` emes, qui sont des probl` emes doptimisation combinatoire, o` u lon cherche une solution optimale parmi un nombre exponentiel de solutions r ealisables. Une bonne strat egie, si elle existe, permet de trouver une solution optimale sans enum erer lensemble des solutions r ealisables ; on peut alors r esoudre le probl` eme en temps disons polynomial. Bien entendu, on ne conna t pas toujours une telle strat egie ; mais on ne sait pas a ` lheure actuelle si, pour tout probl` eme de ce type, il existe un algorithme polynomial. La conjecture la plus problable est quun tr` es grand nombre de probl` emes de ce type ne puissent pas etre r esolus par un algorithme polynomial. On aurait ainsi une deuxi` eme division des probl` emes, entre ceux qui sont solubles, mais intraitables, et les autres, pour lesquels il existe des algorithmes ecaces. Lun des objectifs de lalgorithmique est l etude de ces probl` emes, pour lesquels on cherche les algorithmes les plus ecaces, tant du point de vue du temps de calcul que des besoins en place.

1.1.3

Sur la pr esentation dalgorithmes

Pour pr esenter les algorithmes de mani` ere formelle, nous utilisons dans ce livre un langage proche de Pascal. Toutefois, en vue de ne pas alourdir inutilement la lecture, nous nen suivons pas strictement la syntaxe ; de plus, nous introduisons quelques ellipses, et quelques variantes sur les structures de contr ole. La plupart parlent delles-m emes. Ainsi, pour economiser l ecriture de parenth` eses (d ebut,n), nous utilisons les mots nsi, npour, et ntantque comme d elimiteurs de port ee, lorsquun tel d elimiteur est utile. Nous ecrivons donc : si test alors suite dinstructions sinon suite dinstructions nsi tantque test faire suite dinstructions ntantque pour faire suite dinstructions npour Dautres variantes concernent la structure de contr ole. Ainsi, retourner, et plus rarement exit provoque (comme en C) la sortie de la proc edure ou fonction courante, et le retour vers la proc edure appelante. Enn, nous utilisons largement la version s equentielle des op erateurs bool eens et et ou (comme en Modula), baptis es etalors et oualors. Dans l evaluation dune expression de la forme a etalors b, on evalue dabord a, et on n evalue b que si a est vrai. Le m eme m ecanisme vaut mutatis mutandis pour oualors. On economise ainsi beaucoup de programmation confuse.

Version 6 f evrier 2005

Chapitre 1. Pr eliminaires

1.2

Mesures du co ut

Consid erons un probl` eme donn e, et un algorithme pour le r esoudre. Sur une donn ee x de taille n, lalgorithme requiert un certain temps, mesur e en nombre dop erations el ementaires, soit c(x). Le co ut en temps varie evidemment avec la taille de la donn ee, mais peut aussi varier sur les di erentes donn ees de m eme taille n. Par exemple, consid erons lalgorithme de tri qui, partant dune suite (a1 , . . . , an ) de nombres r eels distincts a ` trier en ordre croissant, cherche la premi` ere descente, cest-` a-dire le plus petit entier i tel que ai > ai+1 , echange ces deux el ements, et recommence sur la suite obtenue. Si lon compte le nombre dinversions ainsi r ealis ees, il varie de 0 pour une suite tri ee a ` n(n 1)/2 pour une suite d ecroissante. Notre but est d evaluer le co ut dun algorithme, selon certains crit` eres, et en fonction de la taille n des donn ees.

1.2.1

Co ut dans le cas le plus d efavorable

Le co ut C (n) dun algorithme dans le cas le plus d efavorableou dans le cas le pire ( worst-case en anglais) est par d enition le maximum des co uts, sur toutes les donn ees de taille n : C (n) = max c(x)
|x|=n

(on note |x| la taille de x.) Dans lalgorithme ci-dessus, ce co ut est n(n 1)/2. Cette mesure du co ut est r ealiste parce quelle prend en compte toutes les possibilit es.

1.2.2

Co ut moyen

Dans des situations o` u lon pense que le cas le plus d efavorable ne se pr esente que rarement, on est plut ot int eress e par le co ut moyen de lalgorithme. Une formulation correcte de ce co ut moyen suppose que lon connaisse une distribution de probabilit es sur les donn ees de taille n. Si p(x) est la probabilit e de la donn ee x, le co ut moyen (n) dun algorithme sur les donn ees de taille n est par d enition (n) =
|x|=n

p(x)c(x)

Le plus souvent, on suppose que la distribution est uniforme, cest-` a-dire que p(x) = 1/T (n), o` u T (n) est le nombre de donn ees de taille n. Alors, lexpression du co ut moyen prend la forme (n) = 1 T (n) c(x)
|x|=n

(2.1)

Version 6 f evrier 2005

1.2. Mesures du co ut

Continuons notre exemple du tri par transposition. Le nombre de donn ees de taille n, cest-` a-dire de suites de n nombres r eels distincts, est inni. Or, seul lordre relatif des el ements dun suite intervient dans lalgorithme. Une donn ee de taille n peut donc etre assimil ee a ` une permutation de lensemble {1, . . . , n}. On a alors T (n) = n!. Le co ut c(x) dune permutation x est le nombre de transpositions d el ements adjacents n ecessaires pour transformer x en la permutation identique ; ce nombre est le nombre dinversions de x, qui est par d enition le nombre b1 + + bn , o` u bj est le nombre dentiers 1 i < j tels que xi > xj . On peut montrer que le nombre moyen dinversions est n(n 1)/4, de sorte que le co ut moyen de lalgorithme, pour la distribution uniforme, est n(n 1)/4. Comme le montre cet exemple, l evaluation du co ut moyen est en g en eral bien plus compliqu ee que l evaluation du co ut dans le cas le plus d efavorable. Consid erons un autre exemple, a ` savoir la g en eration de toutes les parties dun ensemble E a `n el ements, disons de {1, . . . , n}. Chaque partie X est repr esent ee par son vecteur caract eristique x, avec x[i] = 1 si i X 0 sinon

Concr` etement, on utilise un type suite pour repr esenter ces vecteurs. Le calcul du premier sous-ensemble, la partie vide de E , revient a ` initialiser la suite x a ` (0, . . . , 0). Les parties suivantes sobtiennent en proc edant de droite a ` gauche dans le vecteur courant x. On remplace tous les 1 par 0 jusqu` a rencontrer un 0. Celui-ci est remplac e par 1 (cest tr` es exactement lalgorithme dincr ementation, en binaire). Voici une r ealisation :
PROCEDURE Suivante (VAR x:suite; n:integer; VAR d:boolean); VAR i: integer; BEGIN i := n; WHILE (i > 0) AND (x[i] = 1) DO BEGIN x[i] := 0; i := i - 1 END; d := i = 0; IF NOT d THEN x[i] := 1 END;

Dans la boucle WHILE, lop erateur AND est s equentiel. La variable bool eenne d rep` ere si la suite donn ee en argument repr esente la derni` ere partie de lensemble E, a ` savoir E lui-m eme. Analysons le co ut dun appel de la proc edure Suivante, sur le tableau x, mesur e par le nombre de comparaisons x[i] = 1. Le co ut est n lorsque les x[i] valent 1 pour 1 i n, cest-` a-dire lorsque lon a atteint la derni` ere partie. Le co ut est aussi n lorsque x[1] = 0 et les autres el ements de x valent 1. Quel est le co ut moyen de la proc edure, sur tous les appels ? Pour l evaluer, nous reprenons l equation (2.1) Version 6 f evrier 2005

6 et l ecrivons sous la forme (n) = 1 T (n)


n

Chapitre 1. Pr eliminaires

ici
i=1

o` u ci est le nombre de donn ees x pour lequelles le co ut est i, cest-` a-dire telles que c(x) = i. Pour 1 i < n, le nombre de comparaisons est i, si x se termine par un el ement 0 suivi par i 1 el ements egaux a ` 1. Le nombre de suites de cette forme est 2ni . Enn, on a cn = 2, de sorte que 1 (n) = n 2 2n +
n1 i=1

i2ni

Le nombre entre parenth` eses est egal a ` 2n+1 2, et on a (n) = 2n+1 2 2n

donc le co ut moyen du calcul de la partie suivante est approximativement 2. Comme ces exemples lindiquent, lestimation du co ut moyen dun algorithme est en g en eral plus d elicate que lestimation du co ut dans le cas le plus d efavorable, et n ecessite une bonne dose de connaissances combinatoires sur les objets trait es.

1.2.3

Co ut amorti

Lorsquune suite dop erations est eectu ee sur une structure, le co ut total est egal a ` la somme des co uts des op erations individuelles. Connaissant des estimations du co ut (dans le cas le plus d efavorable) des op erations individuelles, on obtient une estimation du co ut total en sommant ces majorations du co ut des op erations individuelles. Or tr` es souvent, cette majoration du co ut total qui, a ` chaque etape, proc` ede par une evaluation pessimiste, est trop grossi` ere. On observe en eet que le cas le plus d efavorable ne se r ep` ete pas . Plus pr ecis ement, dans de nombreux algorithmes, le cas le plus d efavorable provient dun d es equilibre exceptionnel qui ne peut pas se produire plusieurs fois de suite, car le traitement de ce cas d efavorable r etablit l equilibre. Il y a alors un ph enom` ene de compensation entre op erations cons ecutives, damortissement des co uts, que nous explicitons dans cette section. Commen cons par un exemple. Exemple. Consid erons une pile (voir chapitre 3), et d enissons une op eration comme etant une suite ( eventuellement vide) de d epilements suivie dun empilement (ce genre dop erations se rencontre par exemple en analyse syntaxique). Le co ut dune op eration o est c(o) = 1 + d, o` u d est le nombre de d epilements pr ec edant lempilement. Partant de la pile vide P0 , on eectue une suite o1 , . . . , on dop erations :
1 n P0 P1 . . . Pn

Version 6 f evrier 2005

1.2. Mesures du co ut o` u Pk est la pile apr` es la k -i` eme op eration, et lon veut estimer le co ut total cn = c(o1 ) + + c(on )

Mais, comme d ej` a dit plus haut, le cas le plus d efavorable (ici : la pile Pk1 contient k 1 el ements) ne se produit pas deux fois de suite. En dautres termes, notre analyse na pas pris en compte une contrainte globale qui, dans le cas dune pile, exprime que lon ne peut pas d epiler des el ements avant de les avoir empil es. Plus pr ecis ement, notons dk le nombre de d epilements de la k -i` eme op eration, de sorte que c(ok ) = 1 + dk

Une m ethode simple consiste a ` majorer le co ut de chaque op eration ok par k . En eet, dans le cas le plus d efavorable, lop eration ok vide compl` etement la pile Pk1 avant de proc eder a ` lempilement, et Pk1 contient au plus k 1 el ements. 2 On a donc c(ok ) k , do` u c(n) = O (n ).

Alors cn = n + d avec d = d1 + + dn . Or n est le nombre total dempilements et d est le nombre total de d epilements. Comme on ne peut d epiler plus que lon a empil e, on a d n et donc cn 2n. Cet argument sexplicite par ce que lon nomme la technique du potentiel : a ` chaque pile Pk , on associe un nombre hk (son potentiel ) qui est toujours positif ou nul ; le co ut de lop eration ok sexprime a ` laide dune variation du potentiel. Dans notre cas, prenons pour hk la hauteur de la pile Pk . On a h0 = 0, hk = hk1 dk + 1 (k 1)

et bien s ur hk 0 pour k = 1, . . . , n. Comme dk = hk1 hk + 1, le co ut de lop eration ok est c(ok ) = 2 + hk1 hk

Il en r esulte bien entendu que cn = c(o1 )+ +c(on ) = 2n+h0 hn = 2nhn 2n. On appelle co ut amorti de lop eration o (relativement au potentiel h) la valeur a(o) = c(o) + h h

o` u h est le potentiel de la pile avant lop eration, et h est le potentiel de la pile apr` es lop eration o. Dans notre cas, le co ut amorti est egal a ` 2. On obtient a(o1 ) + + a(on ) = c(o1 ) + + c(on ) + hn h0 et comme hn 0, h0 = 0, on a c(o1 ) + + c(on ) a(o1 ) + + a(on ) donc le co ut amorti de la suite des op erations est une majoration du co ut total. On peut voir ce proc ed e de comptage dune autre mani` ere, plus ludique. Supposons que lordinateur qui doit ex ecuter la suite dop erations travaille avec des Version 6 f evrier 2005

Chapitre 1. Pr eliminaires

jetons, comme une vulgaire machine a ` sous ( coin-operated computer , disent les Am ericains). Chaque fois que lon ins` ere un jeton, lordinateur est dispos ea ` travailler pendant une dur ee xe, puis il sarr ete et attend le jeton suivant. Si une op eration se termine avant epuisement du temps achet e, ce temps de calcul est disponible pour lop eration suivante. Le co ut total dune suite dop erations est alors proportionnel au nombre de jetons quil faut introduire, et lavoir est egal a ` la valeur du potentiel. Le co ut amorti correspond au nombre de jetons a ` introduire par op eration (ici 2) pour pouvoir eectuer les op erations. Plus formellement, on consid` ere une famille de structures sujettes a ` des op erations qui les transforment. De plus, on suppose d eni un potentiel, cest-` a-dire une fonction h qui a ` chaque structure associe un nombre r eel positif ou nul. En particulier, on demande que le potentiel de la structure vide soit nul. Par d enition, le co ut amorti dune op eration o qui, appliqu ee a ` la structure S , donne la structure S = o(S ), relativement au potentiel h, est a(o) = c(o) + h(S ) h(S ) Le co ut amorti dune suite dop erations o1 , . . . , on est la somme des co uts amortis des op erations individuelles. Proposition 2.1. Soit h un potentiel, et soit o1 , . . . , on une suite dop erations appliqu ee a ` une structure de potentiel nul. La somme des co uts de la suite dop erations est major ee par son co ut amorti relativement a `h: c(o1 ) + + c(on ) a(o1 ) + + a(on ) Preuve. Soit S0 la structure de d epart initialement vide, et soit Sk la structure obtenue apr` es la k -i` eme op eration :
n 1 2 Sn S0 S1 . . .

On a a(ok ) = c(ok ) + h(Sk ) h(Sk1 ). Comme les valeurs du potentiel s eliminent deux a ` deux, on obtient a(o1 ) + + a(on ) = c(o1 ) + c(on ) + h(Sn ) h(S0 ) Or h(S0 ) = 0 et h(Sn ) 0, ce qui etablit lin egalit e. Dans la pratique, on essaie de trouver, en utilisant son intuition, un potentiel qui fournit une majoration ais ee du co ut amorti des op erations, ce qui donne ensuite une majoration du co ut total. Exemple. Revenons sur lexemple de la g en eration des parties dun ensemble a ` n el ements. Notons ok le k -i` eme appel de la proc edure Suivante. Le co ut total cN du calcul des N premiers sous-ensembles est cN = c(o1 ) + c(oN ). D enissons un potentiel h sur le tableau x par : h(x) = le nombre d el ements egaux a ` 1 dans Version 6 f evrier 2005

1.3. Une borne inf erieure

x. Le co ut de lop eration ok qui transforme le k 1-i` eme tableau x(k1) en le (k ) k -i` eme tableau x est alors c(ok ) = 2 + h(x(k1) ) h(x(k) ) et le co ut amorti est a(ok ) = c(ok ) + h(x(k) ) h(x(k1) ) = 2 La somme des co uts amortis est 2N , et en vertu de la proposition pr ec edente, ceci majore le co ut total. Ce r esultat est dune autre nature que l evaluation en moyenne donn ee plus haut, dans la mesure o` u il ne fait appel a ` aucune hypoth` ese probabiliste.

1.3

Une borne inf erieure

Apr` es avoir trouv e et analys e un algorithme qui r esout un probl` eme donn e, il est naturel de se demander si cet algorithme est le meilleur possible. Il existe plusieurs fa cons dam eliorer, parfois substantiellement, un algorithme, ou un programme, en organisant mieux les donn ees, en economisant des calculs dindices, en regroupant certaines op erations. Ces optimisations peuvent prendre en compte les caract eristiques dun langage de programmation sp ecique, voire les particularit es dun compilateur. La question de loptimalit e dun algorithme, vue ind ependamment dune impl ementation particuli` ere, se pose di eremment : on se demande sil existe un algorithme qui n ecessite moins dop erations el ementaires. Pour cela, on estime le nombre dop erations requises par tout algorithme qui r esout le probl` eme donn e. L` a encore, la formulation du probl` eme et de la r eponse se fait en fonction de la taille des donn ees. On cherche le nombre dop erations n ecessaires pour r esoudre le probl` eme dans le cas le plus d efavorable pour les donn ees de taille n. Pour apporter une r eponse a ` cette question, il faut dabord d enir pr ecis ement la classe dalgorithmes et les op erations el ementaires. Nous d ecrivons ci-dessous le mod` ele des arbres de d ecisionqui permet de prouver que tout algorithme de tri qui op` ere par comparaisons n ecessite au moins n ln n n comparaisons pour trier des suites de n el ements. Cette borne inf erieure vaut pour le cas le plus d efavorable : pour tout algorithme, et pour tout n, il existe une suite dont le tri exige au moins n ln n n comparaisons.

Dans un algorithme de tri par comparaisons, on utilise uniquement des comparaisons pour obtenir des informations sur la suite (a1 , . . . , an ) de donn ees. En dautres termes, etant donn es ai et aj , on eectue lun des test ai < aj , ai aj , ai = aj pour d eterminer leur position relative. Aucune autre information nest accessible sur ces el ements. Pour prouver le r esultat annonc e, il sut de se restreindre aux suites dont les el ements sont distincts ; nous pouvons donc nous contenter du test ai aj . Version 6 f evrier 2005

10

Chapitre 1. Pr eliminaires

Le comportement dun algorithme de tri, sur des suites de longueur n, peut etre repr esent e par un arbre binaire (voir chapitre 4), appel e arbre de d ecision. Dans un arbre de d ecision, chaque nud est etiquet e par une comparaison, not ee ai : aj , pour des entiers 1 i, j n, et chaque feuille est etiquet ee par une permutation ( (1), . . . , (n)) (voir gure 3.1).
a 1 :a 2 < a 2 :a 3 <
1 2 3

> a 1 :a 3

> a 1 :a 3 <
1 3 2

<
2 1 3

> a 2 :a 3 <
2 3 1

>
3 1 2

>
3 2 1

Figure 3.1: Larbre de d ecision dun algorithme de tri. Lex ecution de lalgorithme de tri sur une suite (a1 , . . . , an ) correspond a ` un chemin dans larbre, menant de la racine a ` une feuille. A chaque nud, une comparaison ai < aj est faite, et le r esultat de la comparaison indique si les comparaisons suivantes se font dans le sous-arbre gauche ou le sous-arbre droit. Lorsque une feuille est atteinte, lalgorithme de tri a etabli que lordre est a(1) < a(2) < < a(n) . Chacune des n! permutations doit appara tre comme etiquette dune feuille, pour que lalgorithme puisse proprement s eparer tous les cas de gure. La longueur du chemin de la racine a ` une feuille donne le nombre de comparaisons eectu ees, et dans le cas le plus d efavorable, le nombre de comparaisons n ecessaires est donc egal a ` la hauteur de larbre. Une minoration de la hauteur dun arbre de d ecision fournit donc une borne inf erieure sur le nombre de comparaisons. Lemme 3.1. Soit A un arbre binaire. Si A a n! feuilles, alors la hauteur de A est au moins n ln n n. Preuve. Soit h la hauteur de A. Alors n! 2h , donc ln n! h ln 2 h. Or ln n! n ln n n (voir chapitre 2), do` u le r esultat. Corollaire 3.2. Tout algorithme de tri par comparaisons n ecessite, dans le cas le plus d efavorable, au moins n ln n n comparaisons pour trier des suites de longueur n. Il est important de noter que ce r esultat ne porte que sur une famille bien pr ecise dalgorithmes de tri, a ` savoir les tris par comparaisons. Il existe dautres techniques de tris qui peuvent sappliquer lorsque lon a des informations sur la nature Version 6 f evrier 2005

1.3. Une borne inf erieure

11

des cl es. Le tri par champs par exemple ( bucket sort en anglais) est un tri en temps lin eaire qui semploie lorsque les cl es sont des cha nes de caract` eres. La borne inf erieure sur les algorithmes de tri est g en erique en ce sens que, pour de nombreux probl` emes apparemment compl` etement di erents, on obtient egalement une borne inf erieure en n ln n, en se ramenant au probl` eme du tri. Il en est ainsi par exemple pour le calcul de lenveloppe convexe dun ensemble de points dans le plan (chapitre 11, section 2). La d emarche est la suivante : on consid` ere un algorithme A pour le probl` eme donn e, et on montre que cet algorithme peut aussi etre utilis e, parfois apr` es quelques transformations, comme algorithme de tri par comparaisons. En vue du corollaire ci-dessus, le nombre dop erations de lalgorithme A est minor e. Comme largument vaut pour nimporte quel algorithme A, on obtient la borne inf erieure recherch ee.

Version 6 f evrier 2005

12

Chapitre 1. Pr eliminaires

Version 6 f evrier 2005

13

Chapitre 2

Evaluations
La premi` ere section de ce chapitre contient la d enition des notations dites de Landau, a ` savoir O , , et , ainsi que des exemples de manipulation. Dans la deuxi` eme section, nous abordons la r esolution de divers types de r ecurrences. En eet, lanalyse dun algorithme conduit le plus souvent a ` des equations de r ecurrence. Dans certains cas, on peut les r esoudre compl` etement et donner une forme close pour les fonctions quelles d enissent ; plus nombreux sont les cas o` u lon doit se contenter dune evaluation asymptotique ; on ne donne alors quun ordre de grandeur.

Introduction
Lecacit e en temps dun algorithme se mesure en fonction dun param` etre, g en eralement la taille du probl` eme. Ce nest evidemment pas le temps physique, exprim e en millisecondes ou en heures qui importe. Ce temps d epend trop de toutes sortes de contingences mat erielles, comme l equipement dont on dispose, le langage de programmation et la version du compilateur employ es, etc. On mesure le temps requis par un algorithme en comptant le nombre dop erations el ementaires eectu ees, o` u une op eration est el ementaire lorsquelle prend un temps constant. Si lon veut etre tr` es pr ecis, on doit aller plus loin, et classer les op erations el ementaires selon leur nature, comme des incr ements de compteurs, des op erations arithm etiques, des op erations logiques, etc. Il est apparu quune telle pr ecision napportait pas dinformation substantielle, et il est aujourdhui commun ement admis que m eme le d ecompte exact du nombre dop erations nest utile que dans une phase ultime de la r ealisation dun algorithme par un programme : dans les autres situations, on se contente dun ordre de grandeur.

Version 6 f evrier 2005

14

Chapitre 2. Evaluations

2.1

Notations de Landau

On evalue lecacit e dun algorithme en donnant lordre de grandeur du nombre dop erations quil eectue lorsque la taille du probl` eme quil r esout augmente. On parle ainsi dalgorithme lin eaire, quadratique, logarithmique, etc. Les notations de Landau sont un moyen commode dexprimer cet ordre de grandeur. Trois situations sont d ecrites par ces notations. La plus fr equente, la notation O introduite ci-dessous, donne une majoration de lordre de grandeur ; la notation en donne une minoration, et la notation deux bornes sur lordre de grandeur. La force des notations de Landau r eside dans leur concision. En contre-partie, leur emploi demande de la vigilance et un certain entra nement.

2.1.1

Notation O

On consid` ere une fonction g : R R. Etant donn e un point x0 R {, +}, on d esigne par O (g ) lensemble des fonctions f pour lesquelles il existe un voisinageV de x0 et une constante k > 0 tels que |f (x)| k |g (x)| (x V )

Dans le cas des fonctions d enies sur R, un voisinage dun point x0 est une partie de R contenant un intervalle ouvert contenant le point x0 . On peut donc, dans la d enition ci-dessus, remplacer le terme voisinage par intervalle ouvert . Si la fonction g ne sannule pas, il revient au m eme de dire que le rapport f (x) g (x) est born e pour x V . Exemple. Au voisinage de 0, on a x2 O (x), ln(1 + x) O (x)

Par commodit e, on ecrit x2 a ` la place de la fonction qui a ` x associe x2 ; nous utiliserons par la suite cette abus d ecriture. Pour l evaluation de la complexit e des algorithmes, nous nous int eressons a ` la comparaison de fonctions au voisinage de + . Ce cas est couvert, dans la d enition pr ec edente, si lon prend x0 = + ; un voisinage est alors un ensemble contenant un intervalle (ouvert) de la forme ]a, +[. Par cons equent, on a f O (g ) au voisinage de + sil existe deux nombres k, a > 0 tels que |f (x)| k |g (x)| pour tout x > a Exemple. Au voisinage de linni, on a x O (x2 ), Version 6 f evrier 2005 ln x O (1), x x + 1 O (x)

2.1. Notations de Landau

15

Exemple. Pour tout polyn ome P (x) = a0 xk + a1 xk1 + + ak , on a P (x) k O (x ) au voisinage de linni. En eet, pour x 1, |P (x)| |a0 | xk + |a1 | xk1 + + |ak | (|a0 | + + |ak |) xk Souvent, les fonctions a ` comparer sont elles-m emes a ` valeurs positives. Dans ce cas, on peut omettre les valeurs absolues. Lors de l etude de fonctions mesurant les performances dalgorithmes, largument est en g en eral entier (taille du probl` eme) et on se place au voisinage de linni, ce qui signie que lon consid` ere les performances de lalgorithme pour des tailles importantes du probl` eme ; dans ce cas, les m emes consid erations restent valables lorsque le domaine des fonctions est restreint a ` lensemble N des entiers naturels. Une des dicult es dans la familiarisation avec ces concepts provient de la convention de notation (justement de Landau ) qui veut que lon ecrive f = O (g ), ou encore f (x) = O (g (x)) au lieu de f O (g )

De mani` ere analogue, on ecrit O (f ) = O (g ) lorsque O (f ) O (g )

Notons tout de suite que la relation f = O (g ) nimplique pas n ecessairement que g = O (f ). Exemple. Les formules x2 + 5x = O (x2 ) = O (x3 ) d enotent en fait les relations x2 + 5x O (x2 ) O (x3 ) La notation de Landau permet l ecriture usuelle de certaines op erations arithm etiques ; en d enissant f + O (g ) = {f + h | h O (g )} f O (g ) = {f h | h O (g )} on a par exemple h = f + O (g ) si et seulement si h f O (g ). Les formules suivantes sont faciles a ` v erier et fort utiles (ici c est une constante ; sans la notation de Landau, il faudrait utiliser un signe dappartenance au lieu de l egalit e dans la premi` ere formule, et un signe dinclusion dans les autres). f = O (f ) O (f ) = O (f ) cO (f ) = O (f ) O (f ) + O (f ) = O (f ) O (f )O (g ) = O (f g ) f O (g ) = O (f g ) Si f et g sont a ` valeurs positives, alors Version 6 f evrier 2005

16 O (f ) + O (g ) = O (f + g )

Chapitre 2. Evaluations

V erions par exemple la derni` ere formule. Si h O (f ) + O (g ), alors il existe deux constantes k, k > 0 et a > 0 telles que |h(x)| kf (x) + k g (x) pour x a. Soit K le plus grand des nombres k et k . Alors on a |h(x)| K (f (x) + g (x)) parce que f et g sont a ` valeurs positives. La formule est fausse si lon prend g = f par exemple. Exemple. On a 2n+1 = O (2n) mais en revanche 3n / O (2n ) et de m eme (n + 1)! / O (n!) (puisque (n + 1)!/n! tend vers + avec n). Observons aussi que f (n) = O (n) implique f (n)2 = O (n2 ), mais nimplique pas que 2f (n) = O (2n ).

2.1.2

Notations et

Deux notations semblables a ` la notation O sont couramment employ ees pour la description de la complexit e des algorithmes.On d esigne par (g ) lensemble des fonctions f pour lesquelles il existe deux nombres k, a > 0 tels que |f (x)| k |g (x)| pour tout x > a En dautres termes, on a f (g ) g O (f ) Exemple. Le nombre de comparaisons de tout algorithme de tri de suites de longueur n est (n ln n), dapr` es le chapitre pr ec edent. Enn, on d esigne par (g ) lensemble des fonctions f pour lesquelles il existe des nombres k1 , k2 , a > 0 tels que k1 |g (x)| |f (x)| k2 |g (x)| pour tout x > a. En dautres termes, on a (g ) = O (g ) (g ) Ceci signie donc que f et g croissent de fa con comparable . Plus pr ecis ement, si g ne sannule pas, alors pour tout x > a k1 Exemple. Pour tout a, b > 1, on a loga n = (logb n) Version 6 f evrier 2005 |f (x)| k2 |g (x)|

2.1. Notations de Landau puisque loga n = loga b logb n.

17

Cet exemple ne doit pas faire croire que si f = (g ), alors le quotient |f (x)/g (x)| tend vers une limite non nulle, cest-` a-dire |f | c|g | pour une constante c > 0 (rappelons que f g signie que le quotient f (x)/g (x) tend vers la limite 1). En revanche, si |f | c|g |, alors f = (g ). Exemple. Soit f (x) = x(2 + sin x). On a x f (x) 3x pour tout x > 0, donc f (x) = (x). En revanche, le quotient f (x)/x ne tend pas vers une limite lorsque x tend vers +.

2.1.3

Exemples

Suivant lusage dans lanalyse dalgorithmes, on entendra d esormais que toutes les estimations de fonctions se font au voisinage de linni. Proposition 1.1. Pour tout k 1, on a
n

ik = (nk+1 )
i=1

(1.1)

log n! = (n log n)
n

i=1

1 = (log n) i

La preuve de ces formules est loccasion dintroduire une technique eprouv ee d evaluation de sommes utilisant des int egrales. Les in egalit es requises sont enonc ees dans le lemme el ementaire suivant. Lemme 1.2. Soient a b deux entiers, et soit f : [a, b] R une fonction croissante et continue. Alors
b1 i=a b b

f (i)

f (x) dx

f (i)
i=a+1

Bien entendu, des in egalit es analogues sobtiennent pour des fonctions d ecroissantes.
n k Preuve de la proposition. Commen cons par (1.1). Il est clair que i=1 i = k +1 k O (n ) : il sut pour cela de majorer chaque terme de la somme par n . Il est k k egliger tous les termes clair aussi que n i=1 i = (n ) : il sut pour cela de n sauf le dernier. La dicult e est donc de remplacer la minoration grossi` ere (nk ) k +1 par la minoration plus pr ecise (n ). Pour ce faire, nous utilisons le lemme

Version 6 f evrier 2005

18

Chapitre 2. Evaluations

pr ec edent. La fonction x xk est croissante et continue sur lintervalle [0, n]. On a donc n n nk+1 k xk dx = i k+1 0 i=1 ce qui prouve que la somme est dans (nk+1 ). Prouvons la deuxi` eme formule. On a clairement log n! = O (n log n). Dautre part, la fonction x ln x est croissante et continue sur lintervalle [1, n]. Par le lemme, on a donc n
n

ln n! =
i=2

ln i

ln x dx = [x ln x x]n 1

n ln n 2 d` es que ln n 2. Ceci montre que ln n! (n ln n). Comme ln n = (log n), la m eme formule vaut pour log. ln n! n ln n n + 1 Consid erons enn la troisi` eme formule. La fonction x 1/x est d ecroissante et continue sur lintervalle [1, n + 1]. On a donc par le lemme
n

donc

i=1

1 i
n

n+1 1

1 dx = ln(n + 1) x
n

De m eme,

i=2

1 i

1 n

1 dx = ln n x 1 1 + ln n. i

do` u ln(n + 1)

i=1

Remarquons que, pour les trois formules de la proposition, on dispose en fait dexpressions plus pr ecises dont l etablissement d epasse le cadre de ce livre. On a
n

ik =
i=1

Bn+1 (n + 1) Bn+1 k+1

o` u Bn (x) est le n-i` eme polyn ome de Bernoulli et Bn = Bn (0) est le n-i` eme nombre de Bernoulli. La formule de Stirling 23 1 + + n! nn en 2n 1 + 12n 288n2 permet de retrouver l evaluation asymptotique de log n!. Enn, les nombres har1 1 moniques Hn = 1 + 2 + + n satisfont Hn = ln n + + Version 6 f evrier 2005 1 + 2n

2.1. Notations de Landau o` u est la constante dEuler.

19

Exemple. Consid erons un exemple plus substantiel. Il a pour but de d evelopper une estimation de la croissance asymptotique dune fonction d enie implicitement, en employant une m ethode danages successifs appel ee en anglais bootstrapping . Soit la fonction f donn ee par l equation f (t)ef (t) = t On veut l etudier lorsque t tend vers +. On constate dabord que, pour t > 0, on a f (t) > 0. On peut donc passer au logarithme, et on obtient ln f (t) + f (t) = ln t et lexpression L equation de d enition de f (t) montre que pour t e, on a f (t) 1. Par cons equent, ln f (t) 0, et l equation (1.2) montre que f (t) ln t et donc f (t) = O (ln t) Ceci amorce la pompe . Il r esulte ensuite de cette relation que ln f (t) = ln O (ln t) = O (ln ln t) et par cons equent on peut aner l equation (1.2) en f (t) = ln t + O (ln ln t) On reporte ceci a ` nouveau dans l equation (1.2), et on obtient f (t) = = = = ln t ln(ln t + O (ln ln t)) ln t ln(ln t (1 + O (ln ln t)/ln t)) ln t ln ln t ln (1 + O (ln ln t)/ln t) ln t ln ln t + O (ln ln t/ln t) f (t) = ln t ln f (t) (1.2)

Cette derni` ere expression donne une description d ej` a fort pr ecise du comportement asymptotique de la fonction f . Exemple. On veut donner une expression asymptotique, lorsque n tend vers +, de n n et de n n n 1

Pour cela, on se rappelle quau voisinage de 0, la fonction ex admet le d eveloppement limit e ex = 1 + x + O (x2 ) Comme n n = eln n/n , et que ln n/n est voisin de 0 lorsque n est voisin de , on a n n = eln n/n = 1 + ln n/n + O (ln n/n)2 Cela montre egalement que n n n 1 = ln n + O ln2 n/n . Version 6 f evrier 2005

20

Chapitre 2. Evaluations

2.2

R ecurrences

Lanalyse des performances dun algorithme donne en g en eral des equations implicites, o` u le temps de calcul, pour une taille des donn ees, est exprim e en fonction du temps de calcul pour des donn ees plus petites. R esoudre ces equations nest pas toujours possible, et lon se contente de donner des equivalents qui d ecrivent, de mani` ere satisfaisante, le comportement des algorithmes. Dans cette section, on passe en revue certaines techniques permettant dobtenir des expressions explicites exactes ou approch ees pour des fonctions donn ees par des relations de r ecurrence.

2.2.1

R ecurrences lin eaires ` a coecients constants

Nous consid erons ici les relations de r ecurrence lin eaires a ` coecients constants. Des relations plus g en erales sont d ecrites dans la section suivante. Relations de r ecurrence homog` enes Une suite r ecurrente lin eaire est une suite (un )n0 de nombres (r eels) qui v erie une relation du type suivant : un+h = ah1 un+h1 + + a0 un , n = 0, 1, 2, . . . a0 = 0 (2.1)

o` u h est un entier strictement positif et ah1 , . . . , a0 sont des nombres x es. Une telle suite est enti` erement d etermin ee par ses h premi` eres valeurs u0 , . . . , uh1 . On dit que la suite est dordre h. Le polyn ome associ e ou caract eristiquede l equation (2.1) est par d enition G(X ) = X h ah1 X h1 a1 X a0 On note ses racines 1 , . . . , r , la multiplicit e de i etant not ee ni pour i = 1, . . . , r . Consid erons la s erie g en eratrice (formelle) de la suite (un ) : u(X ) =
n=0

un X n

(2.2)

et soit B (X ) = X h G(1/X ) le polyn ome r eciproque de G(X ), cest-` a-dire B (X ) = 1 ah1 X a0 X h Posons A(X ) = B (X )u(X ). En vertu de la formule (2.1), il vient A(X ) = Version 6 f evrier 2005
h1 j =0 j

uj

i=1

ah1i uj i X j

2.2. R ecurrences Ainsi A(X ) est un polyn ome de degr e au plus h 1, et la formule u(X ) = A(X ) B (X )

21

(2.3)

montre que la s erie formelle est une s erie rationnelle. En d ecomposant la fraction rationnelle (2.3) en el ements simples, on obtient une expression du type
r ni

u(X ) =
i=1 j =1

i,j (1 i X )j

(rappelons que ni est la multiplicit e de la racine i ). Comme 1 = (1 X )j


n=0

n+j 1 n n X j1

le terme g en eral de la suite (un ) est donn e par une expression de la forme
r

un =
i=1

n Pi (n)i

(2.4)

o` u Pi (X ) =

ni

i,j
j =1

X +j1 j1

(2.5)

est un polyn ome de degr e au plus ni 1 pour i = 1, . . . , r . La formule (2.4) est tr` es utile ; cest elle qui donne la forme close de un ; cest aussi elle qui permet dobtenir une estimation asymptotique lorsque la racine de plus grand module est unique et r eelle positive par exemple. Une expression (2.4) est appel ee un polyn ome exponentiel. R eciproquement, tout polyn ome Pi (X ) de degr e ni s ecrit sous la forme (2.5) parce que les polyn omes X +j j = 1 (X + 1) (X + j ) j! j0

forment une base de lespace des polyn omes. Si le terme g en eral de la suite (un ) est donn e par (2.4), on obtient donc une expression (2.3) puis une relation (2.1) pour la suite. Nous avons donc montr e quune suite r ecurrente a trois repr esentations equivalentes : la relation de r ecurrence, lexpression comme fraction rationnelle de sa s erie g en eratrice, et lexpression close de ses termes sous forme de polyn ome exponentiel. Exemple. Consid erons la suite tn = 3tn1 + 4tn2 t0 = 0, t1 = 1 n2 Version 6 f evrier 2005

22

Chapitre 2. Evaluations

Elle est dordre 2, son polyn ome caract eristique est X 2 3X 4, et ses racines sont 1 et 4. On obtient u(X ) = do` u lexpression X 1 = 1 3X 4X 2 5 4n (1)n tn = 5 1 1 1 4X 1+X n0

Exemple. La suite tn+3 = 5tn+2 8tn+1 + 4tn t0 = 0, t1 = 1, t2 = 2 n0

est dordre 3, et son polyn ome caract eristique X 3 5X 2 + 8X 4 a la racine simple 1 et la racine double 2. On obtient u(X ) = 2 5/2 1/2 X 3X 2 = + 2 3 1 5X + 8X 4X 1 X 1 2X (1 2X )2 tn = 2n+1 n2n1 2 n0

En d eveloppant, ceci donne

Notons que la m eme relation de r ecurrence, avec les conditions initiales t0 = 1, t1 = 3, et t2 = 7, conduit a ` lexpression tn = 2n+1 1. Ceci est d u au fait que la fraction 1 2X u(X ) = 1 5X + 8X 2 4X 3 se simplie, et que la suite (tn ) est, dans ce cas, aussi solution dune relation dordre 2. Exemple. Lexemple le plus populaire et sans doute aussi le plus ancien (il date de 1202) est la suite (Fn ) de Fibonacci d enie par Fn+2 = Fn+1 + Fn F0 = 0, F1 = 1 n0

Le polyn ome caract eristique X 2 X 1 a les deux racines 5 1+ 5 1 = = et 2 2 et sa s erie g en eratrice u(X ) = Version 6 f evrier 2005 1 X = 2 1X X 5 1 1 1 X 1 X

2.2. R ecurrences donne lexpression

23

1 n ) Fn = (n 5

n0

1 F n n 5 Comme exemple dapplication, consid erons lalgorithme dEuclidede calcul du pgcd de deux entiers positifs, non tous les deux nuls, par divisions successives : fonction pgcd(x, y ) ; si y = 0 alors pgcd:= x sinon pgcd:=pgcd(y, x mod y ) nsi.

Asymptotiquement, on a

Notons n(x, y ) le nombre de divisions avec reste eectu ees par lalgorithme. Alors n(x, y ) = si y = 0 alors 0 sinon 1 + n(y, x mod y ) Nous allons prouver que pour x > y 0, n(x, y ) = k x Fk+2 (2.6)

Pour k = 0, on a x 1 = F2 , et pour k = 1, on a x 2 = F3 . Supposons donc k 2, et consid erons les divisions euclidiennes x = qy + z, 0 z < y y = q z + u, 0 u < z On a n(y, z ) = k 1, donc y Fk+1 , et de m eme z Fk , par cons equent 1 n x Fk+1 + Fk = Fk+2 . Ceci prouve (2.6). Comme Fn ( 1), on a 5 5x + 1 k+2 , donc pour x > y 0, n(x, y ) log (5x + 1) 2 Ce r esultat est le th eor` eme de Lam e. En particulier, n(x, y ) = O (log x). Relations de r ecurrence a ` second membre Nous consid erons maintenant des suites (un )n0 de nombres qui v erient une relation du type suivant : un+h = ah1 un+h1 + + a0 un + vn , n = 0, 1, 2, . . . a0 = 0 (2.7)

Version 6 f evrier 2005

24

Chapitre 2. Evaluations

o` u h est un entier positif et ah1 , . . . , a0 sont des nombres x es, et o` u vn est une fonction de n. On peut r e ecrire (2.7) en un+h ah1 un+h1 a0 un = vn , n 0, a0 = 0

ce qui explique le terme de relation de r ecurrence avec second membre. Comme dans le cas trait e plus haut, une telle suite est enti` erement d etermin ee par ses h premi` eres valeurs u0 , . . . , uh1 . On dit que la suite est dordre h. Consid erons les s eries g en eratrices (formelles) des suites (un ) et (vn ) : u(X ) =
n=0

un X

v (X ) =

n=0

vn X n

Les calculs faits pour les r ecurrences homog` enes conduisent cette fois-ci a ` lexpression A(X ) + X h v (X ) u(X ) = (2.8) B (X ) o` u comme plus haut B (X ) = 1 ah1 X a0 X h et A(X ) =
h1 j =0 j

uj

i=1

ah1i uj i X j

Calculer les polyn omes A(X ) et B (X ) revient a ` r esoudre l equation sans second membre, qui est ensuite corrig ee par la s erie v (X ). Nous nous int eressons au cas particulier o` u la suite (vn ) v erie elle-m eme une relation de r ecurrence. Dans ce cas, la s erie g en eratrice v est elle-m eme une fraction rationnelle : P (X ) v (X ) = Q(X ) pour des polyn omes P et Q. L equation (2.8) prend alors la forme u(X ) = A(X )Q(X ) + X h P (X ) B (X )Q(X ) (2.9)

ce qui montre que la s erie u est encore rationnelle. Exemple. Consid erons la suite (tn ) d enie par tn = 2tn1 + 1 t0 = 0 n1

La suite associ ee a ` l equation homog` ene tn = 2tn1 , avec t0 = 0 est nulle. Donc A(X ) = 0, B (X ) = 1 2X . Par ailleurs, v (X ) = 1/(1 X ), et u(X ) = Version 6 f evrier 2005 X (1 2X )(1 X )

2.2. R ecurrences

25

En particulier, la suite (tn ) v erie la relation de r ecurrence tn+2 = 3tn+1 2tn , et n bien entendu tn = 2 1. Une autre fa con de r esoudre (2.7) lorsque la suite vn est une suite r ecurrente lin eaire, est de substituer cette relation de r ecurrence. Si vn+k = b1 vn+k1 + + bk vn alors pour n 0
h k h

n0

un+h+k =
i=1

ai un+h+ki +

bj
j =1

un+h+j

i=1

ai un+hi+kj

ce qui, apr` es r earrangement, donne une relation de r ecurrence explicite pour (un ). Exemple. Consid erons la suite tn+1 2tn = n + 2n t0 = 0 n1

La suite vn = n + 2n v erie la relation vn+3 = 4vn+2 5vn+1 + 2vn , do` u tn+4 2tn+3 = 4(tn+3 2tn+2 ) 5(tn+2 2tn+1 ) + 2(tn+1 2tn ) et nalement tn+4 = 6tn+3 7tn+2 2tn Exemple. La fonction r ecursive de calcul des nombres de Fibonacci est souvent utilis ee pour tester lecacit e de compilateurs ou dinterpr` etes. Elle s ecrit : fonction Fibonacci(n) ; si n = 0 ou n = 1 alors Fibonacci := n sinon Fibonacci := Fibonacci(n 1)+Fibonacci(n 2) nsi. Notons rn le nombre dappels de Fibonacci pour le calcul du nombre Fn . On a rn = 1 + rn1 + rn2 r0 = r 1 = 1 On trouve sans peine que rn = 2Fn+1 1 = (n ) Version 6 f evrier 2005 n2

26

Chapitre 2. Evaluations

donc que le temps dex ecution est proportionnel a ` la valeur calcul ee. Ceci nest pas etonnant puisque la proc edure forme le r esultat en additionnant des 0 et des 1. Exemple. Parfois, on peut se ramener a ` des r ecurrences lin eaires par un changement de variables, ou un changement de valeurs (remplacer une fonction par son logarithme par exemple). Consid erons la fonction t d enie sur les entiers qui sont des puissances de 2 par t(1) = 6 t(n) = n(t(n/2))2 n > 1 puissance de 2

On peut v erier directement que t(n) = 23n2 3n /n ; pour trouver cette formule, on fait dabord un changement de variable en posant s(k ) = t(2k ) pour k 0, do` u la relation s(0) = 6 s(k ) = 2k (s(k 1))2 Ensuite, on pose uk = log2 s(k ), et on obtient la relation de r ecurrence lin eaire u0 = log 6 uk = k + 2uk1 Cette derni` ere se r esout par les m ethodes indiqu ees ci-dessus, et donne uk = 2k u0 + 2k+1 k 2 do` u en reportant : et le r esultat, et posant n = 2k . s(k ) = 2uk = 62 22
k k+1

2k2

2.2.2

R ecurrences diverses

Voici quelques techniques permettant de r esoudre certaines relations de r ecurrences qui ne sont pas de la forme pr ec edente. M ethode des facteurs sommants La m ethode des facteurs sommants permet de traiter des suites (un ) d enies par une relation de r ecurrence lin eaire dordre 1, de la forme an un = bn un1 + cn a1 an1 b1 bn n1

o` u an , bn , cn sont des fonctions de n. On pose alors fn = Version 6 f evrier 2005 n1

2.2. R ecurrences avec f1 = 1/b1 . On a fn an = fn+1 bn+1 . En posant y n = f n a n un la relation se r e ecrit yn = yn1 + fn cn Cette relation se r esout imm ediatement en
n

27

yn = y 0 +
i=1

f i ci

et on obtient, pour un , lexpression un = u0 +


n i=1

f i ci

an fn

Exemple. Consid erons la suite (un ) d enie par u0 = a un = bnk + nun1 n>1

o` u a et b sont des r eels, et k N. Les formules pr ec edentes sappliquent avec k cn = bn , an = 1, bn = n, do` u fn = 1/n! et
n

un = n! a + b
i=1

ik i!

Maintenant, la s erie de terme g en eral ik /i! converge, et le nombre 1 Bk = e est le k -i` eme nombre de Bell. On a donc un n!(a + beBk ) Changement de valeurs Dans certaines situations, on peut remplacer la fonction a ` evaluer par son logarithme, et obtenir une expression plus simple pour la relation de r ecurrence. Exemple. Le nombre de fonctions bool eennes a ` n variables bool eennes est donn e par t(1) = 4 t(n) = (t(n 1))2 n>1 Version 6 f evrier 2005
i=1

ik i!

28 Posons un = log t(n). On a alors u1 = 2 un = 2un1 do` u un = 2n et t(n) = 22 .


n

Chapitre 2. Evaluations

n>1

Voici un exemple o` u le m eme proc ed e est appliqu e, mais o` u les calculs sont beaucoup plus compliqu es. Exemple. Le nombre darbres binaires de hauteur strictement inf erieure a ` n est donn e par x0 = 1 xn+1 = x2 n0 n+1

Larbre vide est de hauteur 1. Nous allons montrer quil existe une constante

Figure 2.1: Les arbres binaires de hauteur 1 h 2. k telle que xn = k 2 . Posons pour cela yn = ln xn . On a yn+1 = 2yn + n avec n = ln 1 + On en d eduit lexpression yn = 2 n Posons Yn = 2
n i=0
n

1 x2 n

0 n1 ++ n 2 2 i , 2i+1 rn = Y n y n

Version 6 f evrier 2005

2.2. R ecurrences

29

Comme la suite (xn ) est croissante, et donc la suite (n ) est d ecroissante, on a lestimation suivante pour rn : rn = Y n y n = 2 Si lon d enit le nombre k par k = exp
i=0 n i=n

i n 2i+1

i=0

1 2i+1

i 2i+1
n

on a Yn = 2n ln k , donc xn = eyn = eYn rn = k 2 ern et il ne reste plus qu` a utiliser la majoration pour rn : xn k 2 = x n e r n x n e n = x n 1 + pour n > 1, do` u xn = k 2
n n

1 x2 n

= xn +

1 < xn + 1 xn

Evidemment, lexpression de k nest pas facile a ` evaluer...

2.2.3

R ecurrences de partitions

Les relations de r ecurrence que nous consid erons maintenant sont de la forme : t(n0 ) = d t(n) = at(n/b) + f (n) n > n0

On les rencontre naturellement lorsque lon cherche un algorithme r ecursif pour r esoudre un probl` eme de taille n par la m ethode des sous-probl` emes ( diviser pour r egner ) : on remplace le probl` eme par a sous-probl` emes, chacun de taille n/b. Si t(n) est le co ut de lalgorithme pour la taille n, il se compose donc de at(n/b) plus le temps f (n) pour recomposer les solutions des probl` emes partiels en une solution du probl` eme total. Dans de nombreux cas, les equations ci-dessus sont en fait des in equations. Le co ut (n) v erie (n0 ) = d (n) a (n/b) + f (n) n > n0

Il en r esulte que (n) t(n) pour tout n, et donc que la fonction t constitue une majoration du co ut de lalgorithme. Avant de continuer, un exemple. Exemple. Soit a ` calculer le produit de deux entiers u, v v eriant 0 u, v < 22n pour un entier n. On peut donc ecrire u et v en binaire sur 2n bits. Posons u = 2 n U1 + U 0 , v = 2 n V1 + V 0 Version 6 f evrier 2005

30

Chapitre 2. Evaluations

avec 0 U0 , U1 , V0 , V1 < 2n . Ainsi U1 est form e des n bits de plus fort poids de u, etc. On a uv = (22n + 2n )U1 V1 + 2n (U1 U0 )(V0 V1 ) + (2n + 1)U0 V0 Cette formule montre que lon peut d ecomposer le probl` eme de la multiplication de deux nombres a ` 2n bits en 3 multiplications de nombres a ` n bits, a ` savoir U1 V1 , (U1 U0 )(V0 V1 ), U0 V0 , et quelques additions et d ecalages. On a donc ramen e un probl` eme de taille 2n en 3 sous-probl` emes de taille n (a = 3, b = 2 dans les formules ci-dessus). Soit t(n) le temps requis pour multiplier deux nombres a `n bits par cette m ethode. Alors t(2n) = 3t(n) + cn, t(1) = 1

pour une constante c, puisque les d ecalages et laddition prennent un temps lin eaire en n. Il r esulte de la proposition ci-dessous que t(n) = (nlog2 3 ). Un grand nombre de situations rencontr ees dans lanalyse dalgorithmes sont couvertes par l enonc e que voici : Proposition 2.1. Soit t : N R+ une fonction croissante au sens large a ` partir dun certain rang, telle quil existe des entiers n0 1, b 2 et des r eels k 0, a > 0, c > 0 et d > 0 pour lesquels t(n0 ) = d t(n) = at(n/b) + cnk Alors on a n > n0 , n/n0 puissance de b (2.10)

Preuve. Soit dabord n = n0 bp pour un entier p. Alors t(n) = da avec (n) = da = (n parce que a = n
p log b a p log b a p p1 i=0

si a < bk (nk ) t(n) = (nk logb n) si a = bk (nlogb a ) si a > bk cai n/bi


k

(2.11)

= (n) + cnk (n)

) et (n) =

p1 i=0

a/bk

/a

logb n0

. Or si a/bk < 1 si a/bk = 1 si a/bk > 1

1 1 a/bk (n) = p logb n ap (n) kp b (n) Version 6 f evrier 2005

2.2. R ecurrences

31

avec = 1/(a/bk 1). Les deux premi` eres formules sen d eduisent. Si a > bk , on a p logb a cnk (n) cnk ) 0 a = (n Do` u le r esultat. Soit maintenant n assez grand, et soit p tel que n0 bp < n n0 bp+1 . Posons n = n0 bp et n+ = n0 bp+1 = bn . Comme t(n ) t(n) t(n+ ), et que f (bn) = (f (n)) pour chacune des trois fonctions f intervenant au second membre de (2.11), on a t(n) = (f (n)). Voici quelques applications de ces formules dans le cas le plus fr equent, o` ub=2 et n0 = 1 : Exemple. Soit t une fonction croissante qui v erie t(1) = 1. Si pour n > 1, puissance de 2, on a t(n) = t(n/2) + c t(n) = 2t(n/2) + cn t(n) = 2t(n/2) + cn2 t(n) = 4t(n/2) + cn2 t(n) = 7t(n/2) + cn2 alors alors alors alors alors t(n) = (log n) t(n) = (n log n) t(n) = (n2 ) t(n) = (n2 log n) t(n) = (nlog 7 ) (a = 1, k = 0) (a = 2, k = 1) (a = 2, k = 2) (a = 4, k = 2) (a = 7, k = 2)

Remarque. Parfois, lanalyse dun algorithme ne permet pas dobtenir une information aussi pr ecise que celle de l equation (2.10). Si, dans cette equation, on remplace le terme cnk par O (nk ), la m eme conclusion reste vraie, en rempla cant dans (2.11) les par des O . Exemple. Soit t une fonction croissante au sens large et v eriant t(1) = 1 t(n) = 2t(n/2) + log n n > 1 et puissance de 2

Comme log n = O (n), on a t(n) = O (n log n). En fait, on peut montrer que t(n) = (n) (voir ci-dessous). Proposition 2.2. Soit t : N R+ une fonction croissante au sens large a ` partir dun certain rang, telle quil existe des entiers n0 1, b 2 et des r eels a > 0, et d > 0 et une fonction f : N R+ pour lesquels t(n0 ) = d t(n) = at(n/b) + f (n) Supposons de plus que f (n) = cnk (logb n)q n > n0 , n/n0 une puissance de b

Version 6 f evrier 2005

32 pour des r eels c > 0, k 0 et q . Alors (nk ) (nk (logb n)1+q ) t(n) = (nk log logb n) (nlogb a ) (nlogb a )
p1 i=0 p1 i=0 p

Chapitre 2. Evaluations

si si si si si

a < bk a = bk a = bk a = bk a > bk

et et et et

q q q q

=0 > 1 = 1 < 1

Preuve. Proc edons comme dans la d emonstration du r esultat pr ec edent. Soit dabord n = n0 bp pour un entier p. Alors t(n) = da + = da +
p p

ai f (n/bi )
p

a f (n0 b

pi

) = da +
i=1

api f (n0 bi )

= dap + c
i=1

api (n0 bi )k (logb n0 bi )q


p

= da +

p cnk 0a i=1

bk /a (logb n0 + i)q

et comme ap = (nlogb a ), on a t(n) = (nlogb a (n)), o` u


p

(n) =
i=1

hi (r + i)q

avec h = bk /a et r = logb n0 . Si h = 1, alors p si q > 1 (p1+q ) = (logb n1+q ) q (r + i) = (logb p) = (logb logb n) si q = 1 (n) = i=1 (1) si q < 1

Si h < 1, alors (n) = (1). Enn, si h > 1 et q = 0, alors (n) = (nk /nlogb a ). Do` u le r esultat.

Exemple. Si la fonction t v erie, pour tout n puissance de 2, t(n) = 2t(n/2) + log n t(n) = 3t(n/2) + n log n t(n) = 2t(n/2) + n log n t(n) = 5t(n/2) + (n log n)2 alors alors alors alors t(n) = (n) t(n) = (nlog 3 ) t(n) = (n log2 n) t(n) = (nlog 5 ) (h = 1/2, k = 0, q = 1) (h = 2/3, k = q = 1) (h = 1, k = q = 1) (h = 4/5, k = q = 2)

Exemple. Soit t une fonction v eriant t(1) = a t(n) = t( n/2 ) + t( n/2 ) + bn Version 6 f evrier 2005 n>1

2.2. R ecurrences

33

Clairement, t est croissante, et comme t(n) = 2t(n/2) + bn lorsque n est une puissance de 2, on a t(n) = (n log n). Certaines d enitions r ecurrentes de ce type peuvent etre r esolues de mani` ere compl` ete (voir exercices). Proposition 2.3. Soient 1 , , k des fonctions de N dans lui-m eme telles quil existe un nombre r eel 0 < K < 1 avec 1 (n) + + k (n) Kn Si une fonction t v erie t(n) = alors t(n) = O (n). Preuve. Nous allons montrer que t(n) Dn + a0 avec D = (b + (k 1)a0 )/(1 K ) a0 n n0 t(1 (n)) + + t(k (n)) + bn n > n0 (n > n0 )

Cette in egalit e est evidemment v eri ee pour n n0 . Si n > n0 , alors t(n) = t(1 (n)) + + t(k (n)) + bn ka0 + D (1 (n) + + k (n)) + bn ka0 + DKn + bn Or ka0 + DKn + bn Dn + a0 si, et seulement si (k 1)a0 + bn D (1 K )n, et cette derni` ere in egalit e est satisfaite par lexpression donn ee pour D . Exemple. Consid erons la fonction d enie par t(n) = a n n0 t( n/5 ) + t( 7n/10 ) + bn n > n0

On a ici 1 (n) = n/5 et 2 (n) = 7n/10 , et 1 (n) + 2 (n) 9n/10 Donc t(n) = O (n).

2.2.4

R ecurrences compl` etes

Il sagit de suites (un ) d enies par des relations de r ecurrences portant sur toute la suite, plus pr ecis ement o` u un est d eni en fonction de tous les uk , pour k < n. Exemple. Les relations de r ecurrence 2 tn = cn + n
n1 k =0

tk

ou

tn = n + max

k 1 i=1

1k<n

tni +

n1 i=k

ti

Version 6 f evrier 2005

34 sont des relations de r ecurrence compl` etes.

Chapitre 2. Evaluations

Consid erons la suite (tn ) v eriant la relation de r ecurrence tn = h n + 2 n


n1 k =0

tk

pour n 1, et t0 = 0. Dans une premi` ere etape, nous allons remplacer cette relation de r ecurrence par une relation plus simple. Pour cela, observons que n(tn hn ) = 2
n1 k =0

tk

On soustrait de cette equation la m eme equation pour n 1, ce qui donne ou encore n(tn hn ) (n 1)(tn1 hn1 ) = 2tn1 ntn = (n + 1)tn1 + gn

en posant gn = nhn (n 1)hn1 .

Dans une deuxi` eme etape, on applique la m ethode des facteurs sommants. On a tn = avec fn = do` u tn = (n + 1)
k =1

1 nfn

t0 +
k =1

fk gk

1 (n 1)! = (n + 1)! n(n + 1)


n

gk k (k + 1)

Consid erons maintenant le cas particulier, qui intervient dans lanalyse du tri rapide (voir chapitre 5), o` u h0 = h 1 = 0 hk = k + 1 On a alors (k 2)

et par cons equent


n

g0 = 0, g1 = 6 gk = 2k (k 2)
n n

2k 1 =1+2 k (k + 1) k k =1 k =3 k =4 1 1 4 = 1 + 2(Hn+1 1 ) = 2(Hn+1 ) 2 3 3 o` u Hn est le n-i` eme nombre harmonique. Il en r esulte que 4 tn = 2(n + 1)(Hn+1 ) 3 Version 6 f evrier 2005

gk =1+ k (k + 1)

Notes

35

Notes
Lanalyse dalgorithmes fait fr equemment appel a ` des outils math ematiques bien plus sophistiqu es que ceux pr esent es ici. En plus du trait e de Knuth D. E. Knuth, The Art of Computer Programming, Vol IIII, Addison-Wesley, 19681973, on peut consulter, pour un bonne introduction et des compl ements, R. Graham, D. E. Knuth, O. Patashnik, Concrete Mathematics, Addison-Wesley, 1989, D. H. Greene, D. E. Knuth, Mathematics for the Analysis of Algorithms, Birkh auser, 1982. Nous avons adopt e la terminologie de C. Froidevaux, M. C. Gaudel, M. Soria, Types de donn ees et algorithmes, McGraw-Hill, 1990.

Exercices
2.1. Donner une expression simple pour la fonction t d enie sur les entiers de 2k la forme n = 2 par t(2) = 1 t(n) = 2t( n) + log n 2.2. n4

Montrer que, quels que soient les entiers positifs n et d, on a


d

2k log(n/2k ) = 2d+1 log


k =0

n 2d1

2 log n

En d eduire que

i=1

log(n/i) 5n

2.3.

Montrer que la fonction t d enie par t(1) = 0 t(n) = t( n/2 ) + t( n/2 ) + n n>2

2.4.

est t(n) = n log n + 2n 21+

log n

Montrer que la fonction t d enie par t(1) = 0 t(n) = t( n/2 ) + t( n/2 ) + n 1 n>2 Version 6 f evrier 2005

36 est t(n) = n log n + 1 2 2.5. Montrer que


n log n

Chapitre 2. Evaluations .

i=1

log i = 2 + (n + 1) log n 21+

log n

2.6.

Donner lexpression exacte de la fonction t d enie par t(1) = 0, t(2) = 2 t(n) = t( n/2 1) + t( n/2 ) + t(1 + n/2 ) + n n>2

2.7.

Montrer que pour t(1) = a t(n) = t( n/2 ) + t( n/2 ) + t(1 + n/2 ) + bn n>1

on a t(n) = (nlog 3 ). 2.8. par Donner une expression pour la fonction t d enie sur les entiers naturels t(n) = 2.9. 0 n=0 1 + t(n 1) n impair 1 + t(n/2) n pair

Montrer que la suite (tn ) d enie par t1 = 1 et tn = n + max


k 1 i=1

1k<n

tni +

n1 i=k

ti

v erie tn 4n. 2.10.

On consid` ere la suite (tn ) d enie par t0 = 1/4 tn = 1 4 tn1

n>0

Montrer que tn = un /un+1 , o` u (un ) est une suite r ecurrente lin eaire dordre 2 ; donner son expression close. Quelle est la limite de tn lorsque n tend vers linni ? 2.11. Montrer que la suite d enie par t(n + 2) = t(0) = a, est p eriodique. Version 6 f evrier 2005 1 + t(n + 1) t(n) t(1) = b n2

37

Chapitre 3

Structures de donn ees


Dans ce chapitre, nous passons en revue les structures de donn ees el ementaires, a ` savoir les piles, les les, les listes, ainsi que les arbres binaires et les arbres binaires de recherche. Nous d ecrivons ensuite les les de priorit e et leur impl ementation au moyen de tas. La derni` ere section traite du probl` eme de la gestion ecace dune partition.

3.1

Types de donn ees et structures de donn ees

Dans un langage de programmation comme Pascal, les objets sont d eclar es avec leur type. Les types constituent une description du format de repr esentation interne des donn ees en machine, et ils sont par l` a-m eme un outil dabstraction, puisquils lib` erent le programmeur du souci de la repr esentation physique des donn ees. Ainsi, il nest pas n ecessaire de savoir comment est repr esent ee une variable de type char ou boolean, voire string, du moment que lon sait la manipuler de la mani` ere convenue. Les types pr ed enis sont peu nombreux. Cest pourquoi des constructeurs de types permettent de d enir des types plus complexes, et donc des structures de donn ees moins el ementaires. L` a encore, limpl ementation pr ecise dun array of char par exemple importe peu au programmeur (est-il rang e par ligne, par colonne ?), aussi longtemps que sa manipulation satisfait a ` des r` egles pr ecises. En revanche, lorsque lon veut r ealiser une pile disons de caract` eres , les probl` emes se posent autrement, puisquil nexiste pas, en Pascal par exemple, de constructeur permettant de d enir des stack of char : il est n ecessaire de recourir a ` une structure de donn ees. Une structure de donn ees est limpl ementation explicite dun ensemble organis e dobjets, avec la r ealisation des op erations dacc` es, de construction et de modication a erentes. Version 6 f evrier 2005

38

Chapitre 3. Structures de donn ees

Un type de donn ees abstrait est la description dun ensemble organis e dobjets et des op erations de manipulation sur cet ensemble. Ces op erations comprennent les moyens dacc eder aux el ements de lensemble, et aussi, lorsque lobjet est dynamique, les possibilit es de le modier. Plus formellement, on peut donner une d enition math ematique dun type abstrait : cest une structure alg ebrique, form ee dun ou de plusieurs ensembles, munis dop erations v eriant un ensemble daxiomes. Avec ces d enitions, une structure de donn ees est la r ealisation, limpl ementation explicite dun type de donn ees. D ecrire un type de donn ees, le sp ecier comme on dit, cest d ecrire les op erations possibles et licites, et leur eet. D ecrire une structure de donn ees, cest expliciter comment les objets sont repr esent es et comment les op erations sont impl ement ees. Pour l evaluation dalgorithmes, il importe de plus de conna tre leur co ut en temps et en place. Du point de vue des op erations, un type abstrait est a ` un type de base dun langage de programmation ce que len-t ete de proc edure est a ` un op erateur. La proc edure r ealise une op eration qui nest pas el ementaire au sens du langage de programmation ; de la m eme mani` ere, un type de donn ees abstrait propose une organisation qui nest pas oerte par le langage. Une r ealisation du type abstrait, cest-` a-dire une impl ementation par une structure de donn ees, correspond alors a ` l ecriture du corps dune proc edure. Le concept de type abstrait ne d epend pas du langage de programmation consid er e, et on peut se livrer a ` lexercice (un peu st erile) de d enir abstraitement les bool eens, les r eels, etc. En revanche, l eventail des types concrets varie dun langage de programmation a ` un autre. Ainsi, les piles existent dans certains langages de programmations, les tableaux ou les cha nes de caract` eres dans dautres. On peut egalement consid erer un type abstrait comme une bo te noire qui r ealise certaines op erations selon des conventions explicites. Cette vision correspond a ` un style de programmation que lon pourrait appeler la programmation disciplin ee. Le programmeur convient dacc eder a ` la r ealisation dun type de donn ees uniquement a ` travers un ensemble limit e de proc edures et de fonctions, et sinterdit notamment tout acc` es direct a ` la structure qui serait rendue possible par une connaissance pr ecise de limpl ementation particuli` ere. De nombreux langages de programmation facilitent ce comportement par la possibilit e de cr eer des modules ou unit es s epar es. Lorsquun type de donn ees est impl ement e, on peut se servir de ses op erations comme op erations el ementaires, et en particulier les utiliser dans limpl ementation de types de donn ees plus complexes. Ceci conduit a ` une hi erarchie de types, o` u lon trouve, tout en bas de l echelle, des types el ementaires comme les bool eens, entiers, r eels, tableaux, a ` un deuxi` eme niveau les piles, les, listes, arbres, puis les les de priorit es, dictionnaires, graphes. La r ealisation ecace de types de donn ees par des structures de donn ees qui impl ementent les op erations de mani` ere optimale en temps et en place constitue Version 6 f evrier 2005

3.2. Les structures lin eaires

39

lune des pr eoccupations de lalgorithmique. Le temps requis par une op eration de manipulation dun type sexprime en fonction du temps requis par les op erations intervenant dans sa r ealisation. Ces op erations elles-m emes sont peut- etre complexes, et impl ement ees dans une autre structure de donn ees. En descendant la hi erarchie, on arrive a ` des op erations el ementaires (op erations arithm etiques ou tests sur des types el ementaires, aectation de scalaires) dont le temps dex ecution est consid er e, par convention, comme constant, et ceci quel que soit le langage de programmation utilis e. Pour les types de donn ees abstraits les plus simples, plusieurs r ealisations ecaces sont faciles a ` obtenir et a ` d ecrire. Il en est ainsi des piles, des les, des listes, et dans une moindre mesure des dictionnaires et des les de priorit es, qui sont des ensembles munis de fonctions dacc` es sp eciques. La r ealisation darbres ayant de bons comportements (arbres 24, bicolores, persistants, voir chapitre 6) requiert en revanche un soin certain.

3.2

Les structures lin eaires

Une liste lin eairesur un ensemble E est une suite nie (e1 , . . . , en ) d el ements de E . La liste est vide si n = 0. Les el ements de la suite sont soit accessibles directement, par leur indice, soit indirectement, quand la liste est repr esent ee par une suite dobjets cha n es. Dans les impl ementations, un indice est repr esent e par une place, et on acc` ede a ` l el ement de E qui gure a ` cette place par une fonction particuli` ere appel ee contenu (ou parfois cl e) (voir gure 2.1). Cette repr esentation

e1

e2

ep

en

Figure 2.1: Une liste et une place. s epare proprement la position dun el ement dans la liste de l el ement lui-m eme. De plus, elle permet de d enir, sur une place, dautres fonctions, comme la fonction successeur qui donne la place suivante. On consid` ere dans cette section plusieurs variantes des listes lin eaires et quelques impl ementations usuelles. Dans une liste, on distingue deux c ot es, le d ebut et la n, et les op erations de manipulation peuvent se faire de chacun des deux c ot es. Selon la nature des op erations autoris ees, on d enit des listes plus ou moins contraintes. Les piles sont des listes o` u linsertion et la suppression ne se font que dun seul et m eme c ot e. Les les permettent linsertion dun c ot e, et la suppression de lautre. Les les bilat` eres permettent les insertions et suppressions des deux c ot es ; enn, les listes ou listes point ees autorisent des insertions et suppressions Version 6 f evrier 2005

40

Chapitre 3. Structures de donn ees

aussi a ` l int erieur de la liste et pas seulement aux extr emit es. De mani` ere tr` es parlante, une pile est appel ee dans la terminologie anglo-saxonne une structure LIFO ( last-in rst-out ) et une le une structure FIFO ( rst-in rst-out ).

3.2.1

Piles

Une pile est une liste lin eaire o` u les insertions et suppressions se font toutes du m eme c ot e. Les noms sp eciques pour ces op erations sont empiler pour ins erer et d epiler pour supprimer. Si la pile nest pas vide, l el ement accessible est le sommet de la pile. La propri et e fondamentale dune pile est que la suppression annule leet dune insertion : si on empile un el ement, puis on d epile, on retrouve la pile dans l etat de d epart. Les op erations sur une pile dont les el ements sont de type e l ement sont les suivantes : pilevide(p : pile) ; Cr ee une pile vide p. sommet(p : pile) : el ement ; Renvoie l el ement au sommet de la pile p ; bien s ur, p doit etre non vide. empiler(x : el ement ; p : pile) ; Ins` ere x au sommet de la pile p. d epiler(p : pile) ; Supprime l el ement au sommet de la pile p ; la pile doit etre non vide. est-pilevide(p : pile) : bool een ; Teste si la pile p est vide. Avant de discuter les impl ementations, donnons un exemple dutilisation de ce type. Exemple. Le tri par insertion dune suite (x1 , . . . , xn ) fonctionne comme suit : si n = 0, la suite est tri ee ; sinon, on trie (x1 , . . . , xn1 ) en une suite croissante, puis on ins` ere xn dans cette suite en le comparant successivement aux el ements de la suite. Plus pr ecis ement, linsertion de x dans une suite L = (y1 , . . . , ym ) se fait par comparaison : si L est vide, le r esultat est (x) ; sinon si x < y1 , le r esultat est (x, y1 , . . . , ym ) ; sinon le r esultat est compos e de y1 et du r esultat de linsertion de x dans (y2 , . . . , ym ). En repr esentant une suite tri ee par une pile, voici comment r ealiser le tri par insertion :

Version 6 f evrier 2005

3.2. Les structures lin eaires

41

proc edure Tri-par-insertion(n, L) ; pilevide(L) ; pour i de 1 a ` n faire Ins erer(xi , L) ; pour i de 1 a ` n faire xi :=sommet(L) ; d epiler(L) npour. avec proc edure Ins erer(x, L) ; si est-pilevide(L) oualors x <sommet(L) alors empiler(x, L) sinon epiler(L) ; y :=sommet(L) ; d Ins erer(x, L) ; empiler(y, L) nsi ; retourner(L).

(Lop erateur oualors est un ou s equentiel : la deuxi` eme partie du test nest evalu ee que si la premi` ere rend la valeur faux. Voir aussi chapitre 1.) La proc edure dinsertion demande un nombre dop erations proportionnel a ` la longueur de L, et la r ealisation du tri par insertion est donc en O (n2 ) op erations. Limpl ementation la plus r epandue dune pile utilise un tableau p et un indice sp (indice de sommet de pile). Lindice indique lemplacement du sommet de pile (une variante consiste a ` d esigner le premier emplacement vide). Avec ces structures, limpl ementation des op erations est la suivante : pilevide(p) se r ealise par sp := 0 ; sommet(p) est : p[sp] ; empiler(x, p) se r ealise par sp := sp + 1 ; p[sp] := x ; d epiler(p) se r ealise par sp := sp 1 ; est-pilevide(p) est : sp = 0 ?. En toute rigueur, un test de d ebordement est n ecessaire dans la proc edure empiler, pour eviter de d epasser les bornes du tableau p.

e1

e2

en

Figure 2.2: Un pile repr esent ee par une liste cha n ee.

Version 6 f evrier 2005

42

Chapitre 3. Structures de donn ees

Limpl ementation par liste simplement cha n ee est s eduisante parce quelle permet une grande souplesse. Une pile est alors r ealis ee par un pointeur vers un couple form e de l el ement au sommet de pile, et dun pointeur vers le couple suivant (voir gure 2.2). En Lisp par exemple, les op erations simpl ementent comme suit : pilevide(p) se r ealise par (setq p nil) ; sommet(p) est (car p) ; empiler(x, p) se r ealise par (setq p (cons x p)) ; d epiler(p) se r ealise par (setq p (cdr p)) ; est-pilevide(p) est (equal p nil). Chacune de ces op erations demande un temps constant.

3.2.2

Files

Une le est une liste lin eaire o` u les insertions se font toutes dun m eme c ot e et les suppressions toutes de lautre c ot e. Les noms sp eciques pour ces op erations sont enler pour ins erer et d eler pour supprimer. Les op erations sur les les sont syntaxiquement les m emes que sur les piles ; cest par leur eet quelles di` erent : l el ement supprim e est le premier arriv e dans la le. Ainsi, une le se comporte donc comme une le dattente ; on dit aussi queue, en anglais rstin rst-out (FIFO). Les op erations sur une le dont les el ements sont de type e l ement sont les suivantes : filevide(f : le) ; Cr ee une le vide f . t ete(f : le) : el ement ; Renvoie l el ement en t ete de la le f ; bien s ur, f doit etre non vide. enfiler(x : el ement ; f : le) ; Ins` ere x a ` la n de la le f . d efiler(f : le) ; Supprime l el ement en t ete de la le f ; la le doit etre non vide. est-filevide(f : le) : bool een ; Teste si la le f est vide. Deux impl ementations des les sont courantes : lune par un tableau avec deux variables dindices, repr esentant respectivement le d ebut et la n de la le, lautre par une liste circulaire. Limpl ementation par tableau est simple, et utile quand on sait borner a priori le nombre dinsertions, comme cela se pr esente souvent dans des algorithmes sur les graphes. Limpl ementation par liste circulaire est plus souple, mais un peu plus complexe (voir gure 2.3). Dans cette impl ementation, une le est rep er ee par un pointeur sur sa derni` ere place (si la le est vide, le pointeur vaut nil). La t ete de la le est donc l el ement suivant, et peut etre facilement supprim ee ; de m eme, linsertion en n de le se fait facilement. Version 6 f evrier 2005

3.2. Les structures lin eaires


tte pointeur

43

d
e

a
b

Figure 2.3: La le (c, a, b, c, c, a, b, d, a, c, c, d). Dans la r ealisation ci-dessous, on utilise les types suivants :
TYPE file = ^bloc; bloc = RECORD cont: element; suiv: file END;

Le type e l ement est suppos e connu. Les en-t etes de proc edure sont :
PROCEDURE FUNCTION PROCEDURE PROCEDURE FUNCTION filevide (VAR f : file); est filevide (f : file): boolean; enfiler (x: element; VAR f : file); defiler (VAR f : file); tete (f : file): element;

La r ealisation fait en plus appel a ` une fonction faireplace qui cr ee un bloc suppl ementaire lorsque cela est n ecessaire.
PROCEDURE filevide (VAR f: file); BEGIN f := NIL END; FUNCTION est filevide (f : file): boolean; BEGIN est filevide := f = NIL END; FUNCTION faireplace (x: element): file; VAR

Version 6 f evrier 2005

44

Chapitre 3. Structures de donn ees


q: file; BEGIN new(q); q^.cont := x; q^.suiv := NIL ; faireplace := q END; PROCEDURE enfiler (x: element; VAR f : file); VAR q: file; BEGIN IF est filevide(f) THEN BEGIN f := faireplace(x); f ^.suiv := f END ELSE BEGIN q := faireplace(x); q ^.suiv := f ^.suiv; f ^.suiv := q; f END END; PROCEDURE defiler (VAR f : file); VAR q: file; BEGIN q := f ^.suiv; IF f = f ^.suiv THEN f := NIL ELSE f ^.suiv := f ^.suiv^.suiv; dispose(q) END; FUNCTION tete (f : file): element; BEGIN tete := f ^.suiv^.cont END;

:= q

3.2.3

Listes

Une liste est une liste lin eaire o` u les insertions et suppressions se font non seulement aux extr emit es, mais aussi a ` lint erieur de la liste. Les listes constituent un type de donn ees tr` es souple et ecace. Ainsi, on peut parcourir des listes (on ne parcourt ni les les ni les piles) sans les d etruire, on peut rechercher un el ement donn e, on peut concat ener des listes, les scinder, etc. Dans la manipulation des listes, la distinction entre les places et leur contenu est importante. Une place est propre a ` une liste, cest-` a-dire ne peut pas etre partag ee entre plusieurs listes ; en revanche, un el ement peut gurer dans plusieurs listes, ou plusieurs fois dans une m eme liste. Version 6 f evrier 2005

3.2. Les structures lin eaires

45

Nous commen cons par d ecrire les op erations de base sur les listes, et exprimons ensuite dautres op erations a ` laide des op erations de base. Les 5 op erations dacc` es sont les suivantes : est-listevide(L : liste) : bool een ; Teste si la liste L est vide. contenu(p : place ; L : liste) : el ement ; Donne l el ement contenu dans la place p ; bien s ur, p doit etre une place de L. premier(L : liste) : place ; Donne la premi` ere place dans L ; ind eni si L est la liste vide. suivant(p : place ; L : liste) : place ; Donne la place suivante ; ind eni si p est la derni` ere place de la liste. est-dernier(p : place ; L : liste) : bool een ; Teste si la place p est la derni` ere de la liste L. Les 4 op erations de construction et de modication sont : listevide(L : liste) ; Cr ee une liste vide L, de longueur 0. ins ererapr` es(x : el ement ; p : place ; L : liste) ; Cr ee une place contenant x et lins` ere a ` la place suivant p dans L. ete(x : el ement ; L : liste) ; ererent ins Cr ee une place contenant x et lins` ere comme premier el ement de L. supprimer(p : place ; L : liste) ; Supprime l el ement qui se trouve a ` la place p dans la liste L : si avant la suppression la liste est (e1 , . . . , ep , . . . , en ), alors apr` es suppression, la liste est (e1 , . . . , ep1 , ep , . . . , en1 ), avec ej = ej +1 pour j = p, . . . , n 1. Au moyen de ces 9 op erations primitives, on peut en r ealiser dautres ; ainsi, t ete(L) =contenu(premier(L), L) donne le premier el ement dune liste L. En voici dautres : chercher(x : el ement ; L : liste) : bool een ; Teste si x gure dans la liste L. trouver(x : el ement ; p : place ; L : liste) : bool een ; Teste si x gure dans la liste L. Dans larmative, p contient la premi` ere place dont le contenu est x. Cette fonction s ecrit comme suit :

Version 6 f evrier 2005

46

Chapitre 3. Structures de donn ees

fonction trouver(x : el ement ; p : place ; L : liste) : bool een ; si est-listevide(L) alors retourner (faux) sinon p :=premier(L) ; tantque x =contenu(p) faire si est-dernier(p) alors retourner (faux) sinon p :=suivant(p) ntantque nsi ; retourner (vrai). On programme la fonction chercher de la m eme mani` ere. Plusieurs impl ementations des listes sont possibles ; le choix de limpl ementation d epend des op erations eectivement utilis ees. Si seules les op erations de base sont utilis ees, on peut employer une impl ementation simple ; pour plus de souplesse, on utilisera une impl ementation par liste doublement cha n ee. Cest elle qui permet notamment de concat ener deux listes, ou de scinder une liste en temps constant. Limpl ementation par un tableau est simple : une place correspond a ` un indice, et la liste est conserv ee dans les premiers emplacements du tableau. Une variable suppl ementaire tient a ` jour la longueur de la liste. Certaines des fonctions sont particuli` erement simples a ` r ealiser, comme suivant ou contenu. Linsertion et la suppression prennent un temps lin eaire en fonction de la taille de la liste, puisquil faut d eplacer toute la partie de la liste a ` droite de la position consid er ee. Dans les arbres par exemple, la liste des ls dun sommet peut etre rang ee dans un tableau, si lon conna t une majoration de leur nombre, comme cest le cas pour les arbres ab (voir chapitre 6). Limpl ementation par une liste cha n ee est plus souple. Une place est un pointeur vers un couple form e de l el ement et dun pointeur vers le couple suivant. Une liste est un pointeur vers un premier couple. Cette structure permet la r ealisation de chacune des 9 op erations de base en un temps constant. En revanche, dautres op erations, comme la concat enation de deux listes, prennent un temps non constant. Limpl ementation par une liste doublement cha n ee circulaire est la plus souple, et permet aussi la r ealisation ecace dop erations suppl ementaires sur les listes. D etaillons cette structure. Une place est un pointeur vers un triplet form e de l el ement et de deux pointeurs, lun vers la place pr ec edente, lautre vers la place suivante. La liste est circulaire, de sorte que la premi` ere place est la place qui suit la derni` ere. Une liste est un pointeur vers le premier el ement de la liste. Il a la valeur nil quand la liste est vide. En Pascal, les d eclarations de type sont :
TYPE place = ^bloc; bloc = RECORD cont: element;

Version 6 f evrier 2005

3.2. Les structures lin eaires


suiv, prec: place END; liste = place;

47

o` ue l ement est un type d eni par ailleurs. Les en-t etes de proc edures et fonctions se d eclarent comme suit :
(* fonctions dacces *) FUNCTION est listevide (L: liste): boolean; FUNCTION contenu (p: place; L: liste): element; FUNCTION premier (L: liste): place; FUNCTION suivant (p: place; L: liste): place; FUNCTION est dernier (p: place; L: liste): boolean; (* constructeurs *) PROCEDURE listevide (VAR L: liste); PROCEDURE insererapres (x: element; p: place; L: liste); PROCEDURE insererentete (x: element; VAR L: liste); PROCEDURE supprimer (VAR p: place; VAR L: liste);

Voici limpl ementation des cinq fonctions dacc` es :


IMPLEMENTATION (* des fonctions dacces *) FUNCTION est listevide (L: liste): boolean; BEGIN est listevide := L = NIL END; FUNCTION contenu (p: place; L: liste): element; BEGIN contenu := p^.cont END; FUNCTION premier (L: liste): place; BEGIN premier := L END; FUNCTION suivant (p: place; L: liste): place; BEGIN suivant := p^.suiv END; FUNCTION est dernier (p: place; L: liste): boolean; BEGIN est dernier := p^.suiv = L END;

Pour limpl ementation des fonctions de construction, nous utilisons quelques proc edures auxiliaires.
PROCEDURE chainer (p, q: place); BEGIN

Version 6 f evrier 2005

48
q^.prec := p; p^.suiv := q END;

Chapitre 3. Structures de donn ees

Cette proc edure lie deux places (gure 2.4). Elle est utilis ee pour cr eer, ins erer et supprimer une place.
p q p q

Figure 2.4: Eet de chainer(p,q). La proc edure dechainer (gure 2.5) d elie une place.

Figure 2.5: Eet de dechainer(q).


FUNCTION faireplace (x: element): place; VAR q: place; BEGIN new(q); faireplace := q; q^.cont := x; chainer(q, q) END; PROCEDURE enchainer (p, q: place); BEGIN chainer(q, p^.suiv); chainer(p, q) END; PROCEDURE dechainer (q: place); BEGIN chainer(q^.prec, q^.suiv); dispose(q) END;

Les constructeurs s ecrivent :


IMPLEMENTATION (* des constructeurs *) PROCEDURE listevide (VAR L: liste); BEGIN L := NIL END;

Version 6 f evrier 2005

3.2. Les structures lin eaires


PROCEDURE insererapres (x: element; p: place; L: liste); VAR q: place; BEGIN q := faireplace(x); enchainer(p, q) END; PROCEDURE insererentete (x: element; VAR L: liste); VAR q: place; BEGIN IF est listevide(L) THEN L := faireplace(x) ELSE BEGIN q := faireplace(x); enchainer(L^.prec, q); L := q END END; PROCEDURE supprimer (VAR p: place; VAR L: liste); VAR q: place; BEGIN q := p; p := p^.suiv; IF p = q THEN L := NIL ELSE BEGIN IF q = L THEN L := p; dechainer(q) END; dispose(q) END;

49

Voici quelques fonctions ou op erations sur les listes qui sont faciles a ` r ealiser avec les listes doublement cha n ees : dernier(L : liste) : place ; Donne la derni` ere place dans L ; ind eni si L est la liste vide. suivant-cyclique(L : liste) : place ; Donne la place suivante dans L, et la premi` ere place de L si p est la derni` ere ; ind eni si L est la liste vide. ce dent(p : place ; L : liste) : place ; pre Donne la place pr ec edente ; ind eni si p est la premi` ere place de L. ins erer-dirig e(x : el ement ; p : place ; L : liste ; d : direction) ; Ins` ere x apr` es la place p dans L si d =apr` es, et avant p si d =avant. ins erer-en-queue(x : el ement ; L : liste) ; Ins` ere x en n de liste. Version 6 f evrier 2005

50

Chapitre 3. Structures de donn ees

concat ener(L1 , L2 : liste) ; Accroche la liste L2 a ` la n de la liste L1 : Si L1 = (e1 , . . . , en ) et L2 = (e1 , . . . , em ), alors la proc edure retourne L1 = (e1 , . . . , en , e1 , . . . , em ). scinder(L : liste ; p : place ; L1 , L2 : liste) ; Coupe la liste L en deux listes L1 et L2 telles que p soit la derni` ere place de L1 . La liste L est suppos ee non vide. Voici une impl ementation, en temps constant, des deux derni` eres op erations :
PROCEDURE concatener (VAR L1: liste; L2: liste); VAR q1, q2: place; BEGIN IF L1 = NIL THEN L1 := L2 ELSE IF L2 = NIL THEN ELSE BEGIN q1 := dernier(L1); q2 := dernier(L2); chainer(q1, L2); chainer(q2, L1) END END; PROCEDURE scinder (L: liste; p: place; VAR L1, L2: liste); VAR q: place; BEGIN L1 := L; IF est dernier(p, L) THEN L2 := NIL ELSE BEGIN L2 := p^.suiv; q := dernier(L); chainer(p, L1); chainer(q, L2) END END;

Le parcours dune liste doublement cha n ee, avec lex ecution dune instruction not ee I pour chaque place, se fait en temps lin eaire, par : si non est-listevide(L) alors p :=premier(L) ; r ep eter I; p :=suivant-cyclique(p) jusqu` a p =premier(L) nsi. Remarquons que, dans limpl ementation par une liste simplement cha n ee, chaque place pointe en fait sur une liste, a ` savoir sur le reste de la liste commen cant a ` cette Version 6 f evrier 2005

3.3. Arbres

51

place. Naturellement, la place suivant la derni` ere est alors la liste vide, en g en eral repr esent ee par nil. On peut donc parcourir une telle liste par linstruction tantque p = nil faire I ; p :=suivant(p) ntantque. Proposition 2.1. Les op erations de liste premier, dernier, suivant, concat ener, scinder se r ealisent en temps O (1). Les op erations chercher, trouver, supprimer et le parcours dune liste se r ealisent en temps O (n), o` u n est la longueur de la liste.

3.3

Arbres

On consid` ere dabord limpl ementation des arbres binaires, puis des arbres plus g en eraux. Au chapitre suivant, nous etudions plus en d etail ces familles darbres, et nous nous bornons ici aux structures de donn ees.

3.3.1

Arbres binaires

La repr esentation la plus naturelle des arbres binaires sappuie sur leur d enition r ecursive : un arbre binaire est soit larbre vide, soit form e dune racine et de deux arbres binaires disjoints, appel es sous-arbres gauche et droit (voir section 4.3.4). Lorsque larbre est etiquet e, ce qui est le cas notamment pour les arbres binaires de recherche, un sommet comporte un champ suppl ementaire, qui est son contenu ou sa cl e. Nous commen cons par d ecrire les op erations de base sur les arbres binaires etiquet es, et exprimons ensuite dautres op erations a ` laide de ces op erations de base. Les 5 op erations dacc` es sont les suivantes : est-arbrevide(a : arbre) : bool een ; Teste si larbre a est vide. contenu(s : sommet) : el ement ; Donne l el ement contenu dans le sommet s. racine(a : arbre) : sommet ; Donne le sommet qui est la racine de a ; ind eni si a est larbre vide. sous-arbre-gauche(a : arbre) : arbre ; Donne le sous-arbre gauche ; ind eni si a est larbre vide. sous-arbre-droit(a : arbre) : arbre ; Donne le sous-arbre droit ; ind eni si a est larbre vide. Les op erations de construction et de modication sont : arbrevide(a : arbre) ; Cr ee un arbre vide a. faire-arbre(x : el ement ; g , d : arbre) : arbre ; Version 6 f evrier 2005

52

Chapitre 3. Structures de donn ees

Cr ee un sommet qui contient x, et retourne larbre ayant ce sommet pour racine, et g et d comme sous-arbres gauche et droit. (x : fixer-cle el ement ; a : arbre) ; Le contenu de la racine de a devient x. Ind eni si a est larbre vide. fixer-gauche(g : arbre ; a : arbre) ; Remplace le sous-arbre gauche de a par g . Ind eni si a est larbre vide. fixer-droit(d : arbre ; a : arbre) ; Remplace le sous-arbre droit de a par d. Ind eni si a est larbre vide. Les trois derni` eres op erations peuvent etre r ealis ees a ` laide de faire-arbre : par exemple, fixer-cl e(x, a) est equivalent a ` faire-arbre(x, G(a), D (a)). Pour faciliter l ecriture et la lecture, nous abr egeons sous-arbre-gauche en G et sous-arbre-droit en D . Si nous les introduisons explicitement, cest par souci decacit e dans les impl ementations : il ny a pas lieu de cr eer un nouveau sommet si lon veut simplement changer son contenu. A laide de ces op erations de base, on peut d enir de nombreuses autres op erations. Il est par exemple commode de disposer de labr eviation : cl e(a : arbre) : el ement ; Donne le contenu de la racine de a, ind eni si a est vide. ainsi que dop erations sur les feuilles, comme : est-feuille(a : arbre) : bool een ; Teste si la racine de larbre a est une feuille ; ind eni si a est vide. faire-feuille(x : el ement) : arbre ; Cr ee un arbre r eduit a ` un seul sommet qui contient x. Bien entendu, faire-feuille(x) sobtient par arbrevide(g ), arbrevide(d), suivi de faire-arbre(x, g, d), et est-feuille(a) est egal a ` la conjonction de est-arbrevide(G(a)) et est-arbrevide(D (a)) Dans certains cas, il est commode de disposer de fils-gauche et de fils-droit, proc edures qui rendent la racine du sous-arbre gauche, respectivement droit.

3.3.2

Dictionnaires et arbres binaires de recherche

Un dictionnaire est un type de donn ees op erant sur les el ements dun ensemble totalement ordonn e, appel es les cl es et dot e des op erations suivantes : dicovide(d : dictionnaire) ; Cr ee un dictionnaire d vide.

Version 6 f evrier 2005

3.3. Arbres est-dicovide(d : dictionnaire) : bool een ; Teste si le dictionnaire d est vide. chercher(x : cl e ; d : dictionnaire) : bool een ; Teste si la cl e x gure dans le dictionnaire d. ins erer(x : cl e ; d : dictionnaire) ; Ins` ere x dans le dictionnaire d. supprimer(x : cl e ; d : dictionnaire) ; Supprime x dans le dictionnaire d.

53

Les arbres binaires de recherche se pr etent particuli` erement bien a ` limpl ementation des dictionnaires. On les verra en d etail au chapitre 6. Il sut ici de savoir quun arbre binaire de recherche est un arbre binaire dont chaque sommet est muni dune cl e prise dans un ensemble totalement ordonn e. De plus, pour chaque sommet de larbre, les cl es contenues dans son sous-arbre gauche sont strictement inf erieures a ` la cl e du sommet consid er e et cette cl e est elle-m eme strictement inf erieure aux cl es contenues dans le sous-arbre droit. En dautres termes, un parcours sym etrique de larbre, comme d ecrit au chapitre 4, donne une liste des cl es en ordre croissant. Donnons dabord les en-t etes des op erations, qui sont les m emes que dans un arbre : chercher(x : cl e ; a : arbre) : bool een ; Teste si x gure dans larbre a. ins erer(x : cl e ; a : arbre ) ; Ins` ere x dans larbre a selon lalgorithme expos e ci-dessous ; on suppose que x ne gure pas dans a, et on cr ee donc un sommet dont la cl e est x. supprimer(x : cl e ; a : arbre) ; Supprime la cl e x et un sommet de larbre a selon lalgorithme expos e ci-dessous ; on suppose que x gure dans a. Voici la r ealisation de la recherche dans un arbre : fonction chercher(x : cl e ; a : arbre) : bool een ; si est-arbrevide(a) alors retourner (faux) sinon si x=cl e(a) alors retourner (vrai) sinon si x <cl e(a) alors retourner chercher(x, G(a)) sinon retourner chercher(x, D (a)). Pour linsertion, on proc` ede de mani` ere similaire :

Version 6 f evrier 2005

54

Chapitre 3. Structures de donn ees proc edure ins erer(x : cl e ; a : arbre) ; si est-arbrevide(a) alors a :=faire-feuille(x) sinon si x <cl e(a) alors ins erer(x, G(a)) sinon ins erer(x, D (a)).

(La r ealisation, en Pascal par exemple, de cette proc edure pose quelques probl` emes techniques car on ne peut transmettre en r ef erence le r esultat de l evaluation dune fonction...) La suppression est plus dicile a ` r ealiser parce quil faut conserver lordre sur larbre r esultat. Soit x la cl ea ` supprimer, et soit s le sommet dont x est le contenu. Si s est une feuille, il sut de la supprimer. Si s na quun seul ls, on le remplace par son ls unique. Si s a deux ls, on cherche son descendant t dont le contenu le pr ec` ede dans lordre inxe : cest le sommet le plus a ` droite dans son sous-arbre gauche. On supprime ce sommet (qui na pas de ls droit), apr` es avoir remplac e le contenu de s par le contenu de t. (On pourrait aussi bien, sym etriquement, remplacer le contenu de s par celui du sommet qui lui succ` ede dans lordre inxe.) Voici une r ealisation de cet algorithme :

proc edure supprimer(x : cl e ; a : arbre ) ; si x <cl e(a) alors supprimer(x, G(a)) sinon si x >cl e(a) alors supprimer(x, D (a)) sinon si est-arbrevide(G(a)) alors a := D (a) sinon si est-arbrevide(D (a)) alors a := G(a) sinon fixer-cl e(supprimer-max(G(a)), a).

Lappel a ` la fonction supprimer-max se fait donc dans le cas o` u larbre a deux sous-arbres non vides, et o` u le contenu de la racine de a est a ` supprimer. La fonction supprimer-max r ealise a ` la fois la suppression du sommet de plus grande cl e parmi les descendants, et retourne le contenu de ce sommet.

fonction supprimer-max(a : arbre ) : cl e; si est-arbrevide(D (a)) alors supprimer-max :=cle(a) ; arbrevide(a) sinon supprimer-max :=supprimer-max(D (a)).

Plusieurs impl ementations des arbres sont possibles ; la plus souple utilise des pointeurs. A chaque sommet on associe deux pointeurs, lun vers le sous-arbre Version 6 f evrier 2005

3.3. Arbres

55

gauche, lautre vers le sous-arbre droit. Un arbre est donn e par un pointeur vers sa racine. Un sommet comporte en plus un champ qui contient la cl e associ ee. On est donc conduit a ` d enir les types suivants :
TYPE arbre = ^sommet; sommet = RECORD val: element; g, d: arbre END;

3.3.3

Arborescences

Une arborescence ordonn ee simpl emente en associant, a ` chaque sommet, la liste lin eaire de ses ls. Lorsque le nombre de ls est born e a priori, comme cest le cas par exemple pour les arbres ab (voir chapitre 6), on utilisera un tableau pour repr esenter cette liste, sinon une liste cha n ee. Ainsi, a ` chaque sommet est associ e un couple (premier ls, fr` ere droit). Cette fa con dimpl ementer les arborescences ordonn ees revient en fait a ` se ramener aux arbres binaires. Plus formellement, on associe a ` chaque sommet s dune arborescence ordonn ee un sommet (s) dun arbre binaire dont le ls gauche est limage, par , du premier ls de s, et le ls droit limage du fr` ere suivant de s si s a un fr` ere, larbre vide sinon. La gure 3.1 explique la construction.
1 2 2 5 3 6 4 5 7 6 8 7 8 3 4 1

Figure 3.1: Une arborescence repr esent ee comme arbre binaire. Les autres types darbres ou darborescences simpl ementent comme des arborescences ordonn ees.

Version 6 f evrier 2005

56

Chapitre 3. Structures de donn ees

3.4

Files de priorit e

Les les de priorit e constituent un type de donn ees int eressant, et qui illustre bien comment une hi erarchie de structures peut permettre dimpl ementer un type de donn ees. Une le de priorit e est un type de donn ees op erant sur des cl es, donc sur les el ements dun ensemble totalement ordonn e, et muni des op erations suivantes : filePvide(f : leP) ; Cr ee une le de priorit e f vide. est-filePvide(f : leP) : bool een ; Teste si la le de priorit e f est vide. minimum(f : leP) : cl e; Donne la plus petite cl e contenue dans f . supprimer-min(f : leP) ; Supprime la plus petite cl e de f ; ind eni si f est vide. ins erer(x : cl e ; f : leP) ; Ins` ere x dans la le de priorit e f. Il est commode de disposer de la combinaison de minimum et de supprimer-min sous la forme : extraire-min(f : leP) : cl e; Donne la plus petite cl e de f , et la supprime de f ; ind eni si f est vide. Fr equemment, et notamment dans les algorithmes de tri, on convient quune m eme cl e peut gurer plusieurs fois dans une le. Si les cl es sont toutes distinctes, on peut r ealiser une le de priorit ea ` laide dun arbre binaire de recherche. Lecacit e des op erations d epend alors de lecacit e de linsertion et de la suppression de la plus petite cl e dans un arbre binaire de recherche. On verra au chapitre 6 comment ces op erations peuvent etre r ealis ees en temps logarithmique, moyennant un r e equilibrage de larbre binaire. Nous pr esentons ici une autre impl ementation, au moyen dun tas. Un tas est un arbre tournoi parfait, d eni ci-dessous. On verra comment impl ementer un tas tr` es simplement a ` laide dun tableau.

Figure 4.1: Les arbres parfaits a ` 6, 7, et 8 sommets. Un arbre parfait est un arbre binaire dont toutes les feuilles sont situ ees sur deux niveaux au plus, lavant-dernier niveau est complet, et les feuilles du dernier Version 6 f evrier 2005

3.4. Files de priorit e

57

niveau sont regroup ees le plus a ` gauche possible. La gure 4.1 donne des exemples darbres parfaits. Notons quil ny a quun seul arbre parfait a ` n sommets, pour chaque entier n. Un arbre tournoi est un arbre binaire dont les sommets sont munis dune cl e, et tel que pour tout sommet autre que la racine, la cl e du sommet est plus grande que celle de son p` ere. En dautres termes, les cl es sur un chemin croissent de la racine vers une feuille.
1 4 6 9 8 3 5 7

Figure 4.2: Un arbre tournoi. La gure 4.2 montre un arbre tournoi, et la gure 4.3 un tas (arbre tournoi parfait).
1 3 6 8 7 9 5 2 4

Figure 4.3: Un tas (tournoi parfait). Sur les arbres parfaits, on utilise certaines des op erations sur les arbres binaires : est-arbrevide, arbrevide, racine, p` ere, fils-gauche, fils-droit. Par ailleurs, on d enit les op erations sp eciques suivantes : est-feuille, qui teste si le sommet en argument est une feuille ; derni` ere-feuille, qui donne la feuille la plus a ` droite du dernier niveau de larbre ; eer-feuille, qui cr ee une feuille au dernier niveau de larbre, ou encr tame un niveau suppl ementaire si le dernier niveau est plein. supprimer-feuille, qui supprime cette feuille. Ces op erations conservent donc la perfection dun arbre. Pour les arbres tournoi, la fonction contenu donne le contenu (la cl e) dun sommet, et on fait appel echanger-contenu(p, q ) qui echange les cl es a ` une proc edure suppl ementaire, des sommets p et q . Etudions comment on impl emente les op erations des les de priorit es au moyen des op erations des tas. La d etermination du minimum est evidente : cest le contenu de la racine du tas. Elle se fait donc en temps constant. Version 6 f evrier 2005

58

Chapitre 3. Structures de donn ees

Pour linsertion dune cl e x, on cr ee dabord une feuille contenant cet el ement (et qui est donc ajout ee au dernier niveau du tas) ; ensuite on compare son contenu a ` celui de son p` ere ; sil est plus petit, on l echange, et on continue en progressant vers la racine du tas. Voici comment cette proc edure se r ealise :

rertas(x : cl proc edure inse e ; a : tas) ; q :=creer-feuille(x, a) ; tantque q =racine(a) etalors contenu(p` ere(q )) >contenu(q ) faire ` echanger-contenu(q,pere(q )) ; q :=pere(q ) ntantque.

Lextraction de la plus petite cl e se fait sur un canevas similaire : fonction extrairemin(a : tas) ; extrairemin :=contenu(racine(a)) ; changer-contenu(racine(a),derni` e ere-feuille(a)) ; supprimer-feuille(a) ; si est-arbrevide(a) est faux alors p :=racine(a) ; tantque non est-feuille(p) faire f :=fils-min(p, a) ; si contenu(f ) <contenu(p) alors echanger-contenu(f, p) sinon exit ; p := f ntantque nsi. On remplace donc le contenu de la racine par le contenu de la derni` ere feuille. Cette feuille est supprim ee. Puis, on descend de la racine vers les feuilles pour mettre la cl e a ` une place convenable si elle ne lest pas, cest a ` dire si elle est plus grande que lune des cl es des ls. Si le sommet en question a deux ls, on echange la cl e du p` ere avec la plus petite des cl es de ses ls. On obtient ainsi une correction locale ; on poursuit lop eration tant que n ecessaire. Revenons a ` lexemple de la gure 4.3. La suppression de la cl e 1 am` ene la cl e7a ` la racine. La descente qui sensuit est illustr ee sur la gure 4.4. La fonction fils-min(p, a) retourne le ls de p dont le contenu est le plus petit. Elle s ecrit :

Version 6 f evrier 2005

3.4. Files de priorit e


7 3 6 8 9 5 2 4 8 6 3 9 5 2 7 4 8 6 3 9 5 2 4 7

59

Figure 4.4: Mise en place de la cl e 7 par comparaison aux ls.

fonction fils-min(p : sommet ; a : tas) : sommet ; g :=fils-gauche(p) ; si g =derni` ere-feuille(a) alors fils-min:= g sinon d :=fils-droit(p) ; si contenu(g ) <contenu(d) alors fils-min:= g sinon fils-min:= d nsi. Il est clair que la hauteur dun tas est logarithmique en fonction du nombre de ses sommets, donc que linsertion et lextraction dune cl e prennent un temps logarithmique, sous r eserve que les op erations el ementaires simpl ementent en temps constant. Comme nous lavons annonc e plus haut, il existe une impl ementation tr` es ecace des tas a ` laide dun couple form e dun tableau a et dun entier n donnant le nombre de cl es pr esents dans le tas. Les sommets du tas etant num erot es niveau par niveau de la gauche vers la droite, chaque sommet est repr esent e par lindice dune cl e dun tableau a. Le contenu dun sommet p est rang e dans a[p], et est donc accessible en temps constant. Passons en revue les op erations ; en face de leur nom, nous indiquons leur r ealisation : est-arbrevide arbrevide racine p` ere(p) fils-gauche(p) fils-droit(p) n = 0? n := 0 1 p/2 2p 2p + 1

Les autres op erations se r ealisent aussi simplement : est-feuille(p) derni` ere-feuille cr eer-feuille(x, a) supprimer-feuille contenu(p) p > n/2 ? n n := n + 1; a[n] := x n := n 1 a[p] Version 6 f evrier 2005

60

Chapitre 3. Structures de donn ees

Seule la proc edure echanger-contenu(p, q ) qui echange les cl es des sommets p et q , demande trois instructions. Lecacit e pratique de la r ealisation des les de priorit es est evidemment am elior ee si lon travaille directement sur le tableau, et si lon remplace les appels de proc edures par les instructions correspondantes. Voici une impl ementation concr` ete. On d enit les types :
TYPE sommet = 1..taillemax; tas = RECORD n: integer; a: ARRAY[sommet] OF cle END;

o` u taillemax et cle sont pr ed enis. La traduction des proc edures ci-dessus se fait litt eralement, comme suit :
PROCEDURE inserertas (x: cle; VAR t: tas); VAR q: sommet; BEGIN WITH t DO BEGIN n := n + 1; a[n] := x; q := n; WHILE (q <> 1) AND (a[q DIV 2] > a[q]) DO BEGIN echanger(a[q], a[q DIV 2]); q := q DIV 2 END END; END; FUNCTION extrairemin (VAR t: tas): cle; VAR p, f: sommet; FUNCTION fils min (q: sommet): sommet; VAR g: sommet; BEGIN WITH t DO BEGIN g := 2 * q; fils min := g; IF (g < n) AND (a[g] > a[g + 1]) THEN fils min := g + 1 END END; (* de "fils min" *) BEGIN WITH t DO BEGIN extrairemin := a[1]; echanger(a[1], a[n]); n := n - 1;

Version 6 f evrier 2005

3.5. Gestion des partitions


IF n > 0 THEN BEGIN p := 1; WHILE 2 * p <= n DO BEGIN f := fils min(p); IF a[f] < a[p] THEN echanger(a[f], a[p]) ELSE exit(extrairemin); p := f END; END END END; (* de "extrairemin" *)

61

Bien entendu, echanger est une proc edure d echange de deux cl es.

3.5
3.5.1

Gestion des partitions


Le probl` eme union-nd

Dans cette section, nous consid erons le probl` eme de la gestion ecace dune partition dun ensemble U = {1, . . . , N }. Les op erations consid er ees sont trouver(x) Donne le nom de la classe a ` laquelle appartient l el ement x de U .

unir(A, B, C ) Donne une nouvelle classe, de nom C , qui est la r eunion des classes de noms A et B . Ce probl` eme est appel e le probl` eme de lunion et recherche ( union-nd problem en anglais) ; il appara t dans de nombreuses situations, et notamment dans la recherche dun arbre couvrant minimum consid er e plus loin. Dans la suite, nous supposerons que la partition initiale est la partition la plus ne, dont les classes sont compos ees dun seul el ement. Les noms des classes sont des entiers dans {1, . . . , N }, et au d ebut, le nom de la classe {i} est i.

Une solution simple du probl` eme est de repr esenter la partition par un tableau classe de taille N qui, pour un el ement x U contient le nom classe[x] de la classe contenant x. Lop eration trouver se r eduit au calcul de classe[x]. Lop eration unir(A, B, C ) est simple mais plus longue : on parcourt le tableau classe et on remplace tous les A et B par C . La solution que nous consid erons maintenant en d etail utilise une structure plus elabor ee. Chaque classe est repr esent ee par une arborescence, et la partition est repr esent ee par une for et. Le nom dune classe est la racine de son arborescence (voir gure 5.1). Version 6 f evrier 2005

62
1 8 9 5 4 2 3

Chapitre 3. Structures de donn ees


7

6 10

Figure 5.1: Partition en trois classes, de noms 1, 3, et 7. La for et est rang ee dans un tableau qui, pour chaque el ement x autre quune racine, donne le p` ere de x. Le p` ere dune racine est par exemple le nombre 0. Avec cette repr esentation, on a : trouver(x) Donne le nom de la racine de larborescence contenant x. unir(x, y, z ) Prend les arborescences de racines x et y , et en fait une arborescence de racine z ; z est soit egal a ` x, soit egal a ` y.

3.5.2

Union pond er ee et compression des chemins

Clairement, unir(x, y, z ) se r ealise en temps constant. Le temps dex ecution dun trouver(x) est proportionnel a ` la profondeur de x. Si au total n unions sont ex ecut ees, ce temps est au plus O (n). On peut r eduire consid erablement ce temps si lon parvient a ` eviter la formation darborescences trop liformes . Pour cela, il convient de r ealiser lunion de mani` ere plus soign ee. On utilise a ` cet eet la r` egle dite de lunion pond er ee. Lors de lex ecution de unir(x, y, z ), la racine de la plus petite des deux arborescences est accroch ee comme ls a ` la racine de la plus grande. Appelons taille de x le nombre de sommets de larborescence de racine x. Alors lunion pond er ee se r ealise en temps constant par la proc edure que voici :

proc edure union-pond er ee(x, y, z ) ; si taille[x] <taille[y ] alors z := y ; p` ere[x] := y sinon z := x ; p` ere[y ] := x nsi ; taille[z ] :=taille[x]+taille[y ].

Nous allons voir que cette r` egle est tr` es ecace. Notons ti (x) et hi (x) la taille et la hauteur du sommet x apr` es la i-i` eme op eration dunion pond er ee. On a t0 (x) = 1, Version 6 f evrier 2005

3.5. Gestion des partitions

63

h0 (x) = 0. Si la i-i` eme union pond er ee est unir(x, y, z ), et si ti1 (x) < ti1 (y ), alors z = y , et on a ti (x) = ti1 (x), hi (x) = hi1 (x), ti (y ) = ti1 (x) + ti1 (y ) hi (y ) = max(1 + hi1 (x), hi1 (y ))

Lemme 5.1. Si lon utilise la r` egle de lunion pond er ee, alors ti (x) 2hi (x) pour tout x U . En particulier, apr` es n unions, on a hn (x) log(n + 1). Preuve. Si hi (x) = 0, alors ti (x) = 1. Supposons donc hi (x) 1. Alors x a un ls y avec hi (y ) = hi (x) 1. Consid erons lop eration dunion pond er ee qui a fait de y un ls de x. Si cette op eration est la j -i` eme, avec j i, alors tj 1 (x) tj 1 (y ), et donc tj (y ) = tj 1 (y ) et tj (x) 2 tj (y ). Ensuite, comme y nest plus racine dune arborescence, sa taille ne varie plus. En revanche, la taille de x peut augmenter. De m eme, la hauteur de y ne varie plus, donc hi (y ) = hj 1 (y ). Par r ecurrence, on hj 1 (y ) a tj 1 (y ) 2 , donc ti (x) tj (x) 2 tj (y ) 2 2hi (y) = 2hi (x) . Comme n unions ne cr eent que des arborescences dau plus n + 1 sommets, on a tn (x) n + 1 pour tout x, do` u la seconde in egalit e. Proposition 5.2. Avec la repr esentation par for et et la r` egle de lunion pond er ee, une suite de n 1 op erations union-pond er ee et de m op erations trouver se r ealise en temps O (n + m log n). Preuve. Chaque union pond er ee prend un temps O (1). De plus, chaque arborescence obtenue durant les n 1 unions a une hauteur au plus log n, donc une op eration trouver prend un temps O (log n). Une autre fa con de diminuer le co ut des trouver est la compression des chemins. Si lon ex ecute un trouver(x), on parcourt un chemin x0 , x1 , . . . , x de x = x0 vers la racine r = x de larborescence contenant x. On peut comprimer ce chemin en faisant un deuxi` eme parcours du chemin pendant lequel on fait, de chaque sommet xi , 0 i < , un ls de la racine r (voir gure 5.2). M eme si cette compression ne r eduit pas le co ut de ce trouver (en fait, elle en double le co ut), les co uts des trouver subs equents qui sappliquent aux sommets dans les sous-arbres des xi sont fortement r eduits. Voici la r ealisation du trouver avec compression :

Version 6 f evrier 2005

64
8 2

Chapitre 3. Structures de donn ees

8 4 9 5 5 9 4 2

Figure 5.2: Compression dun chemin. proc edure trouver-avec-compression(x) ; r := x ; tantque r nest pas racine faire r :=p` ere[r ] ntantque ; tantque x = r faire y :=p` ere[x] ; p` ere[x] := r ; x := y ntantque ; retourner(r ). La compression des chemins seule conduit d ej` aa ` un algorithme ecace. La combinaison de la compression des chemins et de lunion pond er ee fournit un algorithme tr` es ecace, dont le temps dex ecution est presque lin eaire. Pour les valeurs des param` etres que lon rencontre en pratique, lalgorithme est lin eaire. Pour pouvoir pr esenter lanalyse de lalgorithme, nous avons besoin dune notation. Soit A : N N N la fonction d enie par A(i, 0) = 1 pour i 1 ; A(0, j ) = 2j pour j 0 ; A(i + 1, j + 1) = A(i, A(i + 1, j )) pour i, j 0.

3 1 2 4 65536 Soit la fonction d enie pour m n par

Cette fonction est une variante de la fonction dAckermann. Elle cro t tr` es rapidement, et nest pas primitive r ecursive. Voici une table des premi` eres valeurs de A : 0 1 2 3 4 5 i\j 0 0 2 4 6 8 10 1 1 2 4 8 16 32 2 1 2 4 16 65536 265536 )
2
2

65536 fois

(m, n) = min{z 1 | A(z, 4 m/n ) > log n} Version 6 f evrier 2005

3.5. Gestion des partitions

65

Cette fonction est une sorte dinverse de la fonction A, et cro t tr` es lentement. Pour m n, on a (m, n) (n, n). On a (n, n) = 1 pour 1 n < 216 , et (n, n) = 2 pour 216 n < 265536 . Pour des valeurs de m et n apparaissant en pratique, on a donc (m, n) 2. Nous allons prouver le r esultat suivant, dont la d emonstration nest pas facile, et peut etre omise en premi` ere lecture :

Th eor` eme 5.3. Avec les r` egles de lunion pond er ee et de la compression des chemins, une suite de n 1 op erations unir et de m op erations trouver (m n) se r ealise en temps O (m (m, n)). Note Pour d emontrer le th eor` eme 5.3, nous reformulons le probl` eme. Soit T une for et 3.5.1 obtenue par n 1 op erations unir avec la r` egle de lunion pond er ee. Nous autorisons que la for et soit ensuite modi ee par ce que nous appelons des trouver partiels . Un trouver partiel dans une arborescence parcourt un chemin x0 , x1 , . . . , xk dun sommet x0 a ` un sommet xk qui nest pas n ecessairement la racine. Ensuite, chacun des sommets x0 , x1 , . . . , xk1 est fait ls du sommet xk . Le co ut du trouver partiel est k . Il est facile de voir quune suite arbitraire de n 1 op erations unir et de m trouver peut etre simul ee par une suite de n 1 unir suivie dune suite de m trouver partiels, et que le co ut de la simulation est le co ut de la suite originelle. En eet, les unir de la simulation sont juste les unir de la suite de d epart, et chaque trouver de la suite de d epart est remplac e par un trouver partiel avec les m emes extr emit es. Il sut donc de d emontrer la majoration pour une suite de n 1 op erations unir suivies de m trouver partiels. Soit T la for et obtenue apr` es les n 1 op erations unir, et soit h(x) la hauteur dun sommet x dans T . Pour chaque arc (x, y ) de T (les arcs sont orient es en direction de la racine), on a h(x) < h(y ).

3.5.3

Preuve du th eor` eme

Le co ut total des trouver partiels est proportionnel au nombre darcs parcourus lors de tous les trouver partiels. Soit F lensemble de ces arcs. Nous allons montrer que |F | = O (m(m, n)) en r epartissant les arcs en groupes, et en evaluant le nombre darcs dans chaque groupe. La r epartition des arcs de F se fait en fonction de la hauteur de leurs extr emit es. Cest pourquoi on d enit, pour i, j 0, les ensembles de sommets Gi,j = {x | A(i, j ) h(x) < A(i, j + 1)}. Ainsi, on a par exemple G0,0 = {x | 0 h(x) 1} Gk,0 = {x | h(x) = 1} Gk,1 = {x | 2 h(x) 3} pour k 1 pour k 0 Version 6 f evrier 2005

66

Chapitre 3. Structures de donn ees

Lemme 5.4. Pour k 0 et j 1, on a |Gk,j | 2n/2A(k,j ) . Preuve. Soit 1 un entier avec A(k, j ) < A(k, j + 1), et comptons le nombre de sommets x tels que h(x) = . Deux sommets distincts de hauteur sont racines de sous-arbres disjoints, et la taille du sous-arbre est, dapr` es le lemme 5.1, au moins 2 . Il y a donc au plus n/2 sommets de hauteur . Par cons equent, |Gk,j |
A(k,j +1)1 =A(k,j )

2n n A(k,j ) 2 2

Lensemble F des arcs des trouver partiels est r eparti en classes Nk pour k = 0, . . . , z + 1, o` u z est un param` etre x e ult erieurement et une classe N par : Nk = {(x, y ) F | k = min{i | j : x, y Gi,j }} pour 0 k z , et N = {(x, y ) F | h(x) = 0, h(y ) 2} enn Nz +1 = F N Nk
0k z

Pour un i 1 x e, les nombres A(i, j ), (j 0) partitionnent les entiers positifs en intervalles [A(i, j ), A(i, j + 1)[, et (x, y ) Nk si k est le plus petit entier i tel que les hauteurs de x et y appartiennent au m eme intervalle relativement aux nombres A(i, j ), j 0. Dans Nz +1 on trouve tous les arcs (x, y ) pour lesquels ce nombre est plus grand que k , a ` lexception des arcs (x, y ) pour lesquels x est une feuille. Ceux-ci se r epartissent dans N0 si h(y ) = 1, et dans N , si h(y ) 2. Posons, pour 0 k z + 1, Lk = {(x, y ) Nk | sur le chemin du trouver partiel contenant (x, y ), larc (x, y ) est le dernier arc dans Nk } Notons en eet que si (x, y ) gure sur le chemin dun trouver partiel, les sommets x et y deviennent ensuite fr` eres, donc ne peuvent plus se retrouver sur un tel chemin. Lemme (1) (2) (3) (4) 5.5. On a les in egalit es suivantes : |Lk | m pour 0 k z + 1 ; |N | m ; |N0 L0 | n ; |Nk Lk | n pour 1 k z ; |Nz +1 Lz +1 | b(z, n), avec b(z, n) = min{i | A(i, z ) log n}.

Version 6 f evrier 2005

3.5. Gestion des partitions

67

Preuve. (1) Chaque trouver partiel a au plus un arc dans Lk , donc |Lk | m. De m eme, chaque trouver partiel a au plus un arc (x, y ) dans N , parce que x est une feuille, donc |N | m. (2) Soit (x, y ) N0 L0 . Il existe j tel que 2j = A(0, j ) h(x) < h(y ) < A(0, j + 1) = 2(j + 1) donc tel que h(x) = 2j et h(y ) = 2j + 1. Par ailleurs, il existe un arc (s, t) N0 qui vient apr` es larc (x, y ) sur le chemin du m eme trouver partiel. On a donc h(y ) h(s) < h(t) A nouveau, il existe j tel que h(s) = 2j , h(t) = 2j + 1, donc en fait j < j et h(y ) < h(s). Apr` es compression du chemin, le p` ere de x est un anc etre de t, soit u, et en particulier h(u) h(t) > A(0, j + 1). Par cons equent, aucun trouver partiel ult erieur ne peut contenir un arc dont x est lextr emit e initiale, et qui appartienne a ` N0 . Il en r esulte que |N0 L0 | n.

Une partie de la preuve est commune pour les cas (3) et (4). Soit x un sommet, et supposons que x Gk,j pour un k avec 1 k z + 1, cest-` a-dire A(k, j ) h(x) < A(k, j + 1). Soit q le nombre darcs dans Nk Lk d ebutant par x. Notons-les (x, y1 ), . . . , (x, yq )

avec h(y1 ) h(yq ). Pour chaque i, 1 i q , il existe un arc (si , ti ) Nk qui gure ult erieurement dans le chemin du trouver partiel de (x, yi ). Par cons equent, h(yi ) h(si ) < h(ti ) De plus, apr` es compression du chemin, le p` ere de x est un anc` etre de ti ( eventuellement ti lui-m eme). Ceci prouve que h(ti ) h(yi+1 ). Maintenant, on a (x, yi ) / Nk1 et (si , ti ) / Nk1 . Par d enition, il existe j < j avec h(x) < A(k 1, j ) h(yi ) h(si ) < A(k 1, j ) h(ti ) et en particulier h(yi ) < A(k 1, j ) h(yi+1 ). Il existe donc un entier tel que (5.1) h(y1 ) < A(k 1, ) A(k 1, + q 2) h(yq ) Les preuves de (3) et (4) se s eparent maintenant. Fin de la preuve de (3). Nous montrons que pour x Gk,j , 1 k z , j 0, il y a au plus A(k, j ) arcs dans Nk Lk . Ceci est evident si q = 1. Cest egalement Version 6 f evrier 2005

68

Chapitre 3. Structures de donn ees

clair si j = 0 ou j = 1, car pour ces valeurs de j , il ny a pas darc dans Nk . On peut donc supposer q 2, j 2. Comme x Gk,j et yq Nk , on a yq Gk,j et par cons equent h(yq ) < A(k, j + 1) = A(k 1, A(k, j )) Ceci prouve, en vue de (5.1), que A(k 1, + q 2) < A(k 1, A(k, j )) donc + q 2 < A(k, j ) Or 1 parce que h(y1 ) 2 et A(k 1, ) > h(y1 ), donc A(k 1, ) > 2. Par cons equent q A(k, j ) De cette in egalit e, on obtient |Nk Lk | |Gk,j | A(k, j )

j 2

et en majorant |Gk,j | par la valeur donn ee dans le lemme 5.4 |Nk Lk | et comme A(k, j ) 2j , |Nk Lk | 2n 2j 5n/8 22j
j 2

2n A(k, j )/2A(k,j )

j 2

Fin de la preuve de (4). Par le lemme 5.1, on a h(yq ) log n, et de l equation (5.1) on obtient A(z, + q 2) log n La d enition m eme de b(z, n) implique que + q 2 b(z, n) et comme ci-dessus, q b(z, n). Il y a donc au plus b(z, n) arcs dans Nz +1 Lz +1 pour chaque sommet x qui nest pas une feuille, do` u lin egalit e cherch ee. Preuve du th eor` eme. On a
z +1 z +1

|F | =

k =0

|Lk | + |N | +

k =0

|Nk Lk | (5.2)

5 m(z + 3) + n + nz + b(z, n) 8 Version 6 f evrier 2005

Notes Fixons le param` etre z a ` z = min{i | A(i, 4 Alors b(z, n) = b((m, n), n) = min{j | A((m, n), j ) > log n} 4 donc par (5.2) 5 |F | (m + n)(m, n) + 11m + n = O (m, (m, n)) 8 parce que m n. m m 8 n n m ) > log n} = (m, n). n

69

Notes
Un type abstrait est un ensemble organis e dobjets, muni dun ensemble dop erations permettant de les manipuler. Le langage des types abstraits alg ebriques permet de donner une description formelle des types abstraits, comme el ements dune alg` ebre h et erog` ene particuli` ere. Chaque op eration sur un type est consid er ee comme une application ( eventuellement partielle) qui, a ` une ou plusieurs instances du type, associe une nouvelle instance du type. Par exemple, empiler est une fonction (pile, objet ) pile, et d epiler est une fonction pile pile qui nest d enie que si la pile de d epart nest pas vide. Ces fonctions doivent en outre v erier certaines propri et es qui sexpriment souvent par des equations. Ainsi, pour toute pile p, et tout objet x, on doit avoir d epiler(empiler(p, x)) = p. Un type abstrait alg ebrique est d eni alors comme lensemble de toutes les alg` ebres satisfaisant ces conditions. Cette approche alg ebrique de la description dun type abstrait est pr esent ee syst ematiquement dans C. Froidevaux, M. C. Gaudel, M. Soria, Types de donn ees et algorithmes, McGraw-Hill, 1990. Les structures de donn ees d ecrites dans ce chapitre sont des plus classiques, et sont trait ees dans tous les livres dalgorithmique. Une pr esentation voisine est donn ee dans le livre de Froidevaux, Gaudel, Soria, et dans T. H. Cormen, C. E. Leiserson, R. L. Rivest, Introduction to Algorithms, MIT Press, McGraw-Hill, 1990. Lanalyse de lalgorithme de gestion des partitions est due a ` Tarjan. Nous suivons lexposition de Mehlhorn. Tarjan a montr e que lalgorithme nest pas lin eaire en g en eral. Lexistence dun algorithme lin eaire reste ouvert. Les pagodes sont dues a ` Fran con, Viennot et Vuillemin. Version 6 f evrier 2005

70

Chapitre 3. Structures de donn ees

Exercices
3.1. Montrer que lon peut impl ementer une pile avec deux les. Quelle est la complexit e en temps des op erations ? 3.2. Montrer que lon peut impl ementer une le avec deux piles. Quelle est la complexit e en temps des op erations ? 3.3. Impl ementer une liste avec un tableau. 3.4. Ecrire une proc edure purger qui supprime toutes les r ep etitions dans une liste. Par exemple, le r esultat de cette proc edure sur la liste (a, b, a, a, b, c, a) est (a, b, c). 3.5. Ecrire une proc edure renverser qui retourne une liste. Par exemple, le r esultat de cette proc edure sur la liste (a, b, c, a, b, d) est (d, b, a, c, b, a). 3.6. Ecrire une proc edure fusion qui fusionne deux listes. Les listes sont tri ees au d epart, le r esultat est egalement tri e, et un el ement qui gurerait dans les deux listes de d epart ne gure quune fois dans la liste r esultat. Par exemple, la fusion des listes (3, 5, 8, 11) et (2, 3, 5, 14) est la liste (2, 3, 5, 8, 11, 14). 3.7. Les arborescences ordonn ees dont les sommets ont un nombre born e de ls peuvent simpl ementer en associant a ` chaque sommet un tableau de pointeurs vers ses ls. R ealiser les op erations de manipulation darborescences ordonn ees dans cette repr esentation. 3.8. Un arbre let e ( threaded tree ) est une structure de donn ees pour repr esenter les arbres binaires, d eclar ee par
TYPE arbre = ^sommet; sommet = RECORD val: element; g, d: arbre; gvide, dvide: boolean END;

Pour un sommet s, gvide est vrai si et seulement si le sous-arbre gauche de s est vide, et dans ce cas, g pointe sur le sommet qui pr ec` ede s en ordre sym etrique. Dans le cas contraire, g pointe comme usuellement vers la racine du sous-arbre gauche de s. Bien entendu, la m eme convention vaut pour le sous-arbre droit. a) D ecrire des algorithmes pour parcourir un arbre binaire let e en ordre pr exe, suxe, sym etrique. b) D ecrire linsertion et la suppression dans un tel arbre, et d ecrire les implications des rotations (voir chapitre 6) sur cette repr esentation. 3.9. Une pagode est une repr esentation des tournois. Chaque sommet s dune pagode contient deux pointeurs g (s) et d(s) d enis comme suit. Version 6 f evrier 2005

Exercices

71

Figure 5.3: Un arbre let e. (1) si s est la racine ou est un ls droit, g (s) pointe vers le premier sommet en ordre sym etrique du sous-arbre de racine s ; (2) si s est un ls gauche, g (s) pointe vers le p` ere de s. Le pointeur d(s) est d eni de mani` ere sym etrique.
1 4 6 9 8 3 5 7

                             


1 4 3 6 5 9 8

Figure 5.4: Un tournoi et sa pagode. a) Ecrire une proc edure dinsertion dune cl e dans une pagode, en lins erant le plus a ` droite possible. En d eduire quun parcours sym etrique donne les cl es dans leur ordre dinsertion. b) Ecrire une proc edure dextraction de la plus petite cl e pr esente. c) D ecrire un algorithme de fusion de deux pagodes. 3.10. On peut utiliser, pour la repr esentation dune partition, en plus du tableau classe, une liste circulaire pour chaque classe. R ealiser les op erations unir et trouver et montrer quavec la r` egle de lunion pond er ee, on peut r ealiser une suite de n 1 unir et de m trouver en temps O (m + n log n). 3.11. Analyser lalgorithme de gestion de partitions qui utilise lunir na f et un trouver avec compression des chemins.

Version 6 f evrier 2005

72

Chapitre 3. Structures de donn ees

Version 6 f evrier 2005

73

Chapitre 4

Graphes
Ce chapitre commence par la d enition des graphes et de certains objets fondamentaux comme les chemins, les cha nes, les circuits et les cycles. Pour les graphes sans circuit, sont ensuite introduites les notions de rang et de liste topologique. La section 2 pr esente lalgorithme de Roy-Warshall dans le cadre g en eral de la recherche des valeurs optimales des chemins entre tous les couples de sommets dun graphe dont les arcs sont valu es par les el ements dun semi-anneau. On examine ensuite certains cas particuliers comme le calcul de la relation daccessibilit e, lalgorithme de Floyd et le calcul du langage des chemins dun graphe etiquet e. La section 3 d enit les arbres, les arborescences et leurs principales variantes attribu ees. La section 4 introduit la notion de parcours dun graphe non orient e et pr esente des algorithmes sp eciques pour les parcours en profondeur et en largeur. Les parcours sont ensuite etendus aux graphes orient es et lalgorithme de Tarjan, qui d etermine les composantes fortement connexes dun graphe, est pr esent e en tant quapplication des propri et es des parcours en profondeur. On termine par l etude des parcours sp eciques aux arborescences.

Introduction
Les graphes constituent certainement loutil th eorique le plus utilis e pour la mod elisation et la recherche des propri et es densembles structur es. Ils interviennent chaque fois que lon veut repr esenter et etudier un ensemble de liaisons (orient ees ou non) entre les el ements dun ensemble ni dobjets. Citons comme cas particuliers de liaisons des applications aussi diverses quune connexion entre deux processeurs dun r eseau informatique, une contrainte de pr ec edence entre deux t aches dun probl` eme dordonnancement, la possibilit e pour un syst` eme de passer dun etat a ` un autre ou encore une incompatibilit e dhoraires. Sagissant dun outil fondamental, la recherche des algorithmes les plus ecaces pour r ealiser les op erations de base sur les graphes constitue un objectif essentiel de lalgorithmique. Version 6 f evrier 2005

74

Chapitre 4. Graphes

4.1
4.1.1

D enitions et propri et es el ementaires


D enitions

Un graphe orient e G = (S, A) est compos e dun ensemble ni S d el ements appel es sommets et dune partie A de S S dont les el ements sont appel es arcs . Les arcs dun graphe orient e constituent donc une relation sur lensemble de ses sommets. Un arc (x, y ) repr esente une liaison orient ee entre lorigine x et lextr emit e y . Si (x, y ) est un arc, y est un successeur de x, x est un pr ed ecesseur de y et si x = y , larc (x, x) est appel e boucle . Lorsque lorientation des liaisons nest pas une information pertinente, la notion de graphe non orient e permet de sen aranchir. Un graphe non orient e G = (S, A) est compos e dun ensemble ni S d el ements appel es sommets et dune famille de paires de S dont les el ements sont appel es ar etes . Etant donn e un graphe orient e, sa version non orient ee est obtenue en supprimant les boucles et en substituant a ` chaque arc restant (x, y ) la paire {x, y }.

Deux sommets distincts dun graphe orient e (respectivement non orient e) G sont adjacents sils sont les extr emit es dun m eme arc (respectivement dune m eme ar ete). Soient G = (S, A) un graphe orient e (respectivement non orient e) et T un sous-ensemble de S . Lensemble not e (T ) des arcs (respectivement ar etes) de A dont une extr emit e est dans T et lautre dans S T est appel e le cocycle associ ea ` T . Lensemble not e B (T ) des sommets de S T adjacents a ` au moins un sommet de T est appel e bordure de T . Si le sommet u appartient a ` B (T ), on dit aussi que u est adjacent a ` T . Le graphe G = (S, A) est dit biparti sil existe un sous-ensemble de sommets T tel que A = (T ).

1 2 5 (a) 1 2 (c)

1 2

41

3 41 1

(b)

3 41

(d)

Figure 1.1: Sous-graphes. Un sous-graphe du graphe G = (S, A) est un couple G = (S , A ) pour lequel S S et A A. Le sous-graphe G est un graphe partiel de G si S = S . Si A Version 6 f evrier 2005

4.1. D enitions et propri et es el ementaires

75

est lensemble des arcs de A dont les deux extr emit es sont dans S , le sous-graphe G est dit induit par S . Si S est lensemble des extr emit es des arcs de A , le sous-graphe G est dit induit par A . Les sommets dun graphe sont repr esent es par des points distincts du plan. Un arc (x, y ) dun graphe orient e est repr esent e par une ` eche dorigine x et dextr emit e y , une ar ete dun graphe non orient e est repr esent ee par une ligne joignant ses deux extr emit es. Sur la gure 1.1 sont repr esent es en a) un graphe orient e G, en b) un sous-graphe de G, en c) le graphe partiel de G induit par les sommets {1, 2, 3, 4} et en d) le sous-graphe induit par les arcs {(1, 4), (4, 3)}. Le graphe G est biparti car tout arc est incident a ` T = {1, 2, 3}.

4.1.2

Impl ementations dun graphe

Parmi les impl ementations possibles dun graphe orient e G = (S, A), on peut en retenir essentiellement trois qui interviennent dans la plupart des probl` emes th eoriques et pratiques : la matrice dadjacence, la matrice dincidence et la liste des successeurs.
1 4 5 4 6 5 3 (a) 1 1 0 0 -1 0 2 0 0 -1 1 0 3 0 0 1 0 -1 4 1 0 0 0 -1 5 0 1 0 -1 0 6 0 -1 0 0 1 3 4 (c) 1 1 0 0 0 0 0 2 0 0 0 0 1 3 0 0 0 1 0 (b) 4 1 1 0 0 0 5 1 0 1 0 0 2 3 4 5 2 2 5 4 5 3 2 5 (e) 3 2 2 3 4 5 1 4

1 2 3 4 5

1 2 3 4 5

(d)

(f)

Figure 1.2: Impl ementations dun graphe. La matrice dadjacence M = M (G) est une matrice carr ee, indic ee par S , d enie par : mij = 1 si (i, j ) A 0 sinon o` u le 0 et le 1 seront entiers ou bool eens selon la convenance.

Version 6 f evrier 2005

76 Si G est un graphe sans boucles, sa matrice dincidence est d enie par : xa =

Chapitre 4. Graphes sommets-arcs (G)

1 si x est lorigine de larc a 1 si x est lextr emit e de larc a 0 sinon

Cette matrice poss` ede une propri et e tr` es importante pour certains domaines de loptimisation combinatoire comme la th eorie des ots (voir chapitre 8) : le d eterminant de toute sous-matrice carr ee extraite vaut 0, 1 ou 1. Une matrice satisfaisant cette propri et e est dite totalement unimodulaire . Les matrices dajacence et dincidence du graphe orient e de la gure 1.2 sont les suivantes : 1 0 0 1 0 0 00011 0 0 0 0 1 1 0 0 0 1 0 M = 0 0 0 0 1 = 0 1 1 0 0 0 . 1 1 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 01000

La liste des successeurs (en anglais : adjacency list) est un tableau (q1 , . . . , qn ) o` u qi est un pointeur sur une liste des successeurs du sommet i.

Dans le cas dun graphe non orient e, limpl ementation la plus utilis ee est la liste des voisins qui est un tableau (q1 , . . . , qn ) o` u qi est un pointeur sur une liste des sommets adjacents au sommet i. Cest la version non orient ee de la liste des successeurs. Notons que les tailles de ces diverses repr esentations sont sensiblement di erentes. Si n est le nombre de sommets et si m est le nombre darcs (ou dar etes pour un graphe non orient e), la taille de la matrice dadjacence est en (n2 ), celle de la matrice dincidence en (nm) alors que la taille de la liste des successeurs (ou des voisins) est en (n + m). La gure 1.2 montre la liste des successeurs (c) du graphe orient e (a) et la liste des voisins (d) du graphe non orient e (b).

4.1.3

Chemins, cha nes, circuits, cycles

Soit G = (S, A) un graphe orient e. Un chemin dorigine x et dextr emit e y est une suite nie non vide de sommets c = (s0 , . . . , sp ) telle que : s0 = x, sp = y et pour k = 0, .., p 1, (sk , sk+1 ) A. La longueur du chemin c est p, cest le nombre darcs (non n ecessairement distincts) emprunt es par ce chemin. La notion de chemin nous permet dintroduire les ascendants et les descendants dun sommet. Soit x un sommet de S , un sommet y est un ascendant (respectivement descendant) de x sil existe un chemin de y a ` x (respectivement de x a ` y) Version 6 f evrier 2005

4.1. D enitions et propri et es el ementaires

77

dans G. Le sommet y est un ascendant (respectivement descendant) propre du sommet x sil existe un chemin de longueur non nulle de y a ` x (respectivement de xa ` y ). Notons quun sommet peut etre ascendant propre et descendant propre de lui-m eme. Un chemin c = (s0 , . . . , sp ) est simple si les arcs (si1 , si ), i = 1, .., p sont deux a ` deux distincts. Un chemin c = (s0 , . . . , sp ) est el ementaire si ses sommets sont distincts deux a ` deux. Un chemin (s0 , . . . , sp ) est un circuit si p 1 et s0 = sp . Un circuit c = (s0 , . . . , sp ) est el ementaire si le chemin (s0 , . . . , sp1 ) est el ementaire. Soulignons quun circuit el ementaire nest pas un chemin el ementaire et que, de la m eme fa con, un chemin el ementaire nest pas un circuit el ementaire. Consid erons le graphe orient e de la gure 1.2. La suite (5, 2, 4, 3, 5) est un circuit el ementaire mais nest pas un chemin el ementaire. Par contre la suite (1, 4, 3) est un chemin el ementaire. Consid erons maintenant un graphe non orient e G = (S, A) et d enissons les notions correspondantes de cha ne et cycle. Une cha ne dorigine x et dextr emit e y est une suite nie de sommets (s0 , . . . , sp ) telle que s0 = x, sp = y , deux sommets cons ecutifs quelconques de la liste sont les extr emit es dune ar ete, et ces ar etes sont distinctes deux a ` deux. Notons que si (s0 , . . . , sp ) est une cha ne, il en est de m eme pour (sp , . . . , s0 ). Une cha ne c = (s0 , . . . , sp ) est el ementaire si les sommets de la liste c sont deux a ` deux distincts. Une cha ne (s0 , . . . , sp ) est un cycle si s0 = sp . Un cycle (s0 , . . . , sp ) est el ementaire si p 1 et si la liste (s0 , . . . , sp1 ) est une cha ne el ementaire.

Pour le graphe non orient e repr esent e sur la gure 1.2, la liste (5, 1, 4, 1) nest pas une cha ne et (1, 5, 3, 4) est une cha ne el ementaire.

Un graphe non orient e est connexe si pour tout couple de sommets, il existe une cha ne ayant ces deux sommets comme extr emit es. Par extension, un graphe orient e est connexe si sa version non orient ee (cest-` a-dire le graphe non orient e obtenu en supprimant les orientations et les boucles) est connexe. La relation sur lensemble des sommets dun graphe non orient e d enie par x y sil existe une cha ne de x a ` y est une relation d equivalence dont les classes sont appel ees composantes connexes du graphe. Les graphes induits par les composantes connexes sont bien s ur des graphes connexes.

4.1.4

Lemme de K onig

Les chemins dun graphe constituent en g en eral un ensemble inni (il faut et il sut que le graphe poss` ede des circuits). Par contre les chemins el ementaires sont en nombre ni et constituent pour de nombreux probl` emes doptimisation un ensemble dominant lorsque lexistence dun chemin optimal el ementaire est prouv ee. Le lemme de K onig montre que lexistence dun chemin dorigine x et dextr emit e y entra ne celle dun chemin el ementaire entre ces m emes sommets. Version 6 f evrier 2005

78

Chapitre 4. Graphes

Soit G = (S, A) un graphe orient e. Un chemin c est dit extrait dun chemin c si les deux chemins c et c ont la m eme origine et la m eme extr emit e et si la suite des arcs de c est une sous-suite de celle des arcs de c . La relation est extrait de d enie sur lensemble des chemins de G est une relation dordre et le lemme de K onig ci-dessous montre que ses el ements minimaux sont les chemins el ementaires de G. Lemme 1.1 (de K onig). De tout chemin on peut extraire un chemin el ementaire. Preuve. Nous raisonnons par induction sur la longueur p du chemin c. Si p = 0, c est el ementaire. Soit donc c = (x0 , . . . , xp ) un chemin a ` p sommets avec p > 0. Si c nest pas el ementaire, il existe un couple (r, s) tel que 0 r < s p et xr = xs . Le chemin c = (x0 , .., xr , xs+1 , .., xp ) est extrait de c et strictement plus petit que c. On peut donc extraire de c , et donc de c, un chemin el ementaire. Remarque. Le lemme de K onig s etend aux circuits dun graphe orient e et aussi aux cha nes et aux cycles dun graphe non orient e.

4.1.5

Graphes sans circuit

Les graphes sans circuit interviennent dans de nombreux domaines, en particulier chaque fois que lon etudie une relation dordre partiel. Pour ces graphes, on conna t des algorithmes sp eciques dont lecacit e est souvent due a ` lutilisation dune liste des sommets qui permet, lors de la visite dun sommet de la liste, d etre s ur que tous ses ascendants propres ont d ej` a et e visit es. Une liste topologique des sommets dun graphe G = (S, A) est une permutation (s1 , . . . , sn ) des sommets de S telle que pour tout arc (si , sj ) on a i < j . Proposition 1.2. Un graphe orient e G = (S, A) est sans circuit si et seulement sil existe une liste topologique des sommets de G. Preuve. La condition susante r esulte directement de la d enition dune liste topologique. D emontrons que la condition est n ecessaire par induction sur n = Card(S ). La propri et e est bien s ur vraie si n = 1. Supposons quelle le soit pour un graphe a ` n 1 sommets (n 2). Le graphe G ne poss edant pas de circuits, il existe au moins un sommet s sans descendants propres car dans le cas contraire, on pourrait construire un chemin inni, donc contenant n ecessairement un circuit. Le sous-graphe G de G induit par S {s} a n 1 sommets et ne poss` ede pas de circuits. Il existe donc une liste topologique L des sommets de G ; la liste L .(s) form ee de L concat en ee avec la liste (s) est alors une liste topologique des sommets de G. La propri et e pr ec edente conduit naturellement a ` un algorithme pour tester si un graphe orient e G est sans circuit. Le principe de cet algorithme est de rechercher Version 6 f evrier 2005

4.1. D enitions et propri et es el ementaires

79

une sortie s de G. Sil nen nexiste pas alors G poss` ede un circuit sinon la r eponse pour G est la m eme que pour Gs . En utilisant une liste des successeurs pour coder G, on obtient une complexit e O (n2 ). Nous donnerons dans la section 4.4.4 un algorithme plus ecace, de complexit e O (n + m), fond e sur un parcours en profondeur du graphe G. Il peut exister plusieurs listes topologiques dun m eme graphe sans circuit. Le graphe repr esent e sur la gure 1.3 ne poss` ede quune seule liste topologique (3, 2, 1, 6, 7, 5, 4) car il existe un seul chemin el ementaire passant par tous les sommets.
3 1 4

6 7 2 5

Figure 1.3: Un graphe sans circuit. Plus g en eralement, soit une relation dordre sur un ensemble ni E . Une extension lin eaire de est un ordre total sur E qui contient , cest-` a-dire tel que : x y = x y. Etant donn e un ordre total el ements de S telle que : sur S , on peut constituer la suite (s1 , . . . , sn ) des s1 s2 ... sn .

Lop eration qui d etermine une extension lin eaire sappelle le tri topologique et le r esultat du tri est une liste topologique. D eterminer une extension lin eaire equivaut bien entendu a ` num eroter les sommets du graphe, cest-` a-dire a ` trouver une bijection : S {1, . . . , n} v eriant : (x, y ) A = (x) < (y ). Soit G = (S, A) un graphe sans circuit. Le rang du sommet s, not e (s), est la longueur maximale dun chemin dextr emit e s. Notons que (s) est bien d eni puisque les chemins de G sont el ementaires et donc en nombre ni. La gure 1.4 montre un graphe sans circuit et a ` sa droite le m eme graphe rang e. Proposition 1.3. Pour tout sommet x, les ascendants propres de x ont un rang strictement inf erieur au rang de x, les descendants propres de x ont un rang strictement sup erieur au rang de x, et si x est de rang k > 0, il poss` ede un ascendant propre de rang k 1. Version 6 f evrier 2005

80
1 3 3 5 2 3 0 7 8 6 5 4 9 3

Chapitre 4. Graphes
7 4 5 8 9

0 1

Figure 1.4: Classement par rang. Preuve. Si y est un ascendant propre de x, alors (x) > (y ). De m eme, si y est un descendant propre de x, alors (x) < (y ). Enn si tous les ascendants propres de x etaient de rang inf erieur ou egal a ` k 2, on aurait : (x) k 1, do` u la contradiction. Remarque. La liste des sommets dun graphe sans circuit, ordonn ee par rang croissant au sens large, est une liste topologique.

4.2

Accessibilit e

Etant donn e un graphe orient e G = (S, A), le sommet y est dit accessible a ` partir du sommet x sil existe un chemin de x a ` y . Lobjet de cette section est le calcul de la relation daccessibilit e. A cet eet, nous d ecrivons lalgorithme de Roy-Warshall qui fournit la matrice bool eenne de la relation daccessibilit e. Cet algorithme qui utilise comme structure de donn ees la matrice bool eenne associ ee 3 au graphe initial a une complexit e O (n ), o` u n est le nombre de sommets de G. Nous posons S = {1, 2, , n} et pour k S , nous notons E (k ) lensemble {1, 2, , k } ; par convention lensemble E (0) est vide. Si c = (v1 , . . . , vk ) est un chemin de G, lint erieur I (c) de ce chemin est lensemble des sommets du sous-chemin (v2 , . . . , vk1 ) ; si k 2, I (c) est lensemble vide. Enn nous notons Gk = (S, Ak ) le graphe d eni par : (i, j ) Ak c : i j, I (c) E (k ).

Remarque. Le graphe G0 est le graphe initial G compl et e dune boucle en chaque sommet ; le graphe Gn est le graphe de la relation daccessibilit e. Version 6 f evrier 2005

4.2. Accessibilit e

81

4.2.1

Algorithme de Roy-Warshall

Lalgorithme de Roy-Warshall calcule la suite des graphes G1 , G2 , . . . , Gn en utilisant le th eor` eme suivant : Th eor` eme 2.1. Pour tout i, j, k S , larc (i, j ) appartient a ` Ak si et seulement si (i, j ) Ak1 ou ((i, k ) Ak1 et (k, j ) Ak1 ). Preuve. Si (i, j ) Ak , il existe dapr` es le lemme de K onig un chemin el ementaire c de i a ` j dont lint erieur I (c) est inclus dans E (k ). Si I (c) ne contient pas k , alors I (c) est inclus dans E (k 1) et donc (i, j ) Ak1 . Si I (c) contient k , nous notons c (respectivement c ) le sous-chemin de c de i a ` k (respectivement le souschemin de c de k a ` j ). Le chemin c etant el ementaire, I (c ) et I (c ) sont inclus dans E (k 1) ; il en r esulte que (i, k ) Ak1 et (k, j ) Ak1 .

R eciproquement on a : (i, j ) Ak1 = (i, j ) Ak , car E (k 1) E (k ). Supposons maintenant que (i, k ) Ak1 et (k, j ) Ak1 ; il existe alors un chemin c (respectivement c ) de i a ` k (respectivement de k a ` j ) tel que I (c ) (respectivement I (c )) soit inclus dans E (k 1). Lint erieur du chemin c obtenu par la concat enation de c et c est donc inclus dans E (k ) et par cons equent (i, j ) Ak .

Une impl ementation possible de lalgorithme de Roy-Warshall utilise comme structure de donn ees une seule matrice bool eenne, not ee a et initialis ee avec la matrice dadjacence de G ; cette impl ementation est donn ee par la proc edure Roy-Warshall(G) suivante : proc edure Roy-Warshall(G) ; {g est la matrice dadjacence du graphe G} {a est la matrice de travail} a := g ; pour i de 1 a ` n faire aii := 1 ; pour k de 1 a ` n faire pour i de 1 a ` n faire pour j de 1 a ` n faire aij := aij ou (aik et akj ) ; retourner(a). Lutilisation dune seule matrice de travail rend n ecessaire la proposition suivante pour valider la proc edure Roy-Warshall(G). Proposition 2.2. Pour tout i, j, k S , les deux equivalences suivantes sont vraies : (1) (i, k ) Ak1 (i, k ) Ak ; Version 6 f evrier 2005

82 (2) (k, j ) Ak1 (k, j ) Ak . Preuve. (laiss ee a ` titre dexercice).

Chapitre 4. Graphes

Th eor` eme 2.3. La proc edure Roy-Warshall(G) d etermine la matrice de la relation daccessibilit e dun graphe orient e G = (S, A) en O (n3 ) op erations el ementaires. Preuve. Notons a(k) la valeur de la matrice a calcul ee par la proc edure RoyWarshall(G) lors de lit eration k et supposons que jusquau calcul de l el ement (p) (k ) (i, j ) de a a ` lit eration k , les valeurs ars soient correctes. Lors du calcul de aij , (k 1) l el ement (i, j ) de la matrice a contient initialement la valeur aij , par contre (k 1) (k ) l el ement (i, k ) de la matrice a contient la valeur aik si k > j ou la valeur aik si (k 1) k < j ; de m eme l el ement (k, j ) de la matrice a contient la valeur akj si k > i (k ) ou la valeur aik si k < i. Cependant la proposition pr ec edente nous assure que (k ) la valeur calcul ee aij est correcte.
1 2 1 0 1 0 0 5 1 1 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 1 1 1

matrice d'adjacence

Figure 2.1: Un graphe orient e et sa matrice dadjacence. Exemple. Consid erons le graphe orient e de la gure 2.1. Les matrices dadjacence des graphes G1 , G2 et G3 sont les suivantes : 11111 11100 11000 1 1 1 1 1 0 1 1 0 0 0 1 1 0 0 A1 = 1 1 1 1 1 A2 = 1 1 1 1 1 A3 = 1 1 1 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 00011 00011 00011 Les graphes G4 et G5 sont egaux au graphe G3 , si bien que la matrice de la relation daccessibilit e est celle du graphe G3 .

4.2.2

Autres probl` emes daccessibilit e

Nous consid erons dans ce paragraphe la notion de graphe etiquet e, cest-` a-dire de graphe dont chaque arc (i, j ) porte une etiquette eij choisie dans un ensemble E . Version 6 f evrier 2005

4.2. Accessibilit e

83

Lid ee centrale de lalgorithme de Roy-Warshall est de r esoudre la suite des sous-probl` emes obtenus en faisant grossir de lensemble vide jusqu` a S luim eme, lensemble des sommets qui peuvent appartenir a ` lint erieur dun chemin. Une formule de r ecurrence permet de passer simplement de la solution dun sous-probl` eme a ` celle du sous-probl` eme suivant. Cette m eme id ee conduit a ` la r esolution dune classe de probl` emes analogues lorsque lensemble des etiquettes poss` ede une structure de semi-anneau . Nous illustrons cette m ethodologie en traitant deux probl` emes classiques sur les graphes etiquet es : a) Si E = R, d eterminer pour tout couple de sommets la valeur maximale des chemins entre ces deux sommets ; b) Si E est lensemble des parties non vides dun alphabet A, d eterminer pour tout couple de sommets le langage des etiquettes des chemins entre ces deux sommets.

Chemins de valeur maximale : algorithme de Floyd


Soit G = (S, A) un graphe orient e dont chaque arc est valu e par un nombre r eel. Nous appelons valeur dun chemin la somme des etiquettes des arcs de ce chemin. Nous supposons de plus que tout circuit du graphe a une valeur n egative ou nulle (on dit encore quil nexiste pas de circuits absorbants ). Le probl` eme consiste alors a ` d eterminer, pour tout couple de sommets (i, j ) la valeur maximale des chemins de i a ` j , not ee aij . Etant donn e un couple (i, j ), le lemme de K onig et labsence de circuits positifs montrent quil sut de calculer la valeur maximale des chemins el ementaires de ia ` j et donc que aij est ni. La recherche sera donc conduite dans lensemble des chemins el ementaires de G. Nous notons aij la valeur maximale dun chemin de i a ` j dont lint erieur est inclus dans E (k ) et nous prenons comme valeurs initiales, pour k = 0 : si (i, j ) A et i = j ; eij , (0) aij = 0, si i = j ; , sinon. La proposition suivante permet alors le calcul des aij :
(k ) (k ) (k )

Proposition 2.4. Pour tout i, j, k S , on a aij = max{aij

(k 1)

, aik

(k 1)

+ akj

(k 1)

}.

La valeur maximale dun chemin de i a ` j dont lint erieur est inclus dans E (k ) et (k 1) (k 1) contient k est aik + akj car tout chemin de cet ensemble est constitu e de la concat enation dun chemin de i a ` k dont lint erieur est inclus dans E (k 1) et dun chemin de k a ` j dont lint erieur est inclus dans E (k 1). Version 6 f evrier 2005

Preuve. La valeur maximale dun chemin de i a ` j dont lint erieur est inclus dans (k 1) E (k 1) est par d enition aij .

84

Chapitre 4. Graphes

Comme les deux ensembles de chemins pr ec edents recouvrent tous les chemins de i a ` j dont lint erieur est inclus dans E (k ), la valeur maximale cherch ee est (k 1) (k 1) (k 1) max{aij , aik + akj }. Lalgorithme issu de cette proposition a et e d ecouvert par Floyd, la proc edure ci3 dessous de complexit e O (n ) impl emente cet algorithme et nutilise quune seule matrice de travail a. proc edure Floyd(G, e) ; {g est la matrice dadjacence du graphe G} {e est la matrice des etiquettes du graphe G} {a est la matrice r esultat} pour i de 1 a ` n faire pour j de 1 a ` n faire aij :=si gij = 1 alors eij sinon npour ; aii := 0 npour ; pour k de 1 a ` n faire pour i de 1 a ` n faire pour j de 1 a ` n faire (k ) (k 1) (k 1) (k 1) aij = max{aij , aik + akj } retourner(a). La gure 2.2 montre un graphe etiquet e par des r eels. Les matrices, o` u est
1 -3 3 2 -4 4 3 5 1 1 2 2

Figure 2.2: Un graphe etiquet e. cod e par un tiret, calcul ees par la proc edure Floyd(G) sont les suivantes : 0 1 3 0 1 0 1 0 2 (1) 0 2 (2) 0 2 = 3 0 2 1 a = 3 2 0 2 1 a = 3 2 0 2 4 0 4 0 4 0 4 3 0 3 0 3 0

a(0)

Version 6 f evrier 2005

4.2. Accessibilit e

85

a(3)

0 1 37 4 0 1 35 4 0 1 35 4 1 0 2 4 3 (4) 1 0 2 4 3 (5) 1 0 2 6 3 = 3 2 0 2 1 a = 3 2 0 2 1 a = 3 2 0 4 1 0 4 0 4 0 4 3 0 3 0 3 0

Langage des chemins dun graphe etiquet e


Nous consid erons ici un alphabet A et prenons pour E lensemble des parties non vides de A. Lensemble des etiquettes dun chemin de i a ` j est le langage produit des etiquettes associ ees aux arcs successifs du chemin. Nous appelons alors langage des chemins de i a ` j , et nous notons Lij lensemble des etiquettes des chemins de i a ` j . Le probl` eme consiste alors a ` d eterminer pour chaque couple (i, j ) le langage Lij . Ce probl` eme est classique dans le cadre de la th eorie des automates, on peut en particulier se servir de la construction it erative des Lij r ealis ee par lalgorithme dans la preuve du th eor` eme de Kleene (voir chapitre 9). Nous notons Lij le langage des chemins de i a ` j dont lint erieur est inclus dans E (k ) et nous prenons pour k = 0 les valeurs initiales suivantes : Lij =
(0) (k )

Aij si i = j Aij {1} sinon

o` u 1 repr esente le mot vide et Aij est lensemble des etiquettes des arcs de i a ` j. (k ) La proposition suivante permet alors le calcul des langages Lij : Proposition 2.5. Pour tout i, j, k S , on a Lij = Lij
(k ) (k 1)

Lik

(k 1)

Lkk

(k 1)

Lkj

(k 1)

Preuve. Un mot du second membre est soit dans Lij , soit dans lensemble (k ) (k 1) (k 1) (k 1) ` Lij , dans le seLik (Lkk ) Lkj . Dans le premier cas le mot appartient a ` Lkj . ` (Lkk ) et w a cond cas, il s ecrit uvw o` u u appartient a ` Lik , v a Par d enition u est donc une etiquette dun chemin de i a ` k dont lint erieur est inclus dans E (k 1), v est la concat enation dun nombre ni d etiquettes de circuits de k a ` k dont lint erieur est inclus dans E (k 1), enn v est l etiquette dun chemin de k a ` j dont lint erieur est inclus dans E (k 1). Le mot form e par la concat enation de u, v et w est alors une etiquette du chemin obtenu par concat enation des chemins associ es. R eciproquement, consid erons un mot u Lik . Si lint erieur de ce chemin ne (k 1) contient pas k , u appartient par d enition a ` Lij ; si lint erieur de ce chemin contient k , ce chemin est form e de la concat enation dun chemin de i a ` k (premier passage par k en tant que sommet interm ediaire), dune suite nie ( eventuellement Version 6 f evrier 2005
(k ) (k 1) (k 1) (k 1)

(k 1)

86

Chapitre 4. Graphes

vide) de chemins de k a ` k (associ es a ` tous les passages successifs par k en tant que sommet interm ediaire) et dun dernier chemin de k a ` j . Par construction, lint erieur de tous ces chemins est inclus dans E (k 1). Le mot u est donc la (k 1) (k 1) concat enation dun mot de Lik , dune suite de mots de Lkk et dun mot de (k 1) Lkj . Nous pouvons donc d eduire de la proposition pr ec edente que, quel que soit le couple (i, j ), le langage des chemins de i a ` j est obtenu a ` partir des langages r eduits aux lettres de A par une suite nie dop erations dunion, concat enation et etoile.

4.2.3

Semi-anneaux et accessibilit e

Un ensemble K muni de deux op erations binaires associatives et et de deux el ements distingu es 0 et 1 est un semi-anneau si 1. (K, , 0) est un mono de commutatif, cest-` a-dire a b=b a pour a, b K et a 0=0 a=a pour tout a dans K ; 2. (K, , 1) est un mono de et a 1=1 a=a pour tout a dans K ; 3. lop eration est distributive par rapport a ` , cest-` a-dire : a (b c)= (a b) (a c) et (a b) c=(a c) (a b) ; 4. l el ement 0 est un z ero pour lop eration : 0 a=a 0=0. On note (K, , , 0, 1) un semi-anneau. Par exemple (N, +, , 0, 1) est un semianneau. Un semi-anneau (K, , , 0, 1) est complet si toute famille {ai }iI d el ements de K admet une somme not ee iI ai sujette aux conditions suivantes : a) si I est ni, I = {i1 , . . . , in }, alors b) la somme est associative : si I =
iI j J

a i = a i1 a i2 . . . a in ;

Ij , avec Ij Ik = pour j = k , alors : (


j J iIj

ai =
iI

ai )

c) lop eration est distributive par rapport a ` , cest-` a-dire : (


iI

ai ) (

bj ) =
j J iI j J

(ai bj ).

Cette d enition de la compl etude est assez lourde, il sut de retenir que les sommes innies sont autoris ees et que lon peut les manipuler comme des sommes nies. Version 6 f evrier 2005

4.2. Accessibilit e Exemples.

87

1) Le semi-anneau de Boole (B , , , 0, 1), avec B = {0, 1} est complet. On a : ai =


iI

1 sil existe i I tel que ai = 1 ; 0 sinon.

2) Soit N = N{+}, avec a+(+) = (+)+a = +. Alors (N , min, +, , 0) est un semi-anneau complet. La distributivit e sexprime par : a + min{b, c} = min{a + b, a + c}. 3) Soit A un alphabet (voir chapitre 9) et A lensemble des mots sur A. Alors (P (A ), , , , ) est un semi-anneau complet.

4) Soit R = R {+, }, avec (+)+() = +. Alors (R, min, +, +, 0) est un semi-anneau complet. 5) Soit N = N {+}. Alors (N , max, min, 0, +) est un semi-anneau complet. On a max{a, +} = +, max{0, a} = a et min{a, max{b, c}} = max{min{a, b}, min{a, c}}. Dans un semi-anneau complet, on d enit l etoile a dun el ement a par : a = 1 a a 2 . . . a n . . . avec a0 = 1, et an+1 = a an . Dans le semi-anneau de Boole, on a a = 1 pour tout a. Dans celui de lexemple 2), on a a = 0. Dans celui de lexemple 4), on a a = min na =
nN

0 si a 0, sinon.

Les co uts des chemins Soit maintenant G = (S, A) un graphe et soit K un semi-anneau complet. Soit c : A K une application qui a ` un arc u de A associe son co ut c(u). On etend c aux chemins comme suit : si = (x0 , . . . , xn ) est un chemin, alors c( ) = c(x0 , x1 ) c(x1 , x2 ) . . . c(xn1 , xn ). (Notons que pour n = 0, c( ) = 1). Si est un ensemble de chemins, on pose : c() =

c( )

(et en particulier c() = 0). Le probl` eme g en eral qui nous int eresse est le calcul des el ements cij = c( )
ij

Version 6 f evrier 2005

88

Chapitre 4. Graphes

o` u ij est lensemble des chemins de i a ` j dans G. Revenons sur nos exemples. Soit G = (S, A) un graphe. 1) Avec le semi-anneau de Boole, xons le co ut dun arc egal a ` 1. On a alors : cij = 1 si ij = , 0 sinon.

Ainsi, cij = 1 si et seulement si j est accessible de i. 2) Avec le semi-anneau de Floyd (N , min, +, , 0), le co ut dun chemin est la somme des co uts des arcs successifs qui le composent, le co ut cij est le minimum des co uts des chemins de i a ` j . Ce co ut est + sil ny a pas de chemin de i a ` j. 3) Avec la terminologie du chapitre 9, cij est lensemble des mots qui sont les etiquettes dun chemin de i a ` j. 4) Avec le semi-anneau (R, min, +, +, 0), a ` nouveau cij est le minimum des co uts des chemins de i a ` j . Notons que sil existe un circuit de co ut n egatif passant par le sommet i, alors cii = . 5) Appelons capacit e dun arc u le nombre c(u). La capacit e dun chemin est la capacit e minimale des arcs qui le composent et pour deux sommets i et j , cij est la capacit e maximale dun chemin de i a ` j. Nous allons voir que lalgorithme de Roy-Warshall (voir section 4.2.1) s etend au calcul des valeurs cij . Soit G = (S, A), avec S = {1, . . . , n}. Rappelons que E (k ) = {1, . . . , k } et que I ( ) est lint erieur dun chemin . Notons k ij lensemble des chemins dont lint erieur est contenu dans E (k ). Soit c : A K une fonction de co ut dans un semi-anneau complet K . On pose :
k ck ij = c(ij ) = k ij

c( ).

Lemme 2.6. On a, pour i et j , dans S


k 1 k 1 k 1 k 1 . ckk ckj cik ck ij = cij

(2.1)

Preuve. Notons D le membre droit de l equation 2.1. On a en vertu de la distributivit e g en eralis ee


k 1 ckk = mN
1 {1 ,...,m }k kk

c(1 ) c(2 ) . . . c(m )

et par cons equent D=


1 k ij

c( )

1 k1 k ik , kj

mN

1 1 ,...,m k kk

c() c(1 ) c(2 ) . . . c(m ) c( ).

Version 6 f evrier 2005

4.2. Accessibilit e

89

k 1 Tout chemin k ecompose de mani` ere unique ij est soit chemin de ij , soit se d k 1 k 1 k 1 en = (1 , . . . , m ) , o` u ik , kj , m N, 1 , . . . , m kk . Do` u le r esultat.

Dans les cas particuliers des semi-anneaux K tels que a = 1 pour tout a K , la formule 2.1 se simplie en :
k 1 k 1 k 1 ck cik ckj . ij = cij

Il en est ainsi pour laccessibilit e et pour les plus courts chemins sans circuit de co ut n egatif. Dans ce cas la proposition 2.2 reste vraie et lalgorithme de RoyWarshall se transpose directement en rempla cant lavant-derni` ere ligne par :
k 1 k 1 k 1 ak (aik akj ). ij := aij

On obtient alors le th eor` eme : Th eor` eme 2.7. Le calcul des cij , pour i, j S , se fait par lalgorithme de Roy-Warshall en O (n3 ) op erations , et , o` u n est le nombre de sommets du graphe. Preuve. (imm ediate dapr` es ce qui pr ec` ede.)

4.2.4

Forte connexit e

Soit G = (S, A) un graphe orient e. La relation daccessibilit e d enie pr ec edemment est un pr eordre sur S (r eexive et transitive). Si lon note cette relation, la relation d equivalence sur S induite par ce pr eordre, que lon notera est d enie par : i j si i j et j i. Les classes d equivalence de la relation sappellent les composantes fortement connexes de G. Deux sommets distincts appartiennent a ` une m eme classe si et seulement sils appartiennent a ` un m eme circuit. La relation induite par sur lensemble quotient des classes d equivalence d enit le graphe quotient de G par . On appelle alors graphe r eduit de G le graphe obtenu a ` partir du graphe quotient en supprimant ses boucles. Ce graphe est sans circuit car lexistence dun circuit passant par deux classes distinctes et entra nerait l equivalence pour dun sommet quelconque de et dun sommet quelconque de , do` u la contradiction. Le graphe de la gure 2.3 poss` ede deux composantes fortement connexes C = {1, 2, 3} et C = {4, 5}. La d etermination des composantes fortement connexes dun graphe est un probl` eme fr equent dans lanalyse des graphes d etat (cha nes de Markov, r eseaux de Petri,... ) mod elisant l evolution dun syst` eme. On distingue alors souvent les classes nales qui correspondent aux sorties du graphe r eduit (d` es que l etat du syst` eme est un sommet dune classe nale, les etats post erieurs appartiendront a ` cette classe) et les autres dont les sommets sont dits transitoires . Pour lexemple de la gure 2.3, C est la seule classe nale et les etats {1, 2, 3} sont transitoires. On verra au paragraphe 4.4.5 un algorithme ecace de calcul des composantes fortement connexes. Version 6 f evrier 2005

90
1 2 C' 3 C" 4 5

Chapitre 4. Graphes

Figure 2.3: Un graphe orient e et son graphe r eduit.

4.3

Arbres et arborescences

Les arbres repr esentent une structure minimale en nombre de liaisons pour connecter un ensemble de sommets. A ce titre, ils constituent une classe fondamentale de graphes intervenant dans de nombreux probl` emes doptimisation de r eseaux. Les arborescences fournissent des structures de donn ees a ` la base de nombreux algorithmes performants.

4.3.1

Arbres

Nous consid erons dans ce paragraphe des graphes non orient es, et nous rappelons que dans un graphe non orient e, la longueur dun cycle est sup erieure ou egale a ` trois. Soit G un graphe a ` n sommets (n 1) ; nous allons prouver que les six propri et es ci-dessous sont equivalentes. Un graphe v eriant lune de ces propri et es est un arbre. 1) G est un graphe connexe sans cycle ; 2) G est un graphe connexe poss edant n 1 ar etes ; 3) G est un graphe sans cycle poss edant n 1 ar etes ; 4) G est un graphe tel que deux sommets quelconques sont li es par une seule cha ne ; 5) G est un graphe connexe qui perd sa connexit e par suppression dune ar ete quelconque ; 6) G est un graphe sans cycle tel que ladjonction dune ar ete quelconque cr ee un cycle et un seul. Pour d emontrer l equivalence de ces d enitions, deux lemmes pr eliminaires seront utiles. Lemme 3.1. Un graphe connexe a ` n sommets poss` ede au moins n 1 ar etes. Preuve. (Induction sur n.) La propri et e est vraie pour n = 1. Supposons n 2 et soit G = (S, A) un graphe connexe a ` n sommets. Consid erons un sommet u de S . Notons Gu le sous-graphe de G induit par S {u} et soient C1 ,C2 ,...,Cp Version 6 f evrier 2005

4.3. Arbres et arborescences


2 1 3 6 4 5 9 13 14 12 11 10 8 7

91

Figure 3.1: Un arbre a ` quatorze sommets. les composantes connexes de Gu . Sur la gure 3.2 sont repr esent es a ` gauche un graphe orient e G et a ` droite le graphe Gu . Pour tout k = 1, . . . , p, il existe au moins une ar ete liant u a ` un sommet de Ck , sinon G ne serait pas connexe. Dautre part les sous-graphes Gk de G induits par les Ck sont connexes. On a donc par induction mk nk 1, o` u nk (respectivement mk ) d esigne le nombre de sommets (respectivement dar etes) de Gk . Il en r esulte que :
p p

m(

k =1

mk ) + p

k =1

nk = n 1.

Lemme 3.2. Un graphe a ` n sommets ayant au moins n ar etes poss` ede un cycle. Preuve. (Induction sur n.) La propri et e est vraie pour n 3. Soit donc n 4 et G = (S, A) un graphe a ` n sommets poss edant m ar etes (m n). Supposons en raisonnant par labsurde que G soit sans cycles et consid erons un sommet u de S . Notons Gu le sous-graphe de G induit par S {u}, C1 ,C2 ,...,Cp les composantes connexes de Gu et Gk le sous-graphe de G induit par Ck (voir gure 3.2). Chaque Gk est sans cycle, donc mk nk 1 et le nombre dar etes incidentes a ` u est p m p m m + p n p + 1. Il existe donc un k dans { 1 , . . . , p} tel k k =1 k =1 k k que u soit adjacent a ` deux sommets distincts a et b de Ck . Le graphe G etant k connexe, il existe une cha ne de a a ` b dans G et donc un cycle dans G passant par u, a et b. Proposition 3.3. Soit G un graphe a ` n sommets, les six propri et es suivantes sont equivalentes : (1) G est un graphe connexe sans cycle ; (2) G est un graphe connexe poss edant n 1 ar etes ; (3) G est un graphe sans cycle poss edant n 1 ar etes ; (4) G est un graphe tel que deux sommets quelconques sont li es par une seule cha ne ; Version 6 f evrier 2005

92
C1 u C2 C3 C3 C1

Chapitre 4. Graphes

C2

Figure 3.2: Le graphe Gu . (5) G est un graphe connexe qui perd la connexit e par suppression dune ar ete quelconque ; (6) G est un graphe sans cycle tel que ladjonction dune ar ete quelconque cr ee un cycle et un seul. Preuve. Nous montrons que 1 2 3 4 5 6 1.

1 2. Soit G un graphe a ` n sommets connexe et sans cycle. Dapr` es le lemme 1, on a m n 1 et dapr` es le lemme 2 on a m n 1, do` u il r esulte que m = n 1. 2 3. Un graphe G connexe et poss edant n1 ar etes est sans cycle car dans le cas contraire, la suppression dune ar ete quelconque du cycle entra nerait lexistence dun graphe connexe a ` n sommets et n 2 ar etes.

3 4. Supposons quun graphe G a ` n 1 ar etes soit sans cycle et ne soit pas connexe. Le graphe induit par chaque composante connexe qui est connexe et sans cycle poss` ede un sommet de plus que dar etes. Le nombre de composantes connexes de G etant au moins deux, le graphe G lui m eme poss` ede au plus n 2 ar etes. De plus lexistence de deux cha nes distinctes entre deux sommets entra ne celle dun cycle dans G. 4 5. Soit G un graphe tel que pour toute paire de sommets, il existe une cha ne et une seule ayant ces deux sommets pour extr emit es. Le graphe G est bien s ur connexe. Si G ne perdait pas la connexit e par suppression dune ar ete {a, b}, une cha ne nutilisant pas cette ar ete lierait a et b, ce qui contredit lhypoth` ese dunicit e de la cha ne liant a et b. 5 6. Si G est connexe et perd la connexit e par suppression dune ar ete quelconque, il est sans cycle car dans le cas contraire, la suppression dune ar ete du cycle ne lui ferait pas perdre la connexit e. De plus ladjonction dune ar ete {a, b} cr ee un cycle puisquil existe d ej` a une cha ne liant a et b dans G. Ce cycle passe par lar ete {a, b} puisque G est sans cycle. De plus si ladjonction de {a, b} cr eait deux cycles distincts, il existerait dans G deux cha nes distinctes de a a ` b et donc un cycle. 6 1. Si ladjonction dune ar ete quelconque {a, b} cr ee un cycle, G est connexe car dans le cas contraire, ladjonction dune ar ete entre deux sommets appartenant Version 6 f evrier 2005

4.3. Arbres et arborescences a ` deux composantes connexes distinctes ne cr eerait pas de cycles.

93

4.3.2

Arborescences

On obtient une arborescence a ` partir dun arbre en distinguant lun de ses sommets. Une arborescence est donc un couple form e dun arbre H et dun sommet distingu e r appel e racine. Une arborescence (H, r ) peut aussi etre d enie naturellement en tant que graphe orient e en substituant larc (u, v ) a ` lar ete {u, v } si la cha ne de r a ` v dans H passe par u, larc (v, u) sinon. Une arborescence de racine r est alors un graphe orient e tel quil existe un chemin unique de r a ` nimporte quel sommet. Lune des propri et es les plus importantes dune arborescence est sa structure r ecursive que nous mettons en evidence par le lemme suivant : Lemme 3.4. Soit A = (H, r ) une arborescence poss edant au moins deux sommets, Hr le graphe induit par S {r } et r1 , . . . , rk les sommets adjacents a ` la racine. Les sous-graphes induits par les composantes connexes de Hr constituent k arbres disjoints contenant chacun un et un seul des sommets ri . Preuve. Chaque composante connexe de Hr contient un et un seul ri car H ne poss` ede pas de cycle. Les k sous-graphes induits par ces composantes qui sont connexes et sans cycle sont des arbres disjoints. La gure 3.3 illustre la structure r ecursive dune arborescence.
6 1 6 7 5 3 4 1 A(7) 5 A(3) 7 3 4 A(4) 2 A(2) 2

Arborescence A=(H,6)

Figure 3.3: Structure r ecursive dune arborescence. Etant donn ee limportance des structures arborescentes, certaines notations sp eciques ont et e cr e ees. Les ascendants et lesdescendants dun sommet ont leur d enition usuelle pour larborescence consid er ee comme un graphe orient e. Tout sommet s (sauf la racine) a un pr ed ecesseur unique not e p(s) et appel e p` ere de s. Inversement les successeurs dun sommet s sont ses ls. Si le sommet s na pas de ls, il est appel e feuille (ou encore sommet externe, dans le cas contraire, cest un Version 6 f evrier 2005

94

Chapitre 4. Graphes

noeud (ou encore sommet interne). La profondeur dun sommet est la longueur du chemin de la racine a ` ce sommet. La hauteur dun sommet u est la longueur maximale dun chemin dorigine u. Si u et v sont deux sommets, lanc etre de u et v est lascendant commun de u et v de profondeur maximale. Par conformit e avec les six d enitions initiales (en particulier : m = n 1), tous les arbres que nous avons d enis jusquici poss` edent au moins un sommet. Il est cependant commode, surtout dans le cadre des applications informatiques li ees aux structures de donn ees et leur programmation (par exemple lutilisation du pointeur nil du langage Pascal), de consid erer quun arbre vide est aussi un arbre. Sauf mention contraire, nous adopterons d esormais cette convention et noterons une arborescence vide.

4.3.3

Arborescences ordonn ees

Il est souvent utile de d enir pour chaque sommet dune arborescence un ordre total sur les ls de ce sommet. Cest par exemple le cas pour les arbres 2-3 (voir chapitre 6) ou encore les arbres de d erivation dans une grammaire. Si lon adjoint a ` chaque sommet interne dune arborescence un ordre total sur les ls de ce sommet, on d enit une arborescence ordonn ee. Les relations dordre locales permettent de munir lensemble des sommets de larborescence dun ordre total. Soit A une arborescence ordonn ee, la liste L repr esentant lordre total sur les sommets de A est construite r ecursivement comme suit : si A est larborescence vide, la liste L est vide ; sinon soient L1 , . . . , Lk les listes associ ees aux ordres totaux pour les sous-arborescences de racines r1 , . . . , rk et (r1 , . . . , rk ) la liste associ eee a ` lordre total sur les ls r1 , . . . , rk de la racine, la liste L est egale a ` (r ) L1 L2 Lk o` u lon note L L la concat enation des deux listes L et L . Remarque. La liste associ ee a ` lordre total sur les sommets dune arborescence ordonn ee est une liste pr exe au sens d eni dans la section 4.4.5.
a

Figure 3.4: Une arborescence.

Version 6 f evrier 2005

4.3. Arbres et arborescences

95

La gure 3.4 repr esente une arborescence ordonn ee dans laquelle, comme il est dusage, les ls dun m eme sommet sont dessin es de la gauche vers la droite dans lordre croissant. Lordre total est donc (a, b, d, e, i, j, f, c, g, h, k, l).

4.3.4

Arbres positionn es et arbres binaires

Un arbre positionn e darit e p est une arborescence telle que les arcs liant les fr` eres dun m eme sommet a ` leur p` ere sont etiquet es par des el ements distincts de ie `me lensemble {1, . . . , p}. On parle alors du k ls si larc a l etiquette k . Un arbre positionn e darit e p est complet si chacun de ses noeuds poss` ede p ls. Un arbre binaire est un arbre positionn e darit e 2. Au lieu de l etiqueter sur {1, 2}, il est plus parlant dutiliser les etiquettes gauche et droit . Chaque nud poss` ede donc soit un ls droit , soit un ls gauche , soit les deux. Une d enition r ecursive des arbres binaires, fondamentale dans les applications informatiques, s enonce comme suit : (1) larbre vide est un arbre binaire ; (2) soient A1 et A2 deux arbres binaires et s un sommet nappartenant ni a ` A1 ni a ` A2 , alors larborescence de racine s, de sous-arbre gauche A1 et de sous-arbre droit A2 est un arbre binaire. La distinction entre ls gauche et ls droit entra ne quelques notations suppl ementaires. Soit A un arbre binaire complet et u lun de ses sommets internes, Ag (u) (respectivement Ad (u)) d esigne le sous-arbre de A dont la racine est le ls gauche de u (respectivement le ls droit de u). Si u est la racine on note Ag (respectivement Ad ) le sous-arbre gauche (respectivement le sous-arbre droit) de A. Le sous-arbre de racine u est not e A(u). La gure 3.5 pr esente un exemple darbre binaire.

4.3.5

Arbre binaire complet

Un arbre binaire complet est un arbre binaire non vide et complet, cest-` a-dire tel que chaque noeud poss` ede z ero ou deux ls. La gure 3.5 repr esente un arbre binaire complet. La d enition r ecursive suivante des arbres binaires complets est egalement tr` es utile : (1) une arborescence r eduite a ` sa racine est un arbre binaire complet ; (2) soient A1 et A2 deux arbres binaires complets et s un sommet nappartenant ni a ` A1 ni a ` A2 , larborescence A de racine s, de sous-arbre gauche A1 et de sous-arbre droit A2 est un arbre binaire complet. La gure 3.6 montre les premiers arbres binaires complets. La proposition simple qui suit illustre le raisonnement par induction fr equemment pratiqu e sur les arbres binaires complets. Proposition 3.5. Un arbre binaire complet a ` p (p 1) sommets externes poss` ede p 1 sommets internes. Version 6 f evrier 2005

96

Chapitre 4. Graphes

2 1 5 6 4 7 3

Un arbre binaire

Un arbre binaire complet Sommets externes cercls

Figure 3.5: Arbre binaire et arbre binaire complet.

aucun nud un nud deux nuds

trois nuds

Figure 3.6: Les premiers arbres binaires complets. Preuve. (Induction sur p.) Si p = 1, larbre binaire complet est r eduit a ` un sommet qui est externe et la propri et e est vraie. Soient p 2 et A un arbre binaire complet a ` p sommets externes. Larbre A est form e dune racine r , dun sous-arbre gauche A1 qui est un arbre binaire complet a ` p1 sommets externes (p1 1) et dun sousarbre droit A2 qui est un arbre binaire complet a ` p2 sommets externes (p2 1). On a p1 + p2 = p et par r ecurrence le nombre de sommets internes de A1 est donc p1 1 et celui de A2 est p2 1. Le nombre de sommets internes de A est donc 1 + (p1 1) + (p2 1) = p 1. Version 6 f evrier 2005

4.4. Parcours dun graphe

97

Les arbres binaires complets ne constituent en fait quune repr esentation plus structur ee des arbres binaires. En eet, lop eration deeuillage permet dassocier a ` un arbre binaire complet un arbre binaire (sous-jacent). Limage r esultant de leeuillage dun arbre binaire complet A est le sous-graphe de A induit par ses sommets internes. Leeuillage nest pas une op eration injective mais on peut montrer que tous les arbres binaires complets ayant la m eme image sont isomorphes. Ils ne di` erent en fait que par les noms des feuilles supprim ees. La gure 3.7 repr esente un arbre binaire complet et a ` sa droite larbre eeuill e.
2 1 5 6 4 7 3 1 2

4 7 9 L'arbre binaire effeuill

8 Un arbre binaire complet

Figure 3.7: Eeuillage dun arbre binaire complet. Lop eration r eciproque appel ee compl etion consiste a ` compl eter a ` deux le nombre de ls de chaque sommet de A. Cette d enition ne pr ecise cependant pas la r` egle de choix des noms des nouveaux sommets. La gure 3.8 montre lop eration de compl etion.

4.4
4.4.1

Parcours dun graphe


Parcours dun graphe non orient e

Dans cette section nous consid erons un graphe non orient e connexe G = (S, A). Un parcours de G a ` partir de lun de ses sommets s est une liste de sommets L telle que : le premier sommet de L est s, chaque sommet de S appara t une fois et une seule dans L, tout sommet de la liste (sauf le premier) est adjacent a ` au moins un sommet plac e avant lui dans la liste. Nous pr esentons dabord un algorithme g en erique de calcul dun parcours. Nous etudions ensuite les deux types de parcours les plus utilis es : les parcours en profondeur et les parcours en largeur. Version 6 f evrier 2005

98
1 2 3 2 3 1

Chapitre 4. Graphes

4 5 Arbre binaire 6

4 5

Arbre binaire complt

Figure 3.8: Compl etion dun arbre binaire. D enitions et notations Soit T une partie non vide de S , la bordure B (T ) de T est lensemble des sommets de S T adjacents a ` T . Pour le graphe de la gure 4.1, la bordure de {3, 5, 6} est {1, 2, 4}.

Soit L une liste de sommets de G. Le support de L, not e (L), est lensemble des sommets pr esents dans la liste (par exemple (1, 2, 1, 3, 5, 3, 3) = {1, 2, 3, 5}). La liste des k premiers sommets de L est not ee Lk . Un sommet u de L est ferm e si tous ses voisins dans G appartiennent a ` (L), dans le cas contraire il est ouvert. Comme les listes qui interviennent dans ce chapitre ne contiennent quune seule occurrence de chaque el ement de leur support, nous utiliserons la notation (abusive mais plus simple) B (L) a ` la place de B ( (L)).
7 2

Figure 4.1: Bordure dun sous-ensemble de sommets.

Version 6 f evrier 2005

4.4. Parcours dun graphe Algorithme g en erique et propri et es des parcours

99

Nous donnons dans cette section un algorithme g en erique de construction dun parcours. Nous pr esentons ensuite les propri et es fondamentales des parcours et nous proposons un premier niveau dimpl ementation de lalgorithme g en erique. Consid erons la proc edure Parcours-g en erique(G, s) ci-dessous : proc edure Parcours-g en erique(G, s) ; L := (s) ; pour k de 1 a ` n 1 faire choisir un sommet v dans B (L) ; L := L (v ) ntantque. La proposition suivante etablit l egalit e entre lensemble des listes construites par la proc edure et lensemble des parcours de G. Proposition 4.1. Les parcours de G sont exactement les listes construites par Parcours-g en erique(G, s). ne rique(G, s). Montrons par inducPreuve. Soit L une liste de Parcours-ge tion sur le nombre dit erations que la liste Lk obtenue apr` es k it erations satisfait linvariant suivant : Lk est un parcours du sous-graphe de G induit par (Lk ) . La propri et e est vraie pour k = 0. Consid erons lit eration k (0 < k n 1) et soit u un sommet de lensemble non vide S (Lk1 ). Comme G est connexe, il existe une cha ne el ementaire du sommet s de (Lk1 ) au sommet u de S (Lk1 ) dont lune des ar etes {x, y } v erie x S (Lk1 ) et y (Lk1 ). Le choix du sommet x est donc possible a ` lit eration k tant que k < n. Comme dune part Lk1 est un parcours du sous-graphe de G induit par (Lk1 ) (hypoth` ese dinduction) et que dautre part le sommet x appartient a ` B (Lk1 ), la liste Lk = Lk1 (x) est un parcours du sous-graphe de G induit par (Lk ) = (Lk1 ) {x}. La liste Ln1 est donc un parcours de G. R eciproquement soit L = (x1 , . . . , xn ) un parcours de G a ` partir de s. Par d enition dun parcours, xk+1 appartient a ` B ({x1 , . . . , xk }) = B (Lk1 ) pour k de 1 a ` n 1. L est donc aussi la liste obtenue par Parcours-g en erique en choisissant le sommet xk+1 a ` lit eration k . Soit L = (x1 , . . . , xn ) un parcours de G. Si nous associons a ` chaque sommet xk ` B ({xk }) {x1 , . . . , xk1 }, le sous(k {2, . . . , n}) un sommet xk appartenant a graphe de G induit par les ar etes {xk , xk }, appel ees ar etes de liaison, est un arbre couvrant de G. Cette propri et e est tr` es importante car elle montre quun parcours emprunte un nombre minimal dar etes de liaison. Version 6 f evrier 2005

100

Chapitre 4. Graphes

Proposition 4.2. Soit L = (x1 , . . . , xn ) un parcours de G. Pour tout k , (2 ` xk . Le sous-graphe induit k n), soit xk un sommet de {x1 , . . . , xk1 } adjacent a par les ar etes {xk , xk }, (2 k n), est un arbre couvrant de G. Preuve. Nous notons Gp le sous-graphe de G induit par les ar etes {xk , xk } (k {1, . . . , p}) et nous raisonnons par r ecurrence sur p. La propri et e est vraie pour p = 1 car on a toujours x1 = s, et G1 est donc r eduit a ` lar ete {s, x2 }. Supposons p 2 ; le graphe Gp est connexe car obtenu par adjonction a ` larbre Gp1 (hypoth` ese dinduction) dun nouveau sommet xp+1 et dune nouvelle ar ete incidente a ` xp+1 et a ` un sommet de Gp1 . Le graphe Gp qui est connexe et poss` ede p 1 ar etes et p sommets (car Gp1 poss` ede p 2 ar etes et p 1 sommets) est donc un arbre. Il en r esulte que Gn est un arbre couvrant de G. La gure 4.2 repr esente le parcours (1, 3, 4, 6, 7, 2, 5) dun graphe non orient e et montre larbre couvrant associ e (ar etes epaisses).
1 3

Figure 4.2: Parcours dun graphe et arbre couvrant. Avant d etudier des parcours particuliers, nous proposons une impl ementation partielle de lalgorithme g en erique d ecrivant le calcul des sommets ouverts. Nous appelons degr e r esiduel dun sommet x, et nous le notons r (x), le nombre de voisins de x qui nappartiennent pas a ` la liste en cours. Un sommet de la liste en cours (nous dirons encore sommet visit e) est donc ouvert si et seulement si son degr e r esiduel est non nul.

Version 6 f evrier 2005

4.4. Parcours dun graphe

101

proc edure Parcours(G, s) ; pour tout sommet x dans S faire r (x) := d(x) ; Fermer(x) npour ; {d(x) est le degr e de x dans G} Ouvrir(s) ; Examiner-voisins(s) ; tantquil reste un sommet non visit e faire choisir une ar ete de liaison {x, y } o` u x est ouvert et y non visit e; L := L (y ) ; si r (y ) > 0 alors ouvrir(y ) ;Examiner-voisins(y ) nsi ntantque. A chaque etape, lalgorithme Parcours ci-dessus choisit une ar ete de liaison {x, y } o` u x est un sommet ouvert et y un sommet non visit e, ouvre le sommet y si r (y ) > 0 et diminue dune unit e le degr e r esiduel de chacun des voisins de y dans G. Lalgorithme utilise un tableau bool een pour g erer lensemble des sommets visit es, un tableau bool een pour g erer lensemble des sommets ouverts, un tableau lin eaire pour g erer les degr es r esiduels et une liste des voisins pour coder G. La proc edure Examiner-voisins(y ) fait la mise a ` jour des degr es r esiduels et des sommets ouverts a ` chaque visite dun nouveau sommet. Sa complexit e est O (d(y )). proc edure Examiner-voisins(y ) ; pour tout voisin z de y dans G faire r (z ) := r (z ) 1 ; si z est visit e et r (z ) = 0 alors Fermer(z ) npour. Dans la mesure o` u lalgorithme de choix de lar ete de liaison nest pas pr ecis e, il nest pas possible d evaluer la complexit e globale de lalgorithme Parcours. Cependant, comme chaque sommet est visit e une fois et une seule, la proc edure Examiner-voisins est egalement ex ecut ee une fois et une seule pour chaque sommet. Il en r esulte la proposition suivante : Proposition 4.3. Dans lalgorithme Parcours, la complexit e des op erations autres que le choix de lar ete de liaison est O (n + m). Nous allons d esormais etudier deux types de parcours en particularisant la r` egle de choix des ar etes de liaison. Version 6 f evrier 2005

102

Chapitre 4. Graphes

4.4.2

Parcours en profondeur

Un parcours L du graphe G a ` partir de s est dit en profondeur si, a ` chaque etape, lar ete de liaison {x, y } choisie est telle que le sommet x soit le dernier sommet visit e ouvert. Une impl ementation possible de lalgorithme de choix consiste alors a ` utiliser une pile de sommets visit es posss edant les propri et es suivantes : tous les sommets ouverts sont dans la pile, si un sommet ouvert x a et e visit e avant un sommet ouvert y , alors y est plac e plus haut que x dans la pile. A partir dune pile contenant initialement le seul sommet s, les op erations sur la pile, a ` chaque etape du parcours, sont les suivantes : a) Si le sommet de pile t est ouvert, une ar ete {t, y } est choisie comme ar ete de liaison et on empile y ; b) Si le sommet de pile est ferm e, on proc` ede a ` des d epilements tant que le sommet de pile est ferm e (et la pile non vide). La proc edure Profondeur(G, s) ci-dessous r ealise ces op erations de pile pour choisir les ar etes de liaison. proc edure Profondeur(G, s) ; Cr eer() ; pour tout sommet x dans S faire r (x) := d(x) ; Fermer(x) npour ; L := (s) ; Ouvrir(s) ; Empiler(s, ) ; Examiner-voisins(s) ; tantque est non vide faire t :=Sommet() ; si t est ouvert alors choisir une ar ete {t, y } telle que y soit non visit e; L := L (y ) ; Empiler(y, ) ; si r (y ) > 0 alors Ouvrir(y ) ; Examiner-voisins(y ) nsi epiler() sinon D nsi ntantque. Nous proposons au lecteur, a ` titre dexercice, de d emontrer que la pile g er ee par la proc edure Profondeur(G, s) poss` ede les deux propri et es requises. On peut plus pr ecis ement montrer, par r ecurrence sur le nombre de sommets visit es, que la liste des sommets contenus de bas en haut dans la pile lors de la visite du sommet x est la liste des sommets du chemin de s a ` x dans larborescence de liaison en cours. Cette propri et e est int eressante car elle induit une autre impl ementation possible de lalgorithme de choix pour un parcours en profondeur. Il sut en eet Version 6 f evrier 2005

4.4. Parcours dun graphe

103

de construire la fonction p` ere de larborescence de liaison au fur et a ` mesure de la cr eation des ar etes de liaison. Si le sommet visit e en cours x est ferm e, on utilise alors la fonction p` ere pour remonter au dernier sommet visit e ouvert. Sur le graphe de la gure 4.3, la proc edure Profondeur calcule le parcours en profondeur (1, 3, 4, 6, 5, 2, 7). Les contenus de la pile et de la liste sont donn es
1 3

Figure 4.3: Parcours en profondeur. dans le tableau ci-dessous. La premi` ere ligne correspond a ` la pile et la seconde a ` la liste : (1) (1,3) (1) (1,3) (1,3,4) (1,3,4,6) (1,3,4,6,5) (1,3,4,6) (1,3,4,6,2) (1,3,4) (1,3,4,6) (1,3,4,6,5) (1,3,4,6,5) (1,3,4,6,5,2)

(1,3,4,6) (1,3,4) (1,3) (1) (1,3,4,6,5,2) (1,3,4,6,5,2) (1,3,4,6,5,2) (1,3,4,6,5,2) (1,7) (1) () (1,3,4,6,5,2,7) (1,3,4,6,5,2,7) (1,3,4,6,5,2,7)

Proposition 4.4. La complexit e en temps de la proc edure Profondeur est O (n + m). Preuve. Evaluons dabord la complexit e des op erations sur la pile. Comme un sommet est visit e une fois et une seule, il est empil e une fois et une seule. Il est donc d epil e au plus une fois et en fait exactement une fois en raison de la condition de terminaison. La complexit e des op erations sur la pile est donc O (n). Comme la complexit e des op erations autres que le choix des ar etes de liaison dans lalgorithme Parcours est O (n + m) (proposition 4.3), la complexit e globale de la proc edure Profondeur est O (n + m). Nous avons d ecrit jusquici des algorithmes it eratifs pour le calcul dun parcours en profondeur a ` partir dun sommet s. Nous pr esentons maintenant un algorithme r ecursif qui r esout ce probl` eme. Le principe de cet algorithme est de visiter s, puis de r ealiser un appel r ecursif pour chaque voisin de s non encore visit e. Un appel pour un sommet x est terminal si tous les voisins de x sont d eja visit es. La proc edure Profondeur-r ecursif ci-dessous impl emente cet algorithme. Version 6 f evrier 2005

104

Chapitre 4. Graphes proc edure Profondeur-r ecursif(s) ; Visiter(s) ; pour tout voisin x de s faire si x est non visit e alors Visiter(x) ; Profondeur-r ecursif(x) nsi npour.

La proc edure Visiter(x) met a ` jour le tableau des sommets visit es et la liste des sommets visit es. Cet algorithme, dont lanalyse est propos ee en exercice, a une complexit e O (max{n, m}). Lune de ses variantes, utilis ee pour le calcul des composantes fortement connexes dun graphe orient e, est etudi ee dans la section 4.4.5.

4.4.3

Parcours en largeur

Un parcours L du graphe G a ` partir de s est dit en largeur si, a ` chaque etape, lar ete de liaison {x, y } choisie est telle que le sommet x soit le premier sommet visit e ouvert. Une impl ementation possible de lalgorithme de choix consiste ici a ` utiliser une le de sommets visit es posss edant les propri et es suivantes : tous les sommets ouverts sont dans la le, si un sommet ouvert x a et e visit e avant un sommet ouvert y , alors y est plac e apr` es x dans la le. A partir dune le contenant initialement le seul sommet s, les op erations sur la le, a ` chaque etape du parcours, sont les suivantes : a) Si la t ete de le t est un sommet ouvert, une ar ete {t, y } est choisie comme ar ete de liaison et lon enle y ; b) Si la t ete de le est un sommet ferm e, on proc` ede a ` des d elements tant que la t ete de le est un sommet ferm e (et la le non vide). La proc edure Largeur(G, s) ci-dessous r ealise ces op erations de le pour choisir les ar etes de liaison.

Version 6 f evrier 2005

4.4. Parcours dun graphe

105

proc edure Largeur(G, s) ; Cr eer() ; pour tout sommet x dans S faire r (x) := d(x) ; Fermer(x) npour ; L := (s) ; Ouvrir(s) ; Enfiler(s, ) ; Examiner-voisins(s) ; tantque est non vide faire t :=T ete() ; si t est ouvert alors choisir une ar ete {t, y } telle que y soit non visit e; L := L (y ) ; Enfiler(y, ) ; si r (y ) > 0 alors Ouvrir(y ) ; Examiner-voisins(y ) nsi sinon D efiler() nsi ntantque. Sur le graphe de la gure 4.4, la proc edure Largeur calcule le parcours en largeur (1, 7, 4, 3, 6, 5, 2). Par un raisonnement analogue a ` celui fait pour la proc edure Profondeur, la complexit e de la proc edure Largeur est O (n + m).
1 3

Figure 4.4: Parcours en largeur.

Parcours dun graphe non orient e quelconque Consid erons le cas o` u le graphe G nest pas connexe. Un parcours de G est d eni comme une liste de sommets telle que : chaque sommet de S apparait une fois et une seule dans la liste, chaque sommet de la liste (sauf le premier) appartient a ` la bordure du sous-ensemble des sommets plac es avant lui dans la liste, si toutefois cette bordure est non vide. La condition de connexit e nest alors plus requise si les sommets de la liste en cours constituent une composante connexe de G.

Version 6 f evrier 2005

106

Chapitre 4. Graphes

Il r esulte de cette d enition quun parcours de G est une liste L = L1 L2 Lp o` u les Lj sont des parcours des sous-graphes (connexes) induits par les p composantes connexes de G. Les ar etes de liaison constituent alors une famille de p arbres o` u chaque arbre couvre une composante connexe de G. Le parcours (9, 7, 6, 10, 8, 1, 2, 3, 4, 5) est un parcours en profondeur du graphe de la gure 4.5. Les ar etes epaisses correspondent a ` des arbres couvrant les deux composantes connexes.
1 2 6

10

Figure 4.5: Un graphe non orient e non connexe.

4.4.4

Parcours dun graphe orient e

Dans cette section nous consid erons un graphe G orient e et sans boucles. Pour un graphe orient e, la bordure (T ) dune partie T de S est le sous-ensemble des sommets de S T qui sont les extr emit es dun arc dont lorigine est dans T . Si L est une liste de sommets de G, nous noterons encore abusivement (L) la bordure du support de L. Un sommet dune liste L est ferm e si tous ses successeurs dans G appartiennent a ` (L), dans le cas contraire il est ouvert . Sur lexemple de la gure 4.6, la bordure de {1, 2} est {3, 4, 5}.
7 2 1

Figure 4.6: Bordure pour un graphe orient e. Un parcours de G est une liste des sommets de G telle que : chaque sommet de S appara t une fois et une seule dans la liste, chaque sommet de la liste (sauf le premier) appartient a ` la bordure du sous-ensemble des sommets plac es avant lui dans la liste, si toutefois cette bordure est non vide. Version 6 f evrier 2005

4.4. Parcours dun graphe

107

Les propri et es des parcours des graphes non orient es se prolongent au cas orient e. La notion dar ete de liaison est remplac ee par celle darc de liaison. Le graphe partiel des arcs de liaison poss` ede en particulier la propri et e suivante que nous enon cons sans d emonstration : Proposition 4.5. Les arcs de liaison dun parcours constituent une for et couvrante du graphe G. La liste L=(4, 5, 9, 8, 7, 6, 10, 11, 1, 3, 2) est un parcours du graphe orient e de la gure 4.7. La for et couvrante contient deux arborescences A1 et A2 (en trait plein).
7 1 3 2 2 4 6 10 11 5 9 8

Figure 4.7: Un graphe orient e.

Parcours en profondeur dun graphe orient e Un parcours de G est dit en profondeur si lorigine de chaque arc de liaison est le dernier sommet ouvert d ej` a visit e. La proc edure Parcours-profondeur-graphe-orient e ci-dessous calcule un parcours en profondeur en utilisant essentiellement la proc edure Profondeurr ecursif-orient e, qui est ladaptation directe de la proc edure Profondeurr ecursif pr esent ee dans la section 4.4.2 pour le cas non orient e.

proc edure Parcours-profondeur-graphe-orient e(G) ; tant quil existe un sommet de G non visit e faire choisir un sommet non visit e s; Profondeur-r ecursif-orient e(s) ntantque.

La proc edure Profondeur-r ecursif-orient e s ecrit alors :

Version 6 f evrier 2005

108

Chapitre 4. Graphes proc edure Profondeur-r ecursif-orient e(s) Visiter(s) ; pour tout successeur x de s faire si x est non visit e alors Visiter(x) ; Profondeur-r ecursif-orient e(x) nsi npour.

Nous pr esentons maintenant quelques propri et es des parcours en profondeur qui seront particuli` erement utiles au calcul des composantes fortement connexes. Soit L un parcours en profondeur de G. Nous notons F la for et couvrante induite par L et r (x) le rang dun sommet x dans la liste L. En dehors des arcs de F , le parcours L permet de distinguer trois autres classes darcs dans G. Un arc (x, y ) est arri` ere si y est un ascendant de x dans F . Un arc (x, y ) est avant si x est un ascendant de y dans F . Un arc (x, y ) est transverse si ses deux extr emit es appartiennent a ` deux arborescences di erentes, ou si x et y ont un anc etre commun z dans F distinct de x et de y . Pour le parcours (4, 5, 9, 8, 7, 6, 10, 11, 1, 3, 2) du graphe de la gure 4.7, les arcs (7, 9), (11, 10) et (2, 1) sont arri` ere, les arcs (6, 5), (1, 5) et (3, 4) sont transverses et il ny a pas darc avant. Le lemme suivant etablit une propri et e des arcs transverses. Lemme 4.6. Si (x, y ) est un arc transverse pour un parcours en profondeur L, alors r (y ) < r (x). Preuve. Soit L = L1 L2 Lq un parcours en profondeur et soient A1 , A2 , . . . , Aq les arborescences de la for et couvrante. Par d enition de L, il nexiste pas darc dont lorigine soit dans Ai et lextr emit e dans Aj avec i < j .

Soit (x, y ) un arc transverse tel que x Ai et y Aj avec i = j . On a n ecessairement i > j et donc r (x) > r (y ).

Soit (x, y ) un arc transverse dont les deux extr emit es x et y appartiennent a ` la m eme arborescence et soit z {x, y } lanc etre commun de x et y dans cette arborescence. Si r (x) < r (y ), lorsque le sommet x est visit e, le sommet y ne lest pas encore. Il existe donc a ` cette etape du parcours un chemin de sommets non visit es de x a ` y . Donc y sera accessible dans larborescence a ` partir de x. Do` u la contradiction. Le classement des arcs de G relativement a ` un parcours en profondeur L x e est a ` la base dun algorithme performant pour tester si un graphe est sans circuit. En eet, le lemme suivant montre que G poss` ede un circuit si et seulement sil existe au moins un arc arri` ere. Lemme 4.7. Soient G un graphe orient e et L lun de ses parcours en profondeur. Le graphe G est sans circuit si et seulement sil nexiste pas darc arri` ere. Version 6 f evrier 2005

4.4. Parcours dun graphe

109

Preuve. La condition n ecessaire est evidente. Soit un circuit de G et supposons quil nexiste pas darc arri` ere. Dapr` es le lemme 4.6, le circuit poss` ede au moins un arc transverse et un arc avant. Consid erons alors le sommet z , origine dun arc avant de , dont le rang est minimum et notons y le pr ed ecesseur de z dans . Soit x un sommet de distinct de z . Si larc de dorigine x est transverse, alors, dapr` es le lemme 4.6 son rang r (x) est plus grand que le rang du premier sommet, origine dun arc avant, rencontr ea ` partir de x sur le circuit ; on a donc r (x) > r (z ). Si larc de dorigine x est avant, on a r (x) > r (z ) par d enition de z . Donc, lorsque le sommet z est visit e, aucun autre sommet de nest encore visit e. Il en r esulte lexistence dans F dun chemin de z a ` y . Larc (y, z ) est donc arri` ere et transverse (par d enition de z ). Contradiction. Pour tester si un graphe orient e est sans circuit, il sut donc de construire un parcours en profondeur de ce graphe et de tester si les arcs de G qui nappartiennent pas a ` la for et couvrante sont avant ou transverse . La complexit e de cet algorithme est en fait celle du parcours, soit O (n + m). Si le graphe G est fortement connexe, la for et couvrante du parcours se r eduit a ` une seule arborescence couvrante. Dans le cas contraire, nous montrons que le sous-graphe de F induit par chaque composante fortement connexe est une arborescente couvrante de cette composante fortement connexe. Lemme 4.8. Soient L un parcours en profondeur de G, F la for et induite par L et C une composante fortement connexe de G. Le sous-graphe de F induit par C est une arborescence couvrant C . Preuve. Soit s le premier sommet de C visit e dans L. Tous les autres sommets de C sont accessibles a ` partir de s dans le sous-graphe de G induit par C et nont pas encore et e visit es. Ils seront donc visit es apr` es s et accessibles dans F a ` partir de s. La proposition en r esulte. La proposition pr ec edente met en evidence le premier sommet du parcours L appartenant a ` une composante fortement connexe donn ee C . Nous appellerons ce sommet point dentr ee de L dans C . Nous donnons maintenant une caract erisation de ces points dentr ee qui est a ` la base dun algorithme ecace pour le calcul des composantes fortement connexes dun graphe. Nous xons maintenant un parcours en profondeur L. Soit x un sommet, le rang dattache de x par rapport a ` F est d eni par (x) = min{r (z ) | z AT (x) {x}}, o` u AT (x) est lensemble des sommets extr emit es dun arc arri` ere ou transverse dont lorigine est un descendant de x dans F et dont lextr emit e appartient a ` une composante fortement connexe dont le point dentr ee est un ascendant propre de x dans F . Le sommet de rang (x) est appel e point dattache du sommet x dans F et est not e a(x). Version 6 f evrier 2005

110

Chapitre 4. Graphes

ment x y , x y , et x y sil existe de x a ` y respectivement un arc de B , un chemin dans B et un chemin non nul dans B . Si lon note R lensemble des arcs arri` ere, T lensemble des arcs transverses, X = R T et F lensemble des arcs de F , alors un sommet z appartient a ` AT (x) si et seulement sil existe deux sommets y et t tels que x y z t x.
(,F ) X (,A) (+,F )

Soit B A un sous-ensemble des arcs de G. Il sera commode d ecrire respectiveB (,B ) (+,B )

(4.1)

Il r esulte directement de cette d enition que les sommets de AT (x) sont dans la m eme composante fortement connexe que x.
7 2 9 9 11 9 1 3 2 9 10 1 4 1 6 6 6 7 10 7 8 11 7 5 2 5 3 8 3 4 9 3 3

Figure 4.8: Rangs dattache et points dattache. La gure 4.8 illustre les d enitions du rang dattache et du point dattache, L=(4, 5, 9, 8, 7, 6, 10, 11, 1, 3, 2) est un parcours en profondeur dun graphe G poss edant six composantes fortement connexes (encadr ees). Les points dentr ee de ces composantes sont cercl es de noir. Le rang dun sommet est a ` c ot e de ce sommet. Le rang dattache dun sommet est egalement inscrit en gras a ` c ot e de ce sommet. Le lemme suivant fournit une caract erisation des points dentr ee. Lemme 4.9. Un sommet x est un point dentr ee si et seulement si x = a(x). Preuve. Si x est un point dentr ee de la composante fortement connexe C , alors AT (x) = . En eet, si z AT (x) il existe y et t qui v erient 4.1. On a donc z C puisque z AT (x) et t C puisquaucun ascendant propre de x dans F nappartient a ` C . Do` u la contradiction. Il en r esulte que (x) = r (x) et que a(x) = x. R eciproquement, si x appartient a ` la composante fortement connexe C et nest pas son point dentr ee, nous notons e le point dentr ee de C . On a alors e x et x e. Or comme il nexiste pas de chemin de x a ` e dans F , il existe un sommet z qui nest pas un descendant de x dans F tel que : x y z e. Version 6 f evrier 2005
(,F ) X (,A) (+,A) (+,F )

(4.2)

4.4. Parcours dun graphe

111

Le sommet z appartient a ` AT (x) et nous montrons que r (z ) < r (x). Soit t lanc etre de z et x dans F . Le sommet t est distinct de x puisque z nest pas un descendant de x dans F . Si t = z alors z est un ascendant propre de x et r (z ) < r (x). Si t est distinct de z et r (z ) > r (x), lors de la visite de x seul le sommet x du chemin de x a `za et e visit e et donc z sera un descendant de x dans F , ce qui contredit lhypoth` ese. On a donc r (z ) < r (x) et donc a(x) = x.

4.4.5

Calcul des composantes fortement connexes

Nous pr esentons dans cette section un algorithme ecace, d ua ` Tarjan, pour le calcul des composantes fortement connexes dun graphe orient e quelconque G. Cet algorithme r ealise simultan ement un parcours en profondeur L du graphe G et le calcul des rangs dattache de chaque sommet. Limpl ementation de cet algorithme par la proc edure cfc ci-dessous est une variante de la proc edure profondeurr ecursif pr esent ee dans la section 4.4.2. Cette variante utilise une pile qui empile les sommets au fur et a ` mesure de leur insertion dans le parcours en profondeur et d epile tous les sommets de chaque nouvelle composante fortement connexe d etect ee lorsque le parcours en profondeur revient sur un point dentr ee. La proc edure cfc se distingue de la proc edure Profondeur-r ecursif par les trois points suivants : a) La notion de voisin est remplac ee par celle de successeur ; b) Lors de lexamen des successeurs du sommet x en cours dans le parcours en profondeur, deux cas sont possibles : 1. Si le successeur y examin e nest pas d ej` a visit e, alors le rang r (y ) est calcul e, le rang dattache (y ) est initialis e a ` r (y ), le sommet y est empil e dans , un appel r ecursif est ex ecut e pour le sommet y et le rang dattache (x) est actualis ea ` min{ (x), (y )}. 2. Si le successeur y examin e est d ej` a visit e, le rang dattache (x) est actualis ea ` min{ (x), r (y )}.

c) Lorsque tous les successeurs dun sommet x ont et e trait es, la valeur de (x) est le rang dattache de x. Si (x) = r (x), le sommet x est un point dentr ee dune composante fortement connexe C dont les sommets autres que x sont situ es au-dessus de x dans . Cette pile est alors d epil ee jusquau sommet x. La proc edure Desc(s) ci-dessous d etermine dans le tableau c les composantes fortement connexes qui sont des descendants de la composante fortement connexe contenant s dans le graphe r eduit de G. L el ement c(x) est le num ero de la composante fortement connexe contenant x. On suppose egalement quun tableau de bool eens est utilis e pour tester lappartenance dun sommet a ` la pile .

Version 6 f evrier 2005

112

Chapitre 4. Graphes

proc edure Desc(s) ; (1) Empiler(s, ) ; V := V {s} ; (2) r := r + 1 ; r (s) := r ; (s) := r ; (3) pour tout successeur x de s dans G faire (4) si x V alors Desc(x) ; (s) := min{ (s), (x)} (5) sinon (6) si x est dans alors (s) := min{ (s), r (x)} nsi (7) nsi (8) npour ; (9) si (s) = r (s) alors (10) k := k + 1 ; (11) r ep eter z :=D epiler() ; c(z ) := k (12) jusqu` a z = s; (13) nsi. Lalgorithme de calcul des composantes fortement connexes de G est impl ement e par la proc edure cfc(G) ci-dessous. proc edure cfc(G) V := ; {V est lensemble des sommets visit es} r := 0 ; {r est le compteur pour les rangs} k := 0 ; {k num erote les composantes fortement connexes} Pilevide() ; tantque V = S faire choisir s dans S V ; Desc(s) ntantque. Les deux propositions suivantes etablissent la complexit e et la validit e de la proc edure cfc. Proposition 4.10. Soit G un graphe poss edant n sommets et m arcs. La complexit e de la proc edure cfc est O (max{m, n}). Preuve. Pour evaluer la complexit e de la proc edure cfc, examinons les op erations suppl ementaires r ealis ees par rapport a ` un simple parcours en profondeur du graphe G. Lors de chaque etape du parcours en profondeur, seules des op erations de mise a ` jour de complexit e O (1) sont introduites. En ce qui concerne la pile , chaque sommet est empil e et d epil e exactement une fois. Il en r esulte que la complexit e globale de la proc edure cfc est O (max{m, n}). Proposition 4.11. Soit s un sommet du graphe G. La proc edure Desc(s) d etermine les composantes fortement connexes de G+ (s). Version 6 f evrier 2005

4.4. Parcours dun graphe

113

Preuve. Au cours dun parcours en profondeur dun graphe G, un sommet passe successivement par trois etats. Tant quil na pas et e visit e, il est libre. Lorsquil est visit e (cest-` a-dire lorsquil est lextr emit e dun mouvement avant du parcours), il devient examin e. Lorsquil devient lextr emit e dun mouvement arri` ere du parcours, il est exclu. Lordre dans lequel les sommets sont examin es est celui du parcours en profondeur. La liste L associ ee a ` lordre dexclusion des sommets v erie les propri et es suivantes : le dernier sommet exclu dune composante fortement connexe est son point dentr ee, les points dentr ee des composantes fortement connexes apparaissent dans lordre dun parcours postxe du graphe r eduit de G. La liste dexclusion pour lexemple de la gure 4.9 est (7, 8, 9, 5, 11, 10, 6, 4).
5,3 7 5 9 3 3 C1 C3 11 8 Desc(4) Desc(5) Desc(9) Desc(8) Desc(7) Desc(6) Desc(10) Desc(11) 4 4,3 8 v 4 5 6 7 8 9 10 11 7 1 2 - 3 4 5 - 8 1 2 - 3 3 5 - 9 1 2 - 3 3 3 - dpilement de C1={7,8,9} 5 1 2 - 3 3 3 - dpilement de C2={5} 11 1 2 6 3 3 3 7 7 10 1 2 6 3 3 3 7 7 dpilement de C3={10,11} 6 1 2 6 3 3 3 7 7 dpilement de C4={6} 4 1 2 6 3 3 3 7 7 dpilement de C5={4}

C2 1 9 2 11 3 10 C6 4 1 1 C5 2 6 5 2 6

7 C4 10

Figure 4.9: Une ex ecution de Desc. Supposons dans un premier temps que les valeurs (x) calcul ees par la proc edure + Desc(s) pour tous les sommets de G (s) soient eectivement les rangs dattache de ces sommets. La liste dexclusion L du parcours en profondeur de G+ (s) correspond a ` lordre dans lequel les appels r ecursifs de la proc edure Desc pour + les sommets de G (s) se terminent. Il r esulte alors du lemme 4.9 que lorsque le nouveau sommet exclu x satisfait (x) = r (x), ce sommet est un point dentr ee. Donc les macro-d epilements de la pile sont r ealis es par Desc lors des exclusions successives des points dentr ee. Or, lors de lexclusion dun point dentr ee x, la pile contient dans sa partie sup erieure a ` partir du sommet x les sommets de la composante fortement connexe C de x. En eet, en raison de lordre postxe des Version 6 f evrier 2005

114

Chapitre 4. Graphes

macro-d epilements, tous les descendants propres de C dans le graphe r eduit de G ont d ej` a et e macro-d epil es . Nous montrons maintenant que, pour tout sommet x de G+ (s), lors de la terminaison de lappel Desc(x), la valeur calcul ee (x) est egale au rang dattache du sommet x. Nous raisonnons par r ecurrence sur le nombre dappels termin es de la proc edure Desc. Consid erons la terminaison de lappel Desc(v ). Nous montrons dabord que si le sommet w est un ls de v dans F et si r (v ) > (w ) alors on a n ecessairement
(,F ) (,A)

x e o` u x est le point dattache de w et e est le point dentr ee de la composante fortement connexe contenant x. On a (w ) = r (x) et donc r (x) < r (v ). Comme x AT (v ), on a (v ) (w ). Nous montrons maintenant que si larc (v, w ) est un arc arri` ere ou transverse dont lextr emit e w appartient a ` une composante fortement connexe C non encore macro-d epil ee et si r (v ) > r (w ) alors on a n ecessairement (v ) < r (w ). En eet, soit e le point dentr ee de C . Lappel Desc(e) nest pas termin e lors de la terminaison de Desc(v ). Le sommet e qui est un ascendant de w est aussi un ascendant de v . En eet, dans le cas contraire, r (e) r (w ) < r (v ) impliquerait que lappel Desc(e) soit termin e avant Desc(v ). Il en r esulte que w AT (v ) et (v ) < r (w ). En utilisant lhypoth` ese de r ecurrence pour les successeurs de v qui sont des ls de v dans F , la valeur (v ) calcul ee par lappel Desc(v ) est egale a ` min{r (v ), , } o` u, si S d esigne les ls de v dans F et T les autres successeurs de v dans G : = min{(w ) | w S } = min{r (w ) | w T }. Dapr` es ce qui pr ec` ede, cette valeur correspond a ` celle du rang dun sommet de AT (v ). Montrons que lors de la terminaison de Desc(v ), on a (v ) = (v ). Nous consid erons a ` cet eet un arc (x, y ) arri` ere ou transverse dont lorigine est un descendant de v dans F et lextr emit e y appartient a ` AT (v ) et nous montrons que (v ) r (y ). Nous notons e le point dentr ee de la composante fortement connexe contenant y et envisageons deux cas : Supposons x = v . Dapr` es lhypoth` ese de r ecurrence, les composantes fortement connexes ont et e correctement calcul ees jusqu` a la terminaison des appels de Desc ant erieurs a ` Desc(v ). Le sommet y est donc dans la pile puisque Desc(e) nest pas termin e. Or lors de lexamen du successeur y de v dans lappel Desc(v ), la valeur (v ) est actualis ee (ligne (6)) a ` une valeur inf erieure ou egale a ` r (y ). Supposons x = v . Le sommet x est alors un descendant propre de v dans F . Si z est le ls de v dans F dont x est le descendant, apr` es la terminaison de lappel Desc(z ), la valeur (v ) est actualis ee (ligne (4)) et rendue inf erieure ou egale a ` (z ) donc a ` r (y ). Version 6 f evrier 2005

(v ) (w ). En eet, soit (y, x) un arc arri` ere ou transverse tel que w y et

4.4. Parcours dun graphe Il en r esulte que (v ) = (v ).

115

La gure 4.9 montre en a) larbre des appels r ecursifs o` u les sommets gris es correspondent aux points dentr ee (donc aux macro-d epilements), en b) les valeurs des rangs dattache en cours apr` es la terminaison de Desc(v ).

4.4.6

Parcours dune arborescence

La structure r ecursive des arborescences permet de d enir des parcours sp eciques fond es sur dautres r` egles que la propri et e dadjacence commune aux parcours etudi es jusquici. Deux parcours sont tr` es utilis es : le parcours pr exe pour lequel les ascendants propres dun sommet sont plac es avant ce sommet dans la liste et le parcours postxe pour lequel les descendants propres dun sommet sont plac es avant ce sommet dans la liste. Soit A une arborescence de racine r . La structure r ecursive de A permet d etablir simplement les algorithmes des parcours pr exe et postxe. fonction Lpref(A) :liste ; si A = alors Lpref :=() sinon L := (r ) ; pour chaque ls u de r faire L :=LLpref(A(u)) ; Lpref :=L nsi.

fonction Lpost(A) :liste ; si A = alors Lpost :=() sinon L := () ; pour chaque ls u de r faire L :=LLpost(A(u)) ; Lpost :=L (r ) nsi. Pour larborescence de la gure 4.10, (6, 7, 1, 3, 5, 4, 2) est le parcours pr exe et (1, 7, 5, 3, 4, 2, 6) est le parcours postxe. Proposition 4.12. La liste lpref(A) contient chaque sommet de A une fois et une seule et tous les ascendants propres dun sommet sont plac es avant ce sommet dans la liste. Version 6 f evrier 2005

116
1 6 7 5 3 4 2

Chapitre 4. Graphes

Figure 4.10: Une arborescence. Preuve. (Induction sur le nombre n de sommets de A.) Si n 1, la propri et e est vraie. Soit une arborescence A = (H, r ) a ` n sommets (n 2). Par d enition, lpref(A) est la concat enation des listes (r ), lpref(A(r1 )), ..., lpref(A(rk )). Par induction, pour tout j {1, . . . , k }, lpref(A(rj )) v erie la proposition pour la sous-arborescence A(rj ). La liste lpref(A) contient donc chaque sommet de A une et une seule fois. Dautre part, soit u un sommet de A et v un ascendant propre de u. Si v = r alors il est plac e avant u. Sinon, par induction, v est plac e avant u dans la sous-arborescence A(rj ) qui contient u et la proposition est donc v eri ee. Parcours sym etrique dun arbre binaire Les arbres binaires sont tr` es utilis es comme structures de donn ees permettant de manipuler ecacement les ensembles ordonn es. Le parcours sym etrique dun arbre binaire est une liste des sommets de larbre telle que tout sommet est plac e dans la liste apr` es les sommets de son sous-arbre gauche et avant les sommets de son sous-arbre droit. Une telle liste est unique puisque la d enition impose la place de la racine, puis successivement la place des racines de tous les sous-arbres. Lalgorithme r ecursif suivant d etermine le parcours sym etrique not e sym(A) dun arbre binaire A de racine r :

fonction Sym(A :arbre binaire) :liste ; si A = alors Sym:= () sinon Sym :=Sym(Ag ) (r ) Sym(Ad ) nsi.

Le parcours sym etrique de larborescence de la gure 4.11 est (12, 2, 5, 4, 6, 3, 1, 7, 10, 11, 8, 9). Proposition 4.13. La liste sym(A) est le parcours sym etrique de larbre binaire A. Version 6 f evrier 2005

Notes

117

1 2 12 4 5 6 3 10 11 7 8 9

Figure 4.11: Un arbre binaire. Preuve. (Induction sur le nombre n de sommets de A.) La propri et e est vraie pour n = 0 puisque Sym() est vide. Soit A un arbre binaire a ` n 1 sommets. Par d enition, Sym(A) est la concat enation des listes Sym(Ag ), (r ) et Sym(Ad ). Par induction la propri et e est vraie pour tout sommet de Ag et de Ad et elle est vraie par construction pour la racine r de A, donc elle est vraie pour tout sommet de A.

Notes
Les ouvrages sur les graphes sont nombreux. Nous avons utilis e les d enitions du livre de r ef erence : C. Berge, Graphes, Gauthier-Villars (troisi` eme edition), 1983. Dautres livres utiles sont : F. Harrary, Graph Theory, Addison-Wesley, Reading, Mass, 1969 ; M. Gondran et M. Minoux, Graphes et Algorithmes, Eyrolles, 1979. Lalgorithme de calcul des composantes fortement connexes est de : R. Tarjan, Depth First Search and Linear Graph Algorithms, SIAM J. Computing 1 (1972), 146160.

Exercices
4.1. D emontrer que la matrice dincidence sommets-arcs dun graphe orient e sans boucles est totalement unimodulaire, cest-` a-dire que le d eterminant de toute sous-matrice carr ee extraite vaut 0, +1 ou 1. Version 6 f evrier 2005

118

Chapitre 4. Graphes

4.2. Soit G = (S, A) un graphe orient e. On consid` ere la famille G des graphes partiels de G qui ont m eme fermeture transitive que G. Un graphe H de G est minimal si le graphe obtenu a ` partir de H en supprimant un arc quelconque nest plus dans G . Montrer quen g en eral il existe dans G plusieurs graphes minimaux. D emontrer que si le graphe G est sans circuit, alors G ne contient quun seul graphe minimal (qui est appel e graphe de Hasse de G). 4.3. Ecrire un algorithme de complexit e O (max{m, n}) pour d eterminer si un graphe a ` n sommets et m arcs est sans circuit. 4.4. Soient G = (S, A) un graphe orient e et c : A N. Soit p un entier x e. Pour tout couple de sommets i, j , on cherche les longueurs des p plus courts chemins (relativement a ` c) de i a ` j . On utilise pour cela le semi-anneau p p p (N , min, +, 0 , 1 ) des vecteurs a ` p coordonn ees dans N o` u les op erations + et min sont d enies pour deux vecteurs a = (a1 , . . . , ap ) et b = (b1 , . . . , bp ) par min{a, b} = (c1 , . . . , cp ), o` u les ci , i {1, . . . , p} sont les p plus petits el ements de a1 , a2 , . . . , ap , b1 , b2 . . . , bp et a + b = c, o` u les ci , i {1, . . . , p} sont les p plus petits el ements parmi les p2 sommes ai + bj , i {1, . . . , p}, j {1, . . . , p}. Montrer que le vecteur cn eni par la formule de r ecurrence 2.1 fournit les valeurs des p plus ij d courts chemins de i a ` j dans G. 4.5. Soit Kn lensemble des matrices carr ees dordre n a ` coecients dans un semi-anneau complet K . Montrer comment munir Kn dune structure de semianneau complet. On d enit pour M Kn la matrice M par : M = I M M2 . . . Mh . . . . Soit G = (S, A) un graphe a ` n sommets, soit c : A K une fonction co ut et soit M = mij la matrice d enie par : mij = D emontrer que : m ij = cij o` u cij =
ij

c((i, j )) si (i, j ) A 0 sinon. c( ).

4.6. Montrer que pour R = R {+, }, (R, min, max, +, ) est un semi-anneau complet. Soit G = (S, A) un graphe non orient e, c : A R une fonction co ut et soit cij = min c( )
ij

o` u ij est lensemble des cha nes el ementaires de i a ` j . Soit U = {(i, j ) A | cij = c((i, j ))}. Montrer que le sous-graphe (S, U ) est un arbre couvrant de co ut minimal (au sens du chapitre 7). Version 6 f evrier 2005

Exercices 4.7. D emontrer la proposition 2.2.

119

4.8. Soit G = (S, A) un graphe orient e connexe a ` n sommets et m arcs. On appelle cycle el ementaire de G une suite darcs de G telle que deux arcs cons ecutifs quelconques de la suite (y compris le dernier et le premier) aient une extr emit e commune et que ces extr emit es communes successives soient toutes distinctes. On associe a ` un cycle el ementaire de G le vecteur de {0, 1, 1}m pour lequel la coordonn ee associ ee a ` larc u vaut 0 si le cycle nemprunte pas larc u, 1 si le cycle emprunte larc u dans le sens de u et 1 si le cycle emprunte larc u dans le sens oppos ea ` u. D emontrer que le sous-espace vectoriel de Rm engendr e par les cycles el ementaires de G est de dimension m n + 1. En d eduire que si G poss` ede p composantes connexes, le nombre maximum de cycles ind ependants de G est m n + p. 4.9. Montrer que lon peut utiliser un parcours en largeur dun graphe non orient e a ` partir dun sommet s pour d eterminer les longueurs des plus courtes cha nes de s a ` tous les autres sommets du graphe.

4.10. Soit G un graphe non orient e connexe et soit s lun de ses sommets. Montrer que larborescence des appels r ecursifs de la proc edure Profondeurr ecursif(s) sidentie avec une arborescence couvrante de G de racine s. Montrer que si {x, y } est une ar ete nappartenant pas a ` larborescence, lun des deux sommets x ou y est ascendant de lautre dans larborescence. Montrer que la complexit e en temps de la proc edure est O (max{n, m}), o` u n est le nombre de sommets et m le nombre dar etes du graphe G.

Version 6 f evrier 2005

120

Chapitre 4. Graphes

Version 6 f evrier 2005

121

Chapitre 5

Tris
Ce chapitre traite des algorithmes de tri. La premi` ere section pr esente trois algorithmes de tri interne pour lesquels aucune hypoth` ese particuli` ere nest faite sur les cl es : le tri rapide, le tri fusion et le tri par tas. La seconde section concerne le tri externe. On y pr esente un algorithme de construction des monotonies et deux algorithmes de r epartition : le tri equilibr e et le tri polyphas e.

Introduction
Dans ce chapitre, nous pr esentons trois algorithmes de tri parmi les plus ecaces lorsquaucune hypoth` ese particuli` ere nest faite sur la nature ou la structure des cl es des el ements a ` trier. Le tri rapide place d enitivement un el ement appel e pivot, construit une liste gauche des el ements dont la cl e est inf erieure ou egale a ` celle du pivot, construit une liste droite des el ements dont la cl e est strictement sup erieure a ` celle du pivot et r ealise enn un appel r ecursif sur chacune des deux listes. Le tri fusion est egalement un tri dichotomique. Il r ealise dabord un appel r ecursif sur chacune des deux listes obtenues par scission de la liste initiale en deux listes de taille egale (` a une unit e pr` es) et interclasse ensuite les deux listes tri ees. Le tri par tas place dabord les el ements a ` trier dans un tableau organis e en le de priorit e (tas), puis supprime un a ` un les el ements de priorit e minimum du tas tout en les repla cant simultan ement dans le tableau dans lordre inverse. Ces trois algorithmes de tri ont une complexit e moyenne O (n log n). Dans le pire des cas, le tri rapide a pour complexit e O (n2 ), alors que la complexit e des deux autres tris est O (n log n). Dautres algorithmes moins performants comme par exemple les tris simples (tri bulle, tri par insertion, tri par s election,...) ne sont pas pr esent es ici mais ont, pour la plupart dentre eux, servi dillustration a ` dautres sujets trait es dans le livre. Certains algorithmes, par exemple le tri par champs, sont plus performants mais exigent certaines hypoth` eses sp eciques sur les cl es des el ements a ` trier. Nous proposons en exercice l etude de certains algorithmes de ce type. Version 6 f evrier 2005

122

Chapitre 5. Tris

5.1

Tri interne

La donn ee dun probl` eme de tri est constitu ee dune permutation L = (e1 , . . . , en ), dun ensemble E de n el ements et dune application c : E F de E dans un ensemble F totalement ordonn e qui associe a ` chaque el ement e une cl e c(e). Nous appellerons el ement maximal de E un el ement dont la cl e est le plus grand el ement de c(E ). Inversement, un el ement minimal de E est un el ement dont la cl e est le plus petit el ement de c(E ). Une liste tri ee de E est une permutation de E dont les el ements sont rang es dans un ordre compatible avec la relation dordre sur F . Trier la liste L, cest d eterminer une liste tri ee des el ements de L. Exemple. Si E = {A, B, C, D }, F = {0, 1}, c(A) = c(B ) = 1 et c(C ) = c(D ) = 0, la liste (C, D, B, A) est une liste tri ee. Nous mesurerons la complexit e dun tri par le nombre de comparaisons de cl es quil r ealise et la taille dun probl` eme de tri sera d enie par le nombre n d el ements a ` trier. Nous supposerons egalement que la liste initiale L est impl ement ee par un tableau lin eaire T [i..j ] o` u n = j i + 1. Ces hypoth` eses sont r ealistes dans le cas dun tri interne o` u les el ements a ` trier sont et restent disponibles en m emoire centrale. La section 5.2 traitera le cas du tri externe pour lequel cette hypoth` ese nest pas satisfaite.

5.1.1

Le tri rapide

Le tri rapide dune liste L sur E est un algorithme comprenant deux phases. La premi` ere phase transforme la liste L en une liste L = G ( ) D sur E o` u est un el ement de L appel e pivot , G est la liste gauche contenant g el ements (g n 1), D est la liste droite contenant d el ements (d n 1). De plus, la cl e dun el ement quelconque de G est inf erieure ou egale a ` la cl e dun el ement quelconque de D . Notons que chacune des listes G ou D peut etre vide et quelles le sont toutes les deux si n = 1. Plus pr ecis ement, si le pivot est un el ement maximal, alors la liste D est vide, si le pivot est un el ement minimal, alors la liste G peut etre vide ou non. Il est important de remarquer quapr` es la premi` ere phase, le pivot est bien plac e et que les tailles de la liste gauche et de la liste droite sont strictement plus petites que n. La seconde phase consiste simplement en deux appels r ecursifs de lalgorithme, lun pour la liste G, lautre pour la liste D . Un appel de lalgorithme de tri rapide est terminal si n 1. Notons quun appel terminal neectue aucune comparaison de cl es. Nous pouvons donc d ecrire lalgorithme de tri rapide par la proc edure tri rapide ci-dessous. La cl e de l el ement T (k ) est not ee c(k ) et les listes associ ees aux appels r ecursifs correspondent a ` des sous-tableaux de T [i..j ]. La premi` ere phase correspond a ` la fonction pivoter qui retourne lindice du pivot. Version 6 f evrier 2005

5.1. Tri interne

123

proc edure tri rapide(T [i..j ]) ; si i < j alors k :=pivoter(T [i..j ]) ; tri rapide(T [i..(k 1)]) ; tri rapide(T [(k + 1)..j ]) nsi.

Lalgorithme de pivotage Lecacit e du tri rapide d epend directement de lalgorithme de pivotage. Ce dernier doit dune part choisir le pivot et dautre part r eorganiser le tableau. Nous conviendrons de choisir comme pivot le premier el ement du tableau , cesta `-dire l el ement T (i) dont la cl e c(i) est not ee conventionnellement . Ce choix, qui nest pas le seul possible, nest pas plus mauvais quun autre en labsence dhypoth` ese suppl ementaire sur les donn ees et pr esente le double avantage d etre simple a ` impl ementer et de conduire a ` une analyse en moyenne rigoureuse. Nous appelons couple invers e du tableau par rapport au pivot un couple dindices (s, t) tel que : i < s < t j, c(s) > , c(t) . Le couple invers e (s, t) pr ec` ede le couple invers e (s , t ) si s s et t t. Cette relation de pr ec edence conf` ere a ` lensemble des couples invers es une relation dordre total. Si cet ensemble nest pas vide, il existe donc un premier couple invers e. La r eorganisation du tableau T [i..j ] est un algorithme it eratif o` u chaque it eration concerne des sous-tableaux embo t es de T et toujours la m eme valeur de . La premi` ere it eration concerne le tableau T [i + 1..j ]. Elle consiste a ` rechercher le premier couple invers e (sil existe) par un appel a ` la fonction premier-coupleinvers e qui retourne un couple (s, t). Si s < t, alors (s, t) est eectivement le premier couple invers e par rapport a ` , les el ements de rang s et t sont echang es dans le tableau T par la proc edure Echanger et lit eration suivante concernera le sous-tableau T [s ..t ] o` u s = s + 1 et t = t 1. Lalgorithme se termine si s >t. fonction premier-couple-invers e(T, k, l, ) :couple ; s := k ; t := l ; tantque s l etalors c(s) faire s := s + 1 ntantque ; tantque t k etalors c(t) > faire t := t 1 ntantque premier-couple-invers e :=(s, t). La fonction pivoter ci-dessous impl emente lalgorithme de pivotage. Version 6 f evrier 2005

124

Chapitre 5. Tris

fonction pivoter(T, i, j ) :indice ; :=c(i) ; s := i + 1 ; t := j ; tantque s t faire (s, t) :=premier-couple-invers e(T, s, t, ) ; si s < t alors Echanger(T, s, t) ; s := s + 1 ; t := t 1 nsi ntantque ; pivoter :=t ; changer(T, i, t). e La gure 1.1 montre une ex ecution de lalgorithme de pivotage. La premi` ere ligne contient la liste initiale.
6 6 6 5 14 6 6 6 3 3 3 3 1 1 1 1 10 10 2 2 5 5 5 5 1 1 1 1 6 6 6 6 4 4 4 4 5 5 5 6 2 2 10 10 11 11 11 11 9 9 9 9 6 14 14 14

pointeur gauche pointeur droit

pivot plac

Figure 1.1: Un pivotage. Le lemme suivant etablit un encadrement du nombre de comparaisons de cl es r ealis ees lors dun pivotage. Lemme 1.1. Lalgorithme de pivotage r ealise au moins n 1 et au plus n + 1 comparaisons de cl es. Preuve. Si tous les el ements de T [i + 1..j ] ont une cl e inf erieure ou egale a ` , la valeur nale de s est j +1 et t na pas et e modi e. Il en r esulte n 1 comparaisons a ` partir de s et une comparaison a ` partir de t, soit en tout n comparaisons. Il y a de m eme n comparaisons si tous les el ements de T [i + 1..j ] ont une cl e strictement sup erieure a ` . Si le tableau T [i + 1..j ] contient un el ement de cl e inf erieure ou egale a ` et un el ement de cl e strictement sup erieure a ` , deux cas sont possibles. Si le dernier echange dun couple invers e concerne deux el ements contigus dans T , il y a eu exactement n 1 comparaisons avant cet echange et il ny en aura pas apr` es. Sinon, lors de la terminaison du pivotage, les cl es des el ements indic es par les derni` eres valeurs de s et t ont et e compar ees deux fois a ` , il y a donc eu n + 1 comparaisons (voir gure 1.2).

Version 6 f evrier 2005

5.1. Tri interne

125

Dernier couple invers, n+1 comparaisons

Dernier couple invers, n-1 comparaisons

Figure 1.2: Dernier echange dun couple invers e. Complexit e dans le pire des cas Examinons larborescence A des appels r ecursifs dune ex ecution de lalgorithme de tri rapide. Larborescence associ ee a ` la liste initiale de la gure 1.1 est donn ee sur la gure 1.3. Les indices i et j dun appel sont inscrits a ` lint erieur du sommet correspondant. Les sommets des appels terminaux sont cercl es de noir. Cette
1,14

1,9

11,14

1,6

8,9

11,11

13,14

1,0

2,6

8,8

10,9

13,12

14,14

2,4

6,6

2,2

4,4

Figure 1.3: Appels r ecursifs du tri rapide. arborescence est un arbre binaire complet dont les feuilles correspondent a ` un tableau contenant au plus un el ement. Si les deux ls y et z dun noeud x correspondent a ` deux tableaux de p et q el ements, le noeud x correspond lui a ` un tableau de p + q + 1 el ements. Dapr` es le lemme 1.1, le nombre maximum de comparaisons faites au noeud x , egal a ` p + q +2, est la somme du nombre maximum de comparaisons (p + 1) faites au noeud y et du nombre maximum de comparaisons (q + 1) faites au noeud z . Le nombre total de comparaisons faites pour tous les noeuds dun m eme niveau de larbre est donc major e par n + 1 et le nombre total de comparaisons est lui-m eme major e par (n + 1)h(A) o` u h(A) est la hauteur en nombre de sommets de larborescence A. Version 6 f evrier 2005

126

Chapitre 5. Tris

Si la liste initiale contient n el ements, la hauteur maximale est atteinte (voir exercices) lorsque chaque niveau (le niveau 0 de la racine except e) est constitu e de deux noeuds fr` eres, un noeud terminal correspondant a ` une liste vide et un noeud correspondant a ` une liste de p el ements si son p` ere est lui-m eme associ ea ` une liste de p + 1 el ements (voir gure 1.4). La complexit e dans le pire des cas de lalgorithme de tri rapide est donc O (n2 ). Cette complexit e est eectivement atteinte lorsque la liste initiale L est une liste tri ee. En eet larborescence induite est alors le peigne repr esent e sur la gure 1.4. Dans ce cas, le nombre de comparaisons (voir lemme 1.1), inscrit a ` lint erieur du sommet sur la gure, est exactement n pour le niveau 0, n 1 pour le niveau 1, n i pour le niveau i, 2 pour lavant-dernier niveau et 0 pour le dernier niveau, soit en tout n j =2 j =n(n + 1)/2 1 comparaisons.
n n-1 n-2 ............ 2 1 0 0 0

Figure 1.4: Un peigne .

Complexit e en moyenne du tri rapide Nous faisons ici lhypoth` ese que les cl es des n el ements de la liste initiale L sont distinctes et que les n! permutations qui repr esentent les rangs de ces cl es dans L sont equiprobables . Nous noterons (L) la permutation des rangs des cl es de la liste L. Exemple. Si L = (A, B, C, D, E, F ), c(A) = 3, c(B ) = 1, c(C ) = 5, c(D ) = 10, c(E ) = 7 et c(F ) = 15, on a (L) = (2, 1, 3, 5, 4, 6). Le lemme suivant montre que lalgorithme de pivotage conserve les hypoth` eses probabilistes de la liste initiale pour les deux sous-listes gauche et droite. Lemme 1.2. Soit r le rang du pivot. Apr` es lalgorithme de pivotage, les permutations de {1, . . . , r 1} associ ees aux listes gauches G sont equiprobables. Il en est de m eme pour les permutations de {r + 1, . . . , n} associ ees aux listes droites D . Preuve. La preuve est imm ediate si r = 1 ou si r = n. Nous supposons donc 1 < r < n et nous choisissons une permutation possible en sortie de lalgorithme Version 6 f evrier 2005

5.1. Tri interne

127

Supposons que lalgorithme de pivotage ait r ealis e a ` partir dune liste L, les q echanges de couples invers es (s1 , t1 ), (s2 , t2 ), , (sq , tq ) et que soit la permutation des rangs de la liste obtenue apr` es pivotage. On a alors : 1 s 1 < s2 < < s q r 1 r + 1 tq < tq1 < < t1 n. (1.1)

de pivotage, not ee = 1 (r ) 2 , o` u 1 est une permutation de {1, . . . , r 1} et 2 est une permutation de {r + 1, . . . , n}.

Si maintenant on op` ere sur la permutation la transposition 0 qui consiste a ` echanger (1) et (r ) puis les q transpositions k , k = 1, .., q , o` u k consiste a ` echanger (sk ) et (tk ), on retrouve la permutation des rangs de la liste L. R eciproquement, si nous choisissons q entiers naturels sk et q entiers naturels tk satisfaisant (1.1), et si nous op erons sur la transposition 0 suivie des q transpositions k , nous obtenons une permutation qui apr` es pivotage donne la permutation . De plus, et cest l` a le point crucial, deux choix distincts des entiers sk et tk satisfaisant (1.1) correspondent a ` deux permutations distinctes. Pour r , et q x es, le nombre de choix possibles des entiers sk et tk satisfaisant r 1 nr 1.1 est q . Comme les valeurs possibles pour q sont celles de lensemble q {1, . . . , min{r 1, n r }}, le nombre total de permutations qui, apr` es pivotage, donne la permutation est
min{r 1,nr } q =1

r1 q

nr . q

Ce nombre ne d epend que du rang r du pivot et non de la permutation ellem eme. Il en r esulte que, pour r x e, les permutations apr` es pivotage sont equiprobables. Il en est bien s ur de m eme des permutations 1 et 2 . Le lemme pr ec edent permet a ` lanalyse en moyenne de pouvoir proter de la structure r ecursive de lalgorithme de tri rapide. En eet lhypoth` ese d equiprobabilit e des permutations (L) est conserv ee pour les deux appels r ecursifs. Nous notons Mn le nombre moyen de comparaisons de cl es r ealis ees pour une liste initiale de n el ements. En conditionnant par la valeur r du rang du pivot (les n valeurs de r sont equiprobables), les lemmes 1.2 et 1.1 nous permettent d ecrire pour n 2 :
n

Mn

r =1

1/n [n + 1 + M (r 1) + M (n r )].

Les conditions initiales sont M (0) = M (1) = 0 puisquaucune comparaison nest ex ecut ee pour un appel terminal. En d eveloppant lin egalit e pr ec edente et en remarquant que
n n

r =1

M (r 1) =

r =1

M (n r ) =

n1 r =1

M (r ) Version 6 f evrier 2005

128 il vient : Mn n + 1 + 2/n

Chapitre 5. Tris

n1 r =1

M (r ).

Pour obtenir une majoration de M (n), nous r esolvons l equation de r ecurrence : Sn = n + 1 + 2/n
n1 r =1

S (r )

avec S (0) = S (1) = 0. La solution de cette equation de r ecurrence compl` ete, d evelopp ee dans la section 2.4 du chapitre 2, est donn ee par Sn = 2(n + 1)(Hn+1 4/3),
`me o` u Hn est le nie nombre harmonique. Il en r esulte que Mn = O (n log n).

Lanalyse de lalgorithme de pivotage a egalement montr e que le nombre de comparaisons dun pivotage est au moins n 1. On montre alors a ` partir de lin egalit e
n

Mn

r =1

1/n[n 1 + M (r 1) + M (n r )]

et en suivant la m eme d emarche que pour la majoration de Mn , que M (n) 2(n + 1)Hn 4n. Il en r esulte que M (n) = (n log n).

5.1.2

Le tri fusion

Le principe de lalgorithme de tri fusion est de scinder la liste initiale L de n el ements en deux sous-listes G et D , ayant respectivement n/2 et n/2 el ements, telles que L = G D . Un appel r ecursif est r ealis e pour chacune des deux listes G et D . Linterclassement des deux listes tri ees fournit ensuite la liste tri ee r esultat. La complexit e du tri fusion d epend donc de lalgorithme dinterclassement. Etant donn ees deux listes tri ees L1 et L2 ayant respectivement n et m el ements, il est possible de r ealiser leur interclassement dans un tableau r esultat R en temps O (n + m) (voir exercices). Dans le tri-fusion on peut proter du fait que les deux listes se trouvent c ote-` a-c ote dans le tableau initial pour construire un algorithme dinterclassement plus ran e que celui du cas g en eral mais qui a la m eme complexit e en temps. La proc edure interclasser ci-dessous recopie dans la partie gauche du tableau de travail la liste L1 et dans la partie droite la liste L2 invers ee. Ce placement astucieux des deux listes permet alors de replacer dans le tableau initial T les n + m el ements du plus petit au plus grand en r ep etant n + m fois le m eme traitement. La liste L1 occupe initialement dans T les positions de g a ` m et la liste L2 les positions de m + 1 a ` d. Version 6 f evrier 2005

5.1. Tri interne

129

proc edure interclasser(T, g, m, d) ; pour i de g a ` m faire R(i) := T (i) ; pour j de m + 1 a ` d faire R(j ) := T (d + m + 1 j ) ; i := g ; j := d ; pour k de g a ` d faire si R(i) < R(j ) alors T (k ) := R(i) ; i := i + 1 sinon T (k ) := R(j ) ; j := j 1 nsi npour. Lalgorithme du tri-fusion est alors impl ement e par la proc edure tri-fusion cidessous. Cette proc edure devra utiliser un tableau de travail global R pour r ealiser les interclassements. proc edure tri-fusion(T, i, j ) ; si i < j alors n := j i + 1 ; g := i ; m := i + n/2 1 ; d := j ; tri-fusion(T, g, m) ; tri-fusion(T, m + 1, d) ; interclasser(T, g, m, d) nsi. La gure 1.5 montre larborescence des appels r ecursifs du tri fusion pour la liste de la gure 1.1. Dans chaque sommet sont inscrits en partie haute les bornes du sous-tableau et en partie basse le sous-tableau r esultat de cet appel. Les sommets des appels terminaux sont arrondis. Complexit e du tri fusion dans le pire des cas Soit n le nombre d el ements du tableau initial. Le premier appel r ecursif de la proc edure tri-fusion porte sur un tableau de n/2 el ements et le second sur un tableau de n/2 el ements. Comme le nombre maximum de comparaisons de la proc edure interclasser pour deux sous-tableaux contenant en tout n el ements est n 1, le nombre maximum de comparaisons pour un tableau initial de taille n, not e f (n), satisfait pour n 2 lin egalit e: f (n) n 1 + f ( n/2 ) + f ( n/2 ). La condition initiale est f (1) = 0. Nous obtenons une majoration de f en r esolvant l equation de r ecurrence (de partitions) g (n) = n 1 + g ( n/2 ) + g ( n/2 ), Version 6 f evrier 2005

130
1,14 1,1,2,3,4,5,5,6,6,9,10,14 1,7 1,1,3,5,6,10,14 1,3 3,6,14 1,1 6 2,2 14 2,3 3,14 3,3 3 4,4 1 4,7 1,1,5,10 4,5 1,10 5,5 10 6,7 1,5 6,6 5 7,7 1 8,10 4,5,6 8,8 6 9,9 4 9,10 4,5 8,14 2,4,5,6,9,11

Chapitre 5. Tris

11,14 2,6,9,11 11,12 2,11 13,14 6,9

10,10 11,11 12,12 13,13 14,14 5 2 11 9 6

Figure 1.5: Un tri fusion. avec g (1) = 0 comme condition initiale. Cette equation etudi ee dans la section 2.3 du chapitre 2 (voir aussi lexercice 2.4 du chapitre 2) a pour solution : g (n) = 0 n log n + 1 2
log n

si n = 1 si n 2

Il en r esulte que la complexit e f (n) du tri fusion dans le pire des cas est O (n log n). Le nombre minimum de comparaisons dun interclassement de deux listes de taille m et n est min{m, n}. Dans le cas de la proc edure tri-fusion, ce nombre est n/2 . Le nombre minimum de comparaisons, not e h(n) dun tri fusion dune liste de n el ements v erie donc lin egalit e: h(n) n/2 + h( n/2 ) + h( n/2 ). On obtient une minoration de h en r esolvant l equation de r ecurrence g (n) = 0 si n = 1 n/2 + g ( n/2 ) + g ( n/2 ) si n 2.

Les r esultats sur les r ecurrences de partition permettent alors de montrer que g (n) = (n log n). La complexit e du tri fusion est donc (n log n).

5.1.3

Le tri par tas

Rappelons quun tas est un arbre tournoi parfait dont les sommets contiennent les el ements dun ensemble E muni dune cl e c : E F o` u F est totalement ordonn e. Dans la section 3.4, des algorithmes ont et e donn es pour linsertion et pour la suppression dun el ement de plus petite cl e. Ces algorithmes utilisent une impl ementation du tas par un couple (T, p) o` u p est le nombre d el ements contenus dans le tas et T est un tableau a ` p positions. Le tri par tas consiste simplement a ` Version 6 f evrier 2005

5.2. Tri externe

131

ins erer un a ` un les n el ements de la liste initiale puis a ` r ealiser n suppressions dun el ement de plus petite cl e. An de pouvoir utiliser directement les algorithmes ins erertas et extrairemin donn es dans la section 3.4, nous supposerons que la liste initiale est impl ement ee par le tableau T [1..n]. La proc edure Tri-par-tas ci-dessous utilise uniquement le tableau T pour toutes les op erations de mise a ` jour.

proc edure Tri-par-tas(T, n) ; p := 0 ; {cr eation dun tas vide} pour k de 1 a ` n faire Ins erer(T (k ), T ) ; pour k de 1 a ` n faire extrairemin(T ).

`me Avant la k ie insertion, le tas est constitu e des k 1 premiers el ements de T et les el ements non encore ins er es occupent les n k positions suivantes. Apr` es la ie `me k suppression, le tas occupe les n k premi` eres positions du tableau et les el ements occupant les k derni` eres positions sont rang es par cl e d ecroissante au sens large. En eet, l echange des contenus de la racine et de la derni` ere feuille du tas, r ealis e au d ebut de extrairemin(T ), permet de r ecup erer l el ement `me supprim e lors de la k ie suppression dans la position n k + 1 du tableau.

rer et extrairemin est Comme la complexit e en temps des algorithmes Inse O (log n) o` u n est le nombre d el ements du tas, la complexit e du tri par tas est O (n log n). La gure 1.6 montre lex ecution de lalgorithme de tri par tas. Une barre oblique a ` lint erieur du tableau indique la s eparation entre le tas en partie gauche et les el ements non contenus dans le tas en partie droite.

5.2

Tri externe

Les probl` emes de tri etudi es jusquici supposent que tous les objets a ` trier sont plac es en m emoire centrale. Cependant en pratique, cette hypoth` ese ne peut etre satisfaite en raison de la taille et du nombre des objets a ` trier. Ces objets sont alors plac es sur des m emoires secondaires (disques, bandes magn etiques, etc.) et lalgorithme de tri ex ecutera des op erations de lecture et d ecriture sur le support utilis e. Comme la dur ee dune op eration dentr ee-sortie sur une m emoire externe est beaucoup plus grande quun temps dacc` es a ` la m emoire centrale, le temps op eratoire dun algorithme de tri externe est essentiellement d u au nombre dop erations dentr ee-sortie quil ex ecute. Ce nombre sera la mesure de complexit e que nous utiliserons pour ce type dalgorithme. Le mode dacc` es (s equentiel, direct, etc.) est bien s ur un param` etre important pour la conception dun algorithme de tri externe. Nous nous limiterons au cas de supports identiques a ` acc` es s equentiel . Version 6 f evrier 2005

132
6 3 2

Chapitre 5. Tris

Liste initiale [6,3,2,3,1,5] 2

6 [6/3,2,3,1,5] 1 [3,6/2,3,1,5]

[2,6,3/3,1,5] 1

3 6

3 3 5

6 [2,3,3,6/1,5]

3 [1,2,3,6,3/5]

[1,2,3,6,3,5]

Insertion des six lments 1 2

3 3

3 5

3 [1,2,3,6,3,5] 3 6 5

6 [2,3,3,6,5/1] 5

6 [3,3,5,6/2,1] 6

6 [5,6/3,3,2,1] [6/5,3,3,2,1] liste terminale [6,5,3,3,2,1]

[3,6,5/3,2,1]

Suppression des six lments

Figure 1.6: Un tri par tas. La structure g en erale dun algorithme de tri externe comprend la r esolution de trois probl` emes. Le premier est la construction de monotonies , cest-` a-dire de sous-listes disjointes tri ees. Le second est la r epartition dynamique des monotonies sur les supports. Le troisi` eme est linterclassement des monotonies. Les solutions retenues pour ces trois probl` emes doivent concourir a ` lobtention sur un support de la liste tri ee de tous les objets en minimisant le nombre dop erations dentr eesortie pour y parvenir. Il faut en particulier eviter des situations dites de blocage o` u toutes les monotonies se trouvent plac ees sur un m eme support alors que le tri nest pas termin e. Dans ce chapitre nous etudierons plus sp ecialement le probl` eme de la r epartition dynamique des monotonies et lune de ses solutions, appel ee tri polyphas e , qui, en utilisant les nombres de Fibonacci, conduit a ` un algorithme performant. Nous noterons s le nombre de supports, n le nombre dobjets a ` trier et m la place disponible en m emoire centrale, mesur ee en nombre dobjets. On suppose que les Version 6 f evrier 2005

5.2. Tri externe n objets sont initialement plac es sur un m eme support not e S0 .

133

5.2.1

Construction des monotonies

Pour limiter le nombre dentr ees-sorties, il convient de construire un petit nombre de monotonies de grande taille. Deux techniques conduisant a ` un nombre comparable dentr ees-sorties r epondent a ` cet objectif. Lune construit des monotonies de m eme taille m en utilisant un algorithme de tri interne ; lautre construit des monotonies en g en eral plus longues par s election et remplacement. Monotonies de m eme taille Chaque it eration consiste a ` lire en m emoire centrale les m objets suivants du support S0 (ou le nombre restant dobjets sil est inf erieur a ` m), a ` trier les objets contenus en m emoire centrale par un algorithme de tri interne et a ` ecrire la liste obtenue sur un support qui d epend de la strat egie de r epartition. Lalgorithme r ealise ainsi dune part 2n op erations dentr ee-sortie (n lectures et n ecritures) et dautre part n/m tris internes. S election et remplacement Lalgorithme est initialis e par la lecture en m emoire centrale des m premiers objets de S0 . On note E lensemble des objets contenus en m emoire centrale et f lobjet suivant sur S0 . Lensemble E contient un sous-ensemble M initialement vide dobjets dits marqu es car ils ne peuvent appartenir a ` la monotonie en cours de construction. Le calcul de la monotonie suivante commence lorsque M est vide et se termine lorsque M est egal a ` E . Une it eration consiste a ` calculer le plus petit el ement e de E M , a ` placer e a ` la suite de la monotonie courante en construction et a ` lire en m emoire centrale lobjet f de S0 dans la place occup ee par e. Si f est plus petit que e, il est ajout ea ` lensemble M car il ne pourra pas faire partie de la monotonie courante. Le pire des cas correspond aux objets rang es initialement dans lordre inverse de lordre requis. Apr` es la lecture en m emoire centrale des m premiers objets, tout nouvel objet lu en m emoire est imm ediatement marqu e. Chaque monotonie est alors de taille m. Dans le cas g en eral, la taille de chaque monotonie (sauf peut- etre la derni` ere) est plus grande que m. Si les objets non marqu es en m emoire centrale sont organis es en tas, la complexit e des op erations el ementaires hors entr ees-sorties est O (n log m) et le nombre dop erations d entr ee-sortie est 2n puisque chaque el ement est lu et ecrit une seule fois. La gure 2.1 d ecrit les dix premi` eres etapes dun exemple de construction de monotonies par s election et remplacement pour une m emoire de 5 cellules (m=5). La liste initiale sur support externe est S0 =(4, 3, 6, 7, 10, 5, 1, 2, 8, 3, 5, 9, 4). L el ement de la ligne i et de la colonne j est la cl e de lobjet contenu dans la cellule i a ` l etape j . Si cette cl e est suivie dune etoile, la cellule i appartient a ` M . Si cette cl e est Version 6 f evrier 2005

134

Chapitre 5. Tris

suivie dune pointe de ` eche, lobjet correspondant est le suivant de la monotonie en cours. Comme apr` es l etape 8 toutes les cellules sont marqu ees, la premi` ere monotonie est (3, 4, 5, 6, 7, 8, 10). La seconde commence par (1, 2, . . .).
1 1 2 3 4 5 4 3^ 6 7 10 2 4^ 5 6 7 3 4 5 1* 6 1* 7 1* 8 1* 9 1^ 2 5 3 9 10 4 2^ 5 3 9

1* 1* 5^ 2* 6 7 6^ 7 10

2* 2* 8 7^ 10 8^ 3*

2* 2* 5* 5* 3* 3*

10 10

10 10^ 9*

changement de monotonie

Figure 2.1: S election et remplacement.

5.2.2

R epartition des monotonies

Une fois construite, chaque monotonie doit etre plac ee sur lun des s supports. La strat egie de r epartition des monotonies sur les supports est ici essentielle pour lecacit e des op erations ult erieures dinterclassement. Nous examinons deux strat egies de r epartition. Le tri equilibr e a le m erite d etre simple a ` impl ementer, mais utilise mal les supports, r ealise 2n op erations dentr ee-sortie par phase et surtout est contraint dex ecuter des recopies de monotonies. Le tri polyphas e , en fondant sa strat egie de r epartition sur les nombres de Fibonacci, r ealise un nombre limit e dop erations dentr ee-sortie a ` chaque phase, nest jamais contraint a ` de simples recopies, mais doit par contre introduire des monotonies fant omes si le nombre total de monotonies initiales nest pas lun des el ements dune suite sp ecique d eduite de la suite de Fibonacci dordre s 1. Le tri equilibr e Le tri equilibr e consiste a ` d enir deux sous-ensembles L (supports de lecture) et E (supports d ecriture) de q supports chacun. Lors de leur cr eation, les monotonies sont r eparties uniform ement sur les supports de L. Une phase de lalgorithme est d ecrite par la proc edure phase-tri- equilibr e ci-dessous. Lit eration fondamentale de cette proc edure, appel ee fusion el ementaire et impl ement ee par fusion( , k ), lit la premi` ere monotonie de chaque support de , interclasse ces monotonies en m emoire centrale et ecrit la monotonie r esultat sur le support d ecriture k .

Version 6 f evrier 2005

5.2. Tri externe proc edure phase-tri- equilibr e; k := 0 (mod q ) ; tantque toutes les monotonies de L nont pas et e lues faire soit le sous-ensemble des supports non vides de L ; fusion( , k ) ; k := k + 1 (mod q ) ntantque ; L := ensemble des supports de E ; E := ensemble des supports de L.

135

Une phase du tri equilibr e fait passer le nombre de monotonies de M a ` M/q et les nouvelles monotonies restent uniform ement r eparties sur les supports. Si M0 est le nombre initial de monotonies, le nombre maximal de phases est en O (log M0 ). Chaque phase r ealise 2n entr ees-sorties car chaque objet est lu et ecrit une fois. Il en r esulte que le nombre dop erations dentr ee-sortie du tri equilibr e est en O (n log M0 ). La gure 2.2 d ecrit un tri equilibr e. Les Mi sont les monotonies initiales et f est lop erateur de fusion el ementaire. Les sous-ensembles {S1 , S2 , S3 } et {S4 , S5 , S6 } sont alternativement utilis es en lecture et en ecriture. Lors de la phase 1, la monotonie M3 a simplement et e recopi ee.
S1 S2 S3 S4 S5 S6 phase 0 M1,M2,M3 M4,M5 M6,M7 f(M1,M4,M6) f(M2,M5,M7) M3=f(M3) phase 1 phase 2 f(f(M1,M4,M6),f(M2,M5,M7),M1)

Figure 2.2: Le tri equilibr e. Comme nous lavons soulign e, le principal inconv enient du tri equilibr e est de r ealiser une lecture et une ecriture de chaque objet lors dune m eme phase. De plus, si en n de phase tous les supports de lecture sont vides sauf un ne contenant quune seule monotonie, celle-ci sera simplement recopi ee et le nombre de monotonies ne diminuera pas lors de cette fusion el ementaire. Le tri polyphas e Par rapport au tri equilibr e, le tri polyphas e ne r ealise au cours dune phase quun nombre limit e dop erations dentr ee-sortie, nex ecute pas de simples recopies et Version 6 f evrier 2005

136

Chapitre 5. Tris

utilise beaucoup mieux lensemble des supports en se servant des nombres de Fibonacci pour r epartir initialement les monotonies. Lit eration fondamentale du tri polyphas e, egalement appel ee phase , consiste a ` choisir un support dit d ecriture, not e e et a ` r ealiser k fusions el ementaires sur le support e. L etat du syst` eme est d eni par la suite ordonn ee par valeurs d ecroissantes N = (N1 , . . . , Ns ) des nombres de monotonies sur les S supports, chaque rang de cette suite correspondant a ` un num ero logique de support. On passe des num eros logiques aux num eros physiques par une permutation et lon appelle total de N le nombre (N ) = i{1,...,s} Ni . Le lemme suivant d etermine pour un etat terminal N x e, quel est l etat initial de plus grand total permettant datteindre N en une seule phase . Lemme 2.1. L etat (N1 + N2 , N1 + N3 , , N1 + Ns , 0) est un etat de total maximal permettant datteindre l etat N en une seule phase. Preuve. Notons (N ) = (N1 + N2 , N1 + N3 , , N1 + Ns , 0). En prenant comme suppport d ecriture e celui qui ne contient aucune monotonie et en r ealisant N1 fusions el ementaires de lensemble des autres supports sur e, on construit une phase qui fait passer de l etat (N ) a ` l etat (N2 , N3 , , Ns , N1 ) qui, a ` une permutation pr` es, est l etat N . Remarquons de plus que ( (N )) = (N )+(s 2)N1 . Supposons maintenant que M soit un etat initial permettant de passer en une seule phase de l etat M a ` l etat N . Consid erons les num eros logiques des supports dans M . Soit e le num ero du support d ecriture choisi et ai , i {1, . . . , s} {e} le nombre doccurrences du support num ero i dans les k fusions el ementaires de la phase. Le nombre de monotonies du support num ero i devient Mi = Mi ai , i {1, . . . , s} {e} et celui du support num ero e devient Me = Me + k . Comme nous avons k Me et pour tout i dans {1, . . . , s} {e}, ai k , il vient : (M ) = (M ) + (
i{1,...,s}{e}

ai ) k (M ) + (s 2)k (N ) + (s 2)N1

car (M ) = (N ) et k N1 . Soit E 1 = (1, 0, , 0) l etat nal associ ea ` la liste des objets totalement tri ee sur un seul support. Il r esulte du lemme pr ec edent que (n) (E 1 ) est une r epartition initiale sur les supports qui permet dobtenir l etat E 1 en n phases. Si m est le nombre initial de monotonies, le tri polyphas e utilise comme r epartition initiale le vecteur (k) (E 1 ) o` u k est le plus petit entier tel que ( (k) (E 1 )) m. Il faudra donc ajouter et r epartir sur les supports m ( (k) (E 1 )) monotonies fant omes . R epartition initiale des monotonies Nous examinons dans cette section la nature et les propri et es essentielles de la (n) 1 suite (E ), n N et la r epartition initiale des monotonies fant omes. Notons que n est lindice g en erique de la suite et ne repr esente pas dans cette section le Version 6 f evrier 2005

5.2. Tri externe

137

nombre d el ements a ` trier. Nous notons Fsn = (f n 1 , . . . , f n s ) le vecteur (n) (E 1 ) et Ts (n) son total. Il r esulte directement de la d enition de que Fsn+1 est obtenu a ` partir de Fsn par la relation de r ecurrence suivante : fin+1 = avec comme conditions initiales : fi0 = 1 si i = 1 0 sinon
n f1 + fin +1 0

si i s 1 si i = s

Le tableau ci-dessous montre les valeurs de Fsn pour s = 6 et 0 n 8.


n n n n n n n f1 f2 f3 f4 f5 f6 T (n) 0 1 0 0 0 0 0 1 1 1 1 1 1 1 0 5 2 2 2 2 2 1 0 9 3 4 4 4 3 2 0 17 4 8 8 7 6 4 0 33 5 16 15 14 12 8 0 65 6 31 30 28 24 16 0 129 7 61 59 55 47 31 0 253 8 120 116 108 92 61 0 497

Dans le cas particulier de trois supports, l equation de r ecurrence pr ec edente s ecrit pour n 2 : n+1 n n n+1 n f1 = f1 + f2 f2 = f1 . Sa solution est imm ediate car nous avons pour n 2 :
n+1 n n1 f1 = f1 + f1 n+1 n1 n1 n n1 f2 = f1 + f2 = f2 + f2 .

0 1 0 1 Compte tenu des conditions initiales, a ` savoir f1 = f1 = 1, f2 = 0 et f2 = 1, nous obtenons : n f1 = (n + 1) n f2 = (n)

T3 (n) = (n + 2)

o` u (n) est l el ement de rang n de la suite de Fibonacci dordre deux d enie par : (n) = (n 1) + (n 2) si n 2 1 si n = 1 0 si n = 0

Dans le cas g en eral, la suite de Fibonnaccci dordre p, not ee p (n) est d enie par : p k=1 p (n k ) si n p p (n) = 1 si n = p 1 0 si n {0, . . . , p 2}

Version 6 f evrier 2005

138 On montre alors que dans le cas de s supports :

Chapitre 5. Tris

n fk = s1 (n +(s 1) 2)+s1 (n +(s 1) 3)+ +s1 (n +(s 1) (s +1 k )

et que le nombre total de monotonies est donn e par : Ts (n) = (s 1)s1 (n + (s 3)) + (s 2)s1 (n + (s 4)) + + s1 (n 1) Supposons que le nombre initial m de monotonies soit compris strictement entre Ts (n) et Ts (n +1). Il faut donc cr eer Ts (n +1) m monotonies fant omes que lon a avantage a ` r epartir aussi uniform ement que possible sur les supports. Lalgorithme fibonacci(s, m) ci-dessous r ealise cet objectif en construisant la r epartition Fsn+1 et en donnant la priorit e aux monotonies fant omes. proc edure fibonacci(s, m) ; {On suppose connu lentier n tel que Ts (n) < m < Ts (n + 1)} r := Ts (n + 1) Ts (n) ; F := Ts (n + 1) m ; n+1 n pour S de 1 a ` s 1 faire d(S ) := fS fS ; S := 0 ; pour j de 1 a ` r faire S := S + 1 (mod s 1) ; si d(S ) > 0 alors d(S ) := d(S ) 1 ; si j < F alors ecrire une monotonie fant ome sur le support S + 1 sinon ecrire la monotonie suivante sur le support S + 1 ; nsi nsi npour ; pour S de 1 a ` s 1 faire n ecrire les fS monotonies suivantes sur le support S npour. La gure 2.3 montre la r epartition r ealis ee par lalgorithme pr ec edent pour 19 monotonies initiales et 6 supports. Pour cet exemple, on a : T6 (3)=17, T6 (4)=33 et F6 (4)=(8, 8, 7, 6, 4, 0). Analyse du tri polyphas e p de la suite de Fibonacci dordre p est donn La fonction g en eratrice ee par : p (z ) =
nN

p (n)z n =

z p1 . 1 z z2 zp

Version 6 f evrier 2005

5.2. Tri externe


S1 S2 S3 S4 S5 f f f f f f f f f f f f f f m m m m m m m m m m m m m m m f: monotonie fantme m: monotonie relle m m

139

m m

Figure 2.3: R epartition des monotonies fant omes.


n Il r esulte alors des formules du paragraphe pr ec edent donnant les fp et Ts (n) que n les fonctions g en eratrices f1 et Ts des suites f1 et Ts (n) sont respectivement :

f 1 (z ) =
nN

f1 (n)z n =

1 1 z zp z2

et s (z ) = T
nN

Ts (n)z n =

(s 1)z + (s 2)z 2 + + z s1 . 1 z z2 zp

Comme les z eros du polyn ome 1 z z 2 z p sont tous de module strictement plus petit que lunit e, on a Ts (n) = O (an ) o` u a est un rationnel strictement plus grand que lunit e. Si donc m = Ts (n) est le nombre initial de monotonies, le nombre de phases du tri polyphas e est en O (log m). Pour evaluer le nombre dop erations dentr ee-sortie qui, rappelons-le, est notre mesure de complexit e, nous supposons que toutes les monotonies initiales ont la m eme taille t et nous introduisons la notion de transfert . Un transfert correspond au passage de t objets dun support sur un autre. Nous allons compter le nombre de transferts r ealis es par un tri polyphas ea ` partir de la distribution initiale Fsn . Notons que ce calcul prend en compte la taille des monotonies construites au cours de lex ecution du tri. Le tableau ci-dessous, construit pour un exemple a ` huit phases et six supports, montre l evolution de la taille des monotonies sur chaque support, du nombre de monotonies sur chaque support, et du nombre de transferts t par phase. n S 1 S2 S3 1 [1]61 [1]59 [1]55 2 [5]31 [1]30 [1]28 3 [9]16 [5]15 [1]14 4 [17]8 [9]8 [5]7 5 [33]4 [17]4 [9]4 6 [65]2 [33]2 [17]2 7 [129]1 [65]1 [33]1 8 [253]1 [0] [0] S4 S5 S6 t 47 31 [1] [1] [0] 253 [1]24 [1]16 [0] 5 31 [1]12 [1]8 [0] 9 16 [1]6 [1]4 [0] 17 8 [5]3 [1]2 [0] 33 4 [9]2 [5]1 [0] 65 2 [17]1 [9]1 [0] 129 1 [0] [0] [0] 253 1 Version 6 f evrier 2005

140

Chapitre 5. Tris

Un el ement [a]b du tableau o` u a et b sont deux entiers doit etre interpr et e comme b monotonies de taille a. Les nombres de Fibonacci apparaissent partout dans ce tableau. On montre que dune mani` ere g en erale pour n phases et s supports, la premi` ere ligne du tableau central est : ([Ts (0)]f1 , [Ts (0)]f2 , , [Ts (0)]fs1 ) et que la ligne associ ee a ` la phase p (hormis le nombre de transferts) est : ([Ts (p 1)]f1
np+1 n n n

, [Ts (p 2)]f2

np+1

, , [Ts (p s + 1)]fs1

np+1

en adoptant la convention que Ts (k ) = 1 si k 0. Il r esulte alors de la structure de la ligne g en erale du tableau central que le nombre de transferts associ e a ` la phase p est donn e par :
np+1 fs [Ts (p 1) + Ts (p 2) + + Ts (p s + 1)] 1 np ce qui s ecrit encore : f1 Ts (p). Le nombre total de transferts, not e s (n), est n np donc egal a ` Ts (n) + p=1 f1 Ts (p). Il en r esulte que s (n) est egal a ` la somme n de Ts (n) et du coecient de z dans f1 (z )Ts (z ).

Lorsque n tend vers +, le rapport s (n)/Ts (n) est equivalent a ` une fonction lin eaire du type As ln(Ts (n)) + Bs o` u As et Bs ne d ependent que du nombre s de supports. Ce comportement a egalement et e observ e exp erimentalement pour la r epartition issue de la proc edure Fibonacci( s, m) lorsque le nombre m de monotonies initiales (de m eme taille) tend vers + mais nest pas n ecessairement egal a ` lune des valeurs de la suite Ts (n).

Notes
Dans ce chapitre, nous nous sommes limit es a ` la pr esentation de trois algorithmes classiques de tri interne et un algorithme de tri externe. Louvrage le plus complet du domaine est : D. Knuth, The Art of Computer Programming, tome 3 : Sorting and Searching, Addison Wesley, 1973.

Exercices
5.1. Le tri bulle dun tableau t[i..j ] de n el ements consiste, pour k variant de i a ` j 1, a ` faire remonter le plus petit el ement du sous-tableau t[k..j ] en position k par une suite d echanges. La proc edure tri-bulle ci-dessous impl emente cet algorithme :

Version 6 f evrier 2005

Exercices

141

proc edure tri-bulle(t, i, j ) ; pour k de i a ` j 1 faire pour p de j 1 a ` k pas 1 faire si c(p + 1) < c(p) alors echanger(t, p + 1, p) {c(k ) est la cl e de l el ement t(k )} npour npour.

a) D eterminer le nombre de comparaisons ex ecut ees par le tri bulle sur un tableau a `n el ements. b) D eterminer le nombre maximum et le nombre minimum d echanges ex ecut es par le tri bulle sur un tableau a `n el ements. On suppose maintenant que les cl es sont distinctes deux a ` deux et lon note (t) la permutation de {1, . . . , n} associ ee au rang des el ements du tableau t[i..j ]. c) D emontrer que le nombre d echanges r ealis es par le tri bulle est egal au nombre dinversions de . On note In,k le nombre de permutations de {1, . . . , n} ayant k inversions. Exprimer In,k en fonction des In1,p o` u p {max{0, k n + 1}, . . . , k }. En d eduire que la fonction g en eratrice In (z ) = kN In,k z k v erie : In (z ) = (1 + z + z 2 + . . . + z n1 )In1 (z ) En supposant que les permutations (t) sont equiprobables, montrer que le nomn(n1) bre moyen d echanges du tri bulle est 4 . 5.2. Le tri par s election dun tableau t[i..j ] a `n el ements consiste a ` d eterminer l el ement minimum du tableau, a ` echanger cet el ement avec le premier el ement du tableau et a ` r ealiser r ecursivement ces op erations sur le tableau t[i + 1..j ]. La proc edure tri-s election ci-dessous impl emente cet algorithme : proc edure tri-s election(t, i, j ) ; si j > i alors soit c(k ) = min{c(p) | p {i, . . . , j }} ; echanger(t, k, i) ; election(t, i + 1, j ) tri-s nsi.

a) D eterminer, en fonction de n, le nombre d echanges r ealis es par la proc edure tri-selection. b) D eterminer, en fonction de n, le nombre minimum et le nombre maximum de comparaisons r ealis ees par la proc edure tri-s election.

Version 6 f evrier 2005

142

Chapitre 5. Tris

c) D eterminer le nombre moyen de comparaisons r ealis ees par la proc edure tri selection si les cl es sont distinctes deux a ` deux et les permutations des rangs equiprobables. 5.3. Le tri par insertion dun tableau t[i..j ] a `n el ements consiste a ` r ealiser un appel r ecursif pour le tableau t[i..j 1] et a ` ins erer le dernier el ement du tableau a ` sa place dans le tableau en d ecalant dune position vers la droite les el ements qui le suivent. La proc edure tri-insertion ci-dessous impl emente cet algorithme : proc edure tri-insertion(t, i, j ) ; si j > i alors tri-insertion(t, i, j 1) ; k := j ; tantque k > i etalors c(k ) < c(k 1) faire echanger(t, k 1, k ) ntantque {c(k ) est la cl e de l el ement t(k )} nsi. a) D eterminer la complexit e du tri par insertion en nombre de comparaisons. On suppose que les cl es sont distinctes deux a ` deux et que les permutations des rangs sont equiprobables. b) D emontrer que pour lappel r ecursif, les permutations des rangs du tableau t[i..j 1] sont equiprobables. c) En d eduire le nombre moyen de comparaisons du tri par insertion dun tableau a `n el ements. 5.4. Soit E un ensemble de n el ements dont les cl es sont des entiers cod es avec K chires de lensemble {0, . . . , 9}. Le tri par champs consiste a ` construire K listes {L1 , . . . , LK } o` u la liste Lk est tri ee pour les k chires de poids faible. La `me liste LK est donc une liste tri ee. On note p(k) , k {1, . . . , K }, le k ie chire de poids faible dun entier p a ` K chires. La proc edure tri-champs ci-dessous impl emente cet algorithme a ` partir de la liste L des n el ements a ` trier : proc edure tri-champs(L) ; pour k de 1 a ` K faire pour i de 1 a ` n faire e :=d efiler(L) ; p := c(e)(k) ; {c(e) est la cl e de l el ement e} enfiler(e, Lp ) npour ; pour q de 0 a ` 9 faire L := L Lq ; Lq := () npour npour. Version 6 f evrier 2005

Exercices

143

filer et enfiler correspondent a Les op erations de ` la gestion dune le. a) Montrer que la liste L obtenue en retour de la proc edure tri-champs est tri ee. b) Exprimer en fonction de n et K la complexit e (au sens classique) du tri par champs. c) En d eduire une condition pour que ce tri soit lin eaire par rapport a ` n. 5.5. Soient L1 et L2 deux listes tri ees contenant respectivement n et m entiers et rang ees dans deux tableaux T1 et T2 . Ecrire un algorithme de complexit e en temps O (n + m) pour interclasser de ces deux listes dans un tableau T . 5.6. On utilise une variante de lalgorithme de tri rapide pour d eterminer le `me k ie el ement dun ensemble de n el ements munis dune cl e. On suppose que les n cl es sont distinctes deux a ` deux. On consid` ere dans un premier temps la fonction select ci-dessous : fonction s elect(t, i, j, k ) : el ement ; {on suppose que 1 k n} p :=pivoter(t, i, j ) ; si k p alors s elect :=s elect(t, i, p, k ) sinon select :=s elect(t, p + 1, j, k p) nsi.

o` u la fonction pivoter retourne un entier p {i + 1, . . . , j 1} et r eorganise en temps O (n) le tableau t[i..j ] en deux sous-tableaux t[i..p] et t[p + 1..j ] tels quun el ement quelconque de t[i..p] poss` ede une cl e inf erieure ou egale a ` celle dun el ement quelconque de t[p + 1..j ]. `me a) D emontrer que la proc edure s elect d etermine le k ie el ement du tableau. b) Montrer que, sans hypoth` ese particuli` ere sur lalgorithme de pivotage, la fonction s elect peut r ealiser O (n2 ) comparaisons. c) Montrer que si lalgorithme de pivotage garantit que la taille du sous-tableau de lappel r ecursif ne d epasse pas n o` u < 1, la complexit e en nombre de comparaisons de la fonction s elect est O (n). On consid` ere lalgorithme de choix du pivot suivant : 1. d ecouper le tableau en n/5 blocs {B1 , . . . , B n/5 } de cinq el ements ; les el ements restants (au plus 4) ne seront pas consid er es dans la suite de lalgorithme ; 2. d eterminer les el ements m edians mk des Bk , k {1, . . . , n/5 } ; +5 3. utiliser la fonction select pour d eterminer l el ement dordre n10 de la liste (m1 , . . . , m n/5 ) ; (si n/5 est pair, l el ement s electionn e est l el ement m edian de la liste (m1 , . . . , m n/5 )). 5 d) Montrer que le pivot choisi est strictement sup erieur a ` au moins 3 n10 5 el ements de t et est inf erieur ou egal a ` au moins 3 n10 el ements de t. En d eduire Version 6 f evrier 2005

144

Chapitre 5. Tris

que pour n 75, le sous-tableau de lappel r ecursif est de taille au plus egale a ` 3n/4. On consid` ere alors la fonction s elect suivante : fonction s elect(t, i, j, k ) : el ement ; si (j i) 74 alors trier(t, i, j ) ; extraire l el ement dordre k de t ; exit sinon pour q de 1 a ` n/5 faire m(q ) :=m edian(t, 5(q 1) + i, 5(q 1) + i + 4) {m(q ) est lindice dans t de l el ement m edian} {de {t(5(q 1) + i), . . . , t(5(q 1) + i + 4)}} npour ; +5 ); r :=s elect(m, 1, n/5 , n10 {r est lindice dans t de l el ement} +5 { dordre n10 de (tm(1) , . . . , tm( n/5 )} p :=partition(t, i, j, r ) ; si p k alors s elect :=s elect(t, i, p, k ) elect(t, p + 1, j, k p) elect :=s sinon s nsi nsi. dian La proc edure trier est un algorithme de tri quelconque. La fonction me fournit l el ement de rang 3 dune liste de 5 el ements. La proc edure partition r eorganise le tableau t en prenant t(r ) comme pivot ; apr` es son ex ecution, un el ement quelconque de t[i..p] a une cl e inf erieure ou egale a ` t(r ), un el ement quelconque de t[p + 1..j ] a une cl e strictement sup erieure a ` t(r ). elect. e) D emontrer la validit e de la fonction s elect est O (n). f) Montrer que la complexit e de la fonction s

Version 6 f evrier 2005

145

Chapitre 6

Arbres et ensembles ordonn es


Ce long chapitre contient la description de plusieurs familles darbres binaires de recherche equilibr es. Nous commen cons par les arbres AVL, puis nous d ecrivons les arbres ab, avec notamment des op erations plus elabor ees comme la concat enation et la scission, et le co ut amorti dune suite dop erations. Ensuite, nous pr esentons les arbres bicolores, et enn une r ealisation de structures persistantes sur ces arbres.

Introduction
La manipulation de grands volumes dinformations est une t ache fr equente en algorithmique. Ce chapitre pr esente plusieurs structures de donn ees pour leur gestion. Les donn ees peuvent etre tr` es vari ees, et organis ees di eremment dune application a ` lautre. Nous supposons que chaque donn ee comporte un champ particulier, appel e sa cl e qui peut etre, par exemple, une cha ne de caract` eres ou un num ero. Les cl es permettent didentier les donn ees, et des donn ees di erentes ont donc des cl es distinctes. Une cl e permet dacc eder a ` la donn ee quelle repr esente, selon un m ecanisme qui d epend de la situation consid er ee, et que nous ne consid erons pas ici. Les cl es elles-m emes, et cest l` a leur int er et, sont prises dans un ensemble totalement ordonn e (appel e l univers ). La manipulation des donn ees se fait donc a ` travers la manipulation des cl es. On peut distinguer trois cat egories de structures de donn ees, en fonction de leur comportement dans le temps. Une structure statique repr esente un ensemble qui ne varie pas (ou tr` es peu) dans le temps. Un exemple typique est un lexique xe. Dautres exemples sont fournis en g eom etrie algorithmique ; dans le probl` eme de localisation, il sagit de d eterminer dans quelle r egion dune subdivision xe du plan se trouve un point donn e. Laction principale sur une telle structure est la recherche dinformations, les mises a ` jour etant exceptionnelles et de ce fait n egligeables. Un soin particulier (et donc un certain temps) peut etre consacr ea ` Version 6 f evrier 2005

146

Chapitre 6. Arbres et ensembles ordonn es

la construction dune structure optimale . M eme si lensemble des donn ees est statique, la structure de donn ees peut evoluer dans le temps, pour am eliorer le temps de r eponse en fonction de la fr equence des interrogations. Les structures dynamiques, qui font lobjet de ce chapitre, permettent en plus des modications de lensemble des donn ees repr esent ees. Il sagit principalement dimpl ementer des dictionnaires, donc de r ealiser la recherche, linsertion et la suppression dinformations, ou des listes concat enables qui exigent comme op erations suppl ementaires la concat enation et la scission. Les arbres binaires de recherche equilibr es r ealisent ces op erations de mani` ere ecace. Ces structures sont eph em` eres dans le sens o` u une mise a ` jour d etruit de fa con d enitive la version pr ec edente. Une structure est persistante si elle est dynamique, et si elle conserve egalement les versions ant erieures de la structure. On peut distinguer deux degr es de persistance : si lon dispose de la liste des versions pr ec edentes, on peut rechercher la pr esence d el ements dans une version ant erieure ; si de plus on est autoris ea ` modier les versions ant erieures, on aboutit a ` un arbre de versions, la plus elabor ee des structures persistantes. Nous allons pr esenter une r ealisation ecace de la liste des versions. Dans ce chapitre, nous proposons des solutions au probl` eme que voici : etant donn e un ensemble S , sous-ensemble de lunivers not e U , eectuer de mani` ere ecace les op erations suivantes, qui caract erisent un dictionnaire : rechercher un el ement dans S , ins erer un el ement dans S , supprimer un el ement dans S . Nous examinerons aussi dautres op erations, comme la scission et la concat enation. Eliminons tout de suite le cas dun univers qui serait petit . On peut alors impl ementer ces op erations de fa con tr` es simple. Un ensemble S est repr esent e par un tableau indic e par les el ements de U , qui donne sa fonction caract eristique, cest-` a-dire qui indique, pour chaque el ement de U , sil appartient ou non a ` S. Nous supposons dans la suite que lunivers U est tr` es grand, trop grand en tout cas pour permettre cette r ealisation, et que S est petit par rapport a ` U. Il appara t que les arbres sont une structure de donn ees particuli` erement bien adapt ee a ` la r ealisation ecace des trois op erations de base (recherche, insertion, suppression). Lorsque larbre est equilibr e selon des crit` eres a ` pr eciser, on peut eviter quil d eg en` ere en une structure trop proche dune liste, et on peut alors eectuer les op erations en temps logarithmique en fonction du nombre d el ements de lensemble S . Bien evidemment, linsertion et la suppression peuvent d es equilibrer larbre. Une partie substantielle des algorithmes est consacr ee aux op erations de r e equilibrage qui doivent etre r ealis ees avec soin. Une premi` ere esp` ece darbres binaires equilibr es est constitu ee des arbres AVL, nomm ee ainsi dapr` es les initiales de leurs deux inventeurs (Adelson-Velskii et Landis). Nous consid erons ensuite les arbres ab qui sont des arbres o` u chaque nud a entre a et b ls. Nous pr esentons la version balis ee (dans le sens d eni ci-dessous) de ces arbres, et montrons comment les utiliser pour la concat enation et la scission. Les arbres bicolores, que nous introduisons ensuite, sont une autre Version 6 f evrier 2005

6.1. Arbres de recherche

147

famille darbres equilibr es. Ils ont et e con cus a ` lorigine en vue de limpl ementation des arbres ab, mais leur importance d epasse ce cadre. Ils nous serviront notamment pour la repr esentation de structures persistantes, pr esent ees dans la derni` ere section.

6.1
6.1.1

Arbres de recherche
D enition

Nous allons parler darbres de recherche, et principalement darbres binaires de recherche. Il sagit darbres binaires etiquet es aux sommets. L etiquette dun sommet x est la cl e ou le contenu du sommet, et not ee c(x). Si A est un arbre binaire non vide, on note Ag et Ad ses sous-arbres gauche et droit. Pour tout sommet x, on note A(x) le sous-arbre de racine x, et Ag (x), Ad (x) les sous-arbres de A(x). Un arbre binaire de recherche est un arbre muni dune fonction cl e c sur lensemble de ses sommets v eriant c(y ) < c(x) < c(z ) pour tout sommet x, et pour tous sommets y de Ag (x) et z de Ad (x). Il revient au m eme de dire que les cl es sont croissantes si on les liste dans lordre sym etrique.

400 300 125 252 232 357 363 399 620 706 712 702 720 732 801 825 950

Figure 1.1: Un arbre binaire de recherche. Il est commode de disposer de la m eme notion pour les arborescences ordonn ees (un arbre binaire est un arbre positionn e au sens du chapitre 4). Dans une arborescence ordonn ee de recherche, chaque nud x, a ` d(x) ls, est muni de d(x) 1 cl es c1 (x), . . . , cd(x)1 (x), v eriant la propri et e suivante : soient A1 (x), . . . , Ad(x) (x) les sous-arbres de x, et soit yi un sommet de Ai (x) pour 1 i d(x) ; alors c(y1 ) < c1 (x) < c(y2 ) < < cd(x)1 (x) < c(yd(x) ). Nous regroupons les notions darbre binaire de recherche et darborescence ordonn ee de recherche sous le nom darbre de recherche. On rencontre en fait deux Version 6 f evrier 2005

148

Chapitre 6. Arbres et ensembles ordonn es

cat egories darbres de recherche, ceux o` u linformation est rang ee aux sommets, et ceux o` u elle nest rang ee quaux feuilles. Comme nous lavons dit plus haut, chaque cl e est repr esentative dune donn ee en g en eral plus volumineuse et plus lourde a ` manipuler que la cl e elle-m eme. Chaque cl e permet un acc` es, direct ou indirect, a ` cette information, et cet acc` es peut etre rang e, avec la cl e correspondante, a ` tout sommet de larbre, ou aux feuilles seulement. Dans le deuxi` eme cas, les nuds aussi contiennent des el ements de lensemble U des cl es, mais elles ne servent qu` a organiser larbre. Nous les appelons des balises. Elles permettent de naviguer dans larbre, et en particulier elles pilotent la descente dans larbre lors dune recherche. Chaque nud contient une balise qui est sup erieure ou egale aux cl es de son sous-arbre gauche, et inf erieure aux cl es de son sous-arbre droit (en dautres termes, les cl es et les balises sont croissantes en parcours sym etrique). Les arbres ab sont des arbres balis es.

125 300 232 252

357 363 399 402

Figure 1.2: Un arbre sans balises. La di erence de structure entre un arbre binaire de recherche et un arbre binaire balis e de recherche, m eme si elle peut etre importante dans certaines applications, est assez faible. Ainsi, pour passer dun arbre binaire balis ea ` un arbre binaire de recherche, on peut proc eder en deux etapes comme suit : dans un premier temps, on rebalise larbre, en choisissant comme balise dun nud la plus grande cl e de son sous-arbre gauche.
300 125 125 232 232 252 252 300 357 363 399 357 363 399 402

Figure 1.3: Larbre avec balises. Ensuite, on oublie les feuilles, et on ins` ere dans larbre obtenu la plus grande cl e de larbre dorigine. Cet algorithme simpl emente assez facilement en temps lin eaire avec une le (voir exercices). Version 6 f evrier 2005

6.1. Arbres de recherche


300 125 252 232 357 363 399 402

149

Figure 1.4: Larbre apr` es insertion de la derni` ere cl e. Lop eration r eciproque, de passage dun arbre binaire de recherche a ` un arbre balis e, peut se faire en ajoutant dabord des feuilles pour compl eter larbre (au sens du chapitre 4), puis en munissant ces feuilles des cl es appropri ees : une feuille re coit la cl e du nud pour lequel elle est la feuille la plus a ` droite dans le sous-arbre gauche. Il nest pas dicile de r ealiser cette op eration avec une pile :

proc edure Baliser(a) ; si Est-Feuille(a) alors FixerCl e(a, sommet(P )) ; epiler(P ) d sinon e(a), P ) ; empiler(cl Baliser(G(a)) ; Baliser(D (a)) nsi.

Les op erations de dictionnaire se r ealisent, sur un arbre binaire balis e, de mani` ere tout a ` fait semblable a ` celle expos ee pour les arbres binaires de recherche dans le chapitre 3.
7 3 1 5 9 1 5 3 5 6 7 9

Figure 1.5: Insertion de 6 dans larbre balis e. Ainsi, linsertion dune cl e se fait comme dans un arbre binaire de recherche, sauf que lon remplace la feuille d ecouverte en descendant dans larbre par un nud Version 6 f evrier 2005

150

Chapitre 6. Arbres et ensembles ordonn es

qui devient le p` ere de cette feuille et dune nouvelle feuille contenant la cl e (voir gure 1.5). La suppression dune cl e est plus simple que dans un arbre binaire de recherche ordinaire ; elle se fait en supprimant la feuille contenant la cl e. Le p` ere de cette feuille est remplac e par son autre ls (voir gure 1.6).
7 3 1 5 5 6 9 1 3 6 7 9

Figure 1.6: Suppression de 5 dans larbre balis e.

6.1.2

Rotations

Les op erations de rotation et de double rotation que nous introduisons maintenant sont int eressantes pour tous les arbres binaires. Elles servent notamment a ` r e equilibrer les arbres apr` es une insertion ou une suppression. Soit A un arbre binaire non vide. Il est commode d ecrire A = (x, B, C ) pour exprimer que x est la racine de A et que B et C sont ses sous-arbres gauche et droit (voir gure 1.7). Nous utilisons cette notation dans la suite de cette section.
x: A : B C

Figure 1.7: Larbre A = (x, B, C ). Soit donc A = (x, X, B ) un arbre non vide, supposons B non vide et posons B = (y, Y, Z ). La rotation gauche de A est lop eration : A = (x, X, (y, Y, Z )) G (A) = (y, (x, X, Y ), Z )

repr esent ee dans la gure 1.8. La rotation droite est lop eration inverse : A = (y, (x, X, Y ), Z ) D (A) = (x, X, (y, Y, Z ))

Version 6 f evrier 2005

6.1. Arbres de recherche


x: y: X Y Z rotation droite X Y rotation gauche x : Z y :

151

Figure 1.8: Rotations gauche et droite. Proposition 1.1. Si A est un arbre binaire de recherche, et si la rotation gauche (respectivement droite) est d enie sur A, alors G (A) (respectivement D (A)) est encore un arbre binaire de recherche.
x: u : v : X Y Z T X Y Z T rotation gauchedroite u : v: x :

Figure 1.9: Rotation gauche-droite. Deux doubles rotations sont utilis ees, la rotation gauche-droite et la rotation droite-gauche : elles associent, a ` un arbre A = (x, Ag , Ad ) donn e, respectivement larbre D (x, G (Ag ), Ad ) et larbre G (x, Ag , D (Ad )) (voir gures 1.9 et 1.10). Ces op erations ne sont evidemment d enies que si les sous-arbres requis ne sont pas vides. Ces op erations pr eservent bien s ur egalement les arbres binaires de recherche.
x: z: X y: T Y Z X Y Z T rotation droitegauche x: y: z:

Figure 1.10: Rotation droite-gauche. Un aspect essentiel de ces op erations est quelles simpl ementent en temps constant. Lorsque les arbres binaires sont d eclar es par Version 6 f evrier 2005

152
arbre = ^sommet; sommet = RECORD val: element; g, d: arbre END;

Chapitre 6. Arbres et ensembles ordonn es

on obtient la proc edure suivante qui r ealise la rotation gauche, par un simple echange de pointeurs :
PROCEDURE rotationgauche (VAR a: arbre); VAR b: arbre; BEGIN b := a^.d; a^.d := b^.g; b^.g := a; a := b END;

Proposition 1.2. Les op erations de rotation et de double rotation sur les arbres binaires se r ealisent en temps constant.

6.2
6.2.1

Arbres AVL
D enition

Les arbres AVL, introduits par Adelson-Velskii et Landis en 1962, constituent une famille darbres binaires de recherche equilibr es en hauteur.

Figure 2.1: Un arbre AVL. Un arbre binaire A est un arbre AVL si, pour tout sommet de larbre, les hauteurs des sous-arbres gauche et droit di` erent dau plus 1. Plus pr ecis ement, posons (A) = 0 si A est larbre vide, et sinon (A) = hauteur (Ag ) hauteur (Ad ) o` u Ag et Ad sont les sous-arbres gauche et droit de A. Le nombre (A) est appel e l equilibre de A (ou de sa racine). Alors A est un arbre AVL si pour tout sommet Version 6 f evrier 2005

6.2. Arbres AVL

153

x, on a (A(x)) {1, 0, 1}. Par abus, on ecrira aussi (x). En particulier, un arbre r eduit a ` un seul sommet a un equilibre nul. Les arbres AVL ont une hauteur logarithmique en fonction du nombre de sommets. Plus pr ecis ement : Proposition 2.1. Soit A un arbre AVL ayant n sommets et de hauteur h. Alors log2 (1 + n) 1 + h 1, 44 log2 (2 + n). Preuve. Pour une hauteur h donn ee, larbre ayant le plus de sommets est larbre complet qui a 2h+1 1 sommets. Donc n 2h+1 1, et par cons equent log(1+ n) 1 + h. Pour lautre in egalit e, soit N (h) le minimum des nombres de sommets des arbres AVL de hauteur h. On a N (1) = 0, N (0) = 1, N (1) = 2, et N (h) = 1 + N (h 1) + N (h 2), h2

car pour obtenir le minimum, on choisit lun des sous-arbres minimum de hauteur h 1, et lautre minimum de hauteur h 2. Si lon pose F (h) = N (h) + 1, on a F (0) = 2, F (1) = 3, et F (h) = F (h 1) + F (h 2), h2

donc N (h) = Fh+3 , o` u Fn est le n-i` eme nombre de Fibonacci (voir chapitre 2). Pour tout arbre AVL a ` n sommets et de hauteur h, on a par cons equent 1 1 h+3 h+3 > n + 1 F (h) = h+3 1 5 5 do` u log2 (n + 2) + log 5 1, 44 log2 (n + 2) + 2 log2 parce que 1/log2 1, 44 et log 5 2. h+3<

Figure 2.2: Arbres de Fibonacci k pour k = 2, 3, 4, 5. La borne de la proposition est essentiellement atteinte par les arbres de Fibonacci qui sont d enis comme suit : larbre 0 est larbre vide, larbre 1 est r eduit a ` un seul sommet ; larbre k+2 a un sous-arbre gauche egal a ` k+1 , et un sous-arbre droit egal a ` k . La hauteur de k est k 1, et k a Fk+2 1 sommets. Version 6 f evrier 2005

154

Chapitre 6. Arbres et ensembles ordonn es

Limpl ementation des arbres AVL se fait avantageusement comme celle des arbres binaires de recherche (voir chapitre 3). Pour rendre ecaces les op erations de r e equilibrage dont il sera question plus loin, il convient dajouter un champ suppl ementaire a ` chaque sommet qui contient la hauteur du sous-arbre. Pour un arbre binaire de recherche AVL, les types s ecrivent donc
arbre = ^sommet; sommet = RECORD haut: integer; val: element; g, d: arbre END;

Certains auteurs recommandent de ne pas conserver la hauteur, mais seulement l equilibre en chaque sommet. Comme l equilibre peut se coder sur deux bits, il en r esulte un gain de place. En revanche, les algorithmes sont plus diciles a ` mettre en uvre. Le gain de place est en fait r eduit en codant la hauteur sur un octet. On peut alors repr esenter des arbres de hauteur 255, donc avec environ 2170 sommets, ce qui sut en pratique.

6.2.2

Insertion

Les arbres AVL sont utilis es comme impl ementation de dictionnaires. On consid` ere donc des arbres binaires de recherche qui sont en plus des arbres AVL. Les op erations de recherche, dinsertion et de suppression se font, dans un arbre binaire de recherche, en temps proportionnel a ` la hauteur de larbre. Cette hauteur est logarithmique en fonction du nombre de sommets dans un arbre AVL. Ainsi, la recherche se fait en temps logarithmique. Pour linsertion et la suppression, il convient de maintenir le caract` ere AVL apr` es lop eration, ce qui se traduit par un r e equilibrage. Comme on verra, le co ut du r e equilibrage est, lui aussi, proportionnel a ` la hauteur, ce qui garantit un co ut total logarithmique. Soit donc a ` ins erer une cl e c dans un arbre binaire de recherche AVL A. Si A est vide, le r esultat est un arbre A form e dun seul sommet de contenu c, et cet arbre est AVL. Supposons donc A non vide. Dans une premi` ere phase, on utilise lalgorithme dinsertion habituel (voir chapitre 3) dans un arbre binaire de recherche : on descend dans A a ` partir de sa racine r , et on cr ee une nouvelle feuille s contenant la cl e c. Soit A larbre ainsi obtenu. Dans une deuxi` eme phase, on remonte le chemin entre r et s, en progressant de s vers r , et on teste si larbre A est encore AVL. Seuls les sous-arbres dont les racines sont sur le chemin peuvent changer de hauteur ; cette hauteur ne peut quaugmenter, et elle ne peut augmenter que de 1.

Version 6 f evrier 2005

6.2. Arbres AVL


r:

155

x: u:
Z s:

Figure 2.3: Le chemin de r e equilibrage. Si les racines de ces sous-arbres v erient les conditions d equilibre des arbres AVL, larbre A tout entier est AVL. Sinon, il existe un premier sommet x (en partant de s) sur le chemin dont l equilibre, dans A vaut 2 ou 2. Supposons, pour xer les id ees, que le ls gauche u de x est aussi sur (voir gure 2.3) ; alors l equilibre de x est 2. Posons h = hauteur (A(x)). Alors h 1 = hauteur (A(u)), h = hauteur (A (u)), h 2 = hauteur (Ad (x)).

Larbre Ad (x) peut etre vide, voir gure 2.4.


h h -1 h -2 A (u ) 1 0 Avant insertion Aprs insertion A d (x ) A (u )
0

x: u: u:

x:

A d (x )

Figure 2.4: Larbre de racine x avant et apr` es insertion. Posons A (u) = (u, X, Y ) et Z = Ad (x). Les arbres A (u) et Z sont AVL. Deux cas se pr esentent alors : (1) Linsertion sest faite dans le sous-arbre gauche de u. On a alors hauteur (X ) = h 1 et hauteur (Y ) = h 2 (car A (y ) est AVL). Dans ce cas, on eectue une rotation droite de A (x), ce qui donne larbre A = (u, X, (x, Y, Z )), voir gure 2.5. Larbre A est un arbre AVL, et la hauteur de A est egale a ` la hauteur de A(x), cest-` a-dire de x dans larbre avant insertion. Il en r esulte quapr` es cette rotation, larbre tout entier est AVL, et que la phase de r e equilibrage est termin ee. Version 6 f evrier 2005

156
h h -1 h -2 Z X 1 0 Y u: x:

Chapitre 6. Arbres et ensembles ordonn es


u: x:

X Y Z

Figure 2.5: Cas (1) : une rotation simple r etablit l equilibre. (2) Linsertion sest faite dans le sous-arbre droit de u. On a alors hauteur (X ) = h 2 et hauteur (Y ) = h 1. Posons Y = (v, V, W ). Lun des deux arbres V ou W est de hauteur h 2, et lautre a pour hauteur h 3. On eectue alors une rotation gauche-droite de A (x), ce qui donne larbre A = (v, (u, X, V ), (x, W, Z )), voir gure 2.6. Comme dans le premier cas, larbre A est un arbre AVL de m eme hauteur que A(x). Le r e equilibrage sarr ete donc apr` es cette double rotation.
h h -1 h -2 X 1 0 V W u: v: Z X V W Z x: u: v: x:

Figure 2.6: Cas (2) : une rotation double r etablit l equilibre.

Proposition 2.2. Linsertion dans un arbre AVL a ` n sommets se r ealise en temps O (log n). Il sut dau plus une rotation ou double rotation pour r e equilibrer larbre apr` es insertion. Preuve. Il reste a ` constater que les comparaisons de hauteurs se font, pour chaque sommet du chemin de remont ee, en temps constant, ce qui est evident.

6.2.3

Suppression

Consid erons maintenant la suppression dune cl e c dans un arbre binaire de recherche AVL A. Si A na quun seul sommet, de contenu c, le r esultat est larbre vide. On suppose donc que A a au moins deux sommets. Version 6 f evrier 2005

6.2. Arbres AVL


r:

157

u:

x :
Z

s:

Figure 2.7: Le chemin de r e equilibrage. Dans une premi` ere phase, on utilise lalgorithme habituel de suppression dans un arbre binaire de recherche (voir chapitre 3) : on descend dans A a ` partir de la racine r a ` la recherche du sommet t contenant la cl e c ; si t est une feuille, on la supprime, sinon on remplace le contenu de t par le contenu de la feuille la plus a ` droite du sous-arbre gauche de t (respectivement de la feuille la plus a ` gauche du sous-arbre droit de t), et on supprime cette feuille. Dans tous les cas, on supprime donc une feuille dans A. Notons-la s, soit A larbre apr` es suppression, et soit le chemin de r a ` s.
h h -1 h -2 u: x: u: x:

A (u ) 2 1 0

A d (x )

A (u )

Avant suppression

Aprs suppression

Figure 2.8: Larbre de racine x avant et apr` es suppression. Dans une deuxi` eme phase, on remonte le chemin de s vers r et on teste si larbre A est encore AVL. Seuls les sous-arbres dont les racines sont sur le chemin peuvent changer de hauteur, et cette hauteur peut diminuer de 1. Si les racines de ces sous-arbres v erient la condition d equilibre, larbre A est AVL. Sinon, il existe un premier sommet x (en partant du p` ere de s) dont l equilibre vaut 2 ou 2. Supposons, pour xer les id ees, que le ls gauche u de x nest pas sur le chemin (voir gure 2.7), donc que la suppression sest faite dans le sous-arbre droit de x. Apr` es suppression, ce sous-arbre est transform e en un arbre AVL eventuellement Version 6 f evrier 2005

158

Chapitre 6. Arbres et ensembles ordonn es

vide que nous notons Z . L equilibre de x est 2. Posons h = hauteur (A(x)). Alors (voir gure 2.8) h 1 = hauteur (A(u)), h 2 = hauteur (Ad (x)), h 3 = hauteur (Z ).

Posons A(u) = (u, X, Y ). Deux cas se pr esentent alors :


h h -1 h -2 Z 2 1 0 X Y X Y Z u: x: u: x:

Figure 2.9: Une rotation simple sur le chemin de r e equilibrage. (1) La hauteur de X est h 2. Dans ce cas, la hauteur de Y est h 2 ou h 3. On eectue une rotation droite de A (x), ce qui donne larbre A = (u, X, (x, Y, Z )) qui est AVL, voir gure 2.9. Larbre A a hauteur h ou h 1, selon que Y a hauteur h 2 ou h 3. Dans le premier cas, A a donc la m eme hauteur que A(x), et le processus de r e equilibrage sarr ete ; dans le deuxi` eme cas, il faut continuer en remontant vers la racine.
h h -1 h -2 X 2 1 0 V W u: v: Z X V W Z x: u: v: x:

Figure 2.10: Une rotation double sur le chemin de r e equilibrage. (2) La hauteur de X est h 3. Alors la hauteur de Y est h 2, parce que A(u) est un arbre AVL. Posons Y = (v, V, W ). On eectue une rotation gauche-droite donnant larbre A = (v, (u, X, V ), (X, W, Z )), voir gure 2.10. Cet arbre est AVL, mais sa hauteur est h 1. En dautres termes, le processus de r e equilibrage doit continuer, en remontant vers la racine. Proposition 2.3. La suppression dans un arbre AVL a ` n sommets se r ealise en temps O (log n). Version 6 f evrier 2005

6.2. Arbres AVL


8 5 3 2 1 4 6 7 9 10 11 12

159

Figure 2.11: Arbre de Fibonacci avant la suppression de la cl e 12. Exemple. Consid erons larbre (de Fibonacci) de la gure 2.11. La suppression de la cl e 12 am` ene une premi` ere rotation autour du sommet de cl e 11, puis une deuxi` eme autour de la racine (gure 2.12).

5 3 2 1 4 6 7 9 8 10 11

Figure 2.12: Apr` es suppression et r e equilibrage.

6.2.4

Arbres balis es

Comme nous lavons d ej` a dit dans lintroduction, il existe deux variantes des arbres binaires de recherche : ceux o` u tous les sommets contiennent des cl es (et les informations associ ees), et ceux o` u seules les feuilles contiennent des cl es. Les nuds de ces arbres contiennent alors des balises (qui sont en g en eral aussi des el ements de lensemble des cl es) permettant de naviguer dans larbre. Les arbres AVL balis es nous seront utiles plus loin. Chaque feuille dun tel arbre contient donc une cl e, et les cl es sont croissantes de la gauche vers la droite. Nous avons d ej` a d ecrit comment on r ealise linsertion et la suppression dans un arbre balis e. Il nest pas dicile de se convaincre que le r e equilibrage par rotations se transpose sans grand changement aux arbres balis es, puisque seuls les nuds changent de ls. Lanalyse du r e equilibrage dans les arbres AVL se transpose egalement dans les arbres balis es. On peut donc, au choix, utiliser des arbres AVL ou des arbres AVL balis es. Version 6 f evrier 2005

160

Chapitre 6. Arbres et ensembles ordonn es

6.3

Arbres ab

Les arbres ab sont des arbres dont toutes les feuilles ont m eme profondeur, et le nombre de ls dun nud varie entre a et b. Nous montrons ici comment r ealiser les op erations de recherche, dinsertion, de suppression, de scission et de concat enation en temps logarithmique en fonction du nombre de sommets de larbre. Les r e equilibrages sont en fait assez rares, puisquen moyenne deux op erations de r e equibrage insertion et suppression susent dans le cas des arbres 24. Les arbres ab constituent ainsi une impl ementation ecace des listes concat enables.

6.3.1

D enition

Soient a et b deux entiers, avec a 2, et b 2a 1. Un arbre ab est un arbre A v eriant les conditions suivantes : (i) les feuilles ont toutes la m eme profondeur ; (ii) la racine a au moins 2 et au plus b ls ; (iii) les autres nuds ont au moins a et au plus b ls. On note d(x) le nombre de ls dun nud x, et Ai (x) le i-i` eme sous-arbre de x, pour i = 1, . . . , d(x). Soit S un ensemble de cl es. Un arbre A est un arbre ab pour S si les el ements de S sont rang es aux feuilles de A en ordre croissant de la gauche vers la droite, et si de plus, chaque nud x de A contient une suite de d(x) 1 cl es k1 < < kd(x)1 , appel ees les balises de x et v eriant les conditions : les cl es des feuilles de Ai (x) sont inf erieures ou egales a ` ki , pour i = 1, . . . , d(x) 1 ; les cl es des feuilles de Ai (x) sont strictement sup erieures a ` ki1 , pour i = 2, . . . , d(x). En dautres termes, si ci est une cl e dune feuille de Ai (x), on a c1 k1 < c2 k2 < kd(x)1 < cd(x) . Il est commode de noter ki (x) la i-i` eme balise du nud x. Lorsque b = 2a 1, un arbre ab est appel e un B -arbre dordre a 1. Larbre vide est un arbre ab, de m eme que larbre form e dun seul sommet qui est une feuille.
8 20 40

6 4 7 10

11 12 14 12 14 18 21

21 26 30 25 30 36

42 41 50

Figure 3.1: Un arbre 24.

Version 6 f evrier 2005

6.3. Arbres ab

161

Proposition 3.1. Soit A un arbre ab avec n feuilles (n > 0) de hauteur h. Alors 2ah1 n bh ou encore log n/ log b h 1 + log(n/2)/ log a. Preuve. Tout nud a au plus b ls, donc A a au plus bh feuilles. Tout nud autre que la racine a au moins a ls, et la racine au moins 2 ; au total, il y a au moins 2ah1 feuilles. Le deuxi` eme encadrement en d ecoule.

6.3.2

Recherche dun el ement

Soit A un arbre ab pour un ensemble S . La recherche dune cl e c dans A est dite positive si c S , elle est n egative sinon. Si A est vide, la recherche est n egative ; dans les autres cas, elle se fait comme suit :

Rechercher (c, A) ; x =racine(A) ; tantque x est un nud faire i := 1 ; tantque c > ki (x) etalors i < d(x) faire i := i + 1 ; poser x := le i-i` eme ls de x ntantque ; si c = cle(x) alors retourner(recherche positive) sinon retourner(recherche negative).

La recherche du sous-arbre Ai (x) susceptible de contenir la cl e c se fait en comparant c aux balises ki (x). Ceci se r ealise en temps constant, cest-` a-dire ind ependant de la taille de A. On a donc Proposition 3.2. Soit A un arbre ab pour un ensemble S a `n el ements (n > 0). La recherche dune cl e dans A se fait en temps O (log n).

6.3.3

Insertion dun el ement

Linsertion dune cl e c dans un arbre ab pose, comme nous allons le voir, le probl` eme du r e equilibrage. Il se peut en eet quapr` es insertion, un nud de larbre ait b + 1 ls. Dans ce cas, on eclate ce nud en deux nuds fr` eres qui se partagent ces b + 1 ls. Il se peut que leur p` ere, a ` son tour, ait trop de ls ; on

Version 6 f evrier 2005

162

Chapitre 6. Arbres et ensembles ordonn es

r ep` ete alors cette proc edure. Plus pr ecis ement, linsertion se fait en deux phases. On suppose que A a au moins 2 sommets, les autres cas etant faciles. Dans la premi` ere phase, on descend dans larbre a ` partir de la racine a ` la recherche dune feuille y susceptible de contenir la cl e c. Si la recherche est positive, la cl e c gure d ej` a dans A et il ny a pas lieu de lajouter ; sinon, soit x le p` ere de y . Soient c1 , . . . , cd les cl es des ls de x, avec d = d(x), et soient k1 , . . . , kd1 les balises du nud x. On a donc c1 k1 < c2 kd1 < cd . La recherche de c parmi les ls de x d etermine un indice i tel que ki1 < c ki (si i = 1, on a seulement c k1 , et si i = d, seulement kd1 < c).
k i -1 k i c i -1 ci k i -1 c ki

c i -1

ci

Figure 3.2: Insertion dune feuille, cas c < ci . On cr ee alors une feuille de cl e c, et on lins` ere comme i-i` eme ls de x si c < ci , et comme i + 1-i` eme ls de x si ci < c. On ins` ere egalement la cl e min(c, ci ) comme i-i` eme balise au nud x. Les gures 3.2 et 3.3 d ecrivent les deux transformations.
k i -1 k i c i -1 ci k i -1 c i ki

c i -1

ci

Figure 3.3: Insertion dune feuille, cas c > ci . Dans la deuxi` eme phase, on r e equilibre larbre si cest n ecessaire. Si le nud x a au plus b ls apr` es insertion, aucun r e equilibrage nest n ecessaire, et lalgorithme est termin e. Sinon, d(x) = b + 1, et on eclate le nud x. L eclatement de x est lop eration suivante : on cr ee deux nuds fr` eres x et x , et on partage les b + 1 ls de x en deux groupes, respectivement de (b + 1)/2 et (b + 1)/2 el ements, le premier fournissant les ls de x , le second les ls de x . Comme b 2a 1, on a (b + 1)/2 a, donc x et x v erient les contraintes dun arbre ab. Si x a un p` ere, soit z , les fr` eres x et x sont d eclar es ls de z a ` la place de x. Sinon, on cr ee un nouveau nud z (qui devient la nouvelle racine de larbre) dont x et x sont les seuls ls. Cest de cette mani` ere que larbre prend de la hauteur. Les b balises k1 (x), . . . , kb (x) du nud x sont r eparties comme suit : les balises dindice 1 a ` (b + 1)/2 1 deviennent les balises de x , les balises dindice (b + 1)/2 + 1 a ` b deviennent les balises de x ; quant a ` la balise dont lindice est Version 6 f evrier 2005

6.3. Arbres ab

163

(1 + b)/2 , elle devient la balise qui, dans le p` ere commun z de x et x , s epare x de x . L eclatement peut se repr esenter de mani` ere sch ematique par la r` egle suivante :

Figure 3.4: R` egle d eclatement. Revenons a ` linsertion. L eclatement dun nud x augmente le nombre de ls de son p` ere. Si n ecessaire, on r ep` ete l eclatement sur le p` ere, puis sur le p` ere de celui-ci, etc. A la n, larbre est a ` nouveau ab. Proposition 3.3. Soit A un arbre ab pour un ensemble S a `n el ements (n > 0). Linsertion dune cl e dans A se fait en temps O (log n). Preuve. La localisation de lendroit o` u ins erer la cl e prend un temps proportionnel a ` la hauteur h de A. Linsertion de la feuille est suivie dau plus h eclatements de nuds. Chaque eclatement prend un temps constant.
12

20 40

6 4 7 10

11 12 14

14 15 15 18 21

21 26 30 25 30 36

42 41 50

Figure 3.5: Larbre apr` es insertion de 15. Exemple. Linsertion de la cl e 15 dans larbre de la gure 3.1 provoque dabord l eclatement du deuxi` eme ls de la racine, puis de la racine elle-m eme. Larbre entier prend donc la forme donn ee dans la gure 3.5.

6.3.4

Suppression dun el ement

La suppression dune cl e dans un arbre ab est plus compliqu ee. Le r e equilibrage fait appel a ` lop eration inverse de l eclatement, la fusion. Il est utile dintroduire Version 6 f evrier 2005

164

Chapitre 6. Arbres et ensembles ordonn es

une op eration suppl ementaire, appel ee partage qui, m eme si elle nest pas indispensable, facilite la suppression. Soient x et x deux nuds fr` eres dun arbre ab, et soit z leur p` ere. On suppose de plus que x et x sont des ls cons ecutifs de z , disons x a ` gauche de x . Si le nombre total de ls de x et x est au plus b, on peut fusionner x et x en un seul nud x, ls de z , qui prend comme ls lensemble des ls de x et x . Sch ematiquement, la fusion, op eration inverse de l eclatement, peut se repr esenter par la r` egle suivante :

Figure 3.6: R` egle de fusion. Pour la deuxi` eme op eration, le partage, consid erons a ` nouveau deux fr` eres adjacents x et x , ls dun nud z , avec disons x a ` gauche de x . Si x a moins de b ls, et x a plus de a ls, le partage consiste a ` transf erer le sous-arbre le plus a ` gauche de x , soir A1 (x ), vers le nud x , qui le re coit donc comme sous-arbre le plus a ` droite : A1+d(x ) (x ) := A1 (x ). Ce transfert se sch ematise comme suit :

B
Figure 3.7: R` egle du partage.

Lalgorithme de suppression dune cl e c dans un arbre ab A est le suivant : on cherche la feuille contenant la cl e c. Soit x le p` ere de cette feuille ; on supprime la feuille et la cl e, dans x, de m eme indice (ou dindice d(x) 1 si la feuille est le ls le plus a ` droite de x). Consid erons dabord le cas o` u x est la racine de larbre. Si x a plus de deux ls, larbre est un arbre ab, sinon x a un ls unique ; on supprime alors x et son ls unique devient la racine de larbre (sa hauteur diminue donc de 1). Si x nest pas la racine, et si x a au moins a ls apr` es cette suppression, larbre r esultant est encore un arbre ab et lop eration est termin ee. Sinon, x a a 1 ls, et il faut r e equilibrer larbre. Soit z le p` ere de x. Version 6 f evrier 2005

6.3. Arbres ab

165

Si x a un fr` ere gauche ou un fr` ere droit y qui a exactement a ls, on fusionne x et y en un ls de z qui a 2a 1 b ls.

Si x a un fr` ere gauche ou droit y qui a plus de a ls, on fait un partage entre x et y : le nud x re coit un ls suppl ementaire, donc en a maintenant a, et y en perd un, mais en a encore au moins a, et z garde les m emes ls : larbre est ab.

Dans le cas dune fusion, le nud z perd un ls ; il se peut quil nait plus que a 1 ls. Il convient alors de continuer le r e equilibrage. En revanche, une op eration de partage met n au r e equilibrage. En r esum e, les cas suivants se pr esentent, en fonction du nombre de ls des fr` eres gauche et droit du nud x (en supposant bien s ur que x ait deux fr` eres adjacents) : (i) les deux fr` eres ont a ls : seule une fusion est possible ; (ii) lun des deux fr` eres a a ls, lautre en a plus de a : un partage et une fusion sont possibles ; (iii) les deux fr` eres ont plus de a ls : un partage est possible, et une fusion aussi, si le nombre total de ls ne d epasse pas b. Dans certaines situations, on peut donc choisir entre une fusion ou un partage. Comme un partage arr ete le r e equilibrage, on a int er et a ` privil egier les partages. Un partage sapparente a ` une fusion suivie dun eclatement (modi e). En eet, si un partage est possible, une fusion donne un nud qui a assez de ls pour etre eclat e, et on obtient le r esultat du partage en eclatant le sommet, mais avec une r epartition des ls qui nest pas aussi equilibr ee que celle d ecrite plus haut. On peut donc remplacer un partage par une fusion suivie dun eclatement, et cest en ce sens que le partage nest pas indispensable au r e equilibrage.
8 20

6 4 7

11 10 12 21

21 26 30 25 30 36

Figure 3.8: Un arbre 24. Exemple. Consid erons larbre de la gure 3.8. Apr` es suppression de 12, larbre nest plus equilibr e (gure 3.9). Le nud sans balise peut etre r e equilibr e par un partage avec son fr` ere droit. On obtient larbre de la gure 3.10. Il peut aussi etre r e equilibr e par fusion avec son fr` ere gauche. On obtient alors larbre de la gure 3.11. Proposition 3.4. Soit A un arbre ab pour un ensemble S a `n el ements (n > 0). La suppression dune cl e dans A se fait en temps O (log n). Version 6 f evrier 2005

166

Chapitre 6. Arbres et ensembles ordonn es


8 20

6 4 7 10 21

21 26 30 25 30 36

Figure 3.9: Apr` es suppression de 12 et avant r e equilibrage.


8 21

6 4 7

20 10 21 25

26 30 30 36

Figure 3.10: Apr` es partage avec le fr` ere droit.


20

6 8 4 7 10 21

21 26 30 25 30 36

Figure 3.11: Apr` es fusion avec le fr` ere gauche. Dautres op erations simples sur les ensembles de cl es peuvent etre consid er ees, comme par exemple : Min(S ) ; d etermine le plus petit el ement de S ; Supprimer-Min(S ) ; supprime le plus petit el ement de S . La premi` ere op eration se r ealise en descendant dans la branche gauche de larbre, et pour la deuxi` eme, il sut dappliquer ensuite lop eration de suppression. On traite de mani` ere analogue Max(S ) et Supprimer-Max(S ). Th eor` eme 3.5. Si un ensemble S est repr esent e par un arbre ab, les op erations Rechercher(c, S ), Ins erer(c, S ), Supprimer(c, S ), Min(S ), Max(S ), Supprimer-Min(S ) et Supprimer-Max(S ) se r ealisent toutes en temps O (log(1 + |S |)).

Version 6 f evrier 2005

6.3. Arbres ab

167

6.3.5

Concat enation et scission

On consid` ere maintenant deux op erations suppl ementaires tr` es utiles sur les ensembles ordonn es qui se r ealisent de fa con ecace a ` laide darbres ab. Ce sont : Concat ener(S1 , S2 , S ) ; est d eni lorsque max(S1 ) < min(S2 ), le r esultat est S = S1 S2 .

Scinder(S, c, S1 , S2 ) ; d enit une d ecomposition S = S1 S2 , avec S1 = {u S | u c} et S2 = {u S | u > c} = S S1 . Proposition 3.6. Soient S1 et S2 deux ensembles repr esent es par des arbres ab. Lop eration Concat ener(S1 , S2 , S ) peut se r ealiser en temps O (log(1 + max(|S1 |, |S2 |))). Pour un ensemble S repr esent e par un arbre ab, lop eration Scinder(S, c, S1 , S2 ) peut se r ealiser en temps O (log(1 + |S |)). Preuve. Soit Ai un arbre ab pour Si , et soit hi la hauteur de Ai , pour i = 1, 2. On suppose h1 h2 , lautre cas se traite de la m eme mani` ere.

Soit c une cl e telle que max(S1 ) c < min(S2 ). On peut calculer une telle cl e en temps O (h1 ), en calculant Max(S1 ) sur A1 . La concat enation se r ealise comme suit.

Partant de la racine de A1 , on descend sa branche la plus a ` droite jusquau nud x de profondeur h1 h2 . Ainsi, le sous-arbre A1 (x) de racine x a la m eme hauteur que A2 . On fusionne alors ce sommet x et la racine r2 de A2 en un nud unique disons z , en ajoutant la cl e c=Max(S1 ) comme cl e centrale dans la liste des balises du nud z . Si z a moins de b ls, cest termin e ; sinon, z a au plus 2b ls et un eclatement donne deux nuds ayant chacun au plus b ls. Une remont ee vers la racine permet de r e equilibrer larbre par des eclatements successifs. Moyennant la connaissance de c, lop eration de concat enation se fait donc en temps O (1 + |h1 h2 |). Pour d eterminer c, un temps O (log(1 + |S1 |)) est susant. Dans la suite, la cl e c sera disponible au moment de la concat enation. Venons-en a ` la scission. Soit A un arbre ab pour lensemble S , et soit c une cl e; on descend dans larbre a ` la recherche de la cl e c ; soit y la feuille d etect ee. En cas de recherche positive, la cl e de y est c ; en cas de recherche n egative, la cl e de y est la plus grande cl e dans S qui est inf erieure a ` c (ou la plus petite cl e de S sup erieure a ` c). En dautres termes, lensemble S1 est form e des cl es de toutes les feuilles a ` gauche de y , et S2 est form e des cl es des feuilles a ` droite de y . La cl e de y appartient a ` S1 ou S2 , selon les cas. On consid` ere maintenant le chemin menant de la racine a ` la feuille y . On supprime les ar etes de ce chemin et on eclate les sommets sur le chemin. Toutefois, l eclatement est modi e comme suit : si lar ete supprim ee dans un nud x est la k -i` eme, le nud x est eclat e en deux nuds x qui re coit les k 1 premiers ls et Version 6 f evrier 2005

168

Chapitre 6. Arbres et ensembles ordonn es

les k 1 premi` eres balises, et x qui re coit les autres ls et les balises de droite, y compris la k -i` eme. Chacun de ces nuds a donc une balise suppl ementaire qui servira ensuite, et chacun des arbres est ab, sauf peut- etre en sa racine. Enn, si k = 1, seul le nud x est cr e e, et de m eme si k = d(x), seul x est cr e e.

16

12 12 15 20

20 23 26

30

10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60


24 44 52 28 33 40 34 38 42 47

60

48 50 55

56 58

Figure 3.12: Un arbre 24 avant la scission par la cl e 36. On obtient alors deux for ets F1 et F2 , o` u F1 est la suite darbres a ` gauche du chemin, et F2 la suite darbres a ` droite du chemin.
60

24

16 12 12 15 20 20 23 26 30 34 28 33 34 36 40 36 38 38 40 42 42 44

44 52 48 47 50 55 56 58

10 12 14 16 18 20 22 24

26 28 30 32

46 48 50 52 54 56 58 60

Figure 3.13: Les deux for ets F1 et F2 apr` es la s eparation. Soient D1 , . . . , Dm les arbres constituant F1 , num erot es de la gauche vers la droite. Notons que m h, o` u h est la hauteur de A. Chaque arbre Di est un arbre ab sauf peut- etre pour la racine qui peut navoir quun ls. Par ailleurs, max(Di ) < min(Di+1 ), et lon conna t une cl e ci telle que max(Di ) ci < min(Di ). Cest la balise qui se trouve dans le champ le plus a ` droite de la racine de Di . Enn, on a hi > hi+1 , o` u hi est la hauteur de Di . On eectue alors la s equence Concat ener(Dm1 , Dm , Dm1 ); Concat ener(Dm2 , Dm1 , Dm2 ); . . . Concatener(D1 , D2 , D1 ). Concat ener des arbres qui sont des arbres ab sauf eventuellement pour la racine qui na quun seul ls donne un arbre de m eme nature. Si D1 a une racine nayant quun ls, on supprime la racine, et on obtient un arbre ab. Version 6 f evrier 2005

6.3. Arbres ab
16

169

12 12 15 20 23

20 24 28 26 30 33 34 26

28 30 33 34 34 34 36

10 12 14 16 18 20 22 24 26 28 30 32 34 36

26 28 30 32 34 36

Figure 3.14: Reconstitution de larbre a ` partir de la for et F 1 . Analysons le co ut de la reconstruction. Soit hi la hauteur de Di . Le co ut est O (|hm1 hm | + Or, on a hi+1 hi+1 1 + hi+1 hi . En eet, seule lin egalit e centrale doit etre prouv ee. Pour cela, observons que hm1 1 + max(hm1 , hm ) = 1 + hm1 , et, en raisonnant par r ecurrence descendante, hi+1 1 + max(hi+1 , hi+2 ) = 1 + hi+1 . Il en r esulte que |hm1 hm | +
m2 i=1 m2 i=1

|hi hi+1 | + m).

|hi hi+1 | + m hm1 hm +

m2 i=1

(hi hi+1 ) + m

hm1 hm + Ceci ach` eve la preuve.

m2 i=1

(hi hi+1 ) + m h1 hm1 + hm1 hm + m

2h = O (log |S |).

6.3.6

Co ut amorti des arbres 24

Nous analysons maintenant le co ut du r e equilibrage non pas sur une seule modication dun arbre ab, mais sur une s equence dinsertions et de suppressions. Dans ce cas, une analyse ne du co ut est possible, car les op erations de r e equilibrage se r epercutent sur plusieurs insertions ou suppressions cons ecutives. Le r esultat que nous etablissons montre que le co ut total des r e equilibrages est lin eaire en fonction du nombre dinsertions et de suppressions, si lon commence avec un arbre vide. Un corollaire de ce r esultat remarquable est quen moyenne, le co ut du r e equilibrage est constant dans un arbre 24. Proposition 3.7. On consid` ere une suite quelconque de i insertions et de d suppressions dans un arbre 24 initialement vide, et on pose n = i + d ; alors P d n et E + F n + (i d 1)/2, o` u P est le nombre de partages, E le nombre d eclatements, et F le nombre de fusions de sommets. Version 6 f evrier 2005

170

Chapitre 6. Arbres et ensembles ordonn es

En particulier, la proposition pr ec edente admet le corollaire suivant : Th eor` eme 3.8. On consid` ere une suite quelconque de n insertions ou suppressions dans un arbre 24 initialement vide. Alors le nombre total dop erations de r e equilibrage est au plus 3n/2. Ce r esultat montre en particulier quil y a en moyenne 3/2 op erations de r e equilibrage par insertion ou suppression. Ce nombre est ind ependant de la taille de la structure, et est remarquablement faible. Preuve du th eor` eme. En vertu de la proposition, on a E + F + P n + (i d 1)/2 + d = n + (i + d 1)/2 3n/2 parce que i + d = n. La preuve de la proposition repose sur une mesure d equilibre dun arbre 24 que nous allons introduire maintenant. Cette mesure indique, pour tout nud de larbre, sil est bien equilibr e, cest-` a-dire en fait sil a 3 ls. Cette mesure sera d enie et etudi ee pour des arbres qui ne sont pas des arbres 24, mais des arbres en cours de r e equilibrage. Un couple (A, s), o` u s est un sommet de larbre A, est un arbre 24 partiellement equilibr e si 1 d(s) 5, 2 d(x) 4 pour x = s. L equilibre dun sommet x dun arbre partiellement equilibr e est le nombre e(x) d eni par e(x) = min (d(x) 2, 4 d(x)). Il est imm ediat que 1 si d(x) = 1 ou d(x) = 5, e(x) = 0 si d(x) = 2 ou d(x) = 4, 1 si d(x) = 3. e(A) =
xnoeuds(A)

L equilibre de larbre A est la somme des equilibres de ses nuds : e(x).

Lid ee de la construction, et de la preuve de lestimation, est que toute op eration dinsertion ou de suppression de feuille dans larbre le d es equilibre, au sens de la mesure introduite, alors quune op eration de fusion, d eclatement ou de partage le r e equilibre. Proposition 3.9. Soit A un arbre 24 et soit A obtenu par linsertion ou la suppression dune feuille sans r e equilibrage ; alors e(A ) e(A) 1. Proposition 3.10. Soit A un arbre 24 a ` m feuilles ; alors 0 e(A) (m1)/2. Version 6 f evrier 2005

6.3. Arbres ab

171

Preuve. On note mi le nombre de nuds ayant i ls. Alors e(A) = m3 . Par ailleurs, le nombre dar etes de larbre A est 2m2 + 3m3 + 4m4 , et il est aussi egal a ` m + m2 + m3 + m4 1, puisque chaque sommet, a ` lexception de la racine, a un p` ere. Il r esulte de l egalit e de ces expressions que m2 + 2m3 + 3m4 = m 1 do` u le r esultat. Lemme 3.11 ( eclatement). Soit (A, s) un arbre 24 partiellement equilibr e, et supposons que le sommet s a 5 ls ; soit A larbre obtenu par eclatement du sommet s. Alors e(A ) 1 + e(A). Preuve. Notons dabord que A est partiellement equilibr e. Si s nest pas la racine de A, soit x le p` ere de s dans A. Dans larbre A , le sommet x a deux ls s et s a ` la place de s ; ces deux sommets se partagent les 5 ls de s (voir gure 3.15).

x s s0

x s0 0

Figure 3.15: Eclatement de x. Notons e l equilibre de sommets dans larbre A . Alors e (x) e(x) 1, et e (s ) = 0, e (s ) = 1 ou vice-versa, do` u e (x) + e (s ) + e (s ) = e (x) + 1 e(x) = 1 + e(x) + e(s) et comme l equilibre des autres sommets nest pas modi e, ceci montre que e(A ) 1 + e(A). Si s est la racine de A, alors A a une nouvelle racine, soit r , ayant deux ls s et s qui se partagent les 5 ls de s. On obtient e (r ) + e (s ) + e (s ) = 1 > 1 + e(s) donc ici encore e(A ) 1 + e(A). Lemme 3.12 (partage). Soit (A, s) un arbre 24 partiellement equilibr e dont le sommet s a un seul ls, et supposons que s poss` ede un fr` ere voisin t ayant au moins 3 ls. Soit A larbre obtenu par partage entre s et t. Alors e(A ) e(A). Preuve. Notons e l equilibre de sommets dans larbre A . Comme e (t) e(t) 1, e (s) = 0, e(s) = 1, on obtient e (t) + e (s) e(t) 1 = e(t) + e(s). Les autres sommets ne sont pas modi es ; il en r esulte que e(A ) 1 + e(A). Version 6 f evrier 2005

172

Chapitre 6. Arbres et ensembles ordonn es

x s t s

x t

Figure 3.16: Partage entre les fr` eres s et t. Lemme 3.13 (fusion). Soit (A, s) un arbre 24 partiellement equilibr e dont le sommet s a un seul ls. Soit A larbre obtenu en supprimant s, si s est la racine, et larbre obtenu par fusion de s et t, si s nest pas la racine, et si s poss` ede un fr` ere voisin t ayant 2 ls. Alors e(A ) 1 + e(A). Preuve. Consid erons dabord le cas o` u s est la racine. Si s est le sommet unique de A, alors larbre A est vide, et on a e(A ) = 0 = 1 + e(A). Sinon, soit t le ls de s ; alors A est larbre de racine t, et on a encore e(A ) = 1 + e(A). Si s nest pas la racine de A, soit x le p` ere de s et t ; dans A , les deux ls s et t de x sont remplac es par un unique ls s r eunissant les ls de s et t (gure 3.17).

x s t

x s0

Figure 3.17: Fusion des fr` eres s et t. Notons e l equilibre de sommets dans A . Comme e (x) e(x) 1 et e (s ) = 1, on obtient e (x) + e (s ) e(x) 1 + e(x) + e(s) + e(t). Les autres sommets n etant pas modi es, on a e(A ) 1 + e(A). Preuve de la proposition 3.7. Il y a au plus un partage par suppression et aucun par insertion ; les in egalit es sur P sont donc evidentes. Pour prouver lautre in egalit e, soit A larbre obtenu, a ` partir de larbre vide apr` es les n op erations dinsertion ou suppression. Larbre vide a pour equilibre 0. Par ailleurs, chacune des n insertions ou suppressions diminue l equilibre dau plus 1 (Prop 3.9), chaque eclatement ou fusion laugmente dau moins 1, et chaque partage laugmente ou le laisse invariant. Il en r esulte que e(A) F + E n. Or, dapr` es la proposition 3.10, on a e(A) (i d 1)/2, parce que A a i d feuilles. La proposition 3.7 r esulte de ces deux in egalit es.

Version 6 f evrier 2005

6.4. Arbres bicolores

173

6.4
6.4.1

Arbres bicolores
Pr esentation

Les arbres bicolores, dus a ` Guibas et Sedgewick, constituent une structure darbres binaires de recherche particuli` erememt ecace. Traditionnellement appel es arbres rouge-noir, nous les colorons en blanc et noir pour des raisons evidentes. Ces arbres sont ecaces pour plusieurs raisons. Cest une structure souple car elle permet de r ealiser ais ement de nombreuses op erations telles que recherche, insertion, suppression, mais aussi des op erations plus sophistiqu ees comme la scission ou la concat enation.
P L G B N S B V G L N S P

(a)

(b)

Figure 4.1: Un arbre bicolore : (a) avec ses feuilles, (b) sans feuilles. Un arbre bicolore est un couple (A, c) o` u A est un arbre binaire complet et c est une application qui associe a ` chaque sommet une couleur (blanc ou noir) de fa con que : (a) toutes les feuilles sont noires ; (b) la racine est noire ; (c) le p` ere dun sommet blanc est noir ; (d) les chemins issus dun m eme sommet et se terminant en une feuille ont le m eme nombre de sommets noirs. Un arbre bicolore pour un ensemble ordonn e E est un arbre bicolore qui est un arbre de recherche pour E , avec la restriction que seuls les nuds contiennent des el ements de E . Notons que la condition (b) nest pas toujours exig ee, mais il est plus pratique pour la suite de ne consid erer que des arbres bicolores ayant des racines noires. Exemple. Dans la gure 4.1, les feuilles sont repr esent ees par des carr es. On conviendra en g en eral de ne pas les repr esenter. Ainsi larbre de la gure 4.1(a) devient celui de la gure 4.1(b). Remarque. Notons que dans un arbre bicolore eeuill e , le grand-p` ere dun sommet est n ecessairement un sommet complet, ainsi larbre, dune certaine fa con, est presque complet. Version 6 f evrier 2005

174

Chapitre 6. Arbres et ensembles ordonn es

Nous allons donner imm ediatement une propri et e caract eristique des arbres bicolores, car selon les circonstances, la d enition donn ee ci-dessus ou la propri et e ci-dessous sera plus adapt ee. Une fonction rang sur un arbre binaire complet A est une application rg de lensemble S des sommets de A dans lensemble N des entiers naturels v eriant les conditions suivantes (p d esignant la fonction p` ere sur S ) : (i) pour toute feuille x, rg (x) = 0 et si x a un p` ere rg (p(x)) = 1 ; (ii) pour tout sommet x, rg (x) rg (p(x)) rg (x) + 1 ; (iii) pour tout sommet x, rg (x) < rg (p2 (x)). Proposition 4.1. Tout arbre bicolore poss` ede une fonction rang. Preuve. Soit (A, c) un arbre bicolore, et d enissons le rang dun sommet comme le nombre de sommets noirs situ es sur un chemin quelconque allant de ce sommet (exclu) a ` une feuille de A. Notons que cette d enition du rang est consistante en vertu de la condition (d) dans la d enition dun arbre bicolore . D emontrons que lapplication rg que nous venons de d enir satisfait les propri et es (i), (ii), (iii). Par d enition du rang dun sommet on a imm ediatement que (a)= (i). Il est clair aussi que rg (x) rg (p(x)) pour tout sommet x, et que par ailleurs si x est blanc alors rg (p(x)) = rg (x), et si x est noir alors rg (p(x)) = rg (x) + 1. Donc rg (p(x)) rg (x) + 1. Ainsi (ii) est v eri e.

Reste a ` prouver (iii). On a rg (x) rg (p(x)) rg (p2 (x)) pour tout x. Supposons que rg (x) = rg (p2 (x)). Alors x est blanc ainsi que p(x), ce qui contredit (c). Donc (c)=(iii). Proposition 4.2. Si A est un arbre binaire poss` ede une fonction rang, alors il existe une aectation de couleurs c aux sommets de A telle que (A, c) soit un arbre bicolore. Preuve. R ealisons laectation des couleurs aux sommets de A de la fa con suivante : tout sommet ayant m eme rang que son p` ere est d eclar e blanc, les autres etant d eclar es noirs (donc aussi la racine). Montrons que (A, c) est bicolore. Par d enition m eme de la fonction c, les conditions (a) et (b) sont imm ediates. V erions (c). Soit x un sommet blanc, x nest donc pas la racine, et son p` ere p(x) a m eme rang que lui. Si p(x) etait blanc, alors p(x) aurait un p` ere de m eme rang, ce qui contredirait (iii). Donc (iii) =(c).

Il reste a ` prouver (d). Pour ce faire, on prouve par induction sur la hauteur du sommet x la propri et e (d) : tous les chemins issus de x et menant a ` une feuille ont m eme nombre de sommets noirs (x non compris) et ce nombre est egal a ` rg (x). Si x est une feuille, (d) est vraie pour x. Soit x un nud qui nest pas une feuille, alors par hypoth` ese dinduction, (d) est vraie pour les ls y et z de x. Il y a trois cas a ` envisager : Version 6 f evrier 2005

6.4. Arbres bicolores

175

() rg (x) = rg (y ) = rg (z ) ( ) rg (x) = rg (y ) + 1 = rg (z ) + 1 ( ) rg (x) = rg (y ) + 1 = rg (z ). Sur la gure 4.2 on a repr esent e les trois cas, le sommet dont la couleur nest pas connue est repr esent e par deux demi-disques de couleurs di erentes.
r x r y r z () r+1 r y x r z ( ) r+1 x r y () z r+1

Figure 4.2: Aectation dune couleur a ` un nud en fonction du rang. Dans le cas (), y et z sont blancs, et puisque y et z v erient (d), x v erie (d). Dans le cas ( ), y et z sont noirs, donc pour les m emes raisons quen (), x v erie (d). Dans le cas ( ), y est noir et z est blanc. Mais puisque y et z v erient (d) et que rg (y ) + 1 = rg (z ), tous les chemins issus de x et allant a ` une feuille ont le m eme nombre de sommets noirs (x non compris) et ce nombre est egal a ` rg (x), donc x v erie (d).
P 2 L 2 1 G 1 B 0 0 0 0 0 0 0 N 1 1S 0 V 1

Figure 4.3: Attribution dun rang aux sommets de larbre de la premi` ere gure. Nous avons repr esent e sur la gure 4.3 les rangs des sommets de larbre bicolore de la gure 4.1. On laisse au lecteur le soin de v erier en exercice que la correspondance que lon vient d etablir entre les arbres bicolores et les arbres binaires ayant une fonction rang est une bijection, a ` savoir que (A, c) etant donn e, la seule fonction rg sur A qui v erie (i), (ii), (iii) est celle que nous avons d enie, et de m eme pour la r eciproque, la seule coloration possible est celle qui a et e donn ee.

6.4.2

Hauteur dun arbre bicolore

Lecacit e des op erations el ementaires, en particulier de la recherche, d epend essentiellement de la hauteur de larbre binaire de recherche. Cest pourquoi il est Version 6 f evrier 2005

176

Chapitre 6. Arbres et ensembles ordonn es

n ecessaire d evaluer de fa con pr ecise la hauteur dun arbre bicolore en fonction du nombre de ses sommets. Lemme 4.3. Soit A un arbre bicolore a ` n sommets, et soit x un sommet dans A de rang k et de hauteur h. Alors h 2k et n 2k ; de plus, si x est blanc, les deux in egalit es sont strictes. Preuve. Par induction sur la hauteur du nud x. Si x est une feuille, la propri et e est trivialement vraie car x est noir et k est nul. Supposons que la hauteur h de x soit strictement positive. Soient y et z les ls de x. Les trois cas possibles aux sym etries pr` es sont repr esent es sur la gure 4.4. On notera h(x) et n(x) respectivement la hauteur et le nombre de sommets du sous-arbre de A de racine x.
k x y k z k (a) y k-1 (b) k x z k-1 y k-1 (c) k x z k

Figure 4.4: Les trois cas possibles. Cas (a) Ici, x est noir et y et z sont blancs. Par hypoth` ese dinduction, on a : k k h(y ) < 2k , h(z ) < 2k , n(y ) > 2 et n(z ) > 2 . Donc h(x) 2k et n(x) = 1+ n(y )+ n(z ) 2k . Or x est noir et de rang k . Les in egalit es sont donc correctes. Cas (b) Les ls y et z sont noirs et x est blanc ou noir. Par induction, on a h(y ) 2(k 1), h(z ) 2(k 1), n(y ) 2k1 et n(y ) 2k1 . Donc h(x) 2(k 1) + 1 < 2k et n(x) 2k + 1 > 2k . Comme x est blanc ou noir, le lemme est v eri e dans ce cas. Reste le dernier cas :

Cas (c) Un des ls, disons y est noir et lautre blanc et le p` ere x est noir. On a alors h(y ) 2(k 1), h(z ) < 2k , n(y ) 2k1 et n(z ) > 2k . Donc h(x) 2k et n(x) > 2k1 + 2k + 1 > 2k . Comme x est noir, le lemme est v eri e. Proposition 4.4. Un arbre bicolore ayant n sommets (n > 0) et de hauteur h v erie : log n h 2 log n Preuve. La preuve d ecoule directement du lemme pr ec edent et du fait quun arbre binaire a ` n > 0 sommets est de hauteur au moins log n . Corollaire 4.5. La recherche dun el ement dans un arbre bicolore prend un temps O (log n) o` u n est le nombre de sommets de larbre. Version 6 f evrier 2005

6.4. Arbres bicolores

177

6.4.3

Insertion dans un arbre bicolore

Soit m un nouvel el ement a ` ins erer dans un arbre bicolore A. Comme dans un arbre binaire de recherche ordinaire, on descend dans larbre en partant de la racine. On cr ee un nouveau sommet blanc x contenant m dont les ls sont des feuilles noires. Soit A larbre obtenu ; cet arbre nest plus n ecessairement un arbre bicolore (gure 4.5).
P P

insrer A
L G B V S B G L S V

A'

Figure 4.5: Premi` ere phase de linsertion de A dans A. En fait, seules les propri et es (b) ou (c) de la d enition peuvent ne plus etre respect ees dans A , a ` savoir : la racine est blanche (parce que x est la racine) ou bien : un sommet et son p` ere sont blancs (parce que le p` ere de x est blanc). Proc edure de r e equilibrage Nous allons donner 3 r` egles (et leurs sym etriques) qui permettent de r e equilibrer larbre apr` es insertion. Si A etait vide avant linsertion (cas o` u (b) nest pas respect e), il sut de colorer x en noir, et cest termin e (r` egle ( ) de la gure 4.6).

x
racine

Figure 4.6: R e equilibrage apr` es une insertion : r` egle . Sinon, le p` ere y de x est blanc, donc y nest pas la racine et son p` ere z est noir. Supposons, pour xer les id ees, que y est ls gauche de z , et notons t le ls droit de z . Appliquons lalgorithme suivant, o` u x est le sommet courant qui au d epart est le sommet nouvellement cr e e (le sommet courant est indiqu e par une ` eche sur la gure) : si y a un fr` ere blanc on applique 1 ou 2 selon l eloignement de x et t, i.e. selon que x est un ls gauche ou droit (si y est un ls droit, il faut prendre la r` egle Version 6 f evrier 2005

178
z

Chapitre 6. Arbres et ensembles ordonn es


z
1

y x z

t x

z
2

y x

y x

Figure 4.7: R e equilibrage apr` es une insertion : r` egles . sym etrique qui revient a ` consid erer eectivement l eloignement des deux sommets x et t) ; le sommet courant devient z (1 ou 2 ne sont que des changements de couleur). Alors si larbre obtenu nest pas bicolore, cest qu` a nouveau lune des propri et es (b) ou (c) nest pas respect ee au sommet z , on it` ere donc le processus.
z
1

y t x z t A A x
2

y x

z y x t y

z t A B

Figure 4.8: R e equilibrage apr` es une insertion : r` egles . si y a un fr` ere noir t, on fait une rotation simple (1 ) dans le cas o` u x et t sont eloign es et une rotation double (2 ) dans le cas o` u ils sont proches ; dans les deux cas, larbre obtenu est bicolore et le processus de r e equilibrage est termin e. Puisque les r` egles diminuent de deux la profondeur du sommet courant et que les r` egles et sont des r` egles darr et, il est clair que lit eration se termine et fournit un arbre de recherche bicolore. Proposition 4.6. Une insertion dans un arbre bicolore a ` n sommets prend un temps O (log n) et n ecessite au plus deux rotations. Preuve. La descente avant insertion prend un temps O (log n). Puis dans la proc edure de r e equilibrage, a ` chaque op eration el ementaire, le sommet courant Version 6 f evrier 2005

6.4. Arbres bicolores

179

a une profondeur qui diminue strictement, sauf en cas de r` egle darr et, donc le nombre total dop erations el ementaires est O (log n), par ailleurs chaque op eration el ementaire prend un temps O (1), do` u la premi` ere assertion. Par ailleurs, les r` egles n ecessitant des rotations sont terminales, il sagit de (1 ) (une rotation) et (2 ) (une rotation double) donc le r esultat est d emontr e.
P L G B S A V B G

(1 )
L

P V S

A'
Figure 4.9: R e equilibrage apr` es insertion de A.

6.4.4

Suppression dun el ement dans un arbre bicolore

Consid erons maintenant le probl` eme de la suppression. On proc` ede en deux etapes. La premi` ere phase consiste a ` appliquer lalgorithme de suppression dun el ement dans un arbre de recherche binaire classique. En descendant dans larbre on trouve le sommet x dans lequel est rang e l el ement m que lon veut supprimer. si le ls droit de x est une feuille, alors on supprime x et on le remplace par son sous-arbre gauche de racine y ; notons que ce sous-arbre gauche, du fait quon a aaire a ` un arbre bicolore, est soit une feuille, soit un arbre de hauteur 1 dont la racine est blanche et dont les ls sont des feuilles ; si x etait blanc, larbre reste un arbre bicolore et on peut remarquer que dans ce cas y est une feuille (gure 4.10 (a)) ; si x etait noir, il y a deux cas a ` envisager selon la couleur du sommet y qui a remplac ex: si y est blanc, ses ls sont des feuilles, on colore y en noir (gure 4.10 (b)) et lalgorithme est termin e; si y est noir, y est une feuille et y devient d egrad e ce que lon note sur la gure par un signe , nous expliquerons dans un instant ce que cela signie pr ecis ement (gure 4.10 (c)) ; si le ls droit de x nest pas une feuille, alors on recherche le sommet y contenant le pr ed ecesseur l de m ; ce sommet y a pour ls droit une feuille ; on remplace m par l dans x et on supprime le sommet y par lalgorithme ci-dessus. Version 6 f evrier 2005

180
x y

Chapitre 6. Arbres et ensembles ordonn es


(a) y

x y

(b)

x y

(c)

Figure 4.10: Premi` ere phase de suppression dun el ement dans un arbre bicolore . Pr ecisons la signication dun sommet d egrad e : lorsquun sommet x est d egrad e, cela signie que le nombre de sommets noirs sur un chemin de x a ` une feuille quelconque, x compris, est inf erieur dune unit e au nombre de sommets noirs sur un chemin de y (fr` ere de x) a ` une feuille quelconque, y compris, et donc le p` ere de x, sil existe, ne respecte pas la condition (d) de la d enition des arbres bicolores. La deuxi` eme phase consiste a ` r e equilibrer larbre dans le cas o` u il contient un sommet d egrad e. Les sch emas des gures 4.11 et 4.12 donnent lalgorithme a ` appliquer. Le sommet courant x est le sommet d egrad e, il est indiqu e par une ` eche et on suppose que si x a un p` ere y alors x est un ls gauche, et on appelle z son fr` ere (on obtient toutes les r` egles par sym etrie, on notera par des lettres prim ees les r` egles sym etriques des r` egles indiqu ees). Plusieurs remarques sont a ` faire pour justier la validit e de lalgorithme. Tout dabord, si z existe, alors, par d enition dun sommet d egrad e, puisque x est d egrad e, z ne peut etre une feuille, donc z a deux ls. Ensuite, on peut noter que tous les cas sont examin es : soit x est la racine (r` egle (a1 )) ; soit x a un fr` ere noir z qui a lui m eme deux ls noirs (r` egles (a2 ) ou (a3 ) selon que le p` ere y est noir ou blanc) ; soit x a un fr` ere noir z dont lun des deux ls est blanc (r` egles (b2 ) ou (b3 ) selon quil sagit dun ls gauche ou droit ; notons que si les deux ls de z sont blancs on peut appliquer lune ou lautre r` egle) ; soit x a un fr` ere blanc (r` egle (b1 )). On peut noter que la profondeur du sommet courant diminue strictement a ` chaque application dune r` egle sauf pour la r` egle (b1 ), mais cette r` egle est suivie de Version 6 f evrier 2005

6.4. Arbres bicolores


racine (a 1)

181

(a 2)

(a 3)

Figure 4.11: R e equilibrage apr` es une suppression : r` egles (a 1 ), (a2 ), (a3 ). lapplication dune r` egle (a3 ), (b2 ) ou (b3 ) qui sont des r` egles darr et. Donc le nombre de r` egles appliqu ees est au plus O (log n) et chacune prend un temps O (1). Enn, il est facile de v erier que les r` egles appliqu ees sont correctes, i.e. que si le sommet courant est d egrad e avant application de (a2 ) ou (b1 ), alors le sommet courant apr` es application de la r` egle est bien un sommet d egrad e , et que, apr` es application de lune des autres r` egles, qui sont des r` egles darr et, larbre obtenu est un arbre bicolore. Proposition 4.7. Une suppression dans un arbre bicolore a ` n sommets (n > 0) prend un temps O (log n) et n ecessite au plus trois rotations. Preuve. La premi` ere assertion d ecoule imm ediatement des remarques ci-dessus, chaque phase prenant un temps O (log n). Quant aux rotations, elles apparaissent dans les r` egles (b1 ) (une rotation), (b2 ) (une rotation) et (b3 )) (une rotation double). Or la r` egle (b1 ) est suivie de lune des r` egles (a3 ), (b2 ), (b3 ), qui sont toutes les trois terminales, la preuve est donc termin ee. Exemple. Dans lexemple de la gure 4.13, on supprime le contenu p de la racine. La premi` ere phase consiste a ` mettre dans la racine la plus grande cl e du sous-arbre gauche, a ` savoir n, et a ` supprimer le sommet qui contient cette cl e, ce qui d egrade une feuille. On doit alors proc eder au r e equilibrage de larbre. On applique alors egle (b3 ). la r` egle (b1 ), puis la r`

Version 6 f evrier 2005

182
y

Chapitre 6. Arbres et ensembles ordonn es


(b1 )
z

y x

A
y

A (b2 )

A
y

A
t

(b 3)
y

Figure 4.12: R e equilibrage apr` es une suppression : r` egles (b 1 ), (b2 ), (b3 ).


P
phase 1

N
phase 2

N
phase 2

N V (a'3) (d) W G B L S V W

L B G N S

V W B

L S G

V W

(b'1 )

B L G S

Figure 4.13: Suppression de p.

6.5

Enrichissement

Dans les sections pr ec edentes, nous avons d ecrit trois familles darbres equilibr es qui impl ementent, de fa con ecace, les op erations dun dictionnaire (recherche, insertion et suppression). Nous avons egalement constat e que la scission et la concat enation pouvaient etre r ealis ees en temps logarithmique. Dans cette section, nous montrons comment impl ementer dautres op erations, comme la recherche du k -i` eme el ement, ou du m edian, en temps logarithmique. Pour cela, il convient daugmenter la structure (de lenrichir) par quelques donn ees additionnelles aux sommets. Le but de cette section est de montrer quun Version 6 f evrier 2005

6.5. Enrichissement

183

arbre equilibr e enrichi de cette mani` ere poss` ede a ` la fois la souplesse dun arbre et dune liste cha n ee. P` ere `re(x : sommet ; A : arbre) qui Soit A un arbre, et consid erons la fonction pe donne le p` ere de x dans A, et qui est ind eni si x est la racine de A. Le calcul de cette fonction nest pas facile si lon ne dispose pas dun champ suppl ementaire dans les sommets. Enrichissons donc la structure en associant, a ` chaque sommet, un pointeur suppl ementaire qui donne son p` ere (ce pointeur vaut nil pour la racine). La valeur de ce pointeur est facile a ` maintenir lors dune insertion ou dune suppression dun sommet. On se convainc ais ement que la mise a ` jour de ces pointeurs, lors dune rotation ou dune double rotation, se fait en temps constant. Voisins Soit A un arbre binaire de recherche pour un ensemble de cl es S . Le parcours en ordre sym etrique (voir chapitre 4) de larbre fournit ses cl es en ordre croissant. On peut donc d enir les fonctions suivant et pr ec edent sur les sommets de A, comme dans une liste : suivant(x : sommet ; A : arbre) : sommet ; Donne le sommet contenant la cl e qui suit la cl e de x ; ind eni si la cl e de x est la plus grande cl e dans A. pr ec edent(x : sommet ; A : arbre) : sommet ; Donne le sommet contenant la cl e qui pr ec` ede la cl e de x ; ind eni si la cl e de x est la plus petite cl e dans A. La r ealisation en temps constant de ces deux op erations sur un arbre balis e (quil soit binaire, ou ab) est particuli` erement facile. On munit pour cela chaque feuille de deux pointeurs suppl ementaires, lun pointant vers son voisin de gauche (dont la cl e est justement la cl e pr ec edente), lautre vers son voisin de droite. Cela revient a ` plaquer, sur la suite des feuilles, une structure de liste doublement cha n ee. La gestion de ces pointeurs, lors dune insertion ou dune suppression, se fait comme pour les listes, et le surco ut par op eration est donc constant. Dans le cas particulier des arbres ab (et plus g en eralement des arbres dont toutes les feuilles sont a ` la m eme profondeur), on peut continuer cette construction et cr eer une liste doublement cha n ee non seulement aux feuilles, mais a ` tous les niveaux de larbre. La structure qui en r esulte est un arbre a ` liaisons par niveau ( level-linked tree ). Ces arbres ont des propri et es remarquables ; en particulier, la recherche dune feuille qui se trouve a ` distance d dune feuille donn ee peut se faire en temps O (log d) (exercice). Lorsque larbre nest pas balis e, donc lorsque les informations se trouvent sur les sommets, la m eme structure de liste doublement cha n ee est utilis ee (voir gure Version 6 f evrier 2005

184

Chapitre 6. Arbres et ensembles ordonn es

Figure 5.1: Un arbre 23 a ` liaisons par niveau. 5.2). On se convainc facilement que les rotations et doubles rotations laissent cette liste inchang ee. En ce qui concerne la suppression dune cl e, on est amen e, rappelons-le, a ` supprimer une feuille. Cest cette feuille qui est aussi supprim ee dans la liste.
400 300 125 252 232 357 620 702 801

Figure 5.2: Une liste doublement cha n ee sur les sommets dun arbre. Proposition 5.1. Dans un arbre de recherche equilibr e, on peut, moyennant des pointeurs suppl ementaires, impl ementer les op erations suivant et pr ec edent en temps constant. Num ero dordre Le num ero dordre ou le rang dune cl e dans un ensemble S est le nombre de cl es qui lui sont inf erieures ou egales. Cest le num ero que re coit la cl e quand elles sont num erot ees, a ` partir de 1, en ordre croissant. Consid erons le probl` eme de la recherche de la cl e de num ero dordre k dans un ensemble repr esent e par un arbre binaire de recherche A. Bien entendu, il ne sagit pas de faire un parcours sym etrique de larbre. Dotons chaque sommet x dun champ suppl ementaire dont la valeur n(x) est le nombre de sommets dans le sous-arbre A(x) de racine x (la taille). En particulier, pour la racine r , le nombre n(r ) est le nombre de sommets de A. Notons (x) le num ero dordre de x dans la num erotation inxe. Posons ng (x) = Version 6 f evrier 2005 n(y ) si y est le ls gauche de x ; 0 si x na pas de ls gauche.

6.5. Enrichissement
6 9 4 5 1 3 3 2 2 1 5 1 7 1 8 2 9 3

185

Figure 5.3: Les num eros dordre (en blanc) et les tailles (en noir). et de m eme pour nd . On cherche le k -i` eme sommet comme suit : on compare k au nombre m = 1 + ng (r ), o` u r est la racine de larbre. Lentier m est le num ero dordre de la racine. Si k < m, le sommet cherch e est dans le sous-arbre gauche ; si k > m, il est dans le sous-arbre droit, et il est le sommet de num ero k m dans la num erotation de ce sous-arbre. Do` u la proc edure :

proc edure Sommet-dordre(k, A) ; m := 1 + ng (racine(A)) ; si m = k alors retourner racine(A) sinon si k < m alors retourner Sommet-dordre(k, Ag ) sinon retourner Sommet-dordre(m k, Ad ) nsi.

Il reste a ` etudier les r epercussions des op erations dinsertion, de suppression, et de r e equilibrage. Consid erons par exemple les arbres AVL. Une insertion ou suppression doit etre suivie dune remont ee vers la racine, pour ajuster les tailles n(x) sur chaque nud x du chemin entre la racine et la feuille ajout ee ou supprim ee. Quant aux rotations et doubles rotations, lajustement se r eduit a ` une ou deux additions ou soustractions. Dans le cas dun arbre ab, on proc` ede essentiellement de la m eme mani` ere : en plus des balises, on range dans chaque nud le nombre de feuilles dans le sousarbre rep er e par la balise. On proc` ede ensuite comme pour les arbres binaires. On a donc : Proposition 5.2. Dans un arbre de recherche on peut, moyennant un champ suppl ementaire, trouver la cl e de num ero dordre donn e en temps logarithmique en fonction du nombre de cl es pr esentes.

Version 6 f evrier 2005

186 M edian

Chapitre 6. Arbres et ensembles ordonn es

Etant donn e un ensemble de n cl es S , on cherche a ` le partager en deux parties S1 et S2 de m eme taille (` a 1 pr` es) telles que les cl es de S1 soient inf erieures aux cl es de S2 . Pour cela, il sut de conna tre la cl e m ediane, cest-` a-dire la cl e dont le num ero dordre est n/2 , puis dappliquer un algorithme de scission. Si, pour chaque sommet, on conna t le nombre de sommets de son sous-arbre, on peut calculer le num ero dordre de la cl e m ediane en temps constant. En temps logarithmique, on rep` ere ensuite le sommet m edian, puis a ` nouveau en temps logarithmique, on eectue la scission. On a donc Corollaire 5.3. Dans un arbre ab, on peut eectuer la recherche du m edian en temps logarithmique, donc aussi scinder un arbre en deux parts egales (` a 1 pr` es) en temps logarithmique.

6.6
6.6.1

Arbres persistants
Ensembles ordonn es persistants

Le probl` eme a ` r esoudre est le suivant : il sagit de g erer un ensemble totalement ordonn e E qui evolue dans le temps en ayant pour souci de ne pas perdre dinformation sur les etats pass es de cet ensemble ordonn e. En particulier, on veut etre en mesure de savoir si a ` un instant t pass e lensemble E poss edait un el ement donn e x. On peut prendre connaissance du pass e bien s ur, mais on ne peut pas modier ce pass e, par contre on peut modier l etat pr esent de lensemble cest-` a-dire sa version la plus r ecente. Nous formaliserons le probl` eme de la fa con suivante : le temps ou plut ot une chronologie est repr esent ee par une suite T = (t0 , , tm ) strictement croissante de nombres r eels appel es instants. A linstant t, on peut eectuer deux types dactions sur lensemble E qui consistent a ` ajouter ou supprimer un el ement dans E : ins erer(p, E ) : consiste a ` ins erer l el ement p dans lensemble ordonn e E (ne peut etre r ealis e que si p ny est pas d ej` a) ; supprimer(p, E ) : consiste a ` supprimer l el ement p de E (ne peut etre r ealis e que si p gure dans E ). Etant donn ee une chronologie T = (t0 , , tm ), et une suite dactions h = (a0 , . . . , am ), on appelle ensemble ordonn e persistant E , dhistoire h et de chronologie T la suite densembles (E0 , E1 , . . . , Em ) telle que E0 = et pour tout i < m, lensemble Ei+1 est obtenu en ex ecutant laction ai sur lensemble Ei (la suite dactions doit bien s ur etre ex ecutable). Lentier m est la longueur de lhistoire Version 6 f evrier 2005

6.6. Arbres persistants

187

h. Linstant pr esent est linstant tm . Pour all eger les notations, on note encore E au lieu de Em l etat de lensemble ordonn ea ` linstant tm . A cet instant pr esent, on peut poser des questions sur le pass e ou avancer dans la chronologie, cest a ` dire faire une nouvelle mise a ` jour de E . Les questions sur le pass e sont de la forme suivante : chercher(a, E, tj ) : retourne l el ement de cl e a contenu dans Ej a ` linstant tj , j m sil y gure, un message d echec sinon. En revanche, la mise a ` jour de E , cest-` a-dire linsertion ou la supprssion dun el ement, se fait en ajoutant : un nouvel instant tm+1 a ` la chronologie T ; une nouvelle action am+1 a ` lhistoire h. La structure de donn ees que nous allons pr esenter pour impl ementer ces op erations est due a ` N. Sarnak et R. Tarjan. Ses performances sont les suivantes : Si lhistoire est de longueur m, et si Ei contient a ` chaque instant au plus n el ements (notons que n ecessairement n m), alors la recherche se fait en temps O (log m), la mise a ` jour de E en temps et en espace O (log n). Nous donnerons ensuite une version am elior ee de lalgorithme qui garde la m eme complexit e en temps, et a une complexit e amortie lin eaire en fonction de m en espace, cest-` a-dire que la complexit e amortie en espace dune mise a ` jour est O (1). Nous nous pla cons dans le cadre naturel o` u lensemble Ei est repr esent e par un arbre Bi . Lid ee la plus simple qui vient a ` lesprit pour la mise a ` jour a ` linstant tm+1 est de recopier larbre binaire Bm avant de le transformer en arbre Bm+1 qui repr esente lensemble E a ` linstant tm+1 . On r ealise alors chercher(x, E, ti ) comme suit : gr ace a ` un tableau de pointeurs (gure 6.1) sur les racines des arbres Bi on peut (par une recherche dichotomique) trouver en temps O (log m) le pointeur sur larbre Bi , puis en temps O (log n) trouver si l el ement x gure dans Bi .
t1 t2 ................ tm

B1

B2

Bm

Figure 6.1: Persistance par recopie int egrale. Bien s ur, la mise a ` jour prend sous cette forme un temps O (n) pour la recopie de larbre, et un espace O (n), donc ne r epond pas aux exigences formul ees plus haut.

Version 6 f evrier 2005

188

Chapitre 6. Arbres et ensembles ordonn es

Notons ici que si la chronologie est repr esent ee par des entiers cons ecutifs (ce qui est fr equent) la recherche de larbre Bi peut se faire en temps O (1) si on utilise un tableau de pointeurs sur les arbres Bi (gure 6.1). Une autre id ee, oppos ee a ` la premi` ere, est de ne jamais recopier un sommet. A chaque mise a ` jour de la structure, un sommet concern e re coit linformation n ecessaire (changement de cl e, de ls) pour repr esenter la nouvelle version. Un sommet grossit alors, a ` chaque modication qui le concerne, dun nombre constant de cellules, les sommets n etant pas concern es par la modication restant inchang es. Linconv enient majeur de cette technique r eside dans le temps consid erable que prend la recherche. En eet, a ` chaque sommet, il convient de parcourir la liste des versions pour d eterminer les informations relevantes a ` la version consid er ee, et le temps de ce parcours nest pas ind ependant du nombre de versions existantes. Nous allons pr esenter ici deux m ethodes ecaces pour repr esenter la liste des versions ; la premi` ere est inspir ee de la m ethode de recopie, mais a ` chaque mise a ` jour, on ne recopie que les sommets sur le chemin de la racine du sommet concern e. La deuxi` eme est inspir ee de la m ethode du grossissement des sommets. Toutefois, on se limite a ` un grossissement born e, et en cas de d ebordement, on d edouble les sommets. Les deux m ethodes sont int eressantes et ecaces, la premi` ere plus simple, et la deuxi` eme plus economique en place.

6.6.2

Duplication de chemins

Pour gagner du temps et de lespace dans la mise a ` jour, on observe que larbre Bi+1 di` ere peu de larbre Bi ; on ne recopie que ce qui est n ecessaire, ainsi Bi+1 et Bi vont partager une structure commune. Cest la technique que nous allons exposer maintenant et que lon cite habituellement comme la m ethode de la duplication de chemins. Nous la d eveloppons avec des arbres bicolores mais elle peut seectuer sur les autres arbres binaires de recherche equilibr es. La strat egie consiste a ` dupliquer tout sommet dont le contenu a et e modi e ou dont un des ls a et e dupliqu e (ou modi e). Ainsi lensemble des sommets dupliqu es constitue eectivement un ensemble de chemins partant de la racine de la nouvelle version. Notons que les couleurs des sommets sont seulement utiles pour la mise a ` jour de larbre et donc ne concernent que la derni` ere mise a ` jour, ainsi il nest pas n ecessaire de dupliquer un sommet dont on change simplement la couleur. La r` egle de duplication est donc la suivante : R` egle de duplication. Dupliquer tout sommet dont le contenu (quon appelle encore la cl e) a et e modi e. Dupliquer le p` ere dun sommet dupliqu e. Le p` ere Version 6 f evrier 2005

6.6. Arbres persistants

189

dupliqu e a deux pointeurs gauche et droit, un sur le ls dupliqu e, lautre sur le ls qui na pas et e dupliqu e.

Figure 6.2: Duplication de chemin. La duplication du p` ere dun sommet dupliqu e se r epercute donc jusqu` a la racine. Le but de cette r` egle est de ne pas modier Bm , sauf eventuellement les couleurs des sommets, mais celles-ci sont d esormais inutiles ; en partant du pointeur associ e a ` linstant tm , on retrouve toujours le m eme arbre. Examinons en d etail comment on proc` ede a ` une insertion ou une suppression sur la version courante (cest-` adire la derni` ere version) de E . Mais auparavant, pour comprendre pourquoi le m ecanisme de r e equilibrage est plus complexe dans le cas dune suppression que dans celui dune insertion, il faut observer quels sont les pointeurs modi es dans une op eration de rotation.
x u y z u x y z

Figure 6.3: Modications de pointeurs dans une rotation gauche. La gure 6.3 montre a ` gauche en pointill es les pointeurs qui disparaissent, et a ` droite en gras les pointeurs nouvellement cr e es. Si lon se reporte alors aux r` egles de r e equilibrage dans les arbres bicolores, on observe que dans le cas dune insertion, les r` egles qui font intervenir des rotations (les r` egles ) ne modient que des pointeurs issus de sommets qui, dans la structure persistante, sont des sommets d ej` a dupliqu es, le r e equilibrage seectue donc simplement . Par contre, pour ce qui est dune suppression dans un arbre bicolore, les r` egles qui font intervenir des rotations (r` egles b1 , b2 , b3 ) modient des pointeurs de sommets non encore dupliqu es, ces sommets doivent donc etre dupliqu es, nous verrons cela en d etail un peu plus loin.

Version 6 f evrier 2005

190 Cas dune insertion

Chapitre 6. Arbres et ensembles ordonn es

Soit Bm la derni` ere version de E et p l el ement a ` ins erer a ` linstant tm+1 . Linsertion se fait en deux phases. Phase 1 La descente dans larbre Bm a ` partir de sa racine permet de cr eer une feuille x colori ee en rouge pour y placer p. Cette feuille appartient a ` Bm+1 mais pas a ` Bm bien s ur. Puis on duplique tous les sommets situ es sur le chemin allant de la racine a ` x non compris, chaque sommet dupliqu e ayant un pointeur sur son ls situ e dans Bm et un pointeur sur son ls nouvellement cr e e (gure 6.4).
tm t m t m+1

Figure 6.4: Premi` ere phase de linsertion. Expliquons lexemple de la gure 6.5. Nous nous autorisons ici a ` confondre les nuds et leur contenu (car cela ne porte pas a ` cons equence), et nous parlerons dancien et de nouveau pour un sommet et son dupliqu e. Linsertion de J modie le ls droit de I (qui etait vide). On duplique donc le ls droit de I en un sommet J, et lon duplique tout le chemin de Ja ` la racine. On a alors un nouveau chemin (O, G, K, I, J). Le nouvel O est racine de larbre Bm+1 que lon compl` ete en donnant comme ls manquant a ` chaque nouveau sommet du chemin dupliqu e, le ls correspondant de lancien sommet associ e : par exemple le nouveau K a pour ls droit le ls droit de lancien K, i.e. M. Phase 2 On a ainsi cr e e un nouvel arbre Bm+1 dont la racine est la dupliqu ee de la racine de Bm . Il ne reste plus qu` a r e equilibrer larbre Bm+1 en appliquant toujours la r` egle de duplication ci-dessus ; mais il se trouve que dans le cas dune insertion, le r e equilibrage ne n ecessite pas de nouvelle duplication car les pointeurs modi es dans les rotations sont issus de sommets d ej` a dupliqu es, donc les pointeurs issus des nuds de larbre Bm ne sont pas modi es. On aura par exemple dans le cas Version 6 f evrier 2005

6.6. Arbres persistants


t m t m+1

191

insertion de J (phase 1)

G G

K K

I I J

Figure 6.5: Insertion dun nouvel el ement phase 1. dune rotation gauche le sch ema suivant (les sommets dupliqu es sont indiqu es par des lettres prim ees) :
avant aprs y'

x
u

x' y z

z'

y z

Figure 6.6: R e equilibrage par rotation gauche lors dune insertion. La phase 2 consiste donc simplement en un r e equilibrage de larbre Bm+1 . Notons que dans cette phase, la couleur dun sommet commun a ` Bm et Bm+1 peut etre modi ee. Dans lexemple donn e (gure 6.7), la phase 2 consiste en un r e equilibrage de larbre Bm+1 par application de la r` egle 2 suivie de la r` egle 2 . La couleur de Ma et e modi ee, mais cela nest pas g enant car la couleur des nuds ne sert que dans la derni` ere version. Cas dune suppression Soient q l el ement a ` supprimer dans la derni` ere version Bm de E et x le sommet contenant q . Phase 1 Version 6 f evrier 2005

192
t m t m+1

Chapitre 6. Arbres et ensembles ordonn es


t m t m+1

insertion de J (phase 2) G G

G G

K K

K I

I I J

M J

Figure 6.7: Insertion dun nouvel el ement phase 2. On applique dans un premier temps lalgorithme classique de suppression dans un arbre binaire de recherche. Si x a un ls gauche, on d etermine le sommet y contenant le pr ed ecesseur de q , soit p. Ce sommet y na pas de ls droit autre quune feuille. On duplique tous les sommets allant de la racine a ` y non compris, le dupliqu e de x contenant p, et chaque sommet dupliqu e ayant un pointeur sur son ls qui est dans Bm et un pointeur sur son ls dupliqu e. Soit z le p` ere de y . Son dupliqu e a un pointeur droit (gure 6.8 (a)) sur le ls gauche t de y si z = x, et un pointeur gauche (gure 6.8 (b)) sur le ls gauche t de y sinon. Si y est rouge, la couleur de t est inchang ee, si y est noir alors si t est rouge il devient noir sinon il est d egrad e.

q x'

x y
q

p y q z

p x' q

z y q t

z y t

z'

(a)

(b)

Figure 6.8: Suppression dun el ement - phase 1.

Version 6 f evrier 2005

6.6. Arbres persistants Si x a un ls droit, la proc edure est sym etrique de la pr ec edente.

193

Si x na pas de ls (autre que des feuilles), on applique la proc edure pr ec edente o` u x joue le r ole de y . La gure 6.9 donne un exemple dex ecution de cette premi` ere phase.
tm tm+1

K G C A E I J M

suppression de O (phase 1)

K K O M I M S

O S P W A C

Figure 6.9: Suppression de O - phase 1. Phase 2 Il reste a ` r e equilibrer larbre Bm+1 obtenu dans la phase pr ec edente. Mais les proc edures de r e equilibrage des arbres bicolores utilis ees dans la suppression modient eventuellement des pointeurs sur des sommets de Bm quil faut donc dupliquer. Ainsi le r e equilibrage seectue selon les nouvelles r` egles d ecrites dans les gures 6.10 et 6.11. On a repr esent e les sommets de Bm par un cercle et ceux de Bm+1 qui sont des copies de sommets de Bm par un double cercle. Les nuds aect es dun signe sont les nuds d egrad es. La deuxi` eme phase de suppression appliqu ee a ` lexemple de la gure 6.9 donne le r esultat de la gure 6.12, apr` es application de la r` egle (d). Il est a ` noter que dans la structure d ecrite, chaque sommet a des pointeurs vers ses ls seulement et non vers ses p` eres. En eet, par nature m eme de larbre persistant, un sommet peut avoir plusieurs p` eres correspondant a ` des instants di erents de lhistoire de lensemble persistant, ce qui rend limpl ementation de pointeurs vers les p` eres dicile. Donc, pour pouvoir r ealiser les proc edures de r e equilibrage, il est n ecessaire davoir m emoris e le chemin dupliqu e lors de la descente. Th eor` eme 6.1. La structure darbre persistant repr esentant un ensemble E de taille au plus n et ayant une histoire de longueur m, utilisant la duplication de chemins permet deectuer chacune des op erations Inserer(p, E ) et Version 6 f evrier 2005

194
(a) y' x' z

Chapitre 6. Arbres et ensembles ordonn es


y' x' z

(b) x'

y' z x' y'

z'

(c) x'

y' z x'

y' z

Figure 6.10: R e equilibrage dans une suppression, r` egles (a), (b), (c).
(d) x' y' z t x' y' z t y' x' z t u x' z u y' t z' t' z'

(e)

Figure 6.11: R e equilibrage dans une suppression, r` egles (d), (e). Supprimer(p, E ) en temps et espace O (log n) et lop eration Chercher(p, E, ti ) en temps O (log m). Si la chronologie est la suite (0, 1, , m) alors Chercher (p, E, ti ) se calcule en temps O (log n). Preuve. Il est clair que linsertion ou la suppression dun el ement dans larbre persistant prend un temps proportionnel a ` celui pris par une insertion ou une suppression dans un arbre bicolore ordinaire. Quant au nombre de sommets dupliqu es, il est major e par la hauteur de larbre Bm augment e dans le cas dune suppression du nombre de rotations qui est au plus trois. Le r esultat est donc prouv e pour la premi` ere assertion. Pour ce qui est de la recherche, une premi` ere recherche Version 6 f evrier 2005

6.6. Arbres persistants


t m t m+ 1 t m t m+1

195

suppression de O (phase 2) K K O M G K K

S P W A

I I E

Figure 6.12: Suppression dun el ement-phase 2 (r` egle (d)). dichotomique permet dobtenir en temps O (log m) le pointeur sur larbre Bi dans lequel la recherche doit seectuer. Cette recherche prend alors un temps O (log n), mais n m. Si les instants sont les entiers de 1 a ` m, alors on a acc` es en temps O (1) a ` la racine de larbre Bi .

6.6.3

M ethode de duplication des sommets pleins

Nous allons voir maintenant comment rendre la structure performante en espace, cest-` a-dire lin eaire en fonction du nombre de mises a ` jour. Il sut de remarquer que dans une mise a ` jour dun arbre bicolore ordinaire, qui peut etre une insertion ou une suppression, le nombre de nuds pour lesquels le contenu est modi e (modications autres que celle de la couleur) et le nombre de pointeurs modi es est O (1). La solution consiste a ` munir chaque sommet dun nombre xe k de pointeurs suppl ementaires libres qui vont etre utilis es pour une nouvelle mise a ` jour et eviter des duplications. Ces pointeurs sont munis dun champ contenant linstant auquel ils sont activ es, cest a ` dire auquel ils cessent d etre libres, et dun champ pr ecisant sil sagit dun pointeur gauche ou droit (notons quon peut se passer de ce dernier champ car la nature gauche ou droite du pointeur peut se d eterminer en comparant les cl es des sommets reli es par ce pointeur, mais ce quon gagne en place dun c ot e est perdu en temps de lautre). Lorsque tous les pointeurs libres dun nud sont activ es (le sommet est alors plein ) et quun pointeur du nud doit etre modi e, ou lorsque le contenu du sommet lui-m eme est modi e, alors seulement le sommet est dupliqu e en un nouveau sommet qui dispose a ` nouveau de k pointeurs libres. Nous allons d etailler la structure ainsi obtenue pour k = 1 ; elle ne di` ere pas dans son principe du cas g en eral. Nous renvoyons le lecteur int eress e par le probl` eme Version 6 f evrier 2005

196 g en eral aux notes de n de chapitre.

Chapitre 6. Arbres et ensembles ordonn es

Chaque sommet est donc muni en tout de trois pointeurs, poss edant un champ qui indique sil sagit dun pointeur gauche ou droit, et dun champ indiquant la date dactivation du pointeur quon appellera simplement date du pointeur. A un instant donn e tout sommet a au moins deux pointeurs activ es, un gauche et un droit, le troisi` eme pouvant etre activ e ou libre. Ce troisi` eme pointeur est repr esent e sur les gures par une ` eche lorsquil est libre et d ebute par un triangle bicolore dont le c ot e noir indique sil sagit dun pointeur gauche ou droit, ceci pour une plus grande lisibilit e des gures Compte tenu de la nouvelle structure des sommets, nous d ecomposons les proc edures dinsertion et de suppression persistantes en op erations el ementaires que nous d ecrivons ci-dessous. Phase 1 Dans la phase 1, les op erations el ementaires r ealis ees sont (1) descente dans un sommet (lors dune insertion, dune recherche, ou dune suppression) ; (2) modication du contenu dun sommet (lors dune suppression ou dune insertion) ; (3) modication dun pointeur (lors dune duplication). (1) Descente dans un sommet Soit p l el ement a ` ins erer ou a ` supprimer dans la version la plus r ecente, ou que lon recherche dans la version Bk a ` linstant tk . Si x est le sommet courant (au d epart x est la racine de larbre correspondant a ` linstant voulu), lop eration g en erique est la suivante : sil sagit dune mise a ` jour, descendre dans la direction appropri ee par le pointeur le plus r ecent ; sil sagit dune recherche, descendre dans la direction appropri ee par le pointeur le plus r ecent parmi ceux qui dans cette direction ont une date dactivation inf erieure ou egale a ` tk . Exemple. Supposons que lon cherche a ` d eterminer si l el ement F gure dans la version B4 . Arriv ee au sommet contenant L qui est plein, la descente doit se poursuivre a ` gauche ; or il y a deux pointeurs gauches, lun activ ea ` linstant 3, lautre a ` linstant 7 ; la descente a ` gauche se fait donc vers C par le pointeur de date 3 (gure 6.13). (2) Modication du contenu dun sommet Cette op eration est r ealis ee lors dune suppression ou dune insertion a ` linstant tm+1 . Rappellons quon ne consid` ere pas comme modication du contenu la modication de la couleur dun sommet. Version 6 f evrier 2005

6.6. Arbres persistants


L 3 C D 7 5 N

197

Figure 6.13: Recherche de F a ` linstant 4. On duplique le sommet x en un sommet x ayant m eme couleur et ayant un nouveau contenu. Le pointeur gauche (respectivement droit) de x pointe sur le m eme sommet que le pointeur gauche (respectivement droit) de x le plus r ecent. Ces deux pointeurs ont pour date dactivation tm+1 . Le sommet x a un pointeur libre (gure 6.14). Si x nest pas une racine, alors y p` ere de x dans la derni` ere version doit subir lop eration modication de pointeur d ecrite ci-apr` es .
? L G 3 7 8 5 C D N 8

Figure 6.14: Le sommet contenant L a ete dupliqu e pour contenir G. (3) Modication dun pointeur Soit x un sommet dont un des ls y (le ls gauche par exemple) est dupliqu e au cours de la mise a ` jour a ` linstant tm+1 . Si x nest pas plein alors le pointeur libre de x est activ e, pointe a ` gauche sur le nouveau ls y et a pour date dactivation tm+1 (gure 6.15 (a)). Si x est plein, on duplique x en un sommet x dont le pointeur gauche pointe sur y et le pointeur droit sur le ls droit le plus r ecent de x, ces deux pointeurs ont pour date dactivation tm+1 . Si x nest pas une racine, alors le p` ere de x doit a ` nouveau subir lop eration de modication de pointeur (gure 6.15 (b)). Phase 2 La phase 2 proc` ede au r e equilibrage de la nouvelle version. Il sut ici de pr eciser comment seectue lop eration el ementaire de rotation. Dans une rotation, certains pointeurs changent de destination. Si leur date dactivation est pr ecis ement la date de mise a ` jour, on change leur destination, en gardant leur date dactivation. Par contre si leur date dactivation est ant erieure a ` la date de mise a ` jour, alors il faut faire un traitement sp ecial, i.e. appliquer la r` egle (3) de la phase 1. Prenons le cas dune rotation droite, les autres cas sen d eduisent. Lalgorithme Version 6 f evrier 2005

198

Chapitre 6. Arbres et ensembles ordonn es

L (a) 3 C 5 N C 3 D

L 7 5 N ?

L (b) 3 C 5 N 6 M C 3 D

5 6 7 N M

Figure 6.15: Le ls gauche de L est dupliqu ea ` linstant t 7 . a ` appliquer est donn e dans les gures 6.16 (le nud z nest pas plein) et 6.17 (le nud z est plein).
e
z

y et z non pleins d
t

n a
x

?
y

c e
z

c
y

n b

a
x

d
t

e
z

?
y plein, z non plein d
t x

n
y'

c a
x y

n e c z y d a bn
t

Figure 6.16: Cas o` u z nest pas plein. Ne sont indiqu es a ` gauche que les pointeurs les plus r ecents dans une direction donn ee. Les nouveaux pointeurs sont en traits epais. Soit n la date de mise a ` jour, et d la date dactivation du pointeur sur le nud z avant r e equilibrage. Lexemple est trait e dans le cas o` u toutes les dates dactivation sont strictement inf erieures a ` n. Le point dinterrogation signie quil faut appliquer au p` ere de lancien z dans larbre gauche le traitement modication de pointeur , qui donnera un r esultat di erent selon que ce p` ere est plein ou non. Ainsi, si le nud z (resp. y ) est plein, z (resp. y ) est dupliqu e en z (resp. y ). Si certaines dates autres que d sont egales a ` n, lalgorithme est plus simple car les pointeurs de date n ont simplement a ` changer de destination sil y a lieu. Si d = n, il sut de supprimer dans tous les Version 6 f evrier 2005

6.6. Arbres persistants


e e c a
x y z

199

z plein, y non plein d


t

? n

c
y

a n b n z' n
x t

e c a
x y z

e z et y pleins d
t

n y z' n a b n
x

y' z c dn n t

Figure 6.17: Cas o` u z est plein. arbres obtenus a ` droite le pointeur sur z de date d.
1 2

O 1 G 1 C 1 A 1 E 1 I 1 K 1 M 1 P 1 S 1 W 1 A C 1 E 1 I 1 insertion de J (phase 1) G 1

O 1 S 1 K 1 M 2 J P 1 W

Figure 6.18: Insertion dun nouvel el ement-phase 1. Les gures 6.18, 6.19, 6.20traitent lexemple des gures 6.5, 6.7, 6.9, 6.12 par la m ethode de duplication des nuds pleins, puis nous donnons les r esultats de la suite dop erations insertion de J, suppression de O par la m ethode de duplication de chemin (a), et par la m ethode de duplication des nuds pleins (b) pour larbre initial de la gure 6.5, en appelant les instants successifs 1, 2, 3 (gure 6.21). Il nous reste a ` calculer la complexit e en temps et en espace dune mise a ` jour dans cette nouvelle structure de donn ees. Il est clair que la complexit e en temps dune insertion, suppression ou recherche est equivalente a ` celle de la structure plus simple pr ec edemment etudi ee, et reste Version 6 f evrier 2005

200
1 2

Chapitre 6. Arbres et ensembles ordonn es


1 2

O 1 G 1 C 1 A 1 E 1 I 2 J 1 K 1 M 1 P 1

insertion de J (phase 2) 1 S 1 W 1 A 1 C 1 E G 2 1 I

K O 2 1 S 1 2 K 1 M 2 J 1 P 1 W 2

Figure 6.19: Insertion dun nouvel el ement-phase 2.


1 2 1 2 3

K O 1 2 G 1 K 1 E 2 1 I 2 J 1 2 M P 2

suppression de O (phase 1) O 1 1 S 1 1 W 1 A C 1 E 1 2 1 I 2 J G 1 K 1 2

2 K 3 2 M 3 1 S 1 P M 1

1 C 1 A

Figure 6.20: Suppression dun el ement-phase 1. O (log m). Complexit e amortie en espace dune mise a ` jour Nous allons d enir un potentiel pour chaque etat de la structure de donn ees qui va nous permettre de calculer la complexit e amortie en espace dune mise a ` jour. Soit tm linstant de la derni` ere mise a ` jour de lensemble persistant E . On appelle sommet actif tout sommet accessible a ` partir de la racine de larbre Bm par un Version 6 f evrier 2005

6.6. Arbres persistants


1 2 3 1 2 3

201

K O K K 1 2 G G O S 1 C K I M S 1 A E I M J P W A C 1 E 2 1 I 2 J G 1 K 1 M 2 1 O

2 3 S 1 M 3 P 3 1 W

(a)

(b)

Figure 6.21: Comparaison des deux m ethodes. pointeur valide, i.e. de date dactivation la plus r ecente dans la direction correspondante (ce sont les sommets de larbre Bm ). Les sommets non actifs sont dits passifs. Au cours du temps, un sommet passif reste passif, un sommet actif peut devenir passif. Le potentiel Pm de E a ` linstant tm (instant de la derni` ere mise a ` jour) est le nombre m de sommets actifs diminu e du nombre m de pointeurs libres dans les sommets actifs : Pm = m m pour m > 0 Initialement, le potentiel P0 de la structure vide est nul. Comme chaque sommet a au plus un pointeur libre, on a clairement : m m et donc Pm 0. On d enit le co ut amorti en espace m de la mise a ` jour a ` linstant tm comme etant le nombre ( eventuellement n egatif) cm de sommets cr e es par laction am , augment e de la di erence de potentiel de E entre linstant tm et tm1 : m = cm + (Pm Pm1 ) Ainsi le nombre de sommets cr e es au cours de lhistoire (at0 , , atm ) de E est :
m m m m m

ci =
i=1 i=1

i=1

(Pi Pi1 ) =

i=1

i P m

i
i=1

Donc le co ut total en espace est major e par la somme des co uts amortis de chaque mise a ` jour. Calculons la complexit e amortie dune mise a ` jour, en evaluant la complexit e amortie de chaque op eration el ementaire. Dans le tableau ci-dessous sont evalu ees Version 6 f evrier 2005

202

Chapitre 6. Arbres et ensembles ordonn es

successivement les quantit es cm , (m ), (m ), m (o` u repr esente la variation de la quantit e exprim ee), pour chaque op eration el ementaire : la cr eation dun nud qui seectue au cours dune insertion : cm augmente dune unit e, ainsi que m et m car le nud cr e e a un pointeur libre ; la suppression dun nud qui seectue au cours dune suppression : cm diminue dune unit e ainsi que m , quant a ` m le r esultat varie selon que le nud supprim e etait plein ou non ; la duplication dun nud (ne prend en compte que la duplication simple sans la cr eation de pointeur vers le nud dupliqu e quelle implique) : cm augmente dune unit e, m ne varie pas car le nud qui a et e dupliqu e est devenu passif, m augmente dune unit e car le nouveau nud a un pointeur libre ; lactivation dun pointeur qui rend un nud plein : cm et m ne changent pas, par contre m diminue dune unit e; la rotation simple : l` a encore, cm et m ne changent pas, et la variation du nombre de pointeurs libres d epend des cas de gure selon que les nuds concern es par la rotation sont pleins ou non.

op eration el ementaire cr eation dun nud suppression dun nud duplication dun nud activation dun pointeur rotation simple

(cm ) +1 -1 +1 0 0

(m ) +1 -1 0 0 0

(m ) +1 0 ou -1 +1 -1 de -1 a ` +3

m +1 -2 ou -1 0 +1 de -1 a ` +3

Une insertion a pour op erations el ementaires de co ut amorti non nul : une cr eation de sommet, une activation de pointeur (si le sommet cr e e nest pas la racine) et au plus deux rotations. Son co ut amorti est donc O (1). Une suppression a pour op erations el ementaires de co ut amorti non nul : une suppression de sommet, deux activations de pointeurs (une pour la modication de contenu du sommet contenant l el ement a ` supprimer, lautre faisant suite a ` la suppression dun sommet), et au plus trois rotations au cours du r e equilibrage. Le co ut amorti dune suppression est donc aussi O (1). Th eor` eme 6.2. La structure darbre persistant repr esentant un ensemble E de taille au plus n et ayant une histoire de longueur m, utilisant la m ethode de duplication des nuds pleins permet deectuer chacune des op erations Inserer (p, E ) et Supprimer(p, E ) en temps O (log n) et lop eration Chercher (p, E, ti ) en temps O (log m). Le co ut amorti en espace dune mise a ` jour est O (1). Si les instants sont repr esent es par les entiers 1, 2, , m, alors Chercher (p, E, ti ) se calcule en temps O (log n). Version 6 f evrier 2005

Notes

203

Notes
La litt erature sur les arbres de recherche est tr` es vaste. De nombreux compl ements gurent notamment dans : K. Mehlhorn, Data Structures and Algorithms Vol. 1, Springer-Verlag, 1984. G. H. Gonnet, R. Baeza-Yates, Handbook of Algorithms and Data Structures, Addison-Wesley, deuxi` eme edition, 1991 contient des programmes en Pascal et en C . Une synth` ese sur les structures de donn ees avec une abondante bibliographie, est K. Mehlhorn, A. Tsakalidis, Data structures, in : J. van Leeuwen, ed., Handbook of Theoretical Computer Science, Vol. A, North-Holland, 1990, 301341. Les structures de donn ees persistantes sont trait ees, avec de nombreuses variantes, dans larticle original de leurs inventeurs : J. Driscoll, N. Sarnak, D. Sleator, R. Tarjan, Making data structures persistent, J. Comput. Syst. Sci. 38 (1989), 86124. Les les binomiales sont dues a ` J. Vuillemin ; un expos e d etaill e est donn e dans : T.H. Cormen, C.E. Leiserson, R.L. Rivest, Introduction to Algorithms, MIT Press, McGraw-Hill, 1990. Les arbres evas es ont et e introduits et etudi es par Sleator et Tarjan. On peut consulter a ` ce propos le livre de Mehlhorn.

Exercices
6.1. D ecrire les op erations de dictionnaire sur les arbres binaires de recherche balis es, et r ealiser les programmes correspondants. 6.2. D ecrire la proc edure qui permet de passer dun arbre binaire balis ea ` un arbre binaire de recherche. 6.3. D evelopper les op erations de dictionnaire sur les arbres AVL balis es. 6.4. D ecrire les op erations de passage entre arbres de recherche et arbres de recherche balis es dans le cas darborescences ordonn ees. Appliquer ces op erations pour traduire les algorithmes des arbres ab en leur version non balis ee. 6.5. Soit A un arbre 23 de hauteur h, dont tous les nuds ont 3 ls. Soit c une cl e strictement plus grande que les cl es gurant dans A. a) Montrer que linsertion de c dans A, suivie de la suppression de c, redonne larbre A. b) En d eduire quune suite de n insertions/suppressions de c dans A exige O (nh) op erations de r e equilibrage, et en conclure que le co ut amorti du r e equilibrage dans un arbre 23 nest pas constant. Version 6 f evrier 2005

204

Chapitre 6. Arbres et ensembles ordonn es

6.6. Un arbre a ` pointeur ( nger tree ) est un arbre balis e muni dun pointeur vers une feuille. Montrer que dans un arbre a ` pointeur a ` liaisons par niveau, la recherche dune cl e qui est a ` distance d de la feuille point ee peut se faire en temps O (log d). 6.7. On consid` ere un arbre binaire de recherche A qui, pour chaque sommet, dispose dun pointeur vers son p` ere, ainsi que du nombre de sommets dans son sous-arbre. Montrer comment on peut calculer son num ero dordre a ` partir de ces informations. 6.8. On peut impl ementer les arbres 24 au moyen darbres bicolores balis es comme suit : a ` chaque nud dun arbre 24 on associe un nud noir sil a 2 ls, un nud noir dont un ls est blanc sil a trois ls, et un nud noir dont les deux ls sont blancs sil a 4 ls (gure 6.22).

Figure 6.22: Transformation dun arbre 24 en arbre bicolore. a) D ecrire comment les op erations d eclatement, de fusion et de partage se transportent sur les arbres bicolores. b) D ecrire la r ealisation de lalgorithme de scission sur les arbres bicolores. 6.9. Un arbre 12 fraternel ( 12 brother tree ) est un arbre dont tous les nuds ont 1 ou 2 ls, et tel quun nud a ` 1 ls poss` ede un fr` ere qui a deux ls. De plus, toutes les feuilles sont a ` la m eme profondeur. a) Montrer que si lon supprime les nuds a ` 1 ls dans un arbre fraternel, on obtient un arbre AVL, et montrer que cette correspondance est une bijection des arbres 12 fraternels sur les arbres AVL. b) Un arbre fraternel de recherche est un arbre fraternel dont les sommets, sauf ceux ayant un ls unique, sont munis dune cl e, les cl es etant croissantes en ordre sym etrique. D ecrire et impl ementer les op erations de dictionnaire en temps logarithmique sur les arbres fraternels. 6.10. Un arbre evas e ( splay tree ) est un arbre binaire de recherche A muni dune op eration d enie comme suit : Evaser(x, A) ; donne un arbre A qui repr esente le m eme ensemble de cl es que A ; si x est une cl e qui gure dans A, alors x est la cl e de la racine de A ; sinon, la racine de A est soit x soit x+ , o` u x est la plus grande cl e dans A + inf erieure a ` x, et x est la plus petite cl e sup erieure a ` x. Cette op eration est r ealis ee en localisant, par une descente classique dans A, le sommet contenant x (ou x ou x+ si x ne gure pas dans A). Ce sommet est Version 6 f evrier 2005

Exercices

205

ensuite remont e vers la racine en appliquant des doubles rotations gauchegauche, gauche-droite, droite-gauche, droite-droite (et eventuellement une simple rotation a ` la n).
s t A B C D t u A D B C s D u

u t s C A u t s A B C D A B D

dd gg

gd
t

s u B C

dg

Figure 6.23: Les quatre double-rotations. a) Montrer comment r ealiser les op erations Ins erer(x, A) et Supprimer(x, A) en temps constant lorsquelles sont pr ec ed ees de Evaser(x, A). b) Montrer que Concat ener(S1 , S2 , S3 ) ainsi que Scinder(S, x, S1 , S2 ) se r ealisent egalement en temps constant par des arbres evas es si elles sont pr ec ed ees dun appel appropri e dEvaser.
i h g f e A B C D E F d c G b a C D A B c E F G H I f d b e H I J g h i J a

Figure 6.24: Eet de lop eration Evaser(a, A). On suppose que chaque cl e x est munie dun poids positif p(x). c) Pour tout sommet s, on appelle rang de s le nombre r (s) = log n(s), o` u n(s) est la somme des poids des cl es dans le sous-arbre de racine s, et on d enit le potentiel de A comme la somme des rangs des sommets de A. Montrer que le co ut amorti de lop eration Evaser(x, A), relativement au potentiel, est major e par Version 6 f evrier 2005

206

Chapitre 6. Arbres et ensembles ordonn es

1 + 3(r (A) r (s)), o` u r (A) est le rang de la racine de A, et o` u s est le sommet localis e par la descente dans A. d) On consid` ere une suite de m op erations Evaser dans un arbre a ` n sommets ; montrer que le co ut total de ces op erations est major e par O ((m + n) log(m + n)). e) Pour chaque cl e x, soit q (x) le nombre de fois o` u l evasion porte sur x. Montrer qualors le temps total est major e par
n

O m+
i=1

q (x) log

m q (x)

6.11. (Tri adaptatif.) On consid` ere une suite x1 , . . . , xn de nombres distincts a ` trier en ordre croissant ; on suppose la suite presque tri ee , cest-` a-dire que le nombre dinversions F = Card{(i, j ) | i < j et xi > xj } est petit . Plus pr ecis ement, on demande de prouver que lalgorithme ci-dessous trie la suite en temps O (n + n log((1 + F )/n)). Lalgorithme ins` ere successivement xn , xn1 , . . . , x1 dans un arbre 24 initialement vide. Pour linsertion de xi , on remonte la branche gauche de larbre contenant d ej` a xi+1 , . . . , xn jusqu` a rencontrer un nud si dont la balise gauche est sup erieure a ` xi , puis on ins` ere xi dans le sous-arbre gauche de si . a) Montrer que la hauteur de si est O (log(1 + fi )), o` u fi = Card{j > i | xi > xj }. b) En d eduire que le co ut total de lalgorithme est major e par O ( n i=1 log(1 + fi ) + E ), o` u E est le nombre total d eclatements de nuds, et conclure.

6.12. (Arbres binomiaux.) On d enit une suite (Bn )n0 darborescences ordonn ees par r ecurrence sur n comme suit : B0 est larbre (arborescence) a ` un seul (g ) (d) sommet ; Bn+1 est form e de la r eunion de deux copies disjointes Bn et Bn de (d) (d) larbre Bn ; sa racine est la racine de Bn , et il y a un arc de la racine de Bn (g ) vers la racine de Bn . Cet arc est le plus petit (le plus a ` gauche) des arcs issus de la racine. Larbre Bn est larbre binomial dordre n.
B0 = B1 = B2 =

B3 =

B4 =

Figure 6.25: Arbres binomiaux. a) D emontrer que dans Bn , il y a exactement


n k

sommets de profondeur k .

b) D emontrer quun seul sommet de Bn a n ls, et que 2nk1 sommets ont k ls pour 0 k < n. Version 6 f evrier 2005

Exercices

207

On num erote les sommets de Bn de 0 a ` 2n 1 de la gauche vers la droite en ordre postxe (ls avant le p` ere). c) Montrer quun sommet est de profondeur n k si et seulement si son num ero a k 1 en ecriture binaire. d) Montrer que le nombre de ls dun sommet est egal au nombre de 1 qui suivent le dernier 0 dans l ecriture binaire de son num ero. Etant donn e un entier n, soit n=
i0

bi 2 i ,

bi {0, 1}

e) Montrer que Fn a n (n) ar etes.

sa d ecomposition en base 2, soit In = {i | bi = 1}, et soit (n) = Card(In ). La for et binomiale dordre n est lensemble Fn = {Bi | i In }. La composante dindice i de Fn est Bi , si i In , et sinon.

Une le binomiale est une for et binomiale dont chaque sommet x est muni dune cl e c(x), el ement dun ensemble totalement ordonn e, v eriant : si y est ls de x, alors c(y ) > c(x). f) Montrer que la recherche du sommet de cl e minimale dans une le binomiale Fn peut se faire en (n) 1 comparaisons. 6.13. (Suite.) Soient Fn et Fn deux les binomiales ayant des ensembles de cl es disjointes. On d enit lop eration Union(Fn , Fn ) qui retourne une le binomiale ayant pour cl es lunion des ensembles de cl es comme suit : (1) Si n = n = 2p , alors Fn = {Bp }, Fn = {Bp }, et Union(Bp , Bp ) est larbre (g ) (d) Bp+1 pour lequel Bp = Bp et Bp = Bp si la cl e de la racine de Bp est plus (d) (g ) grande que la cl e de la racine de Bp ; et Bp = Bp et Bp = Bp dans le cas contraire. (2) Dans le cas g en eral, on proc` ede en commen cant avec les composantes dindice minimal des deux les, et en construisant une suite darbres report. Larbre report R0 est vide, et a ` l etape k > 0, larbre report Rk est soit vide, soit un arbre binomial dordre k . Etant donn es larbre report Rk , la composante Ck de Fn et la enit la composante Ck dordre k de Union(Fn , Fn ) composante Ck de Fn , on d et larbre report Rk+1 comme suit : (1) Si Rk = Ck = Ck = , alors Ck = Rk+1 = ; (2) Si lun exactement des trois op erandes est non vide, il devient Ck , et Rk+1 = ; (3) Si deux op erandes sont non vides, alors Ck = et Rk+1 est lUnion des deux op erandes ; Version 6 f evrier 2005

208

Chapitre 6. Arbres et ensembles ordonn es

E L N T X J U Y

A B C D

F12

R Z

F5

Figure 6.26: Deux les binomiales, (4) Si les trois op erandes sont non vides, lun devient Ck , et Rk+1 est lUnion des deux autres. Par exemple, lunion des deux les binomiales de la gure 6.26 donne la le de la gure 6.27.
K A E L N T X J U Y R Z O S B C D

F17

Figure 6.27: . . . et leur union. a) En supposant que lUnion de deux arbres binomiaux de m eme ordre prend un temps constant, donner une majoration logarithmique en n et n du temps de Union(Fn , Fn ). b) Proposer une structure de donn ees qui permet de faire lunion de deux arbres binomiaux en temps constant. c) Montrer que le nombre de comparaisons de cl es pour construire Union(Fn , Fn ) est (n)+ (n ) (n + n ). (On pourra prouver que ce nombre est egal au nombre de reports dans laddition usuelle en base 2 de n et de n .) d) Montrer comment linsertion, dans une le binomiale, dune cl e qui ny gure pas d ej` a peut se ramener a ` une union. e) En d eduire un algorithme de construction dune le binomiale pour un ensemble de n cl es, et montrer que cela demande au total n (n) comparaisons.

f) Montrer que la suppression de la plus petite cl e dans une le binomiale Fn peut se faire en O (log n) op erations, y compris les op erations n ecessaires pour reconstruire une le binomiale Fn1 pour les cl es restantes. g) En d eduire un algorithme de tri dune suite de n cl es en temps O (n log n). Version 6 f evrier 2005

Exercices

209

6.14. Appelons arbre relativement equilibr e un arbre binaire de recherche tel que le facteur d equilibre en tout sommet soit compris entre 2 et +2. Soit Nh le nombre de sommets minimal dun arbre relativement equilibr e de hauteur h. a) Montrer que la suite (Nh )hN satisfait une equation de r ecurrence lin eaire que lon r esoudra. b) En d eduire que la hauteur dun arbre relativement equilibr ea ` n sommets est (log n). c) Elaborer des algorithmes dinsertion, suppression et recherche qui se r ealisent en temps O (log n), o` u n est le nombre de sommets de larbre. 6.15. Construire une variante des arbres bicolores en rempla cant la condition tout sommet blanc a un p` ere noir par tout sommet blanc dont le p` ere est blanc a un grand-p` ere noir . 6.16. On consid` ere la version des arbres persistants avec recopie des nuds pleins. On modie la nature des nuds de la fa con suivante : chaque nud poss` ede non pas un seul pointeur suppl ementaire mais k pointeurs suppl ementaires. Donner les algorithmes dinsertion, suppression et recherche adapt es, et analyser leur complexit e. 6.17. Montrer que la m ethode de duplication de chemins des arbres persistants donn ee dans ce chapitre sadapte aux arbres AVL et donner les algorithmes dinsertion, suppression, recherche correspondants.

Version 6 f evrier 2005

210

Chapitre 6. Arbres et ensembles ordonn es

Version 6 f evrier 2005

211

Chapitre 7

Graphes valu es
Ce chapitre traite deux probl` emes fondamentaux de loptimisation combinatoire. La premi` ere section est consacr ee a ` la recherche dun arbre couvrant de co ut minimum dans un graphe valu e non orient e. Nous pr esentons un algorithme tr` es g en eral fond e sur une r` egle des cycles et une r` egle des cocycles puis nous d eveloppons deux impl ementations particuli` eres conduisant aux algorithmes de Kruskal et de Prim. La seconde section d ecrit la recherche des chemins de co ut minimum issus dun sommet dans un graphe orient e valu e. Nous exposons lit eration fondamentale de Ford, lalgorithme de Dijkstra pour des co uts positifs et sa variante A, lalgorithme de Bellman pour un graphe sans circuit et enn lalgorithme Paps lorsque aucune hypoth` ese particuli` ere nest faite sur le graphe valu e.

Introduction
La notion darbre de co ut minimum intervient chaque fois que lon doit relier au moindre co ut des objets entre eux de telle sorte que tous les objets soient connect es directement ou non. La notion de chemin de co ut minimum intervient chaque fois que lon doit trouver un cheminement orient e dun point a ` un autre au moindre co ut. Ces deux probl` emes sont bien r esolus par des algorithmes polynomiaux ecaces qui utilisent des propri et es structurelles fortes des solutions optimales. Ces propri et es concernent les cycles et les cocycles pour le probl` eme de larbre couvrant de co ut minimum, les arborescences partielles pour le probl` eme des chemins de co ut minimum.

Version 6 f evrier 2005

212

Chapitre 7. Graphes valu es

7.1
7.1.1

Arbre couvrant de co ut minimum


D enition du probl` eme

Soit G = (S, A) un graphe non orient e connexe et c : A R une valuation de ses ar etes. Si H = (S, F ) est un arbre couvrant de G, son co ut not e c(H ) est d eni par f F c(f ). Le probl` eme est de d eterminer dans lensemble non vide (car G est connexe) des arbres couvrants de G un arbre couvrant de co ut minimum. La gure 1.1 repr esente un enonc e du probl` eme qui nous servira a ` illustrer les propri et es et les algorithmes qui vont suivre. Pour simplier l ecriture, nous identierons dans ce chapitre un graphe partiel (S, U ) de G avec lensemble U de ses ar etes, on parlera alors du graphe partiel U .
b 2 2 a 1 h 3 c 2 1 1 1 g 1 i 2 2 2 d 1 1 1 e 2 f

Figure 1.1: Un graphe valu e.

7.1.2

Propri et es des arbres optimaux

On appelle approximant dun arbre optimal un couple (X, Y ) form e par deux sous-ensembles dar etes X et Y tels quil existe un arbre couvrant de co ut minimum H contenant X et disjoint de Y . Lensemble X contient les ar etes admises , lensemble Y contient les ar etes ecart ees et lensemble Z = A (X Y ) contient les ar etes libres . Etant donn e un approximant (X, Y ), nous allons montrer que : a) lexistence dans G dun cycle candidat ne contenant aucune ar ete de Y permet d ecarter une ar ete suppl ementaire appartenant au cycle, cest-` a-dire de d eterminer un meilleur approximant (X, Y ) o` u Y contient une ar ete de plus que Y . b) lexistence dans G dun cocycle candidat ne contenant aucune ar ete de X permet dadmettre une ar ete suppl ementaire appartenant au cocycle, cest-` a-dire de d eterminer un meilleur approximant (X , Y ) o` u X contient une ar ete de plus que X . Une fois ces propri et es etablies, la construction dun arbre couvrant de co ut minimum sera r ealis ee en maintenant un approximant et en lam eliorant a ` chaque it eration. La gure 1.2 illustre les notions de cycle et de cocycle candidats pour un Version 6 f evrier 2005

7.1. Arbre couvrant de co ut minimum

213

approximant (X, Y ) o` u les ar etes de X sont epaisses et les ar etes de Y en pointill e. Le cocycle ({e}) est candidat, donc X = X {{e, d}}. Le cycle (h, b, c, h) est candidat, donc Y = Y {{b, c}}.
b 2 a 1 2 h 3 2 1 1 1 g 1 2 2 c 2 d 1 i 1 2 f 1 e

Figure 1.2: Cycle et cocycle candidats.

Lemme 1.1. Soient (X, Y ) un approximant, un cocycle de G ne contenant aucune ar ete de X et e une ar ete libre de co ut minimal dans ; le couple (X {e}, Y ) est un approximant. Preuve. Soit H un arbre couvrant minimal contenant X et disjoint de Y . Soit T tel que = (T ). Si ne contient aucune ar ete de X , il contient au moins une ar ete libre de Z car dans le cas contraire, larbre H ne serait pas connexe puisque ne contenant aucune ar ete incidente a ` T . Si H contient lar ete e, alors larbre H lui-m eme r epond aux conditions. Sinon lar ete e ferme une cha ne el ementaire de H qui contient n ecessairement une ar ete e de distincte de e. Le graphe K obtenu a ` partir de H en substituant e a ` e est un arbre couvrant de G de co ut inf erieur ou egal a ` c(H ) et donc egal a ` c(H ) puisque H est optimal. De plus K contient les ar etes de X {e} et est disjoint de Y . Lemme 1.2. Soient (X, Y ) un approximant, un cycle el ementaire de G ne contenant pas dar ete de Y et f une ar ete libre de co ut maximal dans ; le couple (X, Y {f }) est un approximant. Preuve. Soit H un arbre couvrant minimal contenant X et disjoint de Y . Le cycle ne contenant aucune ar ete de Y contient au moins une ar ete libre de Z car dans le cas contraire, larbre H contiendrait un cycle. Soit f lar ete libre de co ut maximal de ce cycle. Si H ne passe pas par f , larbre H lui-m eme r epond a ` la question. Sinon le graphe H {f } contient deux composantes connexes dont les graphes induits sont des arbres. La cha ne el ementaire obtenue a ` partir de apr` es suppression de f contient une ar ete f non contenue dans H et incidente a ` chacune des deux composantes connexes. Le graphe K obtenu a ` partir de H par substitution de f a ` f est un arbre couvrant de G de co ut inf erieur ou egal a ` c(H ) et donc de co ut egal c(H ) puisque H est un arbre optimal. De plus K contient X et est disjoint de Y {f }. Version 6 f evrier 2005

214

Chapitre 7. Graphes valu es

7.1.3

Algorithme g en eral

Les deux lemmes pr ec edents nous permettent d enoncer deux r` egles, la r` egle des cycles et la r` egle des cocycles , et de construire un algorithme glouton qui d etermine un arbre couvrant de co ut minimum en admettant ou en rejetant un ar ete suppl ementaire a ` chaque it eration. Comme dans le paragraphe pr ec edent, (X, Y ) est un approximant dun arbre optimal H . R` egle des Cycles : Soit un cocycle candidat ; choisir dans une ar ete libre e de co ut minimal ; Z := Z {e} ; X := X {e} . R` egle des Cocycles : Soit un cycle candidat ; choisir dans une ar ete libre e de co ut maximal ; Z := Z {e} ; Y := Y {e}. Lalgorithme Arbremin(G, c) induit par ces deux r` egles est alors le suivant : proc edure Arbremin(G, c) ; (X, Y ) := (, ) ; Z := A ; tantque G poss` ede un cocycle ou un cycle candidat appliquer la r` egle correspondante ntantque. La terminaison de lalgorithme est assur ee puisqu` a chaque it eration lensemble X Y contient un el ement de plus. Nous montrons qu` a lissue de la derni` ere it eration le graphe partiel X est un arbre couvrant de co ut minimum. Th eor` eme 1.3. Lalgorithme Arbremin(G, c) d etermine un arbre couvrant de co ut minimum du graphe G pour la valuation c. Preuve. (Induction sur le num ero dit eration) Notons Xk et Yk les sous-ensembles X et Y a ` lissue de lit eration k . En utilisant les deux lemmes pr ec edents, il est ais e de montrer par induction sur k que (Xk , Yk ) est un approximant. Notons maintenant K le num ero de la derni` ere it eration. Si K = m, le graphe partiel XK est un arbre couvrant de co ut minimum car aucune ar ete nest libre. Si K < m, il subsiste dans ZK une ar ete libre e. Lar ete e ne peut fermer une cha ne dune composante connexe du graphe partiel XK car la r` egle des cycles aurait pu etre appliqu ee une fois de plus ; lar ete e ne peut non plus lier deux composantes connexes du graphe partiel XK car la r` egle des cocycles aurait pu etre appliqu ee une fois de plus. Do` u la contradiction.

7.1.4

Algorithmes sp eciques

Nous avons choisi de pr esenter, parmi les nombreux algorithmes de recherche dun arbre couvrant de co ut minimum, lalgorithme de Kruskal et lalgorithme de Prim. Version 6 f evrier 2005

7.1. Arbre couvrant de co ut minimum

215

Ces deux algorithmes rel` event de lalgorithme g en eral pr esent e au paragraphe pr ec edent mais utilisent chacun une strat egie sp ecique pour lordre dapplication de la r` egle des cocycles ou de la r` egle des cycles. Nous constaterons egalement que moyennant lutilisation de structures de donn ees ad equates, leur complexit e dans le plus mauvais cas est assez faible. Comme dans le paragraphe pr ec edent, le couple (X, Y ) est un approximant. Pour chacun des deux algorithmes, une it eration consiste a ` introduire une ar ete suppl ementaire dans X ou dans Y . Nous noterons a ` cet eet Xk , Yk et Zk les `me valeurs de X , Y et Z a ` lissue de la k ie it eration. Par convention nous aurons : X0 = Y0 = et Z0 = A. Algorithme de Kruskal Le principe g en eral de lalgorithme de Kruskal est d etablir une liste des ar etes ordonn ee par co ut croissant au sens large et dintroduire successivement chaque ar ete de la liste dans lensemble X ou dans lensemble Y en appliquant soit la r` egle des cocycles soit la r` egle des cycles.

proc edure Kruskal(G, c) ; d eterminer une liste (e1 , . . . , em ) des ar etes ordonn ee par co ut croissant ; (X, Y ) := (, ) ; pour i de 1 a ` m faire si ei lie deux composantes connexes du graphe partiel X alors X := X {ei } sinon Y := Y {ei } nsi npour.

Nous prouvons maintenant que la proc edure Kruskal(G, c) d etermine eectivement un arbre couvrant de co ut minimum de G. Th eor` eme 1.4. Soit G = (S, A) un graphe connexe et c : E R une valuation de ses ar etes, la proc edure Kruskal(G, c) d etermine un arbre couvrant de co ut minimum de G pour la valuation c. Preuve. Nous montrons par induction sur le num ero dit eration k que chaque it eration consiste a ` appliquer soit la r` egle des cocycles soit la r` egle des cycles si lune des deux est appliquable. A lissue de la premi` ere it eration, e1 = {a, b} lie deux composantes connexes du graphe partiel vide dar etes et est une ar ete libre de co ut minimal du cocycle ({a}). La premi` ere it eration applique donc la r` egle des cocycles . Supposons que (Xk1 , Yk1 ) soit un approximant. Si ek lie deux composantes connexes C et C du graphe partiel Xk1 , lar ete ek est libre et de Version 6 f evrier 2005

216

Chapitre 7. Graphes valu es

co ut minimal dans le cocycle candidat (C ) puisque Xk1 Yk1 = {e1 , . . . , ek1 }, lit eration k applique donc la r` egle des cocycles . Sinon, lar ete ek lie deux sommets dune m eme composante connexe C du graphe partiel Xk1 et le graphe induit par C est un arbre. Lar ete ek ferme donc une cha ne du graphe partiel Xk1 et est la seule ar ete libre (donc de co ut maximal) du cycle ainsi cr e e ; lit eration k applique alors la r` egle des cycles . Puisque Xm Ym = A et Zm = , le graphe partiel Xm est un arbre couvrant de co ut minimum de G pour la valuation c. La gure 1.3 montre larbre couvrant (ar etes epaisses) de co ut minimum calcul e par lalgorithme de Kruskal.
b 2 2 a 1 h 3 c 2 1 1 1 g 1 i 2 d 1 1 2 2 1 e 2 f

Figure 1.3: Arbre couvrant de co ut minimum.

Impl ementation de lalgorithme de Kruskal Lalgorithme de Kruskal manipule essentiellement les composantes connexes du graphe partiel X a ` travers les op erations de recherche de la composante connexe a ` laquelle appartient un sommet (chaque extr emit e de lar ete ei ) et dunion de deux composantes connexes (si lar ete ei lie ces deux composantes). Il sagit donc de g erer ces deux op erations sur une collection densembles disjoints. Une structure de donn ees adapt ee consiste a ` repr esenter chaque ensemble par une antiarborescence dont les sommets repr esentent les el ements de lensemble et dont la racine est le repr esentant de lensemble. Si lon note V cette collection, lop erateur Creer(v, V ) ajoute le nouvel ensemble {v } a ` V ; lop erateur Trouver(v, V ) d etermine le repr esentant de lensemble de V auquel appartient v ; enn si u et v sont les repr esentants de deux ensembles distincts, lop erateur Unir(u, v, V ) remplace lensemble repr esent e par u par lunion des ensembles repr esent es par u et par v , et d etruit lensemble repr esent e par v . La derni` ere section du chapitre 3 traite de limpl ementation ecace de ces op erateurs et montre en particulier que la complexit e amortie dune suite de m op erations comportant n op erations Cr eer est O (m(m, n)) o` u (m, n) est une fonction r eciproque de la fonction dAckermann. En utilisant cette structure de donn ees, une impl ementation de lalgorithme de Kruskal est la suivante : Version 6 f evrier 2005

7.1. Arbre couvrant de co ut minimum

217

proc edure Kruskal(G, c) ; d eterminer une liste (e1 , . . . , em ) des ar etes ordonn ee par co ut croissant ; {On note ai et bi les extr emit es de ei } V := ; X := ; pour tout s de S faire Cr eer(s, V ) npour ; pour i de 1 a ` m faire u :=Trouver(ai , V ) ; v :=Trouver(bi , V ) ; si (u = v ) alors Unir(u, v, V ) ; X := X {ei } nsi npour.

er et La complexit e du tri initial est O (m log n). Suivent alors m op erations Cre au plus 2m Trouver et m Unir. Il r esulte des propri et es de la fonction (m, n) que la complexit e globale est celle du tri des ar etes, soit O (m log n). Lalgorithme de Prim Le principe de lalgorithme de Prim est dappliquer n 1 fois la r` egle des cocycles a ` une suite de n 1 cocycles candidats associ es a ` des sous-ensembles embo t es de sommets. Le graphe partiel X ainsi obtenu, qui est sans cycles par construction et poss` ede n 1 ar etes, est un arbre couvrant de co ut minimum. proc edure Prim (G, c) ; T := {a} ; X := ; Z := A ; {a est un sommet quelconque de S } pour i de 1 a ` n 1 faire choisir une ar ete {x, y } de co ut minimal dans (T ) ; {on suppose : x T et y S T } X := X {{x, y }} ; T := T {y } npour ; retourner(X ).

Th eor` eme 1.5. Soit G = (S, A) un graphe connexe et c : A R une valuation de ses ar etes, la proc edure Prim(G, c) d etermine un arbre couvrant de co ut minimum de G pour la valuation c. Preuve. Durant son ex ecution, lalgorithme n ecarte aucune ar ete. Donc, lors de chaque it eration, le cocycle (T ) est candidat pour la r` egle des cocycles puisque G est connexe et X est inclus dans lensemble des ar etes du sous-graphe induit par T ; lar ete {x, y } est alors lar ete libre de co ut minimal du cocycle (T ). Chaque it eration applique donc la r` egle des cocycles . Version 6 f evrier 2005

218

Chapitre 7. Graphes valu es

La gure 1.4 montre larbre couvrant de co ut minimum (ar etes epaisses) calcul e par lalgorithme de Prim.
b 2 2 a 1 h 3 c 2 1 1 1 g 1 i 2 d 1 1 2 2 1 e 2 f

Figure 1.4: Arbre couvrant de co ut minimum.

Impl ementation de lalgorithme de Prim Lop eration fondamentale de lalgorithme de Prim est la recherche dune ar ete de co ut minimal dun cocycle. Cette op eration est appliqu ee a ` une suite de cocycles pour laquelle chaque sous-ensemble contient un sommet de plus que le pr ec edent. Une impl ementation ecace de ces op erations utilise un tas (voir chapitre 3, section 3.4) pour g erer les sommets de la bordure B (T ) de T o` u chaque sommet y de B (T ) est aect e dune priorit e not ee p(y ) egale au co ut minimal dune ar ete de (T ) dextr emit e y . Un sommet de B (T ) est promouvable sil est de priorit e minimale. er, Ins Nous utilisons les op erateurs suivants : Cre erer, Extrairemin, Pri orite, Est-element qui sont respectivement les op erateurs de cr eation dun tas, dinsertion dun el ement, de suppression dun el ement de priorit e minimum, daectation dune nouvelle priorit ea ` un el ement et de test dappartenance dun el ement. Soit (T ) le cocycle courant a ` lissue dune it eration de lalgorithme de Prim et T le tas associ ea ` B (T ). Nous supposons que le nud de T associ ea ` un sommet y de B (T ) contient outre la priorit e p(y ) de y une ar ete de (T ) dextr emit e y et de co ut p(y ). Une ar ete de co ut minimal de (T ) est ainsi stock ee a ` la racine de T.

Soit {x, y } lar ete s electionn ee lors de lit eration suivante (x T, y B (T )), la mise a ` jour de T et de B (T ) lors de la promotion du sommet y est r ealis ee par la proc edure Promotion ci-dessous :

Version 6 f evrier 2005

7.2. Chemins de co ut minimum

219

proc edure Promotion(y, T ) ; pour tout voisin z de y dans S T faire si Est- el ement(z, T ) alors si p(z ) > c({y, z }) alors Priorit e(z, c({y, z }, T )) nsi sinon Ins erer(z, c({z, y }), T ) nsi npour ; T := T {y }. Lutlisation dun tableau bool een permet de r ealiser lop eration Est- el ement en temps constant. Lop eration Priorit e se r ealise facilement si la le de priorit e est impl ement ee par un tas. Elle prend alors un temps O (log n) o` u n est le nombre d el ements du tas. Il est alors possible dimpl ementer lalgorithme de Prim en utilisant la promotion comme suit :

proc edure Prim-avec-promotion(G, c) ; Cr eer(T ) ; choisir un sommet a de S ; T := {a} ; pour tout voisin v de a faire Ins erer(v, c({a, v }), T ) npour ; pour i de 1 a ` n 1 faire y :=Extrairemin(T ) ; soit {x, y } lar ete rang ee au nud de T contenant y ; X := X {{x, y }} ; Promotion(y, T ) npour.

Chaque it eration sur i supprime la racine (complexit e O (log n)), met X a ` jour (complexit e O (1)) et r ealise la promotion dun sommet. Pour cette derni` ere, et dans le plus mauvais cas, il faudra ex ecuter pour chaque voisin le test dappartenance au tas et soit une insertion soit une aectation de priorit e. Donc le nombre total de mises a ` jour du tas T dues aux promotions est en O (m). Il en r esulte que la complexit e globale de la proc edure Prim(G, c) est O (m log n).

7.2

Chemins de co ut minimum

Lorsque les arcs dun graphe orient e sont etiquet es par des nombres r eels qui peuvent repr esenter des co uts, des distances, des dur ees . . ., on d enit de mani` ere naturelle le co ut dun chemin comme la somme des etiquettes des arcs successivement emprunt es par ce chemin. Un probl` eme important est le calcul ecace dun Version 6 f evrier 2005

220

Chapitre 7. Graphes valu es

chemin de co ut minimum entre deux sommets donn es. Comme on peut limaginer ais ement, ce probl` eme intervient dans de tr` es nombreuses applications et joue de plus un r ole central dans la r esolution de certains probl` emes plus diciles tels que les ots, les ordonnancements, la programmation dynamique. Dans cette section, nous montrerons, suivant en cela la d emarche unicatrice de Tarjan, que les principaux algorithmes de r esolution sont issus dune m eme it eration fondamentale, que leur ecacit e est li ee a ` lordre dans lequel ces it erations sont ex ecut ees et que pour obtenir une complexit e faible, cet ordre doit d ependre des hypoth` eses faites sur les donn ees. La plupart des algorithmes de r esolution d eterminent en fait pour tout sommet accessible a ` partir de lorigine un chemin de co ut minimum de lorigine a ` ce sommet. Nous sp ecierons donc le probl` eme sous cette forme. Dans cette section, le seul algorithme pr esent e sp ecique a ` un sommet origine et un sommet destination est lalgorithme appel e A . Il sagit dune variante de lalgorithme de Dijkstra qui utilise une evaluation par d efaut suppos ee connue a priori du co ut minimum dun chemin de tout sommet au sommet destination. Cet algorithme est tr` es utilis e pour des graphes de grande taille d enis de mani` ere implicite (probl` emes de recherche en intelligence articielle, programmation dynamique), car il permet dobtenir la solution sans pour autant d evelopper tous les sommets accessibles a ` partir de lorigine.

7.2.1

D enition du probl` eme

Soient G = (S, A) un graphe orient e, c : A R une valuation des arcs de G et s un sommet du graphe G appel e origine. On suppose que tout sommet est accessible a ` partir de s. On appelle co ut de larc (x, y ) la valeur c(x, y ). Le co ut q du chemin = (z0 , . . . , zq ) est la somme c( ) = k =1 c(zk 1 , zk ). Lobjet du probl` eme est de d eterminer, pour chaque sommet x, le co ut minimum not e l(s, x) de s a ` x. La gure 2.1 repr esente un graphe valu e muni dun sommet origine (en gris e). Etant donn es deux chemins = (x0 , . . . , xp ) et = (y0 , . . . , yq ) tels que
-2
1 1

2
1
3

2 1 3
1

-1

-3

-1

Figure 2.1: Un graphe valu e. y0 = xp , nous appelons concat enation des deux chemins et le chemin not e =(x0 , . . . , xp1 , y0 , . . . , yq ). Version 6 f evrier 2005

7.2. Chemins de co ut minimum

221

7.2.2

Existence dune solution

La question de lexistence dune solution repose sur la notion de circuit absorbant , cest-` a-dire ici de circuit de co ut strictement n egatif. Si un tel circuit existe, alors pour tout sommet x accessible a ` partir dun sommet du circuit, il existe un chemin de s a ` x de co ut arbitrairement petit obtenu en parcourant le circuit autant de fois que n ecessaire. Le circuit (1, 2, 3, 1) est absorbant pour le graphe de la gure 2.2. La proposition suivante pr ecise la condition dexistence dune solution.
1 1 s=0 2 2 1 1 3 -3 2 1 5 1 1 -1 4

Figure 2.2: Un circuit absorbant. Proposition 2.1. Il existe un chemin de co ut minimum de lorigine a ` tout autre sommet si et seulement si le graphe ne poss` ede pas de circuit de co ut strictement n egatif. Preuve. La condition est bien s ur n ecessaire. R eciproquement, soit x un sommet quelconque. Lensemble des chemins el ementaires de s a ` x est dominant pour le probl` eme car le co ut dun chemin el ementaire extrait dun chemin de s a ` x est au plus egal au co ut de . Les chemins el ementaires de s a `x etant en nombre ni, il existe un chemin el ementaire de co ut minimum. La proposition pr ec edente nest pas constructive et ne met pas en lumi` ere la propri et e structurelle fondamentale dun chemin de co ut minimum. Proposition 2.2. Soit = (z0 , . . . , zq ) un chemin de co ut minimum de x = z0 a ` y = zq , tout chemin (zk , zk+1 , . . . , zl ), 0 k l q , est un chemin de co ut minimum de zk a ` zl . Preuve. Notons le chemin (zk , zk+1 , . . . , zl ) et soit un chemin de zk a ` zl tel que c() < c( ). Le chemin obtenu a ` partir de en rempla cant par est de co ut strictement inf erieur au co ut de . Contradiction. La propri et e pr ec edente qui est el ementaire pour les chemins de co ut minimum, est la base de la programmation dynamique , une technique fondamentale pour r esoudre certains probl` emes doptimisation combinatoire et de contr ole optimal. Ici, cette propri et e induit une seconde condition n ecessaire et susante fond ee sur lexistence dune arborescence partielle constitu ee de chemins de co ut minimum. A cet eet, nous appellerons arborescence de chemins minimaux une arborescence partielle de G dont la racine est s et dont chaque chemin de s a ` x est un chemin de co ut minimum de s a ` x dans G. Version 6 f evrier 2005

222

Chapitre 7. Graphes valu es

Proposition 2.3. Si G na pas de circuits absorbants, G poss` ede une arborescence des chemins minimaux. Preuve. Appelons pr e-arborescence des chemins minimaux un sous-graphe A = (T, B ) de G qui est une arborescence de racine s telle que pour tout sommet t de T , le chemin dans A de s a ` t est de co ut minimum dans G. Nous montrons la condition par construction it erative dune arborescence des chemins minimaux, a ` partir de la pr e-arborescence des chemins minimaux A0 = ({s}, ). On d etermine a ` l etape k une pr e-arborescence des chemins minimaux Ak qui couvre au moins un sommet de plus que Ak1 . Soient donc (voir gure 2.3)
s=z 0 Arborescence A

z1

y=zp

Arborescence B

x=z q

Figure 2.3: Construction dune arborescence des chemins minimaux. A = (T, B ) une pr e-arborescence des chemins minimaux telle que S T = , x un sommet de S T , = (z0 , . . . , zq ) un chemin ( el ementaire) de co ut minimum de s = z0 a ` x = zq dans G, y = zp le dernier sommet de appartenant a ` T, le sous-chemin (z0 , . . . , zp ), le sous-chemin (zp , . . . , zr ) (r {p + 1, .., q }), le chemin de s a ` y dans A. Les deux chemins et ont le m eme co ut dapr` es la proposition 2.2. Donc, pour tout r {p + 1, .., q }, le chemin est de co ut minimum dans G. De plus si T = T {zp+1 , . . . , zq } et B = B {(zj , zj +1 ) | j = p, .., (q 1)}, alors le sous-graphe A = (T , B ) est une pr e-arborescence des chemins minimaux qui couvre au moins un sommet de plus que A. Il en r esulte quapr` es au plus n 1 it erations, on obtient une arborescence des chemins minimaux. La plupart des algorithmes de recherche dun chemin de co ut minimum cherchent a ` construire par ajustements successifs une arborescence des chemins minimaux. Version 6 f evrier 2005

7.2. Chemins de co ut minimum

223

En chaque sommet x, ils font d ecro tre une evaluation par exc` es (x) du co ut minimum dun chemin de s a ` x qui est egale a ` la valeur dun chemin de s a ` x. Le pr ed ecesseur de x sur ce chemin, appel e p` ere de x et not e p(x), est egalement maintenu. Lors de la terminaison de lalgorithme, les arcs de lensemble {(p(x), x) | x S {s}} constituent une arborescence des chemins minimaux de G. Ces algorithmes utilisent comme test darr et la caract erisation suivante dune arborescence des chemins minimaux : Proposition 2.4. Soit A une arborescence partielle de racine s et soit (x) le co ut du chemin de s a ` x dans A. Larborescence A est une arborescence des chemins minimaux si et seulement si pour tout arc (x, y ) de G on a : (x) + c(x, y ) (y ). Preuve. La condition n ecessaire est imm ediate. R eciproquement, soit un chemin de s a ` y . En sommant les in egalit es (de la proposition) v eri ees par pour tous les arcs de , il vient : (y ) (s) c( ) ou encore, puisque (s) = 0 : (y ) c( ). Le chemin de s a ` y dans A est donc de co ut minimum dans G.

7.2.3

It eration fondamentale

Soit : S R {+} une fonction telle que si (x) R, (x) soit la valeur dun chemin el ementaire de s a ` x. Un sommet x est dit evalu e si (x) R. Un arc (x, y ) est dit candidat si (x) + c(x, y ) < (y ) et lon note C lensemble des arcs candidats. Lit eration fondamentale, due a ` Ford, choisit un arc candidat (x, y ) et ex ecute la mise a ` jour des fonctions p et : proc edure Ajuster-arborescence( x, y ) ; (y ) := (x) + c(x, y ) ; p(y ) := x. La gure 2.4 r esume la transformation el ementaire r ealis ee a ` chaque it eration.

z x
avant l' itration

z y x
aprs l' itration

Figure 2.4: Lit eration de Ford. Avant cette it eration on a : (x) + c(x, y ) < (y ), p(y ) = z et (z ) + c(z, y ) = (y ). Apr` es cette it eration on a : (x) + c(x, y ) = (y ), p(y ) = x et (z ) + c(z, y ) > (y ). La proc edure Ajuster-candidats(x, y ) ci-dessous d enit le nouvel ensemble darcs candidats. Version 6 f evrier 2005

224

Chapitre 7. Graphes valu es

proc edure Ajuster-candidats( x, y ) ; C := C {(x, y )} ; pour tout successeur z de y faire si (y ) + v (y, z ) < (z ) alors C := C {(y, z )} npour.

7.2.4

Algorithme de Ford

Lalgorithme de Ford fond e sur la proposition pr ec edente peut etre impl ement e par la proc edure suivante : proc edure Ford(G, s) ; (s) := 0 ; p(s) := ; C := ; pour tout sommet x de S {s} faire (x) := + ; p(x) := npour ; pour tout successeur z de s faire C := C {(s, z )} ; tantque C = faire choisir un arc (x, y ) dans C ; Ajuster-arborescence( x, y ) ; Ajuster-candidats( x, y ) ntantque ; retourner(p, ). Le th eor` eme suivant garantit la validit e de la proc edure Ford lorsque G ne poss` ede pas de circuit absorbant. Th eor` eme 2.5. Si le graphe G ne poss` ede pas de circuit absorbant, la proc edure Ford(G, s) se termine et a ` lissue de la derni` ere it eration, la fonction p d enit une arborescence de chemins minimaux. Preuve. Si le graphe G ne poss` ede pas de circuit absorbant, on montre ais ement les propri et es a) et b) suivantes par induction sur le num ero dit eration : a) si (x) est ni, il existe un chemin el ementaire de s a ` x de co ut (x) ; b) la restriction de la fonction p aux sommets evalu es est une arborescence partielle du sous-graphe de G induit par les sommets evalu es telle que pour tout sommet evalu e y distinct de la racine (p(y )) + c(p(y ), y ) = (y ). Si une it eration porte sur un arc candidat (x, y ) tel que y est evalu e, la valeur (y ) d ecro t dune quantit e egale a ` la di erence (strictement positive) des co uts Version 6 f evrier 2005

7.2. Chemins de co ut minimum

225

de deux chemins el ementaires distincts de s a ` y . La valeur est donc minor ee par l ecart positif minimum entre les co uts de deux chemins el ementaires de co uts distincts. Le r eel est strictement positif car lensemble des chemins el ementaires de G est ni, le nombre total de mises a ` jour de la fonction pour le sommet y est donc ni . Il en r esulte que la proc edure se termine. Lors de la terminaison, tous les sommets sont evalu es, car si un sommet y ne l etait pas, il resterait au moins un arc candidat sur tout chemin de s a ` y . De plus, aucun arc (x, y ) n etant candidat, la fonction p` ere d enit un arborescence des chemins minimaux de G. Le th eor` eme pr ec edent garantit la validit e de lalgorithme de Ford si le graphe G ne poss` ede pas de circuit absorbant. Cependant, en laissant totalement libre lordre des it erations, cest-` a-dire le choix des arcs candidats, la convergence peut etre tr` es lente. Pour certains graphes valu es a ` m arcs, il est possible dex ecuter m jusqu` a 2 it erations. Pour obtenir une complexit e polynomiale, la plupart des algorithmes regroupent les arcs ayant la m eme origine. Une it eration encore appel ee examen dun sommet consiste alors a ` choisir un sommet et a ` ex ecuter la proc edure Ajusterarborescence pour tous les arcs candidats incidents ext erieurement a ` ce sommet. Il sera commode, pour analyser les di erents algorithmes, de distinguer trois etats pour un sommet. On ouvre un sommet x chaque fois que son evaluation d ecro t, on le ferme a ` lissue de chaque ex ecution de Examiner, il reste libre tant quil nest pas evalu e. Initialement, le sommet s est ouvert et tous les autres sommets sont libres. Nous noterons respectivement O , F et L les sous-ensembles des sommets ouverts, ferm es et libres. Les proc edures Ouvrir(x) et Fermer(x) r ealisent les mises a ` jour des ensembles O , F et L induites par louverture et la fermeture du sommet x. La proc edure Init( G, s) ouvre le sommet s et lib` ere tous les autres sommets. La gure 2.5 repr esente lautomate des transitions possibles entre ces trois etats. La proc edure Examiner(x) impl emente lexamen dun sommet qui constitue
libre ouvert ferm

Figure 2.5: Le graphe des etats dun sommet. maintenant une it eration.

Version 6 f evrier 2005

226

Chapitre 7. Graphes valu es

proc edure Examiner(x) ; pour tout successeur y de x faire si (x) + c(x, y ) < (y ) alors Ajuster-arborescence( x, y ) ; ouvrir(y ) nsi npour ; Fermer(x). Pour obtenir un algorithme ecace, il convient de faire en sorte quun sommet ferm e ne puisse plus (ou du moins le moins souvent possible) redevenir ouvert. Nous allons analyser deux cas particuliers pour lesquels les it erations peuvent etre ordonn ees de telle sorte que tout sommet ferm e reste ferm e.

7.2.5

Graphe sans circuit

Soient G un graphe sans circuit et L = (s1 , . . . , sn ) une liste topologique des sommets de G telle que s1 = s. Proposition 2.6. Lalgorithme Bellman(G, s) examine les sommets une fois et une seule dans lordre de la liste.

proc edure Bellman(G, s) ; Init( G, s) ; pour k de 1 a ` n faire Examiner(sk ). Preuve. Lors de lit eration k (k 2), le sommet sk nest pas libre car le sommet sk (accessible a ` partir de s dans G) poss` ede un pr ed ecesseur si (i < k ) plac e avant lui dans la liste et qui a et e examin e. Apr` es lex ecution de Examiner(sk ), le sommet sk est ferm e et tous les sommets si (i < k ) restent ferm es puisque seuls les (sj ) (j > k ) ont pu d ecro tre lors de cette it eration.

7.2.6

Algorithme de Dijkstra

Si les co uts sont positifs ou nuls, la r` egle qui consiste a ` examiner un sommet ouvert d evaluation minimale conduit a ` un algorithme ecace d u a ` Dijkstra. Lalgorithme est alors d ecrit par la proc edure ci-dessous o` u init(G, s) initialise O , L et F .

Version 6 f evrier 2005

7.2. Chemins de co ut minimum

227

proc edure Dijkstra(G, s) ; Init(G, s) ; r ep eter n 1 fois choisir un sommet ouvert x d evaluation minimale ; Examiner(x) nr ep eter. La validit e de cet algorithme repose sur sur la propri et e suivante : Th eor` eme 2.7. L evaluation du sommet ouvert x choisi a ` chaque it eration est le co ut minimum dun chemin de s a ` x dans G. Preuve. (Induction sur le num ero dit eration.) Le co ut minimum dun chemin de s a ` s est nul puisque le co ut de tout circuit est positif ou nul. La propri et e est donc vraie pour la premi` ere it eration. Soit x le sommet ouvert choisi lors de lit eration i (i > 1) et F lensemble des sommets examin es avant lit eration i. Remarquons que dapr` es linduction, tout sommet t de F a et e choisi lors dune it eration ant erieure a ` i et est rest e ferm e depuis en conservant une evaluation egale au co ut minimum dun chemin de s a ` t dans G. Il r esulte alors de la proc edure Examiner que pour tout sommet y de S F , on a avant lit eration i : si y F l(s, y ) (y ) = min{l(s, z ) + c(z, y ) | z F et (z, y ) A} si y O + si y L. Soit = (z0 , . . . , zq ) un chemin quelconque de s a ` x et (zk1 , zk ) le dernier arc de tel que zk1 F et zk F . On a donc avant lit eration i : c( ) (zk1 ) + c(zk1 , zk ) (zk ) (x) dapr` es linduction, la positivit e des co uts, la relation pr ec edente et le choix de x. Il en r esulte que (x) est le co ut minimum dun chemin de s a ` x dans G et que pour lun des ces chemins, tous les sommets, sauf le dernier, appartiennent a ` F. Proposition 2.8. Lalgorithme Dijkstra s electionne les sommets dans lordre croissant (au sens large) des co uts minimaux. Preuve. Raisonnons par induction sur le num ero dit eration et notons t le dernier sommet ferm e avant lit eration i. Nous avons par induction pour tout sommet z de T : (z ) (t) et (x) (t) puisque le sommet x na pas et e choisi avant lit eration i . Les gures 2.6 et 2.7 d ecrivent une ex ecution de lalgorithme. Les sommets ferm es sont noirs, les sommets ouverts sont gris, le sommet ouvert s electionn e est doublement cercl e, les sommets libres sont blancs et l evaluation dun sommet gure Version 6 f evrier 2005

228
2
1 1

Chapitre 7. Graphes valu es


5

1 3

2 1 3
1

0
3

1 1
3

1
1

2
3

5
1 2

1 1 3
1

0
3

1
1
3

Figure 2.6: Graphe initial et premi` ere it eration.

1
1

2
1 3

5
2

2 1 3
1

0
3

1
1
3

6
2

3 1
1

2 2

2
1 3

5
2

2 1 3
1

0
3

1
1
3

4
4

6
2

Figure 2.7: Les deux it erations suivantes. a ` lint erieur de ce sommet si elle est nie. L evolution compl` ete de lensemble O , du sommet s electionn e x et de la fonction est donn ee dans le tableau ci-dessous

Version 6 f evrier 2005

7.2. Chemins de co ut minimum

229

(la derni` ere colonne est le co ut minimum l(0, x) de lorigine 0 au sommet x) : O x {0} 0 (0) = 0 0 {1, 2, 3, 4} 1 (1) = 1, (2) = 1, (3) = 3, (4) = 2 1 {2, 3, 4, 8} 2 (4) = 2, (2) = 1, (3) = 3, (8) = 6 1 {3, 4, 8, 5, 6, 9} 4 (4) = 2, (8) = 6, (3) = 3, (5) = 4, (6) = 4, (9) = 5 2 {3, 8, 5, 6, 9, 7} 3 (7) = 7, (8) = 6, (3) = 3, (5) = 4, (6) = 4, (9) = 5 3 {8, 5, 6, 9, 7} 5 (7) = 7, (8) = 6, (5) = 4, (6) = 4, (9) = 5 4 {8, 6, 9, 7} 6 (7) = 6, (8) = 5, (6) = 4, (9) = 5 4 {8, 9, 7} 8 (7) = 6, (8) = 5, (9) = 5 5 {9, 7} 9 (7) = 6, (9) = 5 5 {7} 7 (7) = 6 6 Proposition 2.9. Lalgorithme de Dijkstra d etermine les chemins de co ut minimum du couple (G, s) en temps O (m log n). Preuve. Si nous appelons bordure de F lensemble not e B (F ) des sommets (n ecessairement ouverts) de S F qui poss` edent au moins un pr ed ecesseur dans F , et si nous associons a ` chaque el ement x de B (F ) une priorit e egale a ` son evaluation (x), nous constatons qu` a chaque it eration de lalgorithme, il faut essentiellement d eterminer un el ement z de B (F ) de priorit e minimale, supprimer z de B (F ), ins erer dans B (F ) les successeurs de z qui ne lui appartiennent pas d ej` a et modier eventuellement la priorit e des successeurs de z qui appartiennent a ` B (F ). La gestion de B (F ) par un tas, tout a ` fait analogue a ` celle etudi ee pour impl ementer lalgorithme de Prim, d emontre la proposition.

7.2.7

Algorithme A.

Nous pr esentons dans ce paragraphe une variante de lalgorithme de Dijkstra adapt ee au cas o` u il sagit de d eterminer dans un graphe dont les arcs sont valu es par des co uts positifs ou nuls un chemin de co ut minimum entre un sommet origine s et un sommet destination p.On suppose que lon dispose initialement pour chaque sommet x dune evaluation par d efaut not ee h(x) du co ut minimum l(x, p) dun chemin de x a ` p. Lid ee fondamentale de lalgorithme A est alors dassocier a ` chaque sommet x une approximation de l(s, p), not ee f (x), qui tient compte de la cible p par le biais de l evaluation par d efaut h(x) et dexaminer en priorit e un sommet ouvert dapproximation minimale. La proc edure A*(G, s, p, h) ci-dessous d ecrit cet algorithme.

Version 6 f evrier 2005

230

Chapitre 7. Graphes valu es

proc edure A*(G, s, p, h) ; Init(G, s) ; f (s) = h(s) ; O := {s} ; x := s ; tantque x = p faire Examiner*(x) ; x := sommet ouvert dapproximation f (x) minimale ntantque. La proc edure Examiner*(x) ne se distingue de la proc edure Examiner(x) que par la mise a ` jour de lapproximation des nouveaux sommets ouverts. proc edure Examiner*(x) ; pour tout successeur y de x faire si (x) + c(x, y ) < (y ) alors Ajuster-arborescence( x, y ) ; ouvrir(y ) ; f (y ) := (y ) + h(y ) nsi npour ; Fermer(x). Le tableau suivant montre l evolution de lensemble des sommets ouverts sur le graphe valu e de la gure 2.8 pour lequel s = 1 et p = 7. Sur cette gure, l evaluation par d efaut initiale et les valeurs successives de lapproximation sont inscrites a ` c ot e de chaque sommet. k 1 2 3 4 5 6 7 O {1} {2, 3, 4} {2, 4, 6} {3, 4, 6} {4, 6} {4, 7}
6 4 s=1 0 2 3 5 3,5,4 4 5,10 5 2 1 1 3 0 5 7

La validit e de lalgorithme A repose sur le fait que lapproximation du sommet


4,7,6 6 6

0,8 0 sommets examins: 1,3,2,3,6,7

Figure 2.8: Un graphe valu e et la fonction h. examin e a ` chaque it eration est une evaluation par d efaut de l(s, p). Lorsque le sommet p lui-m eme est examin e, son approximation vaut f (p) = (p) et est donc egale a ` l(s, p). Version 6 f evrier 2005

7.2. Chemins de co ut minimum

231

Proposition 2.10. Lors de chaque it eration, lapproximation f (x) du sommet examin e est une evaluation par d efaut de l(s, p). Preuve. Soit = (x0 , . . . , xr ) un chemin de co ut minimum de s a ` p. Nous montrons dabord par induction qu` a lissue de chaque it eration, il existe un entier k tel que : a) tout sommet xi du sous-chemin (x0 , . . . , xk ) est ferm e et satisfait (xi ) = l(s, xi ) ; b) le sommet xk+1 est ouvert et satisfait (xk+1 = l(s, xk+1 ). Remarquons dabord que le sommet s = x0 reste ferm e car tout circuit passant par s est de co ut positif ou nul. Il en r esulte que linvariant est vrai a ` lissue de la premi` ere it eration. Soit maintenant z le sommet examin e lors de lit eration i, et k lentier associ e par linvariant a ` lissue de lit eration i 1. Tout sommet xi du sous-chemin (x0 , . . . , xk ) reste ferm e puisque (xi ) = l(s, xi ). Si z = xk+1 , le sommet xk+1 reste ouvert et linvariant est vrai pour lentier k a ` lissue de lit eration i. Si z = xk+1 , le sommet xk+1 devient ferm e. Consid erons alors le sous-chemin (xk+1 , . . . , xr ) a ` lissue de lit eration en cours. Ses sommets n etant pas tous ferm es puisque xr est ouvert, notons xj son premier sommet ouvert. Tous les sommets xi de (xk+1 , . . . , xj 1 ) sont ferm es et v erient par d enition (xi ) = l(s, xi ). On a egalement (xj ) = l(s, xj ) puisque le sommet xj 1 a et e examin e. Linvariant est donc vrai pour lentier j 1. Linvariant est donc conserv e. Consid erons alors le sommet xk+1 o` u k est lentier associ e par linvariant a ` lit eration en cours. On a : f (xk+1 ) = (xk+1 + h(xk+1 ) = l(s, xk+1 ) + h(xk+1 ) l(s, p). Le sommet x examin e etant un sommet ouvert dapproximation minimale, il satisfait aussi f (x) l(s, p). La proposition pr ec edente nous permet de conclure que lalgorithme A*(G, s, p, h) converge vers la solution. En eet, sa terminaison est assur ee puisque son principe est lit eration de Ford et quil nexiste pas de circuits absorbants. De plus lorsque le sommet ouvert p est examin e, son approximation f (p) satisfait l(s, p) f (p) = (p) l(s, p). Lalgorithme A ne di` ere de lalgorithme de Dijkstra que par le choix du sommet ouvert a ` examiner. En particulier si la fonction d evalution par d efaut h est nulle en tout sommet, les deux algorithmes sont identiques. De mani` ere plus ne, on peut montrer que si la fonction h satisfait lhypoth` ese de consistance : x, y S, h(x) l(s, y ) + h(y )

alors comme dans lalgorithme de Dijkstra, le nouveau sommet examin e est celui d evaluation minimale et donc restera ferm e. Version 6 f evrier 2005

232

Chapitre 7. Graphes valu es

Lalgorithme A peut etre ecace dans le cas de graphes de grande taille d enis de mani` ere implicite pour lesquels on dispose dune bonne fonction d evaluation par d efaut. En eet, dans ce cas, certains sommets ouverts dont lapproximation est de valeur elev ee nauront pas et e examin es lors de la terminaison de lalgorithme.

7.2.8

Algorithme paps

Nous pr esentons dans ce paragraphe un algorithme pour le cas o` u les co uts sont des nombres r eels quelconques. Sa particularit e essentielle est dexaminer le sommet ouvert le plus ancien . Cet algorithme fournit bien entendu la solution du probl` eme en labsence de circuits absorbants mais permet egalement de d eceler la pr esence dun tel circuit lorsque le probl` eme na pas de solution. Lensemble des sommets ouverts est g er e dans lordre premier arriv e premier servi au moyen dune le. La proc edure g en erale paps(G, s) dans laquelle la le est not ee impl emente cet algorithme. proc edure paps(G, s) ; Init(G, s) ; filevide() ; enfiler(s, ) ; n() := 1 ; k := 0 ; tantque nest pas vide et k n 1 faire etape ; k := k + 1 ntantque ; si nest pas vide alors acher circuit absorbant . La proc edure etape consiste a ` examiner tous les sommets pr esents dans la le a ` lissue de l etape pr ec edente. On suppose que le nombre d el ements dans la le, not e n() est maintenu lors de chaque mise a ` jour. tape ; proc edure e pour j de 1 a ` n() faire x :=defiler() ; Examiner(x) npour. Le tableau suivant montre l evolution de lensemble des sommets ouverts pour le graphe valu e de la gure 2.9. Sur cette gure, les evaluations successives dun sommet sont inscrites a ` cot e de ce sommet. k 1 2 3 4 5 6 O {0} {1, 2, 3} {5, 1, 6, 4} {6, 5, 3} {6} Version 6 f evrier 2005

7.2. Chemins de co ut minimum


1,0 1 1 1 -1 2 0 1 2 1 2 2,1 3 0 0 4 2 5 3,2

233

-1 6 1 3,2,1

s=0

1,0

Figure 2.9: Les evaluations de lalgorithme paps. Pour analyser lalgorithme paps(G, s), nous allons consid erer lensemble not e Ok des sommets ouverts au d ebut de l etape k . Nous notons alors Ck (x) lensemble (ni) des chemins de s a ` x de longueur inf erieure ou egale a ` k et k (x) le co ut minimum dun chemin de Ck (x) (par convention k (x) = + si Ck (x) est vide). Linvariant suivant est alors conserv e: Th eor` eme 2.11. Au d ebut de l etape k , l evaluation (x) dun sommet x est egale au co ut minimum dun chemin de Ck (x). Un sommet x est ouvert si et seulement si tout chemin de co ut minimum de Ck (x) poss` ede exactement k arcs. Preuve. (Induction sur k .) La proposition est vraie par d enition pour k = 0. Soit alors x un sommet tel que Ck+1 (x) ne soit pas vide. Au d ebut de l etape k + 1, on a : k+1 (x) = min{k (x), min{k (y ) + c(y, x)|y Ok (x)}}. Sil existe un chemin de longueur inf erieure ou egale a ` k de co ut minimum dans Ck+1 (x), on a dapr` es linduction k+1 (x) = k (x) = k+1 (x). Supposons maintenant que tout chemin de co ut minimum dans Ck+1 (x) soit de longueur k + 1. Soit un tel chemin et (y, x) le dernier arc de . Tout chemin de co ut minimum de Ck (y ) est de longueur k , donc dapr` es linduction y Ok (x) et k+1 (x) = k+1 (x). Enn si Ck+1 (x) = alors k+1 (x) = k+1 (x) = +. Un sommet x appartient a ` Ok+1 si k+1 (x) < k (x). Soit alors un chemin de co ut minimum dans Ck+1 (x). Si est de longueur inf erieure ou egale a ` k, nous avons k (x) c( ) = k+1 (x). Il en r esulte que tout chemin de co ut minimum dans Ck+1 (x) est de longueur k + 1. R eciproquement, si tout chemin de co ut minimum de Ck+1 (x) est de longeur k + 1, alors, dapr` es linduction, on a k+1 (x) < k (x) et x est bien un sommet ouvert au d ebut de l etape k + 1 (cest-` a-dire x Ok+1 ).

Nous consid erons maintenant le cas o` u lon ne sait pas a priori si le graphe valu e (G, c) contient ou non un circuit absorbant. La proposition suivante permet alors de d eceler lexistence eventuelle dun tel circuit. Version 6 f evrier 2005

234

Chapitre 7. Graphes valu es

Proposition 2.12. Si au d ebut de l etape n, lensemble des sommets ouverts nest pas vide, le graphe valu e (G, c) poss` ede un circuit absorbant. Preuve. Dapr` es le th eor` eme pr ec edent, On est lensemble des sommets x pour lesquels tout chemin de co ut minimum de Cn (x) poss` ede exactement n arcs. Si le graphe valu e (G, c) ne poss edait pas de circuit absorbant, il existerait un chemin el ementaire de co ut minimum de s a ` x et donc de co ut minimum dans Cn (x). Le tableau suivant montre l evolution de lensemble des sommets ouverts pour le graphe valu e de la 2.10. Le circuit (3, 2, 4, 3) est absorbant. k 0 1 2 3 4 5 6 7 O {0} {1, 2, 3} {5, 1, 6, 4} {6, 5, 3} {2, 6} {1, 4} {3, 5} {2, 6} La complexit e dune etape quelconque de lalgorithme Paps(G, s) est en O (m)
1,0,-1 1 0 s=0 1 1 -1 2 1 2 2,-1,-2 3 -2 4 1,0 0 2 0 1,0 2 5 3,2,1

-1 6 1 3,2,1

Figure 2.10: Lalgorithme paps avec un circuit absorbant. puisque un sommet est examin e au plus une fois. Comme lalgorithme ex ecute au maximum n etapes, sa complexit e est O (mn).

Notes
La pr esentation uni ee des algorithmes concernant les arbres couvrants de co ut minimum par lemploi de la r` egle des cocycles et de la r` egle des cycles est due a ` R.E. Tarjan. Il en est de m eme de la pr esentation des algorithmes de recherche des chemins de co ut minimum en tant que variantes de lalgorithme g en erique de Ford : R.E. Tarjan, Data Structures and Network Algorithms, SIAM Philadelphia, 1983, chapitres 6 et 7, 7195. Les algorithmes sur les arbres couvrant de co ut minimum sont assez anciens. Par contre leur complexit e a plus r ecemment et e am elior ee par lutilisation de structures de donn ees adapt ees comme la gestion des partitions dun ensemble pour lalgorithme de Kruskal et les les de priorit e pour lalgorithme de Prim. Version 6 f evrier 2005

Exercices

235

Si lon restreint lensemble des arbres couvrants admissibles en ajoutant des contraintes suppl ementaires, le probl` eme devient en g en eral beaucoup plus dicile. Si, par exemple, on limite le degr e des sommets, le probl` eme est alors NP-dicile sauf si le degr e dun seul sommet est limit e. Les algorithmes de recherche de chemins de co ut minimum ont et e tr` es etudi es. Ils interviennent en eet de mani` ere centrale dans beaucoup dautres domaines comme les ots ou les ordonnancements. Ajouter des contraintes au probl` eme de base le rend souvent beaucoup plus complexe. Par exemple, rechercher un chemin el ementaire de co ut minimum entre deux sommets dun graphe valu e quelconque est un probl` eme NP-dicile.

Exercices
7.1. Soit G = (S, A) un graphe non orient e connexe valu e par une fonction co ut c : A R. Soit H = (S, B ) un graphe partiel non connexe de G. On appelle ar ete de liaison entre deux composantes connexes C et C de H un ar ete qui a lune de ses extr emit es dans C et lautre dans C . Soit C une composante connexe de H , (C ) le cocycle associ ea ` C et e une ar ete de co ut minimal de (C ). a) D emontrer quil existe un arbre couvrant de co ut minimum de G qui contient e. On consid` ere lalgorithme de Sollin d ecrit par la proc edure ci-dessous : proc edure Sollin(G, c) ; H := (S, ) ; tantque H nest pas connexe faire soient C1 , . . . , Cp les composantes connexes de H ; {les Ck ne sont pas marqu ees au d epart} ; tantquil existe une composante connexe Ck non marqu ee faire marquer(Ck ) ; soit e = {x, y } une ar ete de co ut minimum dans (Ck ) ; {x est lextr emit e de e qui appartient a ` Ck } soit Cl la composante connexe contenant y ; marquer(Cl ) ; ajouter lar ete e a `H ntantque ntantque. b) D emontrer que lalgorithme pr ec edent applique la r` egle des cocycles a ` chaque it eration de la boucle tantque interne. c) En d eduire que lors de la terminaison, H est un arbre couvrant de co ut minimum. 7.2. Soit G = (S, A) un graphe orient e complet a ` n sommets et valu e par une fonction co ut c : A N telle que : Version 6 f evrier 2005

236

Chapitre 7. Graphes valu es

1. x, y S, c(x, y ) = c(y, x) ; 2. x, y, z S, c(x, y ) + c(y, z ) c(x, z ). Un tour t = (t1 , . . . , tn ) de G est une permutation de S et le co ut c(t) du tour t est la somme : c(tn , t1 ) +
n1 k =1

c(tk , tk+1 ).

On note G la version non orient ee de G o` u le co ut c (x, y ) de lar ete {x, y } est egal a ` c(x, y ). Soient H un arbre couvrant de co ut minimum de G , P = (p1 , . . . , pn ) un parcours en profondeur de G a ` partir du sommet s et t le tour de G associ ea ` P . On note c (H ) le co ut de larbre H et c (G) le co ut minimum dun tour de G. a) D emontrer que c (G) > c (H ). b) D emontrer que c(t) 2c (H ). c) Obtient-on le m eme r esultat avec un parcours en largeur de H ? 7.3. On consid` ere le probl` eme de transport monoproduit d eni par m fournisseurs Fi et n clients Cj . Le fournisseur Fi dispose dun stock ai N, le client Cj a une demande bj N et lon suppose que ai = bj . Le co ut unitaire de transport du fournisseur Fi au client Cj est un entier naturel cij . Le graphe valu e G associ e au probl` eme a pour sommets les m fournisseurs et les n clients et ses arcs sont les couples (Fi , Cj ) valu es par cij . Un plan de transport X = (xij ) est une solution du syst` eme : xij = ai
j {1,...,n}

i {1, . . . , m} j {1, . . . , n}

xij = bj
i{1,...,m}

xij 0 i {1, . . . , m} j {1, . . . , n} et le co ut c(X ) du plan X est i{1,...,m},j {1,...,n} cij xij . La matrice du syst` eme est not ee M . a) D emontrer quil existe un plan de transport optimal entier. b) D emontrer que le rang de M est m + n 1. On appelle solution de base un ensemble de m + n 1 colonnes ind ependantes de M .

c) Montrer que le graphe partiel des arcs (Fi , Cj ) associ es a ` ces colonnes est un arbre couvrant de G. La r eciproque est-elle vraie ? Soit H un arbre couvrant de co ut minimum de G. Soit B (H ) la solution de base associ ee a ` H (si elle existe). d) Montrer quil existe un seul plan de transport tel que xij = 0 pour (Fi , Cj ) B (H ). Montrer que ce plan nest pas n ecessairement optimal. 7.4. D eterminer un graphe valu ea ` m arcs muni dun sommet origine s tel que lalgorithme g en erique de Ford r ealise dans le plus mauvais cas O (2m ) it erations. Version 6 f evrier 2005

Exercices

237

7.5. Soit G = (S, A) un graphe, soit s un sommet origine et soit c : A N une fonction capacit e. La capacit e dun chemin est la plus petite capacit e des arcs de ce chemin. Adapter lalgorithme de Dijkstra a ` la recherche des chemins de capacit e maximale de s a ` tous les autres sommets de G. 7.6. On consid` ere lalgorithme A pr esent e dans la section 7.2.6. D emontrer que si la fonction d evaluation par d efaut h satisfait : (x, y ) A, h(x) c(x, y ) + h(y ),

un sommet examin e restera ferm e jusqu` a la terminaison de lalgorithme. 7.7. On consid` ere lalgorithme g en erique de Ford et lon note E lensemble des sommets examin es. D emontrer que les invariants suivants sont conserv es a ` chaque it eration : si (x) est ni, il existe un chemin el ementaire de s a ` x de co ut (x) ; la restriction de la fonction p` ere aux sommets de E est une arborescence partielle du sous-graphe de G induit par E telle que pour tout sommet y de E distinct de la racine (p(y )) + c(p(y ), y ) = (y ). 7.8. On appelle graphe conjonctif un graphe orient e G = (S, A) valu e par c : A R, muni dune racine et dune anti-racine , et tel quil existe pour tout sommet x un chemin positif ou nul de a ` x et de x a ` . Un ensemble de potentiels dun graphe conjonctif G est une application t : S R satisfaisant t() = 0 et : (x, y ) A, t(y ) t(x) c(x, y )

On note T (G) lensemble des ensembles de potentiels de G. a) D emontrer que T (G) est non vide si et seulement si G ne poss` ede pas de circuit strictement positif. On suppose maintenant que T (G) nest pas vide et lon note r (x) le co ut maximum dun chemin de a ` x. b) D emontrer que r est le plus petit el ement de T (G) pour la relation dordre : t t x S, t(x) t (x).

On consid` ere lensemble D (G) des ensembles de potentiels tels que t( ) = r ( ). c) D emontrer que la fonction f d enie par f (x) = r ( ) C (x, ) o` u C (x, ) est le co ut maximum dun chemin de x a ` est le plus grand el ement de D (G). 7.9. Soit G = (S, A) un graphe orient e valu e par c : A Q. On note S = {1, . . . , n}, Sk = {1, . . . , k }, Gk le graphe induit par Sk et lon suppose que s = 1 est un sommet origine pour tous les sous-graphes Gk . On note enn k (i) la valeur minimale dun chemin de 1 a ` i dans Gk passant au plus une fois par le sommet k . On consid` ere alors lalgorithme de Rao d ecrit ci-dessous :

Version 6 f evrier 2005

238

Chapitre 7. Graphes valu es

proc edure Rao(G, c) ; (1) k := 1 ; R := ; abs := 0 ; (2) si c(1, 1) < 0 alors abs := 1 (3) sinon (4) tantque abs = 0 et k n faire (5) k := k + 1 ; R := R {k } ; T := {k } ; (6) k (k ) := min{k1 (j ) + cjk | j Gk (k )} ; (7) tantque abs = 0 et T = R faire + (8) U (T ) := G (T ) ; k (9) si U (T ) = alors (10) calculer dpq = min{dij | (i, j ) U (T )} {o` u dij = k (i) + c(i, j ) k1 (j )} (11) nsi ; (12) si U (T ) = ou dpq > 0 alors (13) pour tout i dans R T faire (14) k (i) := k1 (i) ; T := T {k } (15) npour (16) sinon (17) k (q ) := k (p) + c(p, q ) ; T := T {q } ; (18) si (q, k ) A et k (q ) k (k ) + c(q, k ) < 0 alors (19) acher( circuit absorbant ) ;abs := 1 (20) nsi (21) nsi (22) ntantque (23) ntantque (24) nsi.

a) D emontrer que la valeur de k (k ) calcul ee a ` la ligne (6) est bien le co ut minimum dun chemin de 1 a ` k dans Gk passant au plus une fois par k . b) D emontrer que si U (T ) est vide ou si dpq est positif ou nul, le co ut minimum dun chemin de 1 a ` i dans Gk passant au plus une fois par k est k1 (i). c) D emontrer que si dpq est strictement n egatif, alors k (p) + c(p, q ) est le co ut minimum dun chemin de 1 a ` q dans Gk passant au plus une fois par k . d) En d eduire que lalgorithme Rao d etermine les chemins de co ut minimum de 1a ` tous les autres sommets de G ou d etecte la pr esence dun circuit absorbant.

Version 6 f evrier 2005

239

Chapitre 8

Flots
Dans ce chapitre nous d enissons dabord la notion de ot compatible et donnons la condition dexistence dun tel ot. Nous pr esentons ensuite les propri et es qui interviennent de mani` ere cruciale dans la conception des algorithmes sur les ots, a ` savoir la d ecomposition en cycles, labsence de cycles am eliorants dans un ot de co ut minimum et la dominance des ots entiers. Nous d enissons ensuite le probl` eme du ot maximum dune source vers un puits. Apr` es avoir d eni la notion de graphe d ecart et d emontr e le th eor` eme de Ford et Fulkerson, nous analysons les algorithmes les plus performants pour ce probl` eme, a ` savoir lalgorithme primal des distances estim ees au puits et lalgorithme dual du pr eot. Deux variantes ecaces de lalgorithme du pr eot sont d ecrites, lalgorithme de Karzanov et lalgorithme des exc` es echelonn es. Nous consid erons ensuite le probl` eme du ot de co ut minimum. Nous d enissons le probl` eme dual et donnons la condition n ecessaire et susante doptimalit e dun ot et dun ensemble de potentiels, exprim ee avec les co uts r eduits des arcs du graphe d ecart. Nous pr esentons alors un algorithme primal d ua ` Goldberg et Tarjan fond e sur la notion d -optimalit e et sur les circuits de co ut moyen minimum. Nous montrons ensuite comment transformer un probl` eme de ot compatible de co ut minimum en probl` eme de ot maximum de co ut minimum et nous pr esentons un algorithme dual pour r esoudre ce dernier probl` eme. Nous pr esentons enn lalgorithme ecace dEdmonds et Karp pour la recherche dun plan de transport de co ut minimum.

Introduction
La notion de ot mod elise de mani` ere naturelle une circulation discr` ete (voitures, electrons,...) ou continue (uide,...), le long des arcs dun graphe orient e. Cette circulation est soumise a ` des contraintes d equilibre de charge aux sommets du graphe et de limitation de capacit e sur les arcs. De nombreux probl` emes doptimisation se ram` enent a ` la recherche de ots particuliers sur un graphe, les Version 6 f evrier 2005

240

Chapitre 8. Flots

plus connus sont les probl` emes de transport (par exemple entre des fournisseurs et des clients), les probl` emes de couplage et daectation (par exemple de t aches a ` des machines) ou encore les probl` emes de chemins de co ut minimum. Mais ce mod` ele intervient aussi souvent dans dautres domaines comme la r esolution de certains probl` emes dordonnancement, le placement de t aches ou encore la maximisation de certaines fonctions bool eennes. La th eorie des ots occupe une place tr` es int eressante en optimisation combinatoire car elle se situe a ` la fronti` ere de la programmation lin eaire continue et de la programmation en nombres entiers. En eet, les probl` emes de ot que nous etudierons peuvent etre formul es comme des programmes lin eaires continus mais la matrice sous-jacente est telle que les solutions enti` eres sont dominantes.

8.1

Pr eliminaires

Dans tout le chapitre, les graphes consid er es sont orient es mais ne sont pas n ecessairement simples, cest-` a-dire que des arcs distincts peuvent avoir la m eme origine et la m eme extr emit e. Soit u un arc dun graphe G = (S, A), il sera commode de noter u son sommet origine et u+ son sommet extr emit e. Soit E un ensemble ni. Lensemble des fonctions de E dans Z est not e F (E ). Le produit scalaire de deux el ements f et g de F (E ) est par d enition le nombre f g=
eE

f (e)g (e).

Lordre partiel sur F (E ) d eni par e E, f (e) g (e) est not e f g . La relation f < g est d enie par f g et f = g . La fonction caract eristique dun sous-ensemble F de E est not ee F . Soient G = (S, A) un graphe et T un sous-ensemble de sommets. Lensemble (T ) des arcs entrants dans T et lensemble + (T ) des arcs sortants de T sont d enis par : (T ) = {u A | u S T, u+ T } + (T ) = {u A | u T, u+ S T }.

Soient f une fonction de F (A) et T un sous-ensemble de sommets, les nombres f (T ) et f + (T ) sont not es respectivement f (T ) et f + (T ). Lexc` es de + la fonction f pour la partie T est d eni par ef (T ) = f (T ) f (T ). Lorsque T est le singleton {s}, les notations pr ec edentes sont simpli ees en f (s), f + (s) et ef (s). Remarquons que pour toute fonction f de F (A), lexc` es de S est nul et que lexc` es dune partie non vide T de S est egal a ` la somme des exc` es des sommets de T , + cest-` a-dire ef (T ) = f (T ) f (T ) = sT ef (s). Comme la notion de cha ne na et e introduite que pour les graphes non orient es (voir section 4.1.3), nous en d enissons ici une extension pour les graphes orient es. Version 6 f evrier 2005

8.2. Flots dun r eseau Une cha ne du graphe G = (S, A) est une suite : = ((s0 , u1 , s1 ), (s1 , u2 , s2 ), , (sq1 , uq , sq ))

241

telle que pour tout i {1, . . . , q } les deux extr emit es de larc ui sont si1 et si . Une cha ne est el ementaire si tous les sommets si pour i {0, . . . , q } sont + distincts. Un arc ui de la cha ne est dit avant si u i = si1 et ui = si , dans le cas contraire il est dit arri` ere. Un cycle el ementaire est une cha ne telle que tous les sommets si , i {0, . . . , q 1} sont distincts et s0 = sq . Sur la gure 1.1 sont repr esent es a ` gauche une cha ne el ementaire [(1, a, 2), (2, b, 3), (3, c, 4), (4, d, 5)] et a ` droite un cycle el ementaire [(1, a, 2), (2, b, 3), (3, c, 4), (4, d, 5), (5, e, 6), (6, f, 1)].

e 1 a 2 b 3 c

f g

5 d 4

a 1 f 6

2 b 3 c 4 e 5 d

Figure 1.1: Cha ne et cycle el ementaires.

8.2

Flots dun r eseau

Un r eseau R = (G, a, b) est un graphe connexe sans boucles G = (S, A), muni de deux fonctions a et b de F (A) v eriant a b. Les entiers a(u) et b(u) sont respectivement appel es capacit e minimale et capacit e maximale de larc u. Un r eseau valu e R = (G, a, b, c) est un r eseau (G, a, b) muni dune fonction c de F (A). Le nombre c(u) est appel e co ut de larc u.

Un ot f du r eseau R = (G, a, b) est une fonction f : A Q v eriant la condition d equilibre (E ) ci-dessous : s S ef (s) = 0 (E )

Un ot compatible est un ot qui v erie egalement les conditions de limitation de capacit e (L) suivantes : af b (L) Remarque. Le choix de ux rationnels (nous aurions pu egalement consid erer des ux r eels) a et e fait pour mieux mettre en evidence par la suite la propri et e de dominance des ots entiers vis-` a-vis du crit` ere co ut. Version 6 f evrier 2005

242

Chapitre 8. Flots

Soient f un ot du r eseau R et T un sous-ensemble de sommets. Le nombre f (u) est appel e ux de larc u, les quantit es f (T ) et f + (T ) sont appel ees respectivement ux entrant dans T et ux sortant de T . Remarquons que si la condition d equilibre est satisfaite en tout sommet, elle est egalement v eri ee pour toute partie non vide T de sommets : ef (T ) = f (T ) f + T ) = 0. Le co ut du ot f dun r eseau valu e est par d enition le nombre f c. Les diverses quantit es introduites jusquici sexpriment facilement en utilisant la matrice M dincidence sommets-arcs du graphe G. La ligne du sommet s repr esente la fonction + (s) (s) . Un ot compatible dun r eseau R = (G, a, b) a ` m arcs est donc un vecteur f de Qm satisfaisant : M f = 0 et a f b. Un ot compatible de co ut minimum du r eseau valu e R = (G, a, b, c) est une solution optimale du programme lin eaire : f b f a Mf = 0 M IN uA f (u)c(u) Lensemble des ots dun r eseau constitue un espace vectoriel sur Q. Soient f et g deux ots et et deux nombres rationnels ; si a f + g b alors f + g est un ot compatible du r eseau. o` u les variables f (u), u A sont rationnelles.

8.2.1

Existence dun ot compatible de co ut minimum

Les contraintes impos ees par les limitations de capacit e rendent la question de lexistence dun ot compatible dans un r eseau R = (G, a, b) non triviale. Une condition n ecessaire et susante dexistence due a ` Homan exprime simplement que pour tout sous-ensemble non vide T de sommets, le ux entrant minimal a (T ) doit etre inf erieur ou egal au ux sortant maximal b+ (T ). Cette condition de consistance , not ee (C ), sexprime par : T S, a (T ) b+ (T ). (C )

Soient R = (G, a, b) un r eseau et g un ot de ce r eseau. La distance g (u) de g (u) a ` lintervalle [a(u), b(u)] etant d enie par : g (u) b(u) si g (u) > b(u) g (u) = a(u) g (u) si g (u) < a(u) 0 si a(u) g (u) b(u) Version 6 f evrier 2005

8.2. Flots dun r eseau

243

lincompatibilit e du ot g est mesur ee par i(g ) = g A . Le lemme 2.1 montre que si la condition de compatibilit e est satisfaite, il existe un ot h dont lincompatibilit e est strictement plus petite que celle de g . Lemme 2.1. Soit g un ot entier tel que i(g ) > 0. Si le r eseau est consistant, il existe un ot h tel que i(h) < i(g ). Preuve. Si i(g ) est strictement positif, il existe un arc v v eriant par exemple g (v ) > b(v ). On notera respectivement x et y lorigine et lextr emit e de v . Notons H = (S, B ) le graphe dont les arcs sont color es en rouge ou en noir par la proc edure colorer ci-dessous : proc edure colorer(G, a, b, v ) ; pour tout arc u de G faire si g (u) > a(u) alors cr eer un arc rouge u dorigine u et dextr emit e u+ dans H ; si g (u) < b(u) alors cr eer un arc noir u dorigine u+ et dextr emit e u dans H . La gure 2.1 montre le graphe H correspondant a ` un ot nul et a ` larc v = (4, 1). Soit T lensemble des sommets accessibles a ` partir de y dans H et supposons que T
6 1,0,3 1 -1,0,1 -2,0,0 2,0,4 4 2,0,4 3 5 4 3 2 6 1 2

-3,0,-2 -3,0,2 5 -2,0,1

Sur l' arc u: a(u),f(u),b(u) flot initial: f=0. i(f)=7 6 1,0,3 1 -1,-1,1 -2,-1,0 -3,0,2 5 -3,-1,-2 -2,0,1 4 2,0,4 2,1,4 3 2

chemin amliorant: (1,2,3,4) arcs "rouges" en gras

nouveau flot g: i(g)=5

Figure 2.1: Am elioration de la compatibilit e dun ot. ne contienne pas x. Dans le graphe G, un arc u de (T ) satisfait n ecessairement + g (u) b(u) et un arc u de (T ) satisfait n ecessairement g (u) a(u). De plus larc v appartient a ` (T ). Il en r esulte que : a (S T ) = a+ (T ) g + (T ) = g (T ) > b (T ) = b+ (S T ). Version 6 f evrier 2005

244

Chapitre 8. Flots

ce qui contredit la condition de compatibilit e. Il existe donc un chemin rouge et noir de y a ` x dans H . Pour tout arc rouge u de ce chemin posons h(u) = g (u) 1, pour tout arc noir u de ce chemin, posons h(u) = g (u) + 1. Posons enn h(v ) = g (v ) 1 et h(u) = g (u) pour tous les autres arcs de G. La fonction h est un ot du r eseau R tel que i(h) i(g ) 1 car on a h (v )=g (v ) 1 et pour tout arc u de G, h (u) g (u). Pour le ot g de la gure 2.1, le chemin (1, 2, 3, 4) est am eliorant et lincompatibilit e diminue de deux unit es. Le th eor` eme de Homan r esulte alors directement du lemme 2.1. Th eor` eme 2.2 (de Homan). Un r eseau poss` ede un ot compatible si et seulement sil est consistant. Preuve. La condition est susante car a ` partir dun ot g (par exemple le ot nul), il est possible dapr` es le lemme 2.1 dobtenir en au plus i(g ) it erations un ot compatible. La condition est n ecessaire car si f est un ot compatible et T un sous-ensemble de sommets, la sommation des exc` es des sommets de T pour f conduit a `: 0 = f + (T ) f (T ) b+ (T ) a (T ). Si la condition de consistance est satisfaite pour un r eseau valu e R = (G, a, b, c), nous savons dapr` es le th eor` eme de Homan que lensemble de ses ots compatibles nest pas vide. Cet ensemble form e des vecteurs de Qm solutions de M f = 0 et a f b, est un poly` edre convexe ferm e et born e de Qm . Il r esulte alors dun th eor` eme important de la programmation lin eaire continue que la fonction lin eaire f f c, o` u f parcourt lensemble des ots compatibles de R, atteint son minimum en un point extr eme du poly` edre. Nous en concluons que la condition de consistance est aussi une condition n ecessaire et susante dexistence dun ot compatible de co ut minimum. Remarque. Dans la suite, tout r eseau R = (G, a, b) sera suppos e consistant.

8.2.2

Quelques probl` emes particuliers

Nous pr esentons dans ce paragraphe quelques probl` emes doptimisation dont les solutions peuvent etre interpr et ees comme les ots de co ut minimum dun r eseau valu e. Probl` emes de transport. Un r eseau de transport est d eni a ` partir dun r eseau valu e R = (G, a, b, c) et dune fonction d de F (S ) v eriant d ( s ) = 0 appel e e fonction dore et sS de demande . La valeur c(u) repr esente le co ut unitaire de transport sur larc u. Les sommets sont r epartis en trois sous-ensembles, les fournisseurs pour lesquels d(s) > 0, les clients pour lesquels d(s) < 0 et enn les sommets de transit v eriant Version 6 f evrier 2005

8.2. Flots dun r eseau

245

d(s) = 0. Le probl` eme est de trouver un plan de transport de co ut minimum, cest-` a-dire une fonction g de F (A) satisfaisant a g b telle que : eg (s) = d(s) si s est un fournisseur d(s) si s est client 0 si s est un sommet de transit

et dont le co ut soit minimum. Le lecteur v eriera ais ement a ` partir dun exemple que les plans de transport sont en bijection avec les ots compatibles dun r eseau valu e. La gure 2.2 montre un probl` eme de transport (capacit es et co uts non repr esent es) et le r eseau valu e equivalent. Les co uts dun plan de transport et de son ot image par la bijection etant egaux, on est ramen ea ` la recherche dun ot compatible de co ut minimum.
d(1)=2 1 d(5)=0 5 3 d(3)=-1 Problme de transport 4 d(4)=-3 3 (1,1,0) p d(2)=2 2 (2,2,0) 1 5 4 (3,3,0) s (2,2,0) 2 (4,4,0)

Rseau valu quivalent

Figure 2.2: Probl` eme de transport et r eseau valu e equivalent. Chemins de co ut minimum. Soit G un graphe a ` n sommets dont les arcs sont valu es par une fonction co ut v et soit s une racine de G. On cherche a ` d eterminer pour chaque sommet x de G un chemin de co ut minimum de s a ` x. Posons d(x) = 1 si le sommet x est distinct de s, d(s) = n 1 et pour tout arc u de G, a(u) = 0, b(u) = n, c(u) = v (u). Un plan de transport entier de co ut minimum du r eseau de transport ainsi constitu e correspond a ` lenvoi par le fournisseur s dune unit e vers chaque client le long dun chemin de co ut minimum. Flot maximum. Soit G un graphe dont deux sommets sont distingu es, une source s et un puits p, et dont chaque arc u poss` ede une capacit e minimale nulle et une capacit e maximale b(u). Le probl` eme du ot maximum de s a ` p est la recherche dune fonction f , v eriant 0 f b et ef (x) = 0 pour tout sommet x distinct de la source et du puits, telle que la quantit e transport ee ef (p) soit maximum. On alloue alors un co ut nul a ` chaque arc et on cr ee un arc de retour dorigine p, dextr emit e s, de co ut 1 et de capacit e maximale b (p). Maximiser la quantit e transport ee de s a ` p revient alors a ` trouver un ot compatible de co ut minimum. Version 6 f evrier 2005

246 Probl` eme daectation.

Chapitre 8. Flots

Soient E et F deux ensembles de p el ements et c(e, f ) le co ut attach e au couple (e, f ). Le probl` eme daectation de E sur F est la recherche dune bijection : E F dont le co ut total eE c(e, (e)) soit minimum. Soit G le graphe complet biparti (E F, E F ). Munissons chaque arc (e, f ) dune capacit e minimale nulle, dune capacit e maximale unit e et du co ut c(e, f ). Posons pour tout e E , d(e) = 1 et pour tout f F, d(f ) = 1. Un plan de transport entier de co ut minimum correspond a ` une aectation optimale.

8.2.3

Trois propri et es fondamentales

Lensemble des ots dun r eseau poss` ede de nombreuses propri et es alg ebriques. Nous en pr esentons trois qui interviennent de mani` ere directe dans les algorithmes de recherche de ots optimaux : la d ecomposition dun ot entier en cycles el ementaires, une caract erisation dun ot compatible de co ut minimum et lexistence dun ot compatible de co ut minimum dont tous les ux sont entiers. D ecomposition en cycles Ce paragraphe concerne une propri et e g en erale des ots dun r eseau. Les fonctions capacit e minimale et capacit e maximale ne jouent aucun r ole. Flot entier positif ou nul Soient R = (G, a, b) un r eseau et f un ot entier strictement positif de ce r eseau. Nous montrons lexistence dun ensemble C (f ) de couples (, ()) o` u est un circuit el ementaire de G et () un entier strictement positif, tel que : f=
C (f )

() .

Un tel ensemble C (f ) est appel e d ecomposition du ot f sur les circuits de G. La fonction est appel ee par convention ot canonique du circuit . Soit G(f ) le graphe partiel de G, appel e graphe support de f , compos e des arcs de G de ux strictement positif . Le lemme 2.3 fournit une condition n ecessaire et susante sur le graphe support pour que le ot f soit nul. Lemme 2.3. Un ot entier f 0 est nul si et seulement si son graphe support G(f ) est sans circuits. Preuve. La condition est evidemment n ecessaire. Pour la r eciproque, nous montrons que si le graphe support est sans circuit, il na pas darcs. Dans le cas Version 6 f evrier 2005

8.2. Flots dun r eseau

247

contraire, il existe au moins un arc u de G(f ) dont lextremit e s na pas de + successeur. Par d enition de G(f ), on a f (s) > 0 et f (s) = 0. La condition d equilibre nest donc pas satisfaite pour le sommet s. Nous pouvons maintenant enoncer le th eor` eme de d ecomposition. Th eor` eme 2.4. Soit R = (G, a, b) un r eseau a ` m arcs. Tout ot entier strictement positif de R est une combinaison lin eaire a ` coecients entiers strictement positifs dau plus m ots canoniques de G. Preuve. La preuve est constructive. Soit f un ot entier strictement positif et G(f ) le graphe support de f . Si G(f ) ne poss` ede pas de circuits el ementaires, alors f = 0. Dans le cas contraire, nous choisissons un circuit el ementaire . La fonction est un ot strictement positif de G. Notons la valeur minimum du ux dun arc de ( > 0). La fonction h = f est un ot positif ou nul de G et G(f ) poss` ede au moins un arc de plus que G(h). En r ep etant au plus m fois lop eration pr ec edente, on obtient un graphe support qui na pas de circuits. Le ot correspondant est donc nul. Le ot positif de la gure 2.3 se d ecompose sur les circuits el ementaires (S, A, D, F, P, S ), (S, A, D, F, G, P, S ), (S, A, D, G, P, S ), (S, B, E, H, P, S ), (S, C, H, P, S ) et (A, D, F, A).
A 4 S 2 1 C B 0
5

1 0 1 2 0 1 7 E 0 2 D 1 4

F 1 G 0 H 2 2 3 P

Figure 2.3: Un ot entier positif.

Flot entier quelconque La propri et e pr ec edente se g en eralise au cas dun ot entier f dont les ux sont de signe quelconque. Le ot f se d ecompose alors sur les cycles el ementaires de G. Soit un cycle el ementaire. Nous notons respectivement et + ) les sousensembles des arcs arri` ere et avant de . La fonction d enie par ( ) = + , qui satisfait les conditions d equilibre en chaque sommet, est appel ee ot canonique du cycle . Version 6 f evrier 2005

248

Chapitre 8. Flots

Th eor` eme 2.5. Soit f un ot entier dun r eseau R = (G, a, b). Il existe un ensemble C (f ) dau plus m cycles el ementaires de G tel que : a) le ot f est une combinaison lin eaire a ` coecients entiers strictement positifs des ots canoniques des cycles de C (f ), b) les ux (non nuls) allou es a ` un arc u de G par les ots canoniques de la d ecomposition ont tous le signe de f (u). Preuve. Soient G = (S, A) un graphe et soit B une partie de A. Nous notons alors R = (G , a , b ) le r eseau obtenu a ` partir de R en rempla cant chaque arc u de B par un arc oppos e not e u de capacit e minimale a (u ) = b(u) et de capacit e maximale b (u ) = a(u).

On note A lensemble des arcs de G et B la partie des arcs de A provenant de linversion dun arc de B . La fonction f de F (A ) d enie par : f (v ) = f (v ) si v A \ B f (v ) si v B

est par construction un ot du r eseau R . De plus lapplication d enie par A,B : f F (A) f F (A ) est lin eaire et satisfait : A ,B A,B = idF (A) . Nous supposons quau moins un ux de f est strictement n egatif et nous appliquons la transformation pr ec edente a ` lensemble B des arcs de G dont le ux est strictement n egatif. Dapr` es le th eor` eme 2.4, le ot f se d ecompose sur les ots canoniques dune famille C (f ) dau plus m circuits el ementaires de G . A tout circuit de G correspond un cycle de G et lon a A ,B ( )= . La propri et e de d ecomposition de f r esulte alors de la lin earit e de A ,B . Si f (u)
6 -2 5 -2 2 1 -2 4 4 -1 3 2 -1 3 2 5 2 4 6 2 1 2 4 1 2 1 3

Le flot f

Le flot f'(arcs de B' en gras)

Figure 2.4: Lapplication A,B . est strictement n egatif (respectivement strictement positif), pour tout circuit de G passant par larc u , on a A ,B ( )(u)=1 (respectivement +1). Il en r esulte la condition b) du th eor` eme. Sur lexemple de la gure 2.4, le ot positif f est egal a ` 21 + 2 + 3 o` u 1 =(1, 4, 3, 1), 2 =(1, 6, 5, 4, 3, 1) et 3 =(1, 6, 5, 4, 3, 2, 1) sont trois circuits de G . Il en r esulte que le ot f est egal a ` 21 + 2 + 3 o` u 1 , 2 et 3 sont les trois cycles de G associ es aux circuits 1 , 2 et 3 de G . Version 6 f evrier 2005

8.2. Flots dun r eseau Conditions doptimalit e dun ot compatible

249

Soit R = (G, a, b, c) un r eseau valu e consistant. La notion de cycle augmentant est utile pour comparer les co uts de deux ots compatibles de ce r eseau. Un cycle el ementaire est dit augmentant pour le ot compatible f sil existe un entier positif k tel que a f + k b. Si de plus le co ut unitaire c est strictement n egatif, le cycle est dit am eliorant . Proposition 2.6. Soit R un r eseau valu e et soient f et g deux ots compatibles de ce r eseau. Le ot f g se d ecompose sur un sous-ensemble dau plus m cycles augmentant de g . Preuve. Soit h = f g . Dapr` es le th eor` eme 2.5, il existe r (r m) cycles el ementaires 1 , . . . , r de G et r nombres entiers strictement positifs k1 , . . . , kr tels que : h = r i=1 ki i . Comme f = g + h, nous avons :
r

ag+

i=1

ki i b.

egatifs ou nuls on a la car g (u) a(u) et kj j (u) r i=1 ki i . Sils sont tous n k . m eme in egalit e car g (u) b(u) et kj j (u) r i=1 i i La proposition 2.6 nous permet maintenant de caract eriser un ot compatible de co ut minimum. Th eor` eme 2.7. Un ot compatible f est de co ut minimum si et seulement sil ne poss` ede pas de cycle am eliorant. Preuve. La condition n ecessaire est imm ediate. Soit f un ot compatible et soit g un ot compatible de co ut strictement inf erieur. Posons h = g f . Dapr` es la proposition 2.6, il existe des cycles 1 , . . . , r augmentant pour f et des nombres entiers positifs k1 , . . . , kr tels que :
r

Soient j lun de ces cycles et u un arc de j . Dapr` es le th eor` eme 2.5, tous les nombres i (u), i {1, . . . , r } sont de m eme signe. Sils sont tous positifs ou nuls on a : a(u) g (u) + kj j (u) b(u)

c g=c f+
i=1

ki (c i ).

Il existe donc un j tel que c j soit strictement n egatif et le cycle j est am eliorant pour f . Contradiction. Soient f un ot compatible et un cycle de co ut unitaire non nul. Si le ux de chaque arc du cycle nest pas egal a ` lune de ses deux bornes, le ot f nest pas de co ut minimum. Il est possible en eet soit daugmenter soit de diminuer dune Version 6 f evrier 2005

250

Chapitre 8. Flots

m eme quantit e strictement positive tous les ux des arcs de et lune de ces deux transformations conduit a ` un ot compatible strictement meilleur. Un arc u de A est dit libre vis-` a-vis du ot f si a(u) < f (u) < b(u), dans le cas contraire il est dit bloqu e . Un cycle el ementaire est libre si tous ses arcs sont libres. Proposition 2.8. Un r eseau valu e consistant poss` ede un ot de co ut minimum sans cycles libres. Le graphe partiel des arcs libres peut etre compl et e par des arcs bloqu es pour former un arbre (appel e arbre-base). Preuve. Soit R un r eseau valu e consistant et f un ot compatible de co ut minimum. Sil existe un cycle libre, ce cycle est de co ut nul. Posons alors + = min{f (u) a(u) | u }, = min{b(u) f (u) | u }, = min{, } et g = f . La fonction g est un ot compatible de co ut minimum de R qui poss` ede au moins un arc libre de moins que f . En r ep etant cette transformation, on aboutit a ` un ot compatible de co ut minimum sans cycle libre. Dominance des ots entiers Soit R = (G, a, b, c) un r eseau valu e consistant. Nous montrons quil existe un ot compatible de co ut minimum dont tous les ux sont entiers. On dit encore que les ots entiers sont dominants. La preuve sappuie sur une propri et e de la matrice dincidence sommets-arcs dun arbre orient e, cest-` a-dire un graphe obtenu par orientation des ar etes dun arbre (voir gure 2.5), et sur la proposition 2.8. Proposition 2.9. Soit H = (T, B ) un arbre orient e. Le graphe H poss` ede une matrice dincidence triangulaire inf erieure dont tous les el ements diagonaux sont non nuls. Preuve. Nous raisonnons par r ecurrence sur n = Card(T ). La propri et e est vraie pour n = 2. Soit H un arbre orient e a ` n sommets (n > 2), t une feuille de H , u larc incident a ` cette feuille et Ht le sous-graphe induit par T {t}. Le graphe Ht est un arbre orient e a ` n 1 sommets qui poss` ede (par induction) une matrice dincidence triangulaire inf erieure Mt satisfaisant la proposition. La matrice dincidence M de H obtenue en ajoutant a ` Mt la colonne u et le sommet t comme premi` ere ligne et premi` ere colonne satisfait egalement la proposition. La gure 2.5 illustre la construction dune telle matrice dincidence. Proposition 2.10. Un r eseau valu e consistant poss` ede un ot de co ut minimum dont tous les ux sont entiers.

Version 6 f evrier 2005

8.3. Probl` eme du ot maximum


6 c 2 b 1 a 3 6 g arbre orient b a 1 0 0 0 0 0 1 0 1 0 1 -1 d 5 e 4 f e f d c g -1 0 0 0 0 5 0 -1 0 1 0 4 0 0 1 -1 0 3 0 0 0 -1 0 2 0 0 0 0 -1 1 0 0 0 0 0

251

Figure 2.5: Matrice dincidence dun arbre orient e. Preuve. Soient R un r eseau valu e consistant. Dapr` es la proposition 2.8, il existe un ot compatible f de co ut minimum sans cycle libre et un arbre-base pour f dont les arcs constituent lensemble H . Nous notons alors K lensemble des arcs du coarbre. Dapr` es la proposition 2.9, il existe une matrice dincidence M de G compos ee dune matrice dincidence de H not ee MH v eriant les propri et es de la proposition 2.9 et dune matrice dincidence de K not ee MK . La condition d equilibre satisfaite par le ot compatible f s ecrit (en utilisant les notations habituelles) : MH fH = MK fK . Le vecteur fK est entier puisque les arcs de K sont bloqu es pour le ot compatible f . Le vecteur fH , solution unique de l equation d equilibre, est donc egalement entier. Il r esulte de la proposition 2.10 que la recherche dun ot compatible de co ut minimum peut etre r ealis ee dans le sous ensemble des ots compatibles entiers du r eseau.

8.3

Probl` eme du ot maximum

Un probl` eme de ot maximum not e (G, b, s, p) est sp eci e par la donn ee dun graphe orient e G = (S, A) connexe sans boucles, de deux sommets distincts s et p appel es respectivement source et puits et dune fonction capacit e maximale b telle que pour tout arc u de A, la capacit e b(u) soit un entier strictement positif. Un ot de s a ` p est une fonction g de F (A) satisfaisant les contraintes (D ) cidessous : eg (s) 0 eg (p) 0 (D ) 0g b x S {s, p}, eg (x) = 0. Version 6 f evrier 2005

252

Chapitre 8. Flots

La valeur de g est d enie par g =eg (p) et le probl` eme est la recherche dun ot g de sa ` p de valeur maximum. En munissant le graphe G dun arc de retour not e u0 dorigine p, dextr emit e s et de capacit e maximale b (p), on obtient un r eseau associ e au probl` eme (G, b, s, p). Les ots compatibles de ce r eseau sont en bijection avec les fonctions g solutions de (D ). De plus si f est le ot du r eseau associ ea ` g dans la bijection, on a eg (p) = f (u0 ). Le probl` eme revient donc a ` d eterminer un ot compatible du r eseau associ e dont le ux de larc de retour est maximum. Nous emploierons dans la suite le terme ot pour d esigner un ot compatible du r eseau associ e. Le probl` eme du ot maximum a et e tr` es etudi e et a donn e lieu a ` des algorithmes de plus en plus ecaces depuis les travaux de Ford et Fulkerson. On peut regrouper ces algorithmes en deux classes, les m ethodes primales qui construisent une suite de ots de valeur croissante et les m ethodes duales qui construisent une suite de ots approch es, appel es pr eots , dont le dernier est un ot maximum. Nous pr esentons dabord lalgorithme g en erique de Ford et Fulkerson, puis un algorithme ecace repr esentatif de chacune des classes, lalgorithme primal des distances estim ees au puits et lalgorithme dual du pr eot. Nous terminons par deux variantes tr` es ecaces de lalgorithme du pr eot, lalgorithme de Karzanov et lalgorithme des exc` es echelonn es. Nous commen cons par une simplication naturelle du r eseau. Soit (G, b, s, p) un probl` eme de ot maximum de s a ` p. Comme nous lavons vu dans la section 8.2.2, le probl` eme du ot de valeur maximum de s a ` p est un cas particulier du probl` eme du ot compatible de co ut minimum. Il existe donc dapr` es la proposition 2.10 un ot f de valeur maximum dont tous les ux sont entiers. Dapr` es le th eor` eme 2.4, le ot f est une combinaison lin eaire a ` coecients entiers strictement positifs des ots canoniques de circuits de G. Or seuls les circuits de la d ecomposition passant par larc de retour u0 contribuent a ` la valeur de f . Il en r esulte que le ot obtenu en ne retenant dans la d ecomposition de f que les circuits passant par u0 est aussi de valeur maximum. Il existe donc un ot de valeur maximum qui est une combinaison lin eaire a ` coecients entiers strictement positifs de circuits passant par larc de retour u0 . Soit x un sommet qui nappartient pas a ` un chemin de s a ` p. Le graphe obtenu en supprimant x et tous les arcs adjacents a ` x contient encore tous les circuits de G passant par u0 . La valeur maximum dun ot de s a ` p dans le nouveau graphe est donc la m eme que celle associ ee au graphe G. Nous pouvons donc supposer sans perte de g en eralit e que tous les sommets du graphe G sont accessibles de s et co-accessibles de p. La gure 3.1 pr esente le r eseau associ ea ` un probl` eme de ot maximum et un ot f de ce r eseau. A cot e de chaque arc u sont inscrites sa capacit e maximale b(u) (entre parenth` eses) et le ux f (u).

Version 6 f evrier 2005

8.3. Probl` eme du ot maximum


A 4 (5) S 1 (1) (10) (3) 2 0 (2) B 0 C (2) (1) 0 1 (1) (1) 0 (4) 3 4 (3) 2 E D 0 (1) (4) 2 H 1 (3) (1) G 0 (3) 3 7 (3) 2 (5) P F 1 (2)

253

2 (2)

Figure 3.1: Un probl` eme de ot maximum et lun de ses ots. Graphe d ecart dun ot f Les algorithmes de r esolution du probl` eme du ot maximum sont fond es sur la recherche de cha nes dites am eliorantes le long desquelles sont r ealis ees des augmentations de ux. Comme nous le verrons, lecacit e de certains algorithmes augmente si les am eliorations de ot sont r ealis ees sur des cha nes de longueur minimum en nombre darcs. Pour ramener la recherche dune cha ne am eliorante a ` celle dun chemin, on d enit un outil tr` es utile : le graphe d ecart. Soit R le r eseau dun probl` eme de ot maximum (G, b, s, p) et soit f un ot de ce r eseau. Le graphe d ecart d Gf = (S, Af ) du ot f est un graphe valu e ayant les m emes sommets que G et dont les arcs sont d enis a ` partir des arcs de G par la proc edure graphe-d ecart suivante : proc edure graphe-d ecart(G, f ) ; Af := ; pour tout arc u de G faire si f (u) < b(u) alors ins erer dans Af larc u valu e par r (u ) = b(u) f (u) dorigine u et dextr emit e u+ nsi ; si f (u) > 0 alors ins erer dans Af larc u valu e par r (u ) = f (u) + dorigine u et dextr emit eu ; nsi ; npour ; retourner(Af ). Un arc u libre pour f produira donc les deux arcs u et u dans Gf , un arc u satur e produira seulement larc u et un arc u vide produira seulement larc u . Version 6 f evrier 2005

254

Chapitre 8. Flots

Un arc u est appel e repr esentant conforme de larc u, un arc u est appel e repr esentant non conforme de larc u. Les arcs u et u sont dits conjoints. La gure 3.2 montre le graphe d ecart du ot de la gure 3.1.
A 1 4 1 S 2 1 C 1 1 1 B 2 3 2 E 2 H 1 2 4 D 1 G 2 3 3 2 3 F 2 1 1 1 P

Figure 3.2: Un graphe d ecart. Donnons quelques propri et es simples du graphe d ecart. Tout arc v du graphe d ecart est le repr esentant conforme ou non conforme dun arc unique du graphe G appel e son p` ere . La notation condens ee v = u (respectivement v = u ) signiera que larc v de Gf est le repr esentant conforme (respectivement non conforme) de larc u de G. Un arc u de G a donc pour le ot f un ou deux repr esentants dans Gf . Chacun de ces repr esentants a une valuation strictement positive et la somme des valuations des repr esentants de u est toujours egale a ` b(u). Soit u un arc de G. Faisons varier son ux f (u) de 0 a ` b(u). Si f (u) = 0, larc u existe et larc u nexiste pas dans Gf . Si f (u) augmente mais natteint pas la valeur b(u), larc u apparait dans Gf , enn lorsque f (u) = b(u), larc u disparait de Gf . Une augmentation de ux est donc susceptible de faire appara tre et/ou dispara tre un arc du graphe d ecart. Il en est bien s ur de m eme dune diminution de ux. La fonction fondamentale du graphe d ecart Gf est de ramener la recherche dun ot meilleur que f a ` celle dun chemin de s a ` p dans Gf . Un tel chemin est appel e chemin am eliorant . Soit un chemin am eliorant et la plus petite valuation des arcs de ce chemin, le lemme 3.1 montre que la nouvelle fonction f calcul ee par la proc edure augmenter-flot ci-dessous est un ot strictement meilleur. proc edure augmenter-flot(f, ) ; :=min{r (v ) | v arc de } ; pour chaque arc v de faire si v = u alors f (u) := f (u) + nfaire si v = u alors f (u) := f (u) nfaire npour f (u0 ) :=f (u0 ) + . Version 6 f evrier 2005

8.3. Probl` eme du ot maximum

255

Lemme 3.1. Sil existe un chemin am eliorant dans Gf , le ot f nest pas de valeur maximum. Preuve. Soit un chemin am eliorant du graphe d ecart Gf . Notons ( > 0) la plus petite valuation des arcs de ce chemin. Appelons + (respectivement ) les arcs conformes (respectivement non conformes) du chemin . Si nous notons g la nouvelle fonction f a ` lissue de la proc edure augmenter-flot, g est un ot + > f par d enition des arcs conformes et non conformes et nous avons g =f puique > 0 . Il est important de remarquer que la proc edure augmenter-flot supprime au moins un arc du graphe d ecart Gf . En eet, si est la valuation dun arc v = u + de , on a = b(u) f (u) et g (u) = b(u). Larc v de Gf nappartient donc pas a ` Gg . Si est la valuation dun arc v = u de , on a = f (u) et g (u) = 0. Larc v de Gf nappartient donc pas a ` Gg .

8.3.1

Lalgorithme g en erique de Ford et Fulkerson

Tous les algorithmes de r esolution du probl` eme de ot maximum utilisent comme crit` ere de terminaison un th eor` eme important, d ua ` Ford et Fulkerson, que lon peut rapprocher du th eor` eme de la dualit e en programmation lin eaire continue. Les objet duaux des ots sont appel es coupes . Une coupe est un sous-ensemble C + darcs de G tel que C = (T ) o` u T est un sous-ensemble de sommets contenant s et ne contenant pas p. La valeur dune coupe est par d enition b(C ). La gure 3.3 montre une coupe du r eseau de la gure 3.1. Cette coupe, constitu ee des arcs + de {S, A, B, C }, a la valeur 10. Au probl` eme de recherche dun ot de valeur
A 3 S B 1 1 C 1 E H 4 D

Figure 3.3: Une coupe. maximum correspond par dualit e le probl` eme de recherche dune coupe de valeur minimum. Le th eor` eme de Ford et Fulkerson montre que ces deux valeurs sont egales. Th eor` eme 3.2 (de Ford et Fulkerson). La valeur maximum dun ot est egale a ` la valeur minimum dune coupe. Version 6 f evrier 2005

256

Chapitre 8. Flots

Preuve. Nous montrons dabord que la valeur b(C ) dune coupe C = + (T ) dun ot f . En eet, par (s T, t T ) est sup erieure ou egale a ` la valeur f sommation des equations d equilibre sur les sommets de T , il vient : f (T ) = f (u0 ) +
u (T ){u0 }

f (u) = f + (T ) b(C ).

Supposons maintenant que f soit un ot maximum. Dapr` es le lemme 3.1, il nexiste pas de chemin de s a ` p dans le graphe d ecart Gf . Notons alors T lensemble des sommets accessibles a ` partir de s dans Gf . Un arc u de G sortant de T est satur e car dans le cas contraire, son repr esentant conforme serait un arc sortant de T dans Gf . Un arc u de G entrant dans T est vide car dans le cas contraire, son repr esentant non conforme serait, lui, un arc sortant de T dans Gf . Il en r esulte que : f (T ) = f (u0 ) = f + (T ) = b(C ). La coupe C est donc de valeur minimum. On d eduit directement du lemme 3.1 et du th eor` eme 3.2 la condition n ecessaire et susante suivante : Proposition 3.3. Un ot f est maximum si et seulement sil nexiste pas de chemin am eliorant dans Gf . Le th eor` eme pr ec edent conduit tr` es naturellement a ` un algorithme g en erique, d u a ` Ford et Fulkerson. proc edure Ford-Fulkerson (G, b, s, p) ; f := 0 ; tantque p est accessible a ` partir de s dans Gf faire d eterminer un chemin am eliorant de Gf ; augmenter-flot (f, ) ntantque. Cet algorithme se termine puisqu` a chaque it eration la valeur du ot, majoror ee par b (p), augmente au moins dune unit e. Dapr` es le th eor` eme de Ford et Fulkerson, le dernier ot obtenu est de valeur maximum. Le graphe d ecart de la gure 3.2 montre que le ot est maximum puisque lensemble des sommets accessibles a ` partir de S , point es dun rond noir, ne contient pas P . En laissant totalement libre le choix du chemin am eliorant, lalgorithme pr ec edent peut r ealiser un tr` es grand nombre dit erations. Sur lexemple de la gure 3.4, Version 6 f evrier 2005

b(C ). Il en r esulte : f

8.3. Probl` eme du ot maximum

257

lalgorithme peut, a ` partir du ot nul, augmenter la valeur du ot alternativemnt sur le chemin (1, 2, 4, 3) et sur la cha ne (1, 4, 2, 3). Le ot maximum est alors obtenu apr` es M it erations alors que deux it erations susent. Pour transformer cet algorithme g en erique en un algorithme ecace, il faut contraindre le choix du chemin am eliorant. Un crit` ere judicieux, d ua ` Edmonds et Karp, consiste a ` choisir un chemin am eliorant de longueur minimum (en nombre darcs). Nous montrerons en eet que la longueur dun plus court chemin am eliorant ne peut pas cro tre dune it eration sur lautre pourvu que laugmentation de ot soit r ealis ee le long dun tel chemin. De plus, apr` es au plus m it erations (o` u m est le nombre darcs de G), cette diminution est stricte.
(M) s=1 (M) 4 2 (1) (M) p=3 (M)

Figure 3.4: Un probl` eme de ot maximum.

8.3.2

Lalgorithme des distances estim ees au puits

La faiblesse essentielle de lalgorithme g en erique est de ne retenir aucune information sur les chemins am eliorants du graphe d ecart dune it eration sur lautre alors que deux graphes d ecart successifs sont souvent tr` es voisins. Le principe de lalgorithme des distances estim ees au puits est de calculer, en chaque sommet du graphe d ecart, une evaluation par d efaut de sa distance au puits. On peut alors calculer ecacement un plus court chemin am eliorant . Distance estim ee et graphe dadmissibilit e Soient Gf = (S, Af ) le graphe d ecart dun ot f et n le nombre de sommets de Gf . Nous appelons distance estim ee une application : S N telle que : a) (p) = 0 ; b) pour tout arc v de Gf , (v ) (v + ) + 1. Si le sommet p est accessible a ` partir du sommet x dans Gf , la distance estim ee du sommet x est une evaluation par d efaut de la longueur minimum (en nombre darcs) dun chemin de x a ` p dans Gf . Il en r esulte que si (y ) n pour y S , il nexiste pas de chemin de y a ` s dans Gf . Un arc v de Gf est dit admissible si (v ) = (v + ) + 1. Un chemin admissible est un chemin am eliorant dont les arcs sont admissibles. Un chemin admissible est donc un plus court chemin am eliorant. Nous appellerons graphe dadmissibilit e Version 6 f evrier 2005

258

Chapitre 8. Flots

le graphe partiel de Gf form e des arcs admissibles. Le graphe dadmissibilit e ne poss` ede pas de circuits et aucun arc admissible na le sommet p comme origine. Initialisation Le ot initial est le ot nul et la distance estim ee initiale dun sommet x est la longueur minimum dun chemin de x a ` p dans G0 . Notons que cette longueur est d enie pour tout sommet x puisque tout sommet est par hypoth` ese co-accessible de p. Le chemin courant initial est r eduit au sommet s. La proc edure initialiserdep r ealise cette initialisation. proc edure initialiser-dep(G, b, s, p) ; := (s) ; f := 0 ; z := s ; pour tout sommet x de G faire (x) := l(x, p, G0 ). On note l(x, p, G0 ) la longueur minimum dun chemin de x a ` p dans G0 , le chemin courant, f le ot courant, et z lextr emit e de . It eration courante Soit le chemin courant et z son extr emit e. Une it eration de lalgorithme consiste a ` prolonger a ` partir de son extr emit e dans le graphe dadmissibilit e jusqu` a ce que lextr emit e z du chemin soit une sortie du graphe dadmissibilit e. Si z = p, le chemin est un plus court chemin am eliorant. On am eliore alors le ot le long de ce chemin, on ne modie pas la distance estim ee et lon r einitialise le chemin courant a ` (s). Si z = p, on augmente strictement la distance estim ee du sommet z et on supprime le dernier arc de qui nest plus admissible. La proc edure it erer-dep ci-dessous r ealise lit eration courante. proc edure it erer-dep ; prolonger() ; soit z lextr emit e de ; si z = p alors augmenter-flot(f, ) ; := (s) sinon augmenter-distance(z ) ; supprimer-dernier-arc() nsi.

Version 6 f evrier 2005

8.3. Probl` eme du ot maximum

259

La proc edure prolonger() transforme le chemin en un chemin du graphe dadmissibilit e qui admet comme sous-chemin initial et dont lextr emit e z nest pas lorigine dun arc admissible. Sa complexit e est de lordre du nombre darcs ajout es. Lorsque est un chemin am eliorant, la proc edure augmenter-flot am eliore le ot le long du chemin et met a ` jour le graphe d ecart. Comme le chemin est el ementaire, il comporte au plus n 1 arcs. La complexit e de la proc edure augmenter-flot est donc O (n). Lorsque nest pas un chemin am eliorant, la proc edure augmenter-distance augmente la valeur de (z ) comme suit : (z ) := n si Sf (z ) est vide minySf (z ) {1 + (y )} sinon

(Sf (z ) est lensemble des successeurs de z dans Gf dorigine z ) et met a ` jour le graphe dadmissibilit e. La gure 3.5, o` u les distances estim ees sont inscrites a ` c ot e de chaque sommet et o` u les arcs de sont epais, montre cette mise a ` jour. Si le sommet z a k successeurs dans G, la complexit e de augmenter-distance est O (k ). Apr` es lex ecution de augmenter-distance, le dernier arc de nest plus admissible. La proc edure supprimer-dernier-arc supprime le dernier arc de si la longueur de est strictement positive et laisse inchang e sinon. Le nouveau chemin est donc admissible. La complexit e de la proc edure supprimerdernier-arc est O (1).
6 s 8 7 5 4 6 8 s 7 5 4 5 z 2 5 aprs l' augmentation de distance 4 z 5 avant l' augmentation de distance

Figure 3.5: Mise a ` jour de la distance estim ee

Terminaison Lalgorithme se termine lorsque la distance estim ee du sommet s est sup erieure ou egale a ` n. Par d enition de la distance estim ee, il nexiste plus alors de chemin Version 6 f evrier 2005

260

Chapitre 8. Flots

am eliorant et le ot obtenu est maximum. Il en r esulte la proc edure dep cidessous : proc edure dep ; initialiser-dep tantque (s) < n faire it erer-dep ntantque. Les gures 3.6, 3.7 et 3.8 illustrent le d eroulement de lalgorithme des distances estim ees au puits sur le r eseau de la gure 3.1. La gure 3.6 montre en (A) le graphe d ecart du ot nul initial, les distances estim ees (coin nord-est du sommet) et le graphe dadmissibilit e (arcs epais). Lalgorithme r ealise ensuite une augmentation de ot pour le chemin admissible (S, C, H, P ) puis augmente la distance estim ee du sommet S . Le graphe d ecart a ` lissue de cette premi` ere augmentation de la distance estim ee est repr esent e en (B). Suivent ensuite trois augmentations de ot pour les chemins (S, A, D, F, P ), (S, B, E, H, P ) et (S, A, D, G, P ) a ` lissue desquelles la valeur du ot est 6 et le graphe d ecart celui de la gure 3.7. Lalgorithme augmente alors la distance du sommet F et r ealise ensuite un augmentation de ot sur le chemin (S, A, D, F, G, P ). Le ot est alors optimal comme le montre le graphe d ecart de la gure 3.8 o` u les sommets accessibles a ` partir de S sont point es. Lalgorithme nest cependant pas termin e car il reste encore des augmentations de distance a ` ex ecuter pour que la distance estim ee de S devienne sup erieure ou egale a ` n = 10. Convergence et complexit e Apr` es avoir d ecrit lalgorithme des distances estim ees, nous montrons maintenant que cet algorithme se termine, quil calcule un ot de valeur maximum et que sa complexit e est O (n2 m). Quelques propri et es seront utiles pour parvenir a ` ces r esultats. Consid erons la suite des fonctions calcul ees par la proc edure dep. On note 0 la fonction initiale et k la fonction a ` lissue de lit eration k . Proposition 3.4. La suite k est une suite croissante de fonctions distance estim ee . Si lit eration k r ealise une augmentation de ot, alors k = k1 ; si elle r ealise une augmentation de distance, alors k > k1 . Preuve. Consid erons le cas dune augmentation de ot et notons g le nouveau ot. Si lensemble des arcs du nouveau graphe d ecart Gg est inclus dans lensemble des arcs de Gf , la fonction est toujours une distance estim ee pour Gg . Supposons que le changement de ux du p` ere u dun arc v = u de cr ee larc u dans Gg . Larc v etant admissible, on a (v ) = (v + ) + 1 et donc (v + ) = Version 6 f evrier 2005

8.3. Probl` eme du ot maximum

261

(v ) 1 (v ) + 1. Il en est de m eme si le changement de ux du p` ere u dun arc v = u de cr ee larc u dans Gg . La fonction respecte donc les deux conditions dune distance estim ee pour Gg . Consid erons le cas dune augmentation de la distance estim ee du sommet z due a ` la proc edure augmenter-distance et notons la nouvelle fonction . Pour tout sommet distinct de z on a (z ) = (z ) et pour le sommet z nous avons : (z ) := n si Sf (z ) est vide minySf (z ) {1 + (y )} sinon

Il en r esulte que (z ) est strictement sup erieur a ` (z ). De plus, pour tout sommet x successeur de z on a (z ) (x) + 1 et pour tout pr ed ecesseur y de z on a (y ) < (z ) + 1. La fonction est donc une nouvelle distance estim ee pour Gf strictement sup erieure a ` . Pour prouver que lalgorithme se termine nous utilisons le lemme 3.5 qui permet de majorer le nombre dex ecutions de la proc edure augmenter-flot entre deux ex ecutions de la proc edure augmenter-distance.
A 5 S 3 2 1 (A) B 3 4 2 3 3 1 C 2 2 E 1 1 2 4 D 2 3 1 G 3 H 1 1 3 5 P 0 F 2 1 2

A 5 S 4 3 B 1 (B)

3 4 2 3 3 1 2 1 E 1 2 4 D 2 3 1

F 2 G 3 H

1 2 1 3 4 1 1 P 0

C 2

Figure 3.6: Initialisation et premi` ere augmentation de distance. Lemme 3.5. Entre deux suppressions successives dun arc v du graphe d ecart, la distance estim ee de v + a augment e dau moins deux unit es. Version 6 f evrier 2005

262
A 2 4 1 B 2 1 1 C 2 1 3 3 2 3 2 E 1 1 3 1 2 2 H 2 3 D 2 1 G 2 1 F 1

Chapitre 8. Flots

2 2 1 3 1 2 P 1 3 2 0

Figure 3.7: Seconde augmentation de distance.


A 1 S 4 1 B 2 1 1 C 2 1 4 3 3 2 3 2 E 1 4 3 1 2 2 H 2 D 2 1 G 1 1 3 1 F 2 2 1 1 P 2 3 2 0

Figure 3.8: Premier graphe d ecart dun ot maximum. Preuve. Notons 1 la distance estim ee lors de la premi` ere suppression de larc + v , on a 1 (v ) = 1 (v ) + 1 puisque v est admissible. Notons 2 la distance estim ee lors de la cr eation suivante de v dans un graphe d ecart. Comme cette cr eation ne peut avoir lieu que si larc conjoint de v appartient a ` un chemin admissible am eliorant, on aura alors 2 (v + ) = 2 (v ) + 1. Notons enn 3 la distance estim ee lors de la suppression suivante de v , nous avons : 3 (v + ) 2 (v + ) = 2 (v ) + 1 1 (v ) + 1 = 1 (v + ) + 2 Nous sommes maintenant en mesure de prouver la validit e de lalgorithme des distances estim ees au puits et de calculer sa complexit e. Th eor` eme 3.6. La proc edure dep calcule un ot maximum en temps O (n2 m). Preuve. Dapr` es le lemme 3.5, un m eme arc peut etre supprim e dun graphe d ecart au plus n/2 fois. En eet, si larc v etait supprim e au moins n/2 + 1 fois, la distance estim ee de v + au d ebut de la derni` ere augmentation de distance serait sup erieure ou egale a ` 2 n/2 n. Or comme v + est accessible a ` partir de s, on aurait (s) n en d ebut dit eration. Do` u la contradiction. Comme chaque Version 6 f evrier 2005

8.3. Probl` eme du ot maximum

263

ex ecution de la proc edure augmenter-flot supprime au moins un arc, elle est appel ee au plus 2m n/2 fois. Il en r esulte que lalgorithme se termine puisque toute it eration r ealise soit une augmentation de ot soit une augmentation de distance. Lors de la terminaison, on a par d enition (s) n. Le dernier graphe d ecart ne contenant pas de chemin am eliorant, le dernier ot est de valeur maximum. Pour evaluer la complexit e de la proc edure dep, nous allons suivre l evolution de la longueur L() du chemin courant . Cette longueur cro t lors de chaque ex ecution de prolonger, d ecroit dune unit e au plus lors de lex ecution de augmenter-distance, et devient nulle lors de lex ecution de augmenterflot. La complexit e de la proc edure prolonger est proportionnelle au nombre darcs ajout es, cest a ` dire a ` laccroissement de L(). Comme le nombre dex ecutions de la proc edure augmenter-flot est au plus 2m n/2 et la longueur L() est au plus n, la somme des variations n egatives de L() dues aux ex ecutions de augmenter-flot est major ee par 2nm n/2 . Comme augmenter-distance est ex ecut ee au plus n fois par sommet, la somme des variations n egatives de L() dues aux ex ecutions de augmenter-distance est major ee par n2 . Il en r esulte que la somme cumul ee des variations n egatives de L() est major ee par 2 n + 2nm n/2 . Comme la longueur initiale de est nulle et sa longueur terminale inf erieure ou egale a ` n, la somme cumul ee des variations positives de L() est major ee par n + n2 + 2nm n/2 . La complexit e de toutes les ex ecutions de 2 la proc edure prolonger est donc O (n m). La complexit e dune ex ecution de augmenter-flot est O (n), donc la complexit e de toutes les ex ecutions de la proc edure augmenter-flot est aussi O (n2 m). La complexit e dune ex ecution de augmenter-distance est de lordre du nombre de successeurs de z dans G et la distance estim ee dun sommet est augment ee au plus n fois, donc la complexit e de toutes les ex ecutions de la proc edure augmenter-distance est O (nm). Enn la complexit e O (1) de la proc edure supprimer-dernier-arc est domin ee par celle de augmenter-distance. Il en r esulte que la complexit e de la proc edure 2 dep est O (n m).

8.3.3

Lalgorithme du pr eot

Lalgorithme des distances estim ees au puits r ealise des augmentations de ot le long de chemins am eliorants et maintient de ce fait la satisfaction des conditions d equilibre. A chaque etape on dispose ainsi dun ot r ealisable. Une id ee duale consiste a ` saturer initialement les arcs sortant de s et a ` transporter vers le puits la plus grande partie des exc` es positifs ainsi cr e es en r ealisant a ` chaque it eration une r eduction de lexc` es dun sommet. D` es que lexc` es du sous-ensemble de sommets S = S {s, p} est nul, le pr eot obtenu est un ot de s a ` p de valeur maximum. Cet algorithme est une m ethode duale car tant que lalgorithme nest pas termin e, la fonction f nest pas un ot de s a ` p. Version 6 f evrier 2005

264

Chapitre 8. Flots

Etant donn e un probl` eme de ot maximum (G, b, s, p), un pr eot est une fonction de F (A) telle que : ef (s) 0 ef (p) 0 0f b x S {s, p}, ef (x) 0

Pour un pr eot f , le graphe d ecart Gf , la fonction distance estim ee au puits et le graphe dadmissibilit e sont d enis comme dans le cas dun ot de s a ` p (voir section 8.3. Un sommet actif est un sommet distinct de s et de p dont lexc` es est strictement positif. Initialisation Le pr eot initial f0 est obtenu en saturant tous les arcs sortant du sommet s et en allouant un ux nul a ` tous les autres arcs. La distance estim ee initiale dun sommet x de S est la longueur minimum en nombre darcs dun chemin de x a `p dans le graphe d ecart Gf0 , elle est not ee l(x, p, Gf0 ). La distance estim ee initiale de s est n et celle de p est nulle. La proc edure initialiser-preflot r ealise ces initialisations. proc edure initialiser-pr eflot ; f := 0 ; pour tout arc u sortant de s faire f (u) := b(u) npour ; (p) := 0 ; (s) := n ; pour tout sommet x de S faire (x) := l(x, p, Gf0 ) npour.

Linitialisation joue un r ole important. En eet, comme les arcs sortant de s sont initialement satur es, il nexiste pas de chemin am eliorant dans le graphe d ecart initial. De plus la distance estim ee du sommet s nest jamais modi ee. Il nexistera donc jamais de chemin am eliorant dans les graphes d ecart des pr eots successifs. It eration courante Une it eration de lalgorithme du pr eot consiste a ` choisir un sommet actif x. Sil nexiste pas darc admissible dorigine x, la distance estim ee de x au puits est augment ee strictement comme dans la proc edure augmenter-distance de lalgorithme des distances estim ees au puits. Sinon on choisit un arc admissible v dorigine x et lon r eduit lexc` es du sommet origine x en modiant le ux du p` ere u de v . La proc edure reduire-exc` es ci-dessous r ealise cette r eduction.

Version 6 f evrier 2005

8.3. Probl` eme du ot maximum proc edure r eduire-exc` es(f, v ) ; si v = u alors := min{ef (v ), b(u) f (u)} ; f (u) := f (u) + sinon := min{ef (v ), f (u)} ; f (u) := f (u) nsi.

265

Nous dirons quune r eduction dexc` es est saturante si est egal a ` la valuation de larc v choisi dans Gf . Si larc v est le repr esentant conforme de larc u de G (cest-` a-dire si v = u ), larc u est satur e apr` es la r eduction et v nappartient donc pas au nouveau graphe d ecart. Si larc v est le repr esentant non conforme de larc u de G (cest-` a-dire si v = u ), larc u est vide apr` es la r eduction et v nappartient donc pas au nouveau graphe d ecart. Une r eduction saturante supprime donc un arc dans lancien graphe d ecart. Terminaison Si lensemble des sommets actifs est vide a ` lissue dune it eration, le dernier pr eot est un ot de s a ` p et il nexiste pas de chemin am eliorant dans le graphe d ecart correspondant. Le crit` ere de terminaison de lalgorithme du pr eot est labsence de sommets actifs. Il en r esulte la proc edure pr eflot ci-dessous : proc edure pr eflot(G, b, s, p) ; initialiser-pr eflot ; tantque lensemble des sommets actifs est non vide faire choisir un sommet actif x ; sil existe un arc admissible dorigine x alors choisir un arc admissible v dorigine x ; r eduire-exc` es(f, v ) sinon augmenter-distance(x) nsi ntanque. Les gures 3.9, 3.10 et 3.11 illustrent une ex ecution de lalgorithme sur lexemple de la gure 3.1. La distance estim ee est dans le coin nord-est du sommet et lexc` es dans le coin sud-est. La gure 3.9 montre le graphe d ecart du pr eot initial. Les premi` eres r eductions dexc` es cod ees par (sommet actif, nature, arc admissible) sont les suiv-

Version 6 f evrier 2005

266
A 3 5 5 S 10 -9 3 1 C B 2 3 3 3 2 1 2 1 1 1 E F D 2 0 1 1 2 0 4 G 3 H 1 0 3 1 0 2 1 0 2 3 5

Chapitre 8. Flots

0 0

Figure 3.9: Graphe d ecart du pr eot initial. antes, ligne par ligne : (A, sat, (A, D )) (B, sat, (B, E )) (C, sat, (C, H )) (B, nonsat, (B, D )) (D, sat, (D, F )) (D, sat, (D, G)) (F, sat, (F, P )) (G, nonsat, (G, P )) (H, nonsat, (H, P )) (E, nonsat, (E, H )) (H, nonsat, (H, P )) Aucun des sommets actifs A, B ou F nest alors lorigine dun arc admissible. Lalgorithme r ealise une augmentation de distance pour F , les r eductions (F, nonsat, (F, G)) et (G, nonsat, (G, P )), une augmentation de distance pour D et la r eduction (D, nonsat, (D, B )). Il en r esulte le graphe d ecart de la gure 3.10. La valeur maximum est atteinte mais certains exc` es sont encore positifs.
A 5 3 S -9 3 1 2 3 B 3 1 1 C 2 0 1 2 3 1 F 1 1 G 2 2 H 1 0 3 1 0 2 0 2 1 2 P 1 3 2 0

4 D 4 0 1 2 E 0 1

Figure 3.10: La valeur maximum est atteinte. Tous ces exc` es doivent maintenant reuer vers lentr ee s. Lalgorithme r ealise alors des augmentations de distance jusqu` a ce que lun des deux arcs (A,S) ou (B,S) devienne admissible. La gure 3.11 montre le dernier graphe d ecart lorsque les exc` es de tous les sommets de S sont nuls.

Version 6 f evrier 2005

8.3. Probl` eme du ot maximum


11 A 0 2 3 10 S -7 2 B 1 1 1 1 C 2 0 1 11 0 2 E 2 0 2 H 2 F 3 D 10 0 1 1 1 G 1 0 3 1 0 2 0 1 2 2 P 1 3 2 0 7

267

Figure 3.11: Le dernier graphe d ecart. Convergence et complexit e Nous montrons dans cette section que lalgorithme du pr eot se termine et nous calculons sa complexit e. Deux lemmes pr eliminaires nous seront utiles. Lemme 3.7. La distance estim ee dun sommet actif est inf erieure a ` 2n. Preuve. Supposons le sommet y actif pour le pr eot f et montrons quil existe alors un chemin el ementaire de s a ` y dans G dont tous les arcs ont un ux strictement positif. Consid erons le graphe H = (S {q }, A B ) obtenu a ` partir de G en ajoutant un sommet q et les arcs suivants : pour tout sommet actif x, ajouter un arc wxq dorigine x et dextr emit e q; ajouter un arc w1 dorigine p et dextr emit e q; ajouter un arc w0 dorigine q et dextr emit e s. D enissons la fonction g de F (A B ) par : f (u) si u A ef (x) si u = wxq g (u) = ef (s) si u = w0 ef (p) si u = w1 La fonction g est un ot strictement positif du graphe H car : ef (x) g (wxq ) = 0 si x est actif dans S ef (x) = 0 si x nest pas actif dans S eg (x) = e ( p ) g ( w ) = 0 si x = p f 1 ef (s) + g (w0 ) = 0 si x = s

Le ot g est donc une combinaison lin eaire a ` coecients entiers strictement positifs de circuits de H . Lun au moins de ces circuits passe par larc wyq et ce circuit emprunte larc w0 . Soit le chemin el ementaire de s a ` y issu de ce circuit. Les arcs de sont des arcs de G dont les ux pour f sont strictement positifs. Il existe donc dans le graphe d ecart Gf un chemin de y a ` s form e par les repr esentants Version 6 f evrier 2005

268

Chapitre 8. Flots

non conformes des arcs de . Comme la distance estim ee de s reste constante et egale a ` n, on a (y ) (s) + (n 1) < 2n. Le lemme 3.7 a deux cons equences importantes. Comme le nombre daugmentations de la distance estim ee dun m eme sommet est inf erieur a ` 2n, le nombre total dex ecutions de la proc edure augmenter-distance est inf erieur a ` 2n2 . Dautre part le nombre dex ecutions de la proc edure r eduire-exc` es entre deux augmentations de la distance est lui-aussi born e. En eet, cette proc edure ne modie pas la fonction distance estim ee mais fait d ecro tre dau moins une unit e le nombre xS ef (x) (x). Il en r esulte que lalgorithme du pr eot se termine.

eduireNous allons maintenant evaluer le nombre dex ecutions de la proc edure r ` erant s epar ement les r eductions saturantes et non saturantes. exces en consid Lemme 3.8. La proc edure pr eot r ealise au plus 2nm r eductions saturantes.

Preuve. Comme dans le cas de lalgorithme des distances estim ees au puits (Lemme 3.5), entre deux suppressions successives dun m eme arc v du graphe d ecart, la distance estim ee du sommet v + a augment e dau moins deux unit es. Un m eme arc du graphe d ecart est donc supprim e au plus n fois (lemme 3.7). Comme une r eduction saturante supprime au moins un arc, lalgorithme r ealise au plus 2nm r eductions saturantes. Lemme 3.9. La proc edure pr eot r ealise O (n2 m) r eductions non saturantes. Preuve. Nous notons T lensemble des sommets actifs et t un el ement g en erique de T . Nous consid erons comme fonction potentiel la somme = tT (t) des distances estim ees des sommets actifs . Remarquons dabord qu` a linitialisation 2 de lalgorithme, on a < n et qu` a sa terminaison est nul. Lors dune it eration, le sommet actif x est choisi et trois cas peuvent se pr esenter. a) Il nexiste pas darc admissible dorigine x. Lensemble T ne change pas mais la distance estim ee de x augmente strictement. Laccroissement de est alors egal a ` celui de (x). Il r esulte alors du lemme 3.7 que la somme 1 des accroissements de dus aux augmentations de distance est major ee par 2n2 . b) Une r eduction saturante est r ealis ee sur v . Notons y lextr emit e de larc v . La fonction distance estim ee ne change pas mais le sommet y peut devenir actif. Laccroissement de est alors major e par 2n (lemme 3.7). Comme lalgorithme ex ecute au plus 2nm r eductions saturantes, laccroissement 2 de d u aux r eductions saturantes est major e par 2n2 m. c) Une r eduction non saturante est r ealis ee sur v . Notons y lextr emit e de larc v . La fonction distance estim ee ne change pas, le sommet y peut devenir actif mais le sommet x nest plus actif. Laccroissement de est major e par (y ) (x) = 1. Donc si lalgorithme r ealise N r eductions non saturantes, laccroissement correspondant 3 de est plus petit que N . Version 6 f evrier 2005

8.3. Probl` eme du ot maximum

269

En r esum e, si nous notons laccroissement total de , nous avons = 1 + 2 + 3 et n2 . En utilisant les majorations pr ec edentes il vient : N 3 = + (1 + 2 ) 3n2 + 2n2 m. Les lemmes 3.7, 3.8 et 3.9 conduisent a ` l evaluation de la complexit e de lalgorithme du pr eot. Th eor` eme 3.10. La proc edure pr eot calcule un ot de valeur maximum en temps O (n2 m). Preuve. La complexit e de la proc edure augmenter-distance est O (k ) si k est le nombre de successeurs de x dans G. Comme pour un m eme sommet la distance estim ee est augment ee au plus 2n fois, le temps op eratoire des augmentations de distance est aussi en O (nm). Si lon associe a ` chaque sommet actif t un indicateur i(t) qui est un arc admissible sortant de t sil en existe ou un symbole sp ecial sinon, il sut dutiliser une structure de donn ees ( par exemple une liste doublement cha n ee avec pointeurs inverses), on r ealise en un temps O (1) les op erations de mise a ` jour de lensemble des couples (t, i(t)) lors dune r eduction dexc` es. Le temps op eratoire global des r eductions dexc` es est alors en O (n2 m). Il en r esulte 2 une complexit e O (n m) pour la proc edure pr eot. Lalgorithme du pr eot peut etre consid er e comme un algorithme g en erique car il laisse libre le choix a ` chaque it eration du nouveau sommet actif et de larc admissible. Nous allons pr esenter deux variantes ecaces de cet algorithme. Lalgorithme de Karzanov choisit le sommet actif le plus eloign e du puits, lalgorithme des exc` es echelonn es r eduit en priorit e les sommets actifs dont les exc` es sont les plus grands.

8.3.4

Lalgorithme de Karzanov

Cet algorithme s electionne a ` chaque it eration un sommet actif dont la distance estim ee au puits est maximum. Il en r esulte quentre deux ex ecutions cons ecutives de la proc edure augmenter-distance il y a au plus n r eductions non saturantes. En eet, une r eduction non saturante annule lexc` es dun sommet actif x et lexc` es de x restera nul puisque, tant que la fonction distance estim ee nest pas mise a ` jour, les sommets actifs choisis apr` es x ont un distance estim ee inf erieure ou egale 3 a ` celle de x. Le nombre total de r eductions non saturantes est donc en O (n ). Si lon maintient pour chaque valeur possible r de la distance estim ee une liste des sommets actifs dont la distance estim ee au puits est r et un pointeur vers la liste non vide de plus grand r , la s election dun sommet actif de plus grande distance estim ee est en O (1). La complexit e globale de lalgorithme de Karzanov est alors 3 O (n ). Version 6 f evrier 2005

270

Chapitre 8. Flots

8.3.5

Lalgorithme des exc` es echelonn es

Lid ee de r ealiser un echelonnement des exc` es et de r eduire en priorit e les plus grands exc` es conduit a ` une variante ecace de lalgorithme du pr eot. Cette variante d ecoupe lex ecution de lalgorithme du pr eot en phases. Si au d ebut de la phase k on dispose dun majorant Ek1 de lensemble des exc` es, cette phase s electionnera tant quil en existe un sommet actif dont lexc` es est sup erieur ou egal a ` Ek1 /2. Lorsquil nexiste plus de tels sommets, la phase k se termine et lon pose Ek = Ek1 /2 pour la phase k + 1. Une phase consiste donc a ` r eduire en priorit e les plus gros exc` es. Il est cependant n ecessaire daner ce principe g en eral qui pourrait trop souvent faire converger sur un m eme sommet une quantit e de ux trop grande pour pouvoir etre equilibr ee. Une telle situation pour un sommet x force en eet lalgorithme a ` augmenter susamment la distance estim ee du sommet x pour quil apparaisse dans le graphe d ecart un arc v admissible permettant de r eduire lexc` es du sommet x. La nouvelle r` egle de s election dun sommet actif est la suivante : Choisir un sommet actif x tel que ef (x) Ek1 /2 et (x) est minimum. La nouvelle r` egle de r eduction de lexc` es d ecrite par la proc edure r eduire-exc` esmodifi e ci-dessous assure quau cours de la phase k les exc` es de tous les sommets actifs seront major es par Ek1 . proc edure r eduire-exc` es-modifi e(f, v ) ; si v = u alors := min{ef (v ), b(u) f (u), Ek1 ef (v + )} ; f (u) := f (u) + sinon := min{ef (v ), f (u), Ek1 ef (v + )} ; f (u) := f (u) nsi. Lalgorithme est d ecrit par la proc edure exc` es- echelonn es ci-dessous o` u lon note B la capacit e maximale dun arc de G et T (f, E ) lensemble des sommets actifs pour le pr eot f et dont lexc` es est sup erieur ou egal a ` E.

Version 6 f evrier 2005

8.3. Probl` eme du ot maximum proc edure exc` es- echelonn es( G, b, s, p) ; log B E := 2 ; k := 1 + log B ; initialiser-pr eflot ; pour i de 1 a ` k faire tantque T (f, E ) = faire choisir un sommet x dans T (f, E ) de distance estim ee minimum ; si x est une sortie du graphe dadmissibilit e alors augmenter-distance( x) sinon choisir un arc admissible v dorigine x ; e( f, v ) es-modifi eduire-exc` r nsi ntantque E := E/2 npour.

271

Les nouvelles r` egles de r eduction et de s election utilis ees par lalgorithme induisent la propri et e suivante : Lemme 3.11. Pendant la phase k , une r eduction non saturante porte sur au moins Ek1 /2 unit es de ux et lexc` es de tout sommet reste inf erieur a ` Ek1 . Preuve. Soit x un sommet actif choisi lors dune r eduction non saturante de la phase k et soit v larc admissible dorigine x et dextr emit e y s electionn e pour cette r eduction. On a (y )=(x) 1 puisque v est admissible et par cons equent ef (y ) < Ek1 /2 dapr` es la nouvelle r` egle de s election. La r eduction n etant pas saturante, la valuation de v est sup erieure ou egale a ` min{ef (x), Ek1 ef (y )}. Comme ef (x) Ek1 /2 et Ek1 ef (y ) > Ek1 /2, la variation de ux du p` ere de v est sup erieure ou egale a ` Ek1 /2. Consid erons maintenant une r eduction quelconque de lexc` es du sommet actif x a ` partir de larc admissible v dorigine x et dextr emit e y . Apr` es cette r eduction, seul le sommet y a pu voir son exc` es augmenter et cette augmentation est inf erieure ou egale a ` Ek1 ef (y ). Lexc` es du sommet y inf erieur a ` Ek1 au d ebut de la phase k restera donc inf erieur a ` cette valeur pendant toute cette phase. Th eor` eme 3.12. La complexit e en temps de lalgorithme exc` es- echelonn es 2 est O (nm + n log B ). Preuve. Evaluons le nombre de r eductions non saturantes au cours de la phase k en consid erant la fonction potentiel : F = 1 Ek1
xS

ef (x)(x). Version 6 f evrier 2005

272

Chapitre 8. Flots

Au d ebut de cette phase, F est major ee par 2n2 puisque pour tout sommet x, ef (x) < Ek1 et (x) 2n (Lemme 3.7). Lors de la s election dun sommet actif x, examinons les variations de F dues aux augmentations de distance et aux r eductions saturantes a) Augmentation de distance. Lalgorithme augmente la distance estim ee (x) de d unit es (d 1). Il en r esulte une augmentation de F major ee par d. La somme des augmentations de la distance estim ee dun sommet etant major ee par 2n, laugmentation totale de F due aux occurrences de ce premier cas est major ee par 2n2 . b) R eduction saturante. La fonction F d ecroit au moins de la valeur 1/2 puisque, dapr` es le lemme 3.11, lexc` es de x diminue dau moins Ek1 /2 unit es et lexc` es de y augmente de la m eme quantit e. Comme F reste positif par d enition et quune r eduction quelconque fait d ecroitre F , le nombre de r eductions non saturantes au cours de la phase k est major e 2 par 8n . Dans l etude de lalgorithme du pr eot, nous avons montr e que la complexit e des op erations autres que les r eductions non saturantes est O (nm). On peut dautre part g erer lensemble des sommets actifs dont lexc` es est sup erieur ou egal a ` Ek1 /2 en associant a ` chaque valeur possible r de la distance estim ee une liste doublement cha n ee des sommets dont la distance estim ee est r et lexc` es sup erieur a ` Ek1 /2. Un index sur la liste non vide de plus petit r est egalement maintenu. Les op erations dajout, de retrait et de s election dun sommet actif sont alors en O (1) et la reconstitution des listes a ` chaque nouvelle phase en O (n). Le nombre de phases etant egal a ` 1 + log B , la complexit e globale de lalgorithme exc` es- echelonn es est O (nm + n2 log B ).

8.4

Flot de co ut minimum

Nous consid erons dans cette section le probl` eme de la recherche dun ot compatible de co ut minimum dans un r eseau valu e R = (G, a, b, c). Nous pr esentons dabord les propri et es fondamentales de dualit e sur lesquelles sappuient tous les algorithmes de r esolution du probl` eme. Nous d ecrivons ensuite lalgorithme primal de Golberg et Tarjan pour la recherche dun ot de co ut mimimum dans un r eseau R = (G, 0, b, c). Nous montrons ensuite que lon peut ramener le probl` eme g en eral a ` la recherche dun ot maximum de co ut minimum dans un r eseau muni dune entr ee, dune sortie et dont les arcs sont valu es par une capacit e maximale et un co ut. Nous d ecrivons un algorithme de type dual pour la r esolution de ce probl` eme lorsque les co uts sont positifs ou nuls. Nous consid erons enn le probl` eme de la recherche dun plan de transport de co ut minimum et sa r esolution par lalgorithme dual dEdmonds et Karp.

Version 6 f evrier 2005

8.4. Flot de co ut minimum

273

8.4.1

Graphe d ecart et conditions doptimalit e

Soit = ((s0 , u1 , s1 ), (s1 , u2 , s2 ), , (sq1 , uq , sq )) un cycle am eliorant pour le ot f . Par d enition, un arc avant de nest pas satur e et un arc arri` ere de nest pas vide. Il en r esulte que la suite = ((s0 , v1 , s1 ), (s1 , v2 , s2 ), , (sq1 , vq , sq )) o` u uk si uk est arc avant de vk = ere de uk si uk est arc arri` est un circuit de co ut n egatif du graphe d ecart Gf . R eciproquement a ` un circuit de co ut n egatif du graphe d ecart Gf correspond un cycle am eliorant de G. La proposition 4.1, cons equence directe du th eor` eme 2.7, enonce une condition n ecessaire et susante doptimalit e qui porte uniquement sur le graphe d ecart Gf . Proposition 4.1. Un ot f dun r eseau R = (G, 0, b, c) est de co ut minimum si et seulement si son graphe d ecart Gf ne poss` ede aucun circuit de co ut strictement n egatif.

Soit f un ot dun r eseau valu e R = (G, 0, b, c). Le graphe d ecart du ot f est obtenu a ` partir du graphe d ecart Gf d eni par la proc edure graphe-d ecart de la section 8.3 en munissant simplement chaque arc v dun co ut, not e egalement c(v ), et d eni par : c(u) si v = u c(v ) = c(u) si v = u

8.4.2

Probl` eme dual et conditions doptimalit e

Nous avons etabli que la recherche dun ot de co ut minimum correspond a ` la r esolution dun programme lin eaire dont la matrice est la matrice dincidence sommets-arcs du graphe G. Les algorithmes de r esolution ecaces de ce probl` eme vont dune part exploiter la structure de cette matrice (cest-` a-dire travailler sur le graphe d ecart) et dautre part tirer parti des propri et es de dualit e issues de la programmation lin eaire. Le programme lin eaire primal (P LP ) associ ea ` un probl` eme de ot de co ut minimum dans un r eseau R = (G, 0, b, c) s ecrit : u A, f (u) 0 u A, f (u) b(u) x S, ef (x) = 0 M IN uA c(u)f (u) o` u les variables f (u) sont rationnelles. Le programme lin eaire dual (P LD ) associe a ` chaque sommet x du r eseau la variable sans contrainte de signe (x) appel ee potentiel du sommet x, et associe Version 6 f evrier 2005

(P LP )

274

Chapitre 8. Flots

a ` chaque arc u du r eseau une variable positive ou nulle not ee (u). Le programme dual (P LD ) s ecrit : u A, (u) + (u+ ) (u ) c(u) u A, (u) 0 M AX uA b(u) (u) (P LD )

Lexistence dun sous-ensemble dominant des solutions du programme dual montre que les v eritables inconnues du programme dual sont les potentiels des sommets de G. En eet si nous xons le potentiel de chaque sommet, il est imm ediat de v erier que la meilleure solution du programme dual correspond aux valeurs des variables (u) calcul ees par la formule () ci-dessous : u A, (u) = max{0, c(u) + (u+ ) (u )}. ()

Nous ne consid` ererons donc dans la suite que des solutions dominantes du programme dual , cest-` a-dire des couples (, ) pour lesquels les valeurs des (u) r esultent de par la formule (). Une solution du dual sera donc compl` etement caract eris ee par un ensemble de potentiels . Etant donn es un ot f solution du programme lin eaire primal et une solution (, ) du programme lin eaire dual, le th eor` eme des ecarts compl ementaires , corollaire du th eor` eme de la dualit e, fournit une condition n ecessaire et susante doptimalit e des deux solutions. Cette condition, not ee (OP T ), s ecrit : u A, u A, (u)[f (u) b(u)] = 0 f (u)[c(u) + (u) (u+ ) + (u )] = 0 (OP T )

Les conditions doptimalit e pr ec edentes peuvent etre exprim ees de mani` ere plus condens ee a ` partir du graphe d ecart en utilisant la notion de co ut r eduit. Soit une fonction potentiel d enie sur les sommets de G et f un ot, le co ut r eduit re latif a ` dun arc v du graphe d ecart Gf est d eni par c (v )=c(v )+ (v ) (v + ). La Proposition 4.2 fournit une condition n ecessaire et susante doptimalit e fond ee sur les co uts r eduits du graphe d ecart Gf . Proposition 4.2. Un ot f et un ensemble de potentiels sont optimaux si et seulement si le co ut r eduit relatif a ` de tout arc du graphe d ecart Gf est positif ou nul. Preuve. Soient f un ot et (, ) une solution dominante du dual qui satisfont la condition (OP T ). Consid erons un arc v du graphe d ecart Gf . Si v = u (cest-` a-dire si v est le repr esentant conforme de larc u de G), larc u nest pas satur e et l on a dapr` es (OP T ) : (u) = 0. Il r esulte alors de la formule + () que (u ) (u ) c(u) 0 et donc que c (v )=c(v ) + (v ) (v + ) 0.

Si v = u (cest-` a-dire si v est le repr esentant non conforme de larc u de G), larc u nest pas vide et l on a dapr` es (OP T ) : 0 (u) = c(u) + (u+ ) (u ). Comme v + = u et v = u+ , nous avons c (v )=c(v ) + (v ) (v + ) 0. Version 6 f evrier 2005

8.4. Flot de co ut minimum

275

Supposons maintenant que le co ut r eduit de tout arc du graphe d ecart soit positif ou nul. Pour un arc u de G, trois cas sont possibles : Larc u est libre. Les deux arcs u et u de Gf ont des co uts r eduits positifs ou nuls, et donc nuls puisque c (u ) = c (u ) ; il en r esulte que (u) = 0 et que la condition (OP T ) est satisfaite pour larc u. Larc u est satur e. Le co ut r eduit de larc u etant positif ou nul, on a c(u) + (u+ ) (u ) 0. On a donc dapr` es () : (u) = c(u) + (u+ ) (u ) et la condition (OP T ) est satisfaite pour larc u. Larc u est vide. Le co ut r eduit de larc u etant positif ou nul, on a c(u) + + (u ) (u ) 0. On a donc dapr` es () : (u) = 0. La condition (OP T ) est satisfaite pour larc u.

8.4.3

Un algorithme primal

Le probl` eme consid er e dans cette section est la recherche dun ot compatible de co ut minimum dans un r eseau valu e R = (G, 0, b, c). Aucune restriction nest faite ici sur le signe des co uts c(u). Lalgorithme que nous allons d ecrire, d ua ` Goldberg et Tarjan d etruit syst ematiquement a ` chaque it eration le cycle am eliorant de G associ e a ` un circuit de co ut moyen minimum du graphe d ecart. Cet algorithme est de type primal puisqu` a chaque etape, il fournit un ot compatible tout en am eliorant la satisfaction des conditions doptimalit e duales. La proc edure Goldberg-Tarjan(R) ci-dessous r ealise cet algorithme. proc edure Goldberg-Tarjan(R) ; f :=0 ; :=maxuA |c(u)| ; tantquil existe un circuit n egatif dans Gf faire t-moyen-minimum(Gf ) ; :=circuit-cou f :=augmenter-flot-sur-circuit(f, ) ntantque. Soit f un ot et Gf le graphe d ecart associ e. Le co ut moyen dun circuit de q arcs dans Gf est la quantit e v c(v )/q . Remarquons que pour toute fonction potentiel , le co ut r eduit moyen dun circuit de Gf est egal a ` son co ut moyen. Soit (f ) le co ut moyen minimum dun circuit de Gf . Remarquons quil existe un circuit el ementaire de co ut (f ). Lalgorithme de Karp, de complexit e O (nm), permet de calculer le co ut moyen minimum dun circuit dans un graphe valu e de n sommets et m arcs (voir exercices). Le ot f est dit -optimal sil existe une fonction potentiel telle que : v Af , c (v ) . Version 6 f evrier 2005

276

Chapitre 8. Flots

Il r esulte de cette d enition quun ot 0-optimal est de co ut minimum. La proposition suivante montre que si est susamment petit, un ot -optimal est de co ut minimum. Proposition 4.3. Si 0 < 1/n, un ot -optimal f est de co ut minimum. Preuve. Soit un circuit el ementaire de Gf . On a c() = c () > 1. La valeur de est donc positive ou nulle. Etant donn e un ot f , on appelle d eviation de f la valeur minimum de pour laquelle le ot f est -optimal. La d eviation de f , not ee (f ), est li ee au co ut moyen minimum dun circuit de Gf . Th eor` eme 4.4. Soit f un ot. La d eviation de f est egale a ` max{0, (f )}. Preuve. Si le ot f est -optimal, alors pour un circuit quelconque de q arcs dans Gf , on a c() q . Il en r esulte que (f ). Nous montrons maintenant quil existe eectivement une fonction potentiel pour laquelle le ot f est (f )optimal. Supposons dabord que le graphe Gf soit fortement connexe. D enissons pour chaque arc v de Gf la valuation c (v ) = c(v ) (f ) et choississons un sommet source s. Pour tout circuit de q arcs dans Gf , on a c () = c() q (f ) 0. Pour tout sommet x, il existe donc un chemin de co ut minimum de s a ` x dans Gf pour la valuation c . Si lon d enit le potentiel (x) du sommet x par la valeur de ce chemin, il vient : v Af , (v + ) (v ) + c(v ) (f ).

Il en r esulte que le ot f est (f )-optimal.

Si le graphe Gf nest pas fortement connexe, on note {C1 , . . . , Cp } ses composantes fortement connexes. Tous les circuits du graphe induit par Ci ont une valeur positive ou nulle pour la valuation c . En consid erant le graphe induit par Ci seul , nous pouvons associer a ` chaque sommet x de Ci une fonction (x) qui v erie lingalit e pr ec edente sur tous les arcs du graphe (fortement connexe) induit par Ci . La valuation aij dun arc (Ci , Cj ) du graphe r eduit de Gf est d enie par : aij = min{c (v ) + (v ) (v + ) | v Af , v Ci , v + Cj }. Le graphe r eduit de Gf etant sans circuits, il existe pour tout sommet Ci un chemin de co ut minimum i dextr emit e Ci . Par d enition des valeurs i , nous avons j i aij pour tout arc (Ci , Cj ). Le potentiel dun sommet x de Ci est alors d eni par (x) = (x) + i . Pour tout arc v de Gf appartenant a ` un graphe induit par une composante fortement connexe, on a bien s ur c (v ) (f ). Soit + maintenant un arc v tel que v Ci et v Cj , on a : (v + ) (v ) = (v + ) (v ) + j i (v + ) (v ) + aij c (v ). Version 6 f evrier 2005

8.4. Flot de co ut minimum Le ot f est donc (f )-optimal pour le potentiel .

277

Il est utile dans la suite de consid erer le graphe partiel de Gf constitu e des arcs dont le co ut r eduit pour un potentiel est strictement n egatif. Nous appellerons ce graphe le graphe dinadmissibilit e de f pour la fonction potentiel et nous le noterons Gf ( ). La proposition suivante montre que si un ot f est -optimal pour la fonction potentiel et si G eviation de f est au f ( ) est sans circuits, la d plus (1 1/n) . Proposition 4.5. Soit f un ot -optimal pour le potentiel . Si le graphe dinadmissibilit e de f est sans circuit, alors le ot f est (1 1/n) -optimal. Preuve. Soit un circuit el ementaire de q arcs dans Gf . Le circuit contient au moins un arc de co ut r eduit positif. Le co ut moyen de qui est au moins egal a ` (1 1/q ) est minor e par (1 1/n) . Il en r esulte que pour un circuit de co ut moyen minimum, on a (f ) (1 1/n) . On d eduit alors le r esultat du th eor` eme 4.4. Convergence La convergence de lalgorithme est assur ee car le ot g r esultant de la destruction dun circuit de co ut moyen minimum dans Gf par la proc edure augmenterflot-sur-circuit(f, ) poss` ede une d eviation au plus egale a ` celle du ot f . Les deux lemmes suivants pr ecisent les conditions de cette convergence. Lemme 4.6. Soit g le ot r esultant dun ot -optimal f apr` es la destruction dun circuit de co ut moyen minimum dans Gf . Les d eviations de f et g satisfont (g ) (f ). Preuve. Dapr` es la d enition de la d eviation (f ) du ot f , il existe un potentiel tel que pour tout arc v de Gf on a c (v ) (f ). Soit le circuit d etruit. Comme le co ut moyen des arcs de est egal a ` (f ), le co ut r eduit pour dun arc quelconque de est egal a ` (f ). Soit v un arc de Gg qui nexiste pas dans Gf . Si v = u , alors larc u est un arc de . On a donc c (u ) = (f ) et c (v ) = (f ). On aboutit a ` la m eme conclusion si v = u . Il en r esulte que (g ) (f ). Nous noterons dans la suite me le nombre darcs du graphe d ecart Gf qui reste toujours inf erieur ou egal a ` 2m. Le lemme suivant evalue le gain obtenu lorsque lalgorithme ex ecute me it erations successives. Lemme 4.7. Soit f un ot et soit g le ot obtenu apr` es me destructions de circuits. Si g nest pas de co ut minimum, sa d eviation satisfait (g ) (1 1/n) (f ) .

Version 6 f evrier 2005

278

Chapitre 8. Flots

Preuve. Soit f un ot -optimal pour le potentiel . La destruction dun circuit de co ut moyen minimum dont tous les arcs ont un co ut r eduit n egatif ne peut cr eer que des arcs de co ut r eduit positif ou nul et supprime au moins un arc de G erons alors deux cas pour le ot g obtenu apr` es les me f ( ). Nous consid it erations successives : Lors de chaque destruction, les arcs du circuit d etruit ont un co ut r eduit n egatif ou nul. Dapr` es la remarque pr ec edente, le graphe dinadmissibilit e Gf ( ) est vide et le ot g est donc de co ut minimum. Soit le premier circuit supprim e contenant un arc de co ut r eduit positif. Dapr` es le lemme 4.6, la d eviation du ot h obtenu avant la suppression de est inf erieure ou egale a ` (f ). Dapr` es la preuve de la proposition 4.5, le co ut moyen de vaut au moins (1 1/n) . Il r esulte alors du th eor` eme 4.4 et du lemme 4.6 que la d eviation des ots obtenus apr` es h est inf erieure ou egale a ` (1 1/n) . Les lemmes 4.6 et 4.7 sont alors susants pour majorer polynomialement le nombre dit erations de lalgorithme. Th eor` eme 4.8. Lalgorithme de Goldberg et Tarjan r ealise O (nm log nC ) it erations. Preuve. Soit f le ot courant. Lors de linitialisation de lalgorithme, on a (f ) C . Dapr` es la proposition 4.3, lalgorithme se termine d` es que la d eviation du ot courant est strictement inf erieure a ` 1/n. Soit K le nombre total dit erations et posons K 1 = pq + r, (0 r < p). La d eviation obtenue apr` es pq destructions est inf erieure ou egale a ` (1 1/n)q C dapr` es le lemme 4.7 et sup erieure ou egale a ` 1/n puisque lalgorithme nest pas termin e. On a donc (1 1/n)q C 1/n ou encore (1 1/n) (K 1)/p C 1/n. Comme pour n > 1 on a ln(1 1/n) < 1/n, il vient : (K 1)/p ln nC/ ln(1 1/n) n ln nC. Il en r esulte que K = O (mn log nC ). Si lon utilise lalgorithme de Karp pour d eterminer a ` chaque it eration un circuit de co ut moyen minimum, la complexit e de lalgorithme de Goldberg et Tarjan est O (n2 m2 log nC ). En fait Goldberg et Tarjan ont montr e que le nombre total dit erations est major e par un polyn ome en n et m. La preuve due a ` Tardos repose sur une propri et e suppl ementaire des ots -optimaux que nous enon cons sans d emonstration. Proposition 4.9. Soit f un ot -optimal pour le potentiel et v un arc de Gf de co ut r eduit sup erieur ou egal a ` 2n . Le ux du p` ere de v dans G est le m eme pour tous les ots -optimaux. Cette proposition permet d etablir que la complexit e en temps de lalgorithme de Goldberg et Tarjan est O (n2 m2 min{log nC, m log n}). Version 6 f evrier 2005

8.4. Flot de co ut minimum Une am elioration de lalgorithme

279

La version de lalgorithme de Goldberg et Tarjan d ecrite dans la section pr ec edente est int eressante a ` un double point de vue, dune part elle exploite directement la condition n ecessaire et susante doptimalit e dun ot compatible et dautre part il sagit dun algorithme fortement polynomial , cest-` a-dire polynomial lorsque le co ut dune op eration arithm etique el ementaire est polynomial en le nombre de bits n ecessaires pour coder ses op erandes. Cependant cet algorithme est moins efcace que dautres algorithmes fortement polynomiaux fond es sur des techniques d echelonnement ou dapproximations. Goldberg et Tarjan ont alors propos e une nouvelle version qui constitue lun des meilleurs algorithmes connus aujourdhui pour des r eseaux pas trop denses dont les co uts (entiers) ne sont pas trop grands. Cette am elioration consiste a ` remplacer la destruction dun circuit de co ut moyen minimum (qui co ute O (nm) op erations el ementaires) par une s erie dau plus m destructions de circuits du graphe dinadmissibilit e suivie dun ajustement de la fonction potentiel. Une structure de donn ees ad-hoc, appel ee arbres dynamiques , permet de r ealiser une destruction de circuit ou un ajustement de potentiel en O (log n). Soit f le ot courant et soit le potentiel courant. Le plus petit , not e (f, ), pour lequel le ot f est -optimal a ` x e , est d eni par : (f, ) = max{0, min{c (v ) | v Af }}. e des arcs v de Gf dont Rappelons que le graphe dinadmissibilit e G f ( ) est form le co ut r eduit c (v ) par rapport a ` est strictement n egatif. Lalgorithme peut alors etre d ecrit comme suit : proc edure Goldberg-Tarjan-plus(R) ; f :=0 ; :=0 ; tantque (f, ) > 1/n faire ede un circuit faire tantque G f ( ) poss` d etruire-circuit(G f ( )) ntantque ajuster-potentiel( ) ntantque. truire-circuit d etruit ce La proc edure de etermine un circuit de G f ( ), et d circuit par un appel a ` la proc edure augmenter-flot-sur-circuit. La proc edure ajuster-potentiel transforme en un potentiel tel que (f, ) (f, ). Si lon d enit une it eration comme une s erie de destructions de circuits suivie dun ajustement de la fonction potentiel (boucle tantque ext erieure), le th eor` eme suivant montre que cet algorithme converge apr` es au plus O (n log nC ) it erations.

Version 6 f evrier 2005

280

Chapitre 8. Flots

Th eor` eme 4.10. La proc edure Goldberg-Tarjan-plus calcule un ot de co ut minimum en O (n log nC ) it erations. Preuve. Consid erons une it eration. Chaque destruction de circuit dans G f ( ) najoute pas darcs a ` Gf ( ) mais en d etruit au moins un. Le graphe G f ( ) sera donc sans circuits apr` es au plus me destructions de circuits. Si, apr` es ces destructions, le graphe Gf ( ) est vide, le ot f est de co ut minimum, sinon le ot f est (1 1/n) (f, )-optimal dapr` es le lemme 4.7. La convergence et le nombre maximum dit erations r esultent alors du lemme 4.3 et du th eor` eme 4.4. Goldberg et Tarjan ont cr e e une structure de donn ees sp ecique, appel ee arbre dynamique qui permet de r ealiser chaque destruction de circuit et ajustement de potentiel en O (log n). Indiquons simplement quelle permet de g erer une famille e darborescences dont chaque arc correspond a ` un arc v du graphe G f ( ) valu par b(u) f (u) si v = u ou par f (u) si v = u . Cette structure conduit a ` un algorithme de complexit e O (nm(log n) min{log nC, m log n}) qui est lun des meilleurs connus aujourdhui.

8.4.4

Flot maximum de co ut minimum

Soit R = (G, a, b, c) un r eseau valu e et f un ot compatible de ce r eseau. Nous montrons que lon peut ramener la recherche dun ot compatible de co ut minimum du r eseau R a ` celle dun ot maximum de co ut minimum dans un r eseau R muni dune entr ee, dune sortie, et dont les arcs sont valu es par une capacit e maximale et un co ut. La construction du r eseau R repose sur le signe des exc` es ea (x) des sommets de G pour la fonction a. Nous noterons S+ (respectivement S ) lensemble des sommets de G dont lexc` es pour a est strictement positif (respectivement n egatif) et la quantit e xS+ ea (x)= xS ea (x). Nous supposerons strictement positif. Les sommets du r eseau R sont ceux du graphe G auxquels on adjoint un sommet source s et un sommet puits p. Lensemble des arcs du r eseau R est form e: (a) des arcs u du graphe G o` u chaque arc u est muni dune capacit e minimale nulle, dune capacit e maximale egale a ` b(u) a(u) et du co ut c(u) ; (b) pour chaque sommet x de S+ dun nouvel arc usx , dorigine s, dextr emit e x, de capacit e minimale nulle, de capacit e maximale ea (x) et de co ut nul ; (c) pour chaque sommet x de S dun nouvel arc uxp , dorigine x, dextr emit e p, de capacit e minimale nulle, de capacit e maximale ea (x) et de co ut nul ; (d) dun arc de retour u0 dorigine p, dextr emit e s, de capacit e minimale nulle, de capacit e maximale et de co ut nul. La gure 4.1 montre en (A) un r eseau valu e R o` u sur chaque arc sont inscrits le triplet (a(u), b(u), c(u)) et le ux f (u) en gras et o` ua ` c ot e de chaque sommet lexc` es pour la fonction a est soulign e. Sur la partie (B) est repr esent e le r eseau R o` u sur chaque arc sont incrits le couple (b(u), c(u)) et en gras le ux f (u). Version 6 f evrier 2005

8.4. Flot de co ut minimum


s 1 (1,0) (1,-1) (2,-2) 1 4 5 0 1 (2,4) 0 (2,2) 1 (0,1) 1 (2,-1) 1 1 (1,3) 2 2 3 1 (1,0) (2,0) (1,0) 1 p Le rseau R' (1,0) 1

281

1 1 1 0,2,2 -1

1 1,2,-1 1 0,2,-1 1 2 1,2,3 2 Le rseau R 0,2,-2 4 1 2,4,4 3 3 5 1 1,1,1 0

-1

Figure 4.1: Les r eseaux R et R . On appelle ot saturant du r eseau R un ot compatible de valeur . La proposition 4.11 etablit la correspondance entre les ots compatibles de R et les ots saturants de R . Proposition 4.11. Il existe une bijection entre les ots compatibles du r eseau R et les ots saturants du r eseau R . Limage dun ot compatible de co ut minimum du r eseau R est un ot maximum de co ut minimum du r eseau R . Preuve. Soit f un ot compatible de R, nous lui associons lapplication f d enie sur les arcs du r eseau R par : e (x) si u = usx a ea (x) si u = uxp f (u) = f ( u ) a ( u ) si uA si u = u0

La fonction f satisfait les contraintes de capacit e du r eseau R , montrons que cette fonction est aussi un ot de R en calculant les exc` es des di erents sommets. Il est dabord clair que ef (s)=ef (p)=0. Consid erons un sommet x de S+ , nous avons : ef (x) = (ef (x) ea (x)) + f (usx ) = 0; de m eme pour un sommet x de S , nous avons : ef (x) = (ef (x) ea (x)) f (uxp ) = 0. La fonction f est donc un ot saturant du r eseau R . R eciproquement, soit g un ot saturant du r eseau R . La fonction f d enie sur les arcs de G par f (u) = g (u) + a(u) est le seul ot compatible de R v eriant f = g. Version 6 f evrier 2005

282

Chapitre 8. Flots

La correspondance f f est donc bien une bijection. On remarque de plus que les co uts des ots f et f di` erent de la constante a c, ce qui implique la seconde partie de la proposition. Il r esulte de la propri et e pr ec edente que la recherche dun ot de valeur maximum de s a ` p dans le r eseau R permet de r epondre au probl` eme de lexistence dun ot compatible pour le r eseau R. En eet, si la valeur maximum dun ot de s a ` p dans R est inf erieure strictement a ` , le r eseau R ne poss` ede pas de ot compatible. Dans le cas contraire, un tel ot existe et il en est de m eme dun ot compatible de co ut minimum (voir section 2.3). Un algorithme dual Une donn ee (G, b, s, p, c) dun probl` eme de ot maximum de co ut minimum est sp eci ee par un enonc e (G, b, s, p) dun probl` eme de ot maximum et une fonction c de F (A) d enissant le co ut sur chaque arc dune unit e de ux. Nous supposerons dans cette section la fonction c positive ou nulle. Si est la valeur maximum dun ot de s a ` p pour le probl` eme (G, b, s, p), un ot maximum de co ut minimum est un ot de valeur dont le co ut est minimum. Un couple (f, ) o` u f est un ot du r eseau R est dit dual-r ealisable si les co uts r eduits relatifs a ` des arcs de Gf sont positifs ou nuls. Il est dit primal-r ealisable si f est un ot maximum de s a ` p. Le principe de base de cet algorithme dual est de r ealiser a ` chaque it eration une augmentation de la valeur du ot a ` partir dun chemin am eliorant de co ut r eduit minimum dans le graphe d ecart. Comme nous le d emontrerons, ce choix permet de d eterminer un nouvel ensemble de potentiels pour lequel les arcs du nouveau graphe d ecart ont un co ut r eduit positif ou nul. Initialisation Le ot initial est le ot nul et le potentiel initial de chaque sommet est nul egalement. Comme la fonction c est positive ou nulle, les co uts r eduits initiaux du premier graphe d ecart sont positifs ou nuls. Le couple (0, 0) est donc dualr ealisable. It eration courante Soit (f, ) le couple courant dual-r ealisable (et non primal-r ealisable) r esultat de lit eration pr ec edente. Comme le ot f nest pas de valeur maximum, il existe au moins un chemin am eliorant de s a ` p dans le graphe d ecart Gf . Comme les co uts r eduits des arcs du graphe d ecart Gf sont positifs ou nuls, il existe egalement un chemin am eliorant de co ut r eduit minimum. Lit eration courante r ealise dabord une augmentation de ot a ` partir de en ex ecutant la proc edure augmenterflot(f, ) et met ensuite a ` jour le potentiel de chaque sommet comme lindique Version 6 f evrier 2005

8.4. Flot de co ut minimum

283

la proc edure modifier-potentiels(f, ) ci-dessous. Dans cette proc edure, on note T lensemble des sommets accessibles a ` partir de s dans Gf et l (t) le co ut r eduit minimum dun chemin de s a ` t dans Gf . proc edure modifier-potentiels(f, ) ; M :=maxtT l (t) ; pour tout sommet t de T faire (t) := (t) + l (t) ; pour tout sommet z de S T faire (z ) := (z ) + M . Cette proc edure augmente le potentiel de tout sommet t de T du co ut r eduit minimum dun chemin de s a ` t dans Gf et augmente le potentiel des autres sommets dune m eme quantit eM egale au plus grand co ut r eduit minimum dun chemin dorigine s dans Gf . Lit eration courante, iml ement ee par la proc edure changer-de-couple ci-dessous r ealise le changement de ot et la modication des potentiels : proc edure changer-de-couple(f, , ) ; augmenter-flot(f, ) ; modifier-potentiels(f, ). La proposition 4.12 montre que les co uts r eduits du nouveau graphe d ecart et relatifs aux nouveaux potentiels sont positifs ou nuls. Proposition 4.12. Les co uts r eduits du couple (f , ) calcul es par la proc edure changer-de-couple(f, , ) sont positifs ou nuls. Preuve. Consid erons dabord le cas dun arc v de Gf qui nexistait pas dans Gf . Si v = u , larc u est un arc de . Comme est un chemin de co ut r eduit minimum pour le couple (f, ), on a : l (u ) = l (u+ ) + c (u ). Comme u et u+ appartiennent a ` T , nous avons : c (u ) = c(u ) + (u ) (u+ ) = c(u ) + ( (u ) + l (u )) ( (u+ ) + l (u+ )). En regroupant les termes correspondant a `c (u ), il vient : c (u ) = c (u ) + l (u ) l (u+ ) = 0. Si v = u , un calcul analogue montre que le nouveau co ut r eduit de larc v est nul. Version 6 f evrier 2005

284

Chapitre 8. Flots

Consid erons maintenant un arc v de Gf qui est aussi dans Gf . Il r esulte de la d enition de T que seuls les trois cas suivants sont possibles : (1) v T , v + T . On a alors par d enition de l : l (v + ) 0. (v ) + l (v ) c (v ) = c (2) v S T , v + S T . On a alors puisque (f, ) est dual-r ealisable : c (v ) = c (v ) + M M 0. (3) v S T , v + T . On a alors par d enition de M : c (v ) = c (v ) + M l (v + ) 0. Il en r esulte que tous les nouveaux co uts r eduits sont positifs ou nuls. Terminaison Chaque augmentation de la valeur du ot r ealis ee par la proc edure changerde-couple porte sur au moins une unit e de ux. Lalgorithme se termine donc + apr` es au plus B = min{b (p), b (s)} it erations. A lissue de la derni` ere it eration, le ot f est de valeur maximum et les arcs de Gf ont un co ut r eduit positif ou nul tpar rapport au dernier ensemble de potentiels. La proc edure flot-max-cou min(G, b, s, p, c) ci-dessous d ecrit lalgorithme complet. t-min(G, b, s, p, c) ; proc edure flot-max-cou f := 0 ; =: 0 ; T := S ; pour tout t de T faire calculer l (t) ; tantque p T faire soit un chemin am eliorant de co ut r eduit l (p) ; changer-de-couple(f, , ) ; T :=sommets-accessibles(f, ) ; pour tout t de T faire calculer l (t) ntantque.

Complexit e Le nombre dit erations de lalgorithme est major e par B = min{b (p), b+ (s)} puisque chaque changement de couple augmente la valeur du ot dau moins une unit e. La complexit e dune it eration est domin ee par le calcul des co uts r eduits minimum des chemins de s aux sommets de T . Pour ce calcul on peut utiliser lalgorithme de Dijkstra dont la complexit e est O (m log n) pour un graphe d ecart Version 6 f evrier 2005

8.4. Flot de co ut minimum

285

quelconque. Il en r esulte une complexit e globale O (mB log n) pour lalgorithme flot-max-cout-min(G, b, s, p, c). Cet algorithme nest donc pas polynomial, mais seulement pseudo-polynomial en raison du terme B . La faiblesse de cet algorithme tient clairement au fait quune it eration compl` ete est r ealis ee pour une augmentation insusante de la valeur du ot.

8.4.5

Plan de transport de co ut minimum

Un plan de transport est de co ut minimum si son co ut c x est minimum.

Nous consid erons dans cette section un probl` eme de transport sp eci e par un graphe G = (S, A), une fonction de co ut de F (A) positive ou nulle et une fonction d de F (S ), d enissant lore et la demande et v eriant sS d(s) = 0. La fonction d permet de classer les sommets en sommets fournisseurs (si d(s) > 0), sommets clients (si d(s) < 0) et sommets de transit (si d(s) = 0). On note respectivement F , C et T les sous-ensembles des sommets fournisseurs, clients et de transit. On suppose de plus quil existe au moins un chemin de G liant un sommet fournisseur quelconque a ` un sommet client quelconque. Un plan de transport est une fonction + x : A Q telle que : u A, x(u) 0 s S, ex (s) = d(s).

Ce probl` eme est un cas particulier important du probl` eme du ot maximum de co ut minimum, il se pose en eet fr equemment dans les applications. Le graphe d ecart Gx dun plan de transport x est d eni de la m eme mani` ere que le graphe d ecart Gf dun ot f , a ` cette remarque pr` es que chaque arc de G poss` ede un repr esentant conforme valu e par +. Tout chemin de G produit donc un chemin conforme dans Gx passant par les m emes sommets. Un raisonnement tout a ` fait analogue a ` celui men e dans la section 8.4.4 permet d etablir une condition doptimalit e dun couple (x, ) o` u x est un plan de transport et un potentiel sur les sommets de S . Cette proposition est en fait un corollaire de la proposition 4.2. Proposition 4.13. Un plan de transport x et un potentiel sont optimaux si et seulement si les co uts r eduits des arcs du graphe d ecart Gx sont positifs ou nuls. Lalgorithme de Edmonds et Karp que nous allons d ecrire est une extension de t-min du paragraphe pr lalgorithme flot-max-cou ec edent. Il sagit donc dun algorithme dual qui repose sur lid ee quil convient de satisfaire en priorit e les couples (fournisseur,client) qui sont les plus d ecitaires du point de vue de lore et de la demande. A cet eet, on appellera pseudo-plan une fonction x de F (A) positive ou nulle et lon notera x (s) = d(s) ex (s) le d ecit du sommet s pour le pseudo-plan x. Si un couple (x, ) dual-r ealisable est tel que tous les d ecits sont nuls, alors x est un plan de transport de co ut minimum. Version 6 f evrier 2005

286

Chapitre 8. Flots

Soit x un pseudo-plan et soit un entier naturel. Nous notons Px () (respectivement Nx ()) le sous-ensemble des sommets dont le d ecit est sup erieur ou egal a ` (respectivement inf erieur ou egal a ` ). Le pseudoplan x est dit optimal si au moins lun des deux ensembles Px () ou Nx () est vide. Une phase de lalgorithme de Edmonds et Karp consiste a ` transformer un pseudoplan -optimal en un pseudoplan /2-optimal en ex ecutant au plus n fois lalgorithme de Dijkstra pour la recherche des chemins de co ut r eduit minimum. Initialisation Lalgorithme est initialis e par le pseudoplan x = 0, le potentiel = 0 et = B o` u B = maxsS d(s). Remarquons que ce premier pseudoplan est -optimal puisque Px () = . Phase courante Soit x le pseudoplan courant 2-optimal r esultant de la phase pr ec edente. Une it eration de la phase suivante choisit dabord un couple de sommets (s, t) o` u s Px () et t Nx (). Elle d etermine ensuite un chemin de co ut r eduit minimal dans Gx de s a ` t, diminue les d ecits des sommets s et t de la quantit e en augmentant de les ux transport es par les arcs du chemin de G form e par les p` eres des arcs de . Elle modie enn les potentiels pour que le nouveau pseudoplan soit dual-r ealisable. Cette it eration est r ep et ee tant que le pseudoplan x nest pas -optimal. La proc edure ci-dessous r ealise la phase courante de lalgorithme de Edmonds et Karp. proc edure phase-Edmonds-Karp() ; P := {s | x (s) } ; N := {s | x (s) } ; tantque (P = et N = ) faire choisir s dans P et t dans N ; pour tout sommet z de S faire calculer l (s, z ) npour ; soit un chemin de co ut r eduit minimum de s a ` t; modifier-pseudoplan(x, ) ; pour tout sommet z faire (z ) := (z ) + l (s, z ) ; ntantque ; := /2. La proc edure modifier-pseudoplan est une variante simpli ee de la proc edure augmenter-flot qui augmente syst ematiquement de les ux des p` eres des arcs de . Version 6 f evrier 2005

8.4. Flot de co ut minimum Terminaison

287

Lalgorithme de Edmonds et Karp se termine d` es que < 1. Tous les d ecits sont alors nuls. Do` u la proc edure pour lalgorithme complet : proc edure Edmonds-Karp(R) ; (x, ) := (0, 0) ; := B ; tantque 1 faire phase-Edmonds-Karp() ntantque. Les gures 4.2 et 4.3 illustrent le comportement de lalgorithme sur un exemple. Pour chaque sommet, le coin sud-est contient le co ut r eduit minimum de lorigine au sommet, le coin nord-est contient le potentiel courant, le coin nord-ouest contient le nom du sommet et le coin sud-ouest contient le d ecit de ce sommet. Sur chaque arc est inscrit le co ut r eduit par rapport au potentiel en cours. La partie sup erieure de la gure 4.2 repr esente le r eseau initial qui est aussi le premier r eseau d ecart ; sa partie inf erieure repr esente le r eseau d ecart apr` es la premi` ere phase ( = 2). Cette premi` ere phase choisit le chemin (arcs epais) 1 =(a, e, f, c) et augmente les ux de ses arcs de trois unit es. La gure 4.3 correspond a ` la
a 3 1 d 1 0 1 2 0 0 2 e 2 0 2 2 5 1 4 a 0 0 d 1 1 0 1 1 0 0 0 e 2 2 0 0 0 5 0 0 b 0 2 0 1 f -1 3 0 2 0 0 1 1 g 4 -1 1 c -1 4 0 b 0 0 2 2 f -1 0 3 3 1 1 2 g -1 0 4 c -4 0 4

Figure 4.2: Premi` ere phase. seconde phase ( = 1). Les chemins successivement choisis sont 2 =(e, f, c), 3 =(d, g ) et 4 =(e, f ), et chacun conduit a ` une r eduction du d ecit de une unit e. Apr` es ces trois r eductions, le d ecit total est nul et le plan 31 + 2 + 3 + 4 est optimal.

Version 6 f evrier 2005

288
a 0 0 d 1 1 0 2 0 0 0 0 e 1 2 0 0 0 0 0 5 1 f -1 3 0 b 0 2 0 1 0 0 0 2 g 0 c 0 4 0

Chapitre 8. Flots

5 -1 0

a 0 0 d 0 0 1 0 2 0

0 0 0

0 0 e 1 2 0 4

b 0

2 0 2

2 0

c 0 0

4 0 1

0 0

f -1

3 0

g 0

5 0

a 0 0 d 0 0 1 0 2 0

0 0 0

0 0 e 0 2 0 4

b 0

2 0 2

2 0

c 0 0

4 0 1

0 0

f 0

3 0

g 0

5 0

Figure 4.3: Seconde phase. Convergence et Complexit e Comme lalgorithme ex ecute exactement 1 + log B phases, il se termine si chaque phase r ealise un nombre ni dit erations. Comme nous allons montrer que chaque phase r ealise au plus n it erations, lalgorithme se termine et le dernier pseudoplan est un plan de transport optimal car tous les d ecits sont nuls. Lemme 4.14. Une phase ex ecute au plus n it erations. Preuve. Supposons quune phase se termine parce que lensemble Px (2) est vide. Consid erons alors une it eration quelconque de la phase suivante et soit le chemin de Gx dorigine s et dextr emit e t associ ea ` cette it eration. Le d ecit du sommet s est r eduit de unit es par construction et par cons equent le sommet s dont le d ecit devient strictement inf erieur a ` ne sera plus candidat a ` une r eduction de d ecit au cours de cet m eme phase. Un raisonnement analogue peut etre fait si cest lensemble Nx (2) qui est vide. Le lemme en r esulte. La complexit e de lalgorithme de Edmonds et Karp est O (nT (m, n) log B ) o` u T (m, n) est la complexit e de lalgorithme de Dijkstra utilis e pour d eterminer a ` chaque it eration les chemins de co ut r eduit minimum. Version 6 f evrier 2005

Notes

289

Lorsque les capacit es maximales du r eseau initial R sont nies, il est possible (voir exercices) de le remplacer par un r eseau equivalent R sans limitations de capacit es et comportant n + m sommets et 2m arcs. En appliquant lalgorithme de Edmonds et Karp au r eseau R et en utilisant une version modi ee de lalgorithme de Dijkstra permettant le calcul des co uts r eduits minimum pour le r eseau R avec la m eme complexit e T (m, n) que sur le r eseau R, on aboutit a ` un algorithme de complexit e O (min{m log B, m log n}T (m, n)) qui est lun des plus ecaces connus aujourdhui.

Notes
Comme les ots constituent le mod` ele de base de nombreuses applications, ils ont fait lobjet dune recherche tr` es intense depuis les premiers r esultats de Ford et Fulkerson en 1956. Ces recherches ont eu essentiellement pour objectif de d evelopper des algorithmes de plus en plus ecaces. Citons deux ouvrages qui contiennent les r esultats les plus r ecents du domaine : R.E. Tarjan, Data Structures and Network Algorithms, SIAM Philadelphia, chapitre 7,1983 R.K. Ahuja, T.L. Magnanti, et J.B. Orlin, Network Flows, Sloan School of Management, Work Report, MIT, 1988 Lid ee, due a ` Edmonds et Karp, de choisir comme chemins am eliorants les plus courts en nombre darcs a conduit a ` un algorithme de complexit e O (m2 n). Ind ependamment, E.A. Dinic a introduit les r eseaux a ` niveaux qui sont les sousgraphes du r eseau initial contenant les sommets et les arcs appartenant a ` au moins un plus court chemin am eliorant. Par un calcul de ots bloquants dans ces r eseaux a ` niveaux, il obtient un ot maximum en temps O (n2 m). E.A. Dinic, Algorithm for Solution of a Problem of Maximum Flow in a Network with Power Estimation, Soviet Math. Dokl.,11(1970),1277-1280 La notion de distance estim ee au puits, due a ` Goldberg, est une variante du calcul des r eseaux a ` niveaux de Dinic. Elle pr esente le triple avantage d etre de compr ehension plus ais ee, de manipulation plus simple et de conduire a ` des algorithmes plus performants. Lalgorithme des distances estim ees pr esent e dans la section 8.3.2 enum` ere exactement les m emes chemins am eliorants que lalgorithme de Dinic. La premi` ere variante de lalgorithme du pr eot est due a ` A.V. Karzanov qui la introduite pour les r eseaux a ` niveaux. A.V. Karzanov ; Determining the Maximal Flow in a Network by the method of Preows, Soviet Math. Dokl.,15(1974),434-437 La variante de lalgorithme du pr eot obtenue par echelonnement des exc` es est due a ` J.B. Orlin et R.K. Ahuja. Version 6 f evrier 2005

290

Chapitre 8. Flots

Le probl` eme du ot de co ut minimum a aussi et e tr` es etudi e. Citons quelques etapes depuis les travaux de Ford et Fulkerson en 1962 qui pr esent` erent les premiers algorithmes primal-dual comme lalgorithme out of kilter . Les am eliorations sur des chemins du graphe d ecart de co ut r eduit minimum sont dues ind ependamment a ` Jewell, Iri, Busacker et Gowen. Lutilisation simultan ee des ensembles de potentiel pour obtenir des chemins dont les arcs sont de co ut r eduit positif est due a ` Edmonds et Karp. Cest dans ce cadre que nous avons pr esent e lalgorithme dual pour le probl` eme du ot maximum de co ut minimum. Le concept d -optimalit e fut introduit par Bertsekas en 1979. Lalgorithme primal de Goldberg et Tarjan de la section 8.4.3 ainsi que sa variante fortement polynomiale sont d evelopp es dans : A.V.Goldberg et R.E.Tarjan ; Finding Minimum Cost Circulations by Canceling Negative Cycles, Proc. 20th ACM Symp. on the Theory of Computing, 388397,(1988). Pour un probl` eme de transport, lid ee de r ealiser un echelonnement des d ecits des sommets est due a ` Edmonds et Karp. Lalgorithme qui en r esulte pour la recherche dun plan de transport de co ut minimum est d evelopp e dans : J. Edmonds et R.M. Karp, Theoretical Improvements in Algorithmic Eciency for Network Flow Problems, J. ACM,19,(1972),248-264. Cet algorithme a et e etendu aux r eseaux avec capacit es maximales par J.B. Orlin qui a obtenu une complexit e en temps de O (m log n(m + n log n)) dans : J.B. Orlin ; A Faster Strongly Polynomial Minimum-Cost Flow Algorithm, Proc. 20th ACM Syp. on the Theory of Computing, 377-387,(1988).

Exercices
8.1. Soit R = (G, a, b) un r eseau. a) Construire a ` partir de R un r eseau de transport R muni dune source s et dun puits p tel que R est consistant si et seulement si R poss` ede un ot saturant. b)En d eduire un algorithme pour d eterminer si un r eseau est consistant. 8.2. Soit G = (S, A) un graphe orient e biparti o` u S = X Y , X Y = et A X Y . On appelle couplage de G une partie C de A telle que deux arcs quelconques de C nont pas dextr emit e commune. Un couplage C est dit parfait si tout sommet de X est lorigine dun arc de C . a) D emontrer que les couplages de G sont en bijection avec les ots entiers dun r eseau que lon construira. b) En d eduire que G poss` ede un couplage parfait si et seulement si : T X, Version 6 f evrier 2005 Card(+ (T )) Card(T )

Exercices

291

8.3. Soit G = (S, A) un graphe orient e connexe a ` n sommets et m arcs et soit T un sous-ensemble de sommets. On appelle cocycle associ ea ` T le sous-ensemble darcs (T )= +(T ) (T ). On associe au cocycle (T ) le vecteur caract eristique m T de {0, 1, 1} d eni par : T (u) = 1 si u + (T ) 1 si u (T ) 0 sinon

8.4. D emontrer la proposition 2.8 . 8.5. Soit R = (G, b, s, p) le r eseau dun probl` eme de ot maximum. Construire un r eseau R contenant plusieurs coupes de valeur minimum. On note C (R) lensemble des coupes de valeur minimum du r eseau R. Montrer que C (R) est stable pour lunion et lintersection. 8.6. D emontrer la proposition 4.1.

a) Montrer que les vecteurs caract eristiques dun cycle et dun cocycle quelconques sont orthogonaux. Montrer que le sous-espace vectoriel de Rm engendr e par les cocycles est de dimension n 1.

8.7. Soit G = (S, A) un graphe orient e fortement connexe et c : A Z une fonction co ut sur les arcs. On suppose quil nexiste pas de circuit de co ut strictement n egatif. On note Fk (x) le co ut minimum dun chemin de k arcs de s a `x dans G en posant Fk (x) = + si un tel chemin nexiste pas. Si est u circuit de G a ` p arcs, le co ut moyen de est d eni par : c ( ) = c( )/p. Il sagit alors de calculer par lalgorithme de Karp le co ut moyen minimum dun circuit de G, cest-` a-dire la valeur : = min{c ( ) | C (G)} o` u C (G) est lensemble des circuits de G. a) Montrer que : min max { Fn (x) Fk (x) } = 0 = 0 nk

xS k {0,...,n1}

On notera (x) le co ut minimum dun chemin de s a ` x dans G et on montrera que : Fn (x) Fk (x) max { }0 k {0,...,n1} nk

et que l egalit e a lieu si et seulement si Fn (x) = (x). On montrera ensuite quil existe un sommet y tel que Fn (y ) = (y ). En d eduire que : Fn (x) Fk (x) = min max { } xS k {0,...,n1} nk 8.8. Soit (G, b, s, p) le r eseau dun probl` eme de ot maximum. On suppose que : 2K 1 < B = max b(u) 2K 1
uA

Version 6 f evrier 2005

292

Chapitre 8. Flots

On peut donc coder chaque capacit e avec au plus K bits. Si p est un entier naturel (k ) cod e sur K bits, on note p , k {1, . . . , K }, lentier associ e aux k bits de poids fort de p (par exemple si p = 7 et K = 5, alors p(3) = 1). On consid` ere le probl` eme (k ) Pk = (G, bk , s, p) o` u bk (u) = b(u) . a) Montrer que bk+1 (u) {2bk (u), 2bk (u) + 1}
Soit fk la valeur maximum dun ot de Pk , montrer que fk +1 2fk + m

o` u m est le nombre darcs du r eseau. b) En d eduire une variante polynomiale de lalgorithme g en erique de Ford et Fulkerson, de complexit e O (nm log B ). 8.9. Soit R = (G, a, b, c) un r eseau valu e muni dune fonction dore et de demande d : S Z telle que S d(s) = 0. Soit u un arc de G dont la capacit e minimale a(u) est strictement positive. a) Montrer que lon peut transformer d(u ), d(u+ ), a(u) et b(u) en d (u ), d (u+ ), a (u) = 0 et b (u) de sorte que les ots de R et de R soient en bijection et que les co uts de deux ots associ es dans la bijection di` erent dune constante. Soit R = (G, 0, b, c) un r eseau valu e muni dune fonction dore et de demande d : S Z telle que S d(s) = 0. Soit u un arc de G.

b) Montrer que lon peut transformer larc u en deux arcs u1 et u2 de capacit e minimale nulle et de capacit e maximale innie, tels que : + + u u u+ u est un nouveau sommet ; 1 = u , 2 = u , 1 = u2 = o` les ots de R et du nouveau r eseau R se correspondent dans une bijection conservant le co ut.

Version 6 f evrier 2005

293

Chapitre 9

Automates
Dans ce chapitre, nous pr esentons les bases de la th eorie des automates nis. Nous montrons l equivalence entre les automates nis et les automates nis d eterministes, puis nous etudions des propri et es de fermeture. Nous prouvons le th eor` eme de Kleene qui montre que les langages reconnaissables et les langages rationnels sont une seule et m eme famille de langages. Nous prouvons lexistence et lunicit e dun automate d eterministe minimal reconnaissant un langage donn e, et nous pr esentons lalgorithme de Hopcroft de minimisation.

Introduction
Les automates nis constituent lun des mod` eles de calcul les plus anciens en informatique. A lorigine, ils ont et e con cus et employ es comme une tentative de mod elisation des neurones ; les premiers r esultats th eoriques, comme le th eor` eme de Kleene, datent de cette epoque. Parall` element, ils ont et e utilis es en tant quoutils de d eveloppement des circuits logiques. Les applications les plus courantes sont a ` pr esent le traitement de texte, dans son sens le plus g en eral. Lanalyse lexicale, la premi` ere phase dun compilateur, est r ealis ee par des algorithmes qui reproduisent le fonctionnement dun automate ni. La sp ecication dun analyseur lexical se fait dailleurs souvent en donnant les expressions rationnelles des mots a ` reconna tre. Dans le traitement de langues naturelles, on retrouve les automates nis sous le terme de r eseau de transitions. Enn, le traitement de texte proprement dit fait largement appel aux automates, que ce soit pour la reconnaissance de motifs qui constitue lobjet du chapitre suivant ou pour la description de cha nes de caract` eres, sous le vocable dexpressions r eguli` eres. De nombreuses primitives courantes dans les syst` emes dexploitation modernes font appel, implicitement ou explicitement, a ` ces concepts. La th eorie des automates a egalement connu de grands d eveloppements du point de vue math ematique, en liaison etroite avec la th eorie des mono des nis, princiVersion 6 f evrier 2005

294

Chapitre 9. Automates

palement sous limpulsion de M. P. Sch utzenberger. Elle a aussi des liens profonds avec les th eories logiques.

9.1

Mots et langages

Soit A un ensemble. On appelle mot sur A toute suite nie u = (a1 , . . . , an ) o` u n 0, et ai A pour i = 1, . . . , n. Lentier n est la longueur de u, not ee |u|. Si n = 0, le mot est appel e le mot vide, et est not e 1 ou . Si v = (b1 , . . . , bm ) est un autre mot, le produit de concat enation de u et v est le mot uv = (a1 , . . . , an , b1 , . . . , bm ) Tout mot etant le produit de concat enation de mots de longueur 1, on identie les mots de longueur 1 et les el ements de A. On appelle alors A lalphabet, et les el ements de A des lettres. On note A lensemble des mots sur A. Si u, v et w sont des mots et w = uv , alors u est un pr exe et v est un suxe de w . Si de plus u = w (resp. v = w ), alors u est un pr exe propre (resp. un suxe propre) de w . Le mot v est un facteur dun mot w sil existe des mots u et u tels que w = uvu . Un langage (formel) sur A est une partie X de A . Si X et Y sont des langages, le produit XY est d eni par XY = {xy | x X, y Y } Ce produit est associatif, et le langage {1} est el ement neutre pour le produit. On 0 d enit les puissances de X par X = {1}, et X n+1 = X n X pour n 0. L etoile de X est le langage X = Xn
n0

Cest lensemble de tous les produits x1 xn , pour n 0 et x1 , . . . , xn X . Le mot vide appartient toujours a ` X . Il est facile de v erier que X = {1} XX = {1} X X Il est commode de noter X + lensemble XX = X X . Souvent, on omettra des accolades autour de singletons ; ainsi, on ecrira w au lieu de {w }.

Version 6 f evrier 2005

9.2. Automates nis

295

9.2
9.2.1

Automates nis
D enition

Parfois, on ecrit plus simplement A = (Q, I, T ), lorsque lensemble des ` eches est sous-entendu, mais cette notation est critiquable car lensemble des ` eches est essentiel. L etiquette dune ` eche f = (p, a, q ) est la lettre a. Un calcul de longueur n dans A est une suite c = f1 fn de ` eches cons ecutives fi = (pi , ai , qi ), cesta `-dire telles que qi = pi+1 pour i = 1, . . . , n 1. L etiquette du calcul c est |c| = a1 an . On ecrit egalement, si w = |c|, c : p1 qn ou c : p1 qn Par convention, il existe un calcul vide 1q : q q d etiquette ou 1 (le mot vide) pour chaque etat q . Les calculs peuvent etre compos es. Etant donn es deux calculs c : p q et d : q r , le calcul cd : p r est d eni par concat enation. On a bien entendu |cd| = |c| |d|.
w

Un automate ni sur un alphabet ni A est compos e dun ensemble ni Q d etats, dun ensemble I Q d etats initiaux , dun ensemble T Q d etats terminaux ou nals et dun ensemble F Q A Q de ` eches. Un automate est habituellement not e A = (Q, I, T, F )

Un calcul c : i t est dit r eussi si i I et t T . Un mot est reconnu sil est l etiquette dun calcul r eussi. Le langage reconnu par lautomate A est lensemble des mots reconnus par A, soit L(A) = {w A | c : i t, i I, t T, w = |c|}

Une partie X A est reconnaissable sil existe un automate ni A sur A telle que X = L(A). La famille de toutes les parties reconnaissables de A est not ee Rec(A ). La terminologie qui vient d etre introduite sugg` ere delle-m eme une repr esentation graphique dun automate ni par ce qui est appel e son diagramme d etats : les etats sont repr esent es par les sommets dun graphe (plus pr ecis ement dun multigraphe). Chaque ` eche (p, a, q ) est repr esent ee par un arc etiquet e qui relie l etat de d epart p a ` l etat darriv ee q , et qui est etiquet e par l etiquette a de la ` eche. Un calcul nest autre quun chemin dans le multigraphe, et l etiquette du calcul est la suite des etiquettes des arcs composant le chemin. Dans les gures, on attribue un signe distinctif aux etats initiaux et terminaux. Un etat initial est muni dune ` eche qui pointe sur lui, un etat nal est rep er e par une ` eche qui le quitte. Parfois, nous convenons de r eunir en un seul arc plusieurs arcs etiquet es ayant les m emes extr emit es. Larc porte alors lensemble de ces etiquettes. En particulier, sil y a une ` eche (p, a, q ) pour toute lettre a A, on tracera une ` eche unique d etiquette A. Version 6 f evrier 2005

296

Chapitre 9. Automates

9.2.2

Exemples

Lautomate de la gure 2.1 est d eni sur lalphabet A = {a, b}.


a 1 2 b 3 b a

Figure 2.1: Automate reconnaissant le langage abA . L etat initial est l etat 1, le seul etat nal est 3. Tout calcul r eussi se factorise en 1 2 3 3 avec w A . Le langage reconnu est donc bien abA . Toujours sur lalphabet A = {a, b}, consid erons lautomate de la gure 2.2.
a b a b a
a b w

Figure 2.2: Automate reconnaissant le langage A aba. Cet automate reconna t lensemble A aba des mots qui se terminent par aba. Lautomate de la gure 2.3 est d eni sur lalphabet A = {a, b}.
a,b 1 b 2 a,b

Figure 2.3: Automate reconnaissant les mots contenant au moins un b. Tout calcul r eussi contient exactement une fois la ` eche (1, b, 2). Un mot est donc reconnu si et seulement sil contient au moins une fois la lettre b. Lautomate de la gure 2.4 reconna t lensemble des mots contenant un nombre impair de a. Un autre exemple est lautomate vide, ne contenant pas d etats. Il reconna t le langage vide. A linverse, lautomate de la gure 2.5 ayant un seul etat qui est a ` la fois initial et terminal, et une ` eche pour chaque lettre a A reconna t tous les mots. Enn, le premier des deux automates de la gure 2.6 ne reconna t que le mot vide, alors que le deuxi` eme reconna t tous les mots sur A sauf le mot vide, cest-` a-dire le langage A+ . Version 6 f evrier 2005

9.2. Automates nis

297

Figure 2.4: Automate reconnaissant les mots contenant un nombre impair de a.


A

Figure 2.5: Tous les mots sont reconnus.


A

(i )

(ii )

Figure 2.6: Automates reconnaissant (i) le mot vide et (ii) tous les mots
sauf le mot vide.

9.2.3

Automates d eterministes

Un etat q Q dun automate A = (Q, I, T, F ) est accessible sil existe un calcul c : i q avec i I . De m eme, l etat q est coaccessible sil existe un calcul c : q t avec t T . Un automate est emond e si tous ses etats sont accessibles et coaccessibles. Soit P lensemble des etats qui sont a ` la fois accessibles et coaccessibles, et soit A0 = (P, I P, T P, F P A P ). Il est clair que A0 est emond e. Comme tout calcul r eussi de A ne passe que par des etats accessibles et coaccessibles, on a L(A0 ) = L(A). Emonder un automate ni revient a ` calculer lensemble des etats qui sont descendants dun etat initial et ascendants dun etat nal. Cela peut se faire en temps lin eaire en fonction du nombre de ` eches (darcs), par les algorithmes du chapitre 4. Dans la pratique, les automates d eterministes que nous d enissons maintenant sont les plus importants, notamment parce quils sont faciles a ` impl ementer. Un automate A = (Q, I, T, F ) est d eterministe sil poss` ede un seul etat initial (cest-` a-dire |I | = 1) et si (p, a, q ), (p, a, q ) F q = q Ainsi, pour tout p Q et tout a A, il existe au plus un etat q dans Q tel que Version 6 f evrier 2005

298 (p, a, q ) F . On pose alors, pour p Q et a A, pa= q si (p, a, q ) F , sinon. QAQ

Chapitre 9. Automates

On d enit ainsi une fonction partielle

appel ee la fonction de transition de lautomate d eterministe. On l etend aux mots en posant, pour p Q, p1=p et pour w A , et a A, p wa = (p w ) a

Cette notation signie que p wa est d eni si et seulement si p w et (p w ) a sont d enis, et dans larmative, p wa prend la valeur indiqu ee. Avec cette notation on a, avec I = {i}, L(A) = {w A | i w T }. Un automate est dit complet si, pour tout p Q et a A, il existe au moins un etat q Q tel que (p, a, q ) F . Si un automate ni A nest pas complet, on peut le compl eter sans changer le langage reconnu en ajoutant un nouvel etat non nal s, et en ajoutant les ` eches (p, a, s) pour tout couple (p, a) tel que (p, a, q ) /F pour tout q Q. Rendre un automate d eterministe, cest-` a-dire le d eterminiser, est plus dicile, et donne lieu a ` un algorithme int eressant. Th eor` eme 2.1. Pour tout automate ni A, il existe un automate ni d eterministe et complet B tel que L(A) = L(B ). Preuve. Soit A = (Q, I, T, F ). On d enit un automate d eterministe B qui a pour ensemble d etats lensemble (Q) des parties de Q, pour etat initial I , et pour ensemble d etats terminaux V = {S Q | S T = }. On d enit enn la fonction de transition de B pour S (Q) et a A par S a = {q Q | s S : (s, a, q ) F }. Nous prouvons par r ecurrence sur la longueur dun mot w que S w = {q Q | s S : s q }. Ceci est clair si w = 1, et est vrai par d enition si w est une lettre. Posons w = va, avec v A et a A. Alors comme par d enition S w = (S v ) a, on a q S w si et seulement sil existe une ` eche (p, a, q ), avec p S v , donc telle quil existe v un calcul s p pour un s S . Ainsi q S w si et seulement sil existe un w calcul s q avec s S . Ceci prouve lassertion. Version 6 f evrier 2005
w

9.2. Automates nis

299

Maintenant, w L(A) si et seulement sil existe un calcul r eussi d etiquette w , ce qui signie donc que I w contient au moins un etat nal de A, en dautres termes que I w T = . Ceci prouve l egalit e L(A) = L(B ). La d emonstration du th eor` eme est constructive. Elle montre que pour un automate A a `n etats, on peut construire un automate ni d eterministe reconnaissant le m eme langage et ayant 2n etats. La construction est appel ee la construction par sous-ensembles (en anglais la subset construction ). Exemple. Sur lalphabet A = {a, b}, consid erons lautomate A reconnaissant le langage A ab des mots se terminant par ab (gure 2.7).
a 1 b a 2 b 3

Figure 2.7: Un automate reconnaissant le langage A ab. Lapplication stricte de la preuve du th eor` eme conduit a ` lautomate d eterministe a `8 etats de la gure 2.8. Cet automate a beaucoup d etats inaccessibles. Il sut
b 1 a,b / 0 a 2 a a,b 3 a b 23 b a a 13 12 b a b 123 a

Figure 2.8: Lautomate d eterminis e. de se contenter des etats accessibles, et si lon na pas besoin dun automate complet, il sut de consid erer la partie emond ee ; dans notre exemple, on obtient lautomate complet a ` trois etats de la gure 2.9. En pratique, pour d eterminiser un automate A, on ne construit pas lautomate d eterministe de la preuve en entier avant de l emonder ; on combine plut ot les deux etapes en une seule, en faisant une recherche des descendants de l etat initial de lautomate B pendant sa construction. On maintient pour cela un ensemble R d etats de B d ej` a construits, et un ensemble de transitions (S, a) qui restent a ` explorer et qui sont compos ees dun etat de B d ej` a construit et dune lettre. A chaque etape, on choisit un couple (S, a) et on construit l etat S a de B en se Version 6 f evrier 2005

300
b 1 a b a 13 12 b a

Chapitre 9. Automates

Figure 2.9: Lautomate d eterministe et emond e. servant de lautomate de d epart A. Si l etat S = S a est connu parce quil gure dans R, on passe a ` la transition suivante ; sinon, on lajoute a ` R et on ajoute a ` la liste des transitions a ` explorer les couples (S , a), pour a A. Exemple. Reprenons lexemple ci-dessus. Au d epart, lensemble d etats de lautomate d eterministe est r eduit a ` {1}, et la liste E des transitions a ` explorer est ({1}, a), ({1}, b). On d ebute donc avec Choisissons la premi` ere transition, ce qui donne le nouvel etat {1, 2} et les nouvelles transitions ({1, 2}, a), ({1, 2}, b), do` u R = {{1}, {1, 2}} E = ({1}, b), ({1, 2}, a), ({1, 2}, b) Les etapes suivantes sont (noter que lon a le choix de la transition a ` traiter, ici on les consid` ere dans lordre darriv ee) : R = {{1}, {1, 2}} E = ({1, 2}, a), ({1, 2}, b) R = {{1}, {1, 2}} E = ({1, 2}, b) R = {{1}, {1, 2}, {1, 3}} E = ({1, 3}, a), ({1, 3}, b) R = {{1}, {1, 2}, {1, 3}} E = ({1, 3}, b) R = {{1}, {1, 2}, {1, 3}} E= R = {{1}} E = ({1}, a), ({1}, b)

Comme le sugg` ere la construction, il existe des automates a `n etats pour lesquels tout automate d eterministe equivalent poss` ede de lordre de 2n etats. Voici, pour tout entier positif n x e, un automate a ` n+1 etats (gure 2.10) qui reconna t n1 le langage Ln = A aA sur lalphabet A = {a, b}. Nous allons d emontrer
a 0 b a 1 a,b 2 a,b 3 a,b a,b n

Figure 2.10: Un automate a ` n+1 etats. que tout automate d eterministe reconnaissant Ln a au moins 2n etats. Soit en eet A = (Q, i, T ) un automate d eterministe reconnaissant Ln . Alors on a, pour n v, v A : iv =iv v =v (2.1) Version 6 f evrier 2005

9.3. Op erations

301

En eet, supposons v = v . Il existe alors des mots x, x , w tels que v = xaw et v = x bw ou vice-versa. Soit y un mot quelconque tel que wy est de longueur n 1. Alors vy = xawy Ln et v y = x bwy / Ln , alors que l egalit e iv = iv implique que i vy = i v y , et donc que vy et vy soit sont tous deux dans Ln , soit sont tous deux dans le compl ement de Ln . Do` u la contradiction. Limplication n (2.1) montre que A a au moins 2 etats.

9.3
9.3.1

Op erations
Op erations bool eennes

Proposition 3.1. La famille des langages reconnaissables sur un alphabet A est ferm ee pour les op erations bool eennes, cest-` a-dire pour lunion, lintersection et la compl ementation. Preuve. Soient X et X deux langages reconnaissables de A , et soient A = (Q, i, T ) et A = (Q , i , T ) deux automates nis d eterministes complets tels que X = L(A) et X = L(A ). Consid erons lautomate d eterministe complet B = (Q Q , (i, i ), S ) dont la fonction de transition est d enie par (p, p ) a = (p a, p a) pour tout couple d etats (p, p ) et toute lettre a A. Alors on a (p, p ) w = (p w, p w ) pour tout mot w , comme on le v erie imm ediatement en raisonnant par r ecurrence sur la longueur de w . Il r esulte de cette equation que pour S = T T , on obtient L(B ) = X X , et pour S = (T Q ) (Q T ), on obtient L(B ) = X X . Enn, pour S = T (Q T ), on a L(B ) = X X . Corollaire 3.2. Un langage X est reconnaissable si et seulement si X {1} est reconnaissable.

9.3.2

Automates asynchrones

Nous introduisons maintenant une g en eralisation des automates nis, dont nous montrons quen fait ils reconnaissent les m emes langages. Lextension r eside dans le fait dautoriser egalement le mot vide comme etiquette dune ` eche. Lavantage de cette convention est une bien plus grande souplesse dans la construction des Version 6 f evrier 2005

302

Chapitre 9. Automates

automates. Elle a en revanche linconv enient daccro tre le nond eterminisme des automates. Un automate ni asynchrone A = (Q, I, T, F ) est un automate dans lequel certaines ` eches peuvent etre etiquet ees par le mot vide, donc tel que Les notions de calcul, d etiquette, de mot et de langage reconnu s etendent de mani` ere evidente aux automates asynchrones. La terminologie provient de lobservation que, dans un automate asynchrone, la longueur dun calcul r eussi, donc la longueur dun calcul, peut etre sup erieure a ` la longueur du mot qui est son etiquette. Dans un automate usuel en revanche, lecture dune lettre et progression dans lautomate sont rigoureusement synchronis ees. Exemple. Lautomate asynchrone de la gure 3.1 reconna t le langage a b .
a 0 1 1 b

F Q (A 1) Q.

Figure 3.1: Un automate asynchrone. Proposition 3.3. Pour tout automate ni asynchrone A, le langage L(A) est reconnaissable. Preuve. Soit A = (Q, I, T ) un automate ni asynchrone sur A. Soit B = (Q, I, T ) lautomate ni dont les ` eches sont les triplets (p, a, q ) pour lesquels il existe un a calcul c : p q dans A. On a Si I T = , les deux langages L(A) et L(B ) contiennent le mot vide et sont donc egaux. Dans le cas contraire, on a L(A) = L(B ) 1 ou L(A) = L(B ), selon que le mot vide 1 est l etiquette dun calcul r eussi dans A ou non. Ceci prouve que L(A) est reconnaissable. Reprenons notre exemple de lautomate de la gure 3.1. La construction de la preuve conduit a ` lautomate synchrone de la gure 3.2.
a 0 a,b 1 b

L(A) A+ = L(B ) A+ .

Figure 3.2: Lautomate pr ec edent synchronis e . En eet, il existe dans lautomate dorigine deux calculs, de longueur 2, de l etat 0 a ` l etat 1, lun portant l etiquette a, lautre l etiquette b. Notons que cet automate ne reconna t pas le mot vide, donc ne reconna t le langage a b quau mot vide pr` es. Version 6 f evrier 2005

9.4. Langages rationnels

303

9.3.3

Produit et etoile

Proposition 3.4. Si X est reconnaissable, alors X est reconnaissable ; si X et Y sont reconnaissables, alors XY est reconnaissable. Preuve. Soit X un langage reconnaissable. Comme X = (X 1) , et que X 1 est reconnaissable, on peut supposer que X ne contient pas le mot vide. Soit A = (Q, I, T, F ) un automate ni reconnaissant X , et soit B = (Q, I, T ) lautomate asynchrone ayant pour ` eches F (T {1} I ) Montrons que lon a X + = L(B ). Il est clair en eet que X + L(B ). R eciprow quement, soit c : i t un calcul r eussi dans B . Ce calcul a la forme
n 1 2 tn c : i1 t1 i2 t2 in k avec i = i1 , t = tn , et o` u aucun des calculs ck : ik tk ne contient de ` eche + etiquet ee par le mot vide. Alors w1 , w2 , . . . , wn X , et donc w X . Il en r esulte evidemment que X = X + 1 est reconnaissable.

Notons que T I = parce que le mot vide nest pas dans X .

Consid erons maintenant deux automates nis A = (Q, I, T, F ) et B = (P, J, R, G ) reconnaissant respectivement les langages X et Y . On peut supposer les ensembles d etats Q et P disjoints. Soit alors C = (Q P, I, R) lautomate dont les ` eches sont F G (T {1} J ) Alors on v erie facilement que L(C ) = XY .

9.4

Langages rationnels

Dans cette section, nous d enissons une autre famille de langages, les langages rationnels, et nous prouvons quils co ncident avec les langages reconnaissables. Gr ace a ` ce r esultat, d ua ` Kleene, on dispose de deux caract erisations tr` es di erentes dune m eme famille de langages.

9.4.1

Langages rationnels : d enitions

Soit A un alphabet. Les op erations rationnelles sur les parties de A sont les op erations suivantes : union produit etoile X Y ; XY = {xy | x X, y Y } ; X = le sous-mono de engendr e par X . Version 6 f evrier 2005

304

Chapitre 9. Automates

Une famille de parties de A est rationnellement ferm ee si elle est ferm ee pour les trois op erations rationnelles. Les langages rationnelsindexrationnel, langage de A sont les el ements de la plus petite famille rationnellement ferm ee de A qui contient les singletons (cest-` a-dire les langages r eduits a ` un seul mot) et le langage vide. Cette famille est not ee Rat(A ). Une expression dun langage comme combinaison nie dunions, de produits et d etoiles de singletons est une expression rationnelle. Une etude plus formelle des expressions rationnelles est entreprise au paragraphe 3 de cette section. Consid erons quelques exemples. Le langage abA , avec A = {a, b}, est rationnel : il est le produit des singletons a et b par l etoile de A qui est lui-m eme lunion des deux lettres a et b. De m eme, le langage A aba est rationnel. Toujours sur A = {a, b}, le langage L des mots qui contiennent un nombre pair de a est rationnel : cest le langage L = (ab a b) .

9.4.2

Le th eor` eme de Kleene

Le th eor` eme suivant est d ua ` Kleene : Th eor` eme 4.1 (de Kleene). Soit A un alphabet ni. Alors les langages rationnels et reconnaissables sur A co ncident : Rat(A ) = Rec(A ). Cet enonc e est remarquable dans la mesure o` u il donne deux caract erisations tr` es di erentes dune m eme famille de langages : lautomate ni est un moyen de calcul, et se donner un langage par un automate ni revient a ` se donner un algorithme pour v erier lappartenance de mots au langage. Au contraire, une expression rationnelle d ecrit la structure syntaxique du langage. Elle permet en particulier des manipulations, et des op erations entre langages. La d emonstration du th eor` eme de Kleene est en deux parties. Une premi` ere partie consiste a ` montrer que tout langage rationnel est reconnaissable, cesta `-dire a ` prouver linclusion Rat(A ) Rec(A ). On lobtient en montrant que la famille Rec(A ) est ferm ee pour les op erations rationnelles. Linclusion oppos ee Rec(A ) Rat(A ) se montre en exhibant, pour tout automate ni, une expression rationnelle (au sens du paragraphe suivant) du langage quil reconna t. Nous commen cons par la proposition suivante : Proposition 4.2. Soit A un alphabet. Tout langage rationnel de A est reconnaissable : Rat(A ) Rec(A ). Preuve. La famille des langages sur A reconnus par des automates nis est ferm ee par union, produit et etoile. Par ailleurs, elle contient les singletons ; en eet, pour tout mot w = a1 a2 an de longueur n, lautomate de la gure 4.1 reconna t ce mot. Ainsi, Rec(A ) est ferm ee pour les op erations rationnelles. Ceci montre que tout langage rationnel sur A est reconnaissable. Version 6 f evrier 2005

9.4. Langages rationnels


0 a1 1 a2 2 an n

305

Figure 4.1: Automate reconnaissant exactement le mot w = a 1 a2 an . Proposition 4.3. Soit A un alphabet ni. Tout langage reconnaissable de A est rationnel : Rec(A ) Rat(A ). Preuve. Soit A = (Q, I, T ) un automate ni sur A, et soit X le langage reconnu. Num erotons les etats de mani` ere que Q = {1, . . . , n}. Pour i, j dans Q, soit w (k ) Xi,j = {w | i j }, et pour k = 0, . . . , n, soit Xi,j lensemble des etiquettes des calculs de longueur strictement positive de la forme i p1 . . . ps j,
(0)

s 0,

p 1 , . . . , ps k
(0)

Observons que Xi,j A, et donc que chaque Xi,j est une partie rationnelle, parce que lalphabet est ni. Ensuite, on a Xi,j
(k +1)

= Xi,j Xi,k+1 Xk+1,k+1

(k )

(k )

(k )

Xk+1,j

(k )

(4.1)
(k )

et

Cette formule montre, par r ecurrence sur k , que chacun des langages Xi,j est rationnel. Or (n) Xi,j si i = j Xi,j = (4.2) (n) 1 Xi,j si i = j X=
iI tT

Xi,t

(4.3)

et par cons equent les langages Xi,j sont rationnels. Donc X est egalement rationnel. Les formules (4.1)(4.3) permettent de calculer eectivement une expression (expression rationnelle) pour le langage reconnu par un automate ni. Cette m ethode est appel ee lalgorithme de MacNaughton et Yamada, dapr` es ses cr eateurs. Il est tr` es simple, mais pas tr` es ecace dans la mesure o` u il faut calculer les O (n3 ) (k ) `n etats. Une fa con parfois plus commode expressions Xi,j pour un automate a surtout pour les calculs a ` la main de d eterminer lexpression rationnelle du langage reconnu par un automate consiste a ` r esoudre un syst` eme d equations lin eaires naturellement associ ea ` tout automate ni. Soit A = (Q, I, T, F ) un automate ni sur A. Le syst` eme d equations (lin eaire droit) associ ea ` A est Xp =
q Q

Ep,q Xq p,T

pQ

Version 6 f evrier 2005

306 o` u

Chapitre 9. Automates

Consid erons par exemple lautomate de la gure 4.2.


b 1 b a a 3 2 b a

Ep,q = {a A | (p, a, q ) F }, {1} si p T p,T = sinon

p, q Q

Figure 4.2: Quel est le langage reconnu par cet automate? Le syst` eme d equations associ ea ` cet automate est X1 = bX1 aX2 X2 = aX2 bX3 X3 = bX1 aX2 1 Une solution du syst` eme d equations est une famille (Lp )pQ de langages qui v erie le syst` eme d equations. Proposition 4.4. Soit A = (Q, I, T ) un automate ni sur A, et posons Lp (A) = {w A | c : p t T, |c| = w } Alors la famille (Lp (A))pQ est lunique solution du syst` eme d equations associ e a ` A. Le langage Lp (A) est lensemble des mots reconnus par A en prenant p pour etat initial, de sorte que L(A) = Lp (A)
pI

Nous commen cons par le cas particulier dun syst` eme d equations r eduit a ` une seule equation. La d emarche sera la m eme dans le cas g en eral. Lemme 4.5 (Lemme dArden). Soient E et F deux langages. Si 1 / E , alors l equation X = EX F poss` ede une solution unique, a ` savoir le langage E F . Preuve. Posons L = E F . Alors EL F = EE F F = (EE 1)F = E F = L, ce qui montre que L est bien solution de l equation. Supposons quil y ait deux solutions L et L . Comme L L = (EL F ) L = EL L EL EL Version 6 f evrier 2005

9.4. Langages rationnels

307

et que EL EL E (L L ), on a L L E (L L ) E n (L L ) pour tout n > 0. Mais comme le mot vide nappartient pas a ` E , cela signie quun mot de L L a pour longueur au moins n pour tout n. Donc L L est vide, et par cons equent L L et de m eme L L. Preuve de la proposition. Pour montrer que les langages Lp (A), (p Q), constituent une solution, posons Lp =
q Q

Ep,q Lq (A) p,T

et v erions que Lp (A) = Lp pour p Q. Si 1 Lp (A), alors p T , donc p,T = {1} et 1 Lp , et r eciproquement. Soit w Lp (A) de longueur > 0 ; il existe un calcul c : p t pour un t T d etiquette w . En posant w = av , avec a v a une lettre et v un mot, le calcul c se factorise en p q t pour un etat q . Mais alors a Ep,q et v Lq (A), donc w Lp . Linclusion r eciproque se montre de la m eme fa con. Pour prouver lunicit e de la solution, on proc` ede comme dans la preuve du lemme dArden. Soient (Lp )pQ et (Lp )pQ deux solutions du syst` eme d equations, et posons Mp = Lp Lp pour p Q. Alors Mp =
q Q

Ep,q Lq p,T Lp

q Q

(Ep,q Lq Ep,q Lq )

Ep,q Mq
q Q

A nouveau, ces inclusions impliquent que Mp = pour tout p. Supposons en eet le contraire, soit w un mot de longueur minimale dans M =
pQ

Mp

et soit p un etat tel que w Mp . Alors w Ep,q Mq


q Q

donc w est le produit dune lettre et dun mot v de M ; mais alors v est plus court que w , une contradiction. Pour r esoudre un syst` eme d equations, on peut proc eder par elimination de variables (cest la m ethode de Gauss). Dans notre exemple, on substitue la troisi` eme equation dans la deuxi` eme, ce qui donne X2 = (a ba)X2 b2 X1 b qui, par le lemme dArden, equivaut a ` l equation X2 = (a ba) (b2 X1 b) Version 6 f evrier 2005

308

Chapitre 9. Automates

Cette expression pour X2 est substitu ee dans la premi` ere equation du syst` eme ; on obtient X1 = (b a(a ba) b2 )X1 a(a ba) b do` u, a ` nouveau par le lemme dArden, X1 = (b a(a ba) b2 ) a(a ba) b Il nest pas du tout evident que cette derni` ere expression soit egale a ` {a, b} ab. Pour le montrer, observons dabord que (a ba) = a (ba+ ) (rappelons que X + = XX = X X pour tout X ) en utilisant la r` egle (U V ) = U (V U ) , do` u a(a ba) b = a+ (ba+ ) b = (a+ b)+ Il en r esulte que b a(a ba) b2 = [1 (a+ b)+ ]b = (a+ b) b do` u X1 = [(a+ b) b] (a+ b) (a+ b) = (a+ b b) (a+ b) = (a b) a ab = {a, b} ab

9.4.3

Expressions rationnelles

Le th eor` eme de Kleene, qui etablit l egalit e entre langages rationnels et reconnaissables, poss` ede des preuves constructives. Lune est lalgorithme de McNaughton et Yamada, la deuxi` eme revient a ` r esoudre un syst` eme d equations lin eaires. Dans les deux cas, la rationalit e du langage obtenu est evidente parce quelle provient dune expression rationnelle fournie pour le langage ; plus pr ecis ement, le langage est exprim ea ` laide des op erations rationnelles. Dans ce paragraphe, nous etudions les expressions rationnelles en elles-m emes, en faisant une distinction entre une expression et le langage quelle d ecrit, un peu comme lon fait la di erence entre une expression arithm etique et la valeur num erique quelle repr esente. Lapproche est donc purement syntaxique, et le langage repr esent e par une expression peut etre consid er e comme r esultant dune evaluation de lexpression. Les manipulations (alg ebriques ou combinatoires) dexpressions permettent de construire des automates ecaces reconnaissant le langage repr esent e par des op erations qui sont proches de lanalyse syntaxique, et qui ne font pas intervenir le langage lui-m eme. Elles se pr etent donc bien a ` une impl ementation eective. Une autre application est la recherche de motifs dans un texte, comme elle est r ealis ee dans un traitement de texte par exemple, et comme elle sera trait ee au chapitre suivant. Version 6 f evrier 2005

9.4. Langages rationnels

309

Soit A un alphabet ni, soient 0 et 1 deux symboles ne gurant pas dans A, et soient +, , trois symboles de fonctions, les deux premiers binaires, le dernier unaire. Les expressions sur A {0, 1, +, , } sont les termes bien form es sur cet ensemble de symboles. Exemple. Sur A = {a, b} le terme a(a + a b) b est une expression. Comme souvent, on peut repr esenter une expression par un arbre qui, sur cet exemple, est larbre de la gure 4.3.

a * + a a b b

Figure 4.3: Lexpression rationnelle a(a + a b) b. Les parenth` eses ne sont utilis ees que lorsquelles sont n ecessaires, en convenant que lop eration a priorit e sur qui a priorit e sur + ; on omet egalement le signe de multiplication quand cela ne pr ete pas a ` confusion. Les expressions rationnelles sur A sont les el ements de lalg` ebre quotient obtenue en convenant que (i) lop eration + est idempotente, associative et commutative, (ii) lop eration est associative et distributive par rapport a ` lop eration +, (iii) les equations suivantes sont v eri ees pour tout terme e : 0+e =e=e+0 1e =e=e1 0e =0 =e0 (iv) on a : 0 = 1 = 1 Exemple. Par exemple, (0 + a(1 + b 1)) et (ab + a) sont la m eme expression rationnelle, alors que 1 + a a et a sont deux expressions di erentes (m eme si elles d ecrivent le m eme langage). On note E (A) lalg` ebre des expressions rationnelles ainsi obtenue. La convention didentier certaines expressions selon les r` egles que nous venons d edicter all` ege tr` es consid erablement l ecriture et lexpos e ; tout ce qui suit pourrait se faire egalement en ne raisonnant que sur les termes ou les arbres. Version 6 f evrier 2005

310

Chapitre 9. Automates

Limportant est toutefois que l egalit e de deux expressions est facilement d ecidable sur les expressions elles-m emes. Pour ce faire, on met une expression, donn ee disons sous forme darbre, en forme normale en supprimant dabord les feuilles 0 ou 1 quand cest possible en appliquant les egalit es (iii) ci-dessus, puis en distribuant le produit par rapport a ` laddition pour faire descendre au maximum les produits. Lorsque les deux expressions sont en forme normale, on peut d ecider r ecursivement si elles sont egales : il faut et il sut pour cela quelles aient m eme symbole aux racines, et si les suites dexpressions des ls obtenues en faisant jouer lassociativit e de et les ensembles dexpressions des ls modulo lassociativit e, lidempotence et la commutativit e de + sont egaux. Exemple. En appliquant les r` egles de simplication a ` lexpression (0 + a(1 + b 1)) , on obtient (a(1+ b)) . Par distributivit e et simplication, elle donne (a + ab) , et les deux expressions ls de la racine sont les m emes dans cette expression, et dans (ab + a) . Remarque. Dans ce qui pr ec` ede ne gure pas lop eration e e+ . Cest pour ne pas alourdir lexpos e que nous consid erons cette op eration comme une abr e viation de ee ; on pourrait aussi bien consid erer cette op eration comme op eration de base. Il y a une application naturelle de lalg` ebre des expressions rationnelles sur A dans les langages rationnels sur A. Cest lapplication L : E (A) (A ) d enie par r ecurrence comme suit : L(0) = , L(1) = {1}, L(a) = {a}, L(e + e ) = L(e) L(e ), L(e e ) = L(e)L(e ), L(e ) = L(e) Pour une expression e, le langage L(e) est le langage d ecrit ou d enot e par e. Deux expressions e et e sont dites equivalentes lorsquelles d enotent le m eme langage, cest-` a-dire lorsque L(e) = L(e ). On ecrit alors e e . Proposition 4.6. Pour toutes expressions rationnelles e et f , on a les formules suivantes : (ef ) 1 + e(f e) f (e + f ) e (f e ) e (1 + e + . . . + ep1 )(ep )

p>1

Cette proposition est un corollaire imm ediat du lemme suivant :

Version 6 f evrier 2005

9.5. Automate minimal Lemme 4.7. Quelles que soient les parties X et Y de A , on a (XY ) = 1 X (Y X ) Y (X Y ) = X (Y X ) X = (1 X X p1 )(X p )

311

p>1

(4.4) (4.5) (4.6)

Preuve. Pour etablir (4.4), montrons dabord que (XY ) 1 X (Y X ) Y . Pour cela, soit w (XY ) . Alors w = x1 y1 xn yn pour n 0 et xi X , yi Y . Si n = 0, alors w = 1, sinon w = x1 vyn , avec v = y1 xn (Y X ) . Ceci prouve linclusion. Linclusion r eciproque se montre de mani` ere similaire. Pour prouver (4.5), il sut d etablir (X Y ) 1 X (Y X ) linclusion r eciproque etant evidente. Soit w (X Y ) . Il existe n 0 et z1 , . . . , zn X Y tels que w = z1 zn . En groupant les zi cons ecutifs qui appartiennent a ` X , ce produit peut s ecrire w = x 0 y 1 x1 y m xm Consid erons enn (4.6). On a avec x0 , . . . , xm X et y0 , . . . , ym Y . Par cons equent w 1 X (Y X ) .
p1 k =0 m0

(1 X X

p1

)(X ) =

X k+mp = X

9.5

Automate minimal

D eterminer un automate ayant un nombre minimum d etats pour un langage rationnel donn e est tr` es int eressant du point de vue pratique. Il est tout a ` fait remarquable que tout langage rationnel poss` ede un automate d eterministe minimal unique, a ` une num erotation des etats pr` es. Ce r esultat nest plus vrai si lon consid` ere des automates qui ne sont pas n ecessairement d eterministes. Il y a deux fa cons de d enir lautomate d eterministe minimal reconnaissant un langage rationnel donn e. La premi` ere est intrins` eque ; elle est d enie a ` partir du langage par une op eration appel ee le quotient. La deuxi` eme est plus op eratoire ; on part dun automate d eterministe donn e, et on le r eduit en identiant des etats appel es ins eparables. Les algorithmes de minimisation utilisent la deuxi` eme d enition.

Version 6 f evrier 2005

312

Chapitre 9. Automates

9.5.1

Quotients

Soit A un alphabet. Pour deux mots u et v , on pose u1 v = {w A | uw = v }, uv 1 = {w A | u = wv }

Un tel ensemble, appel e quotient gauche respectivement droit est, bien entendu, soit vide soit r eduit a ` un seul mot qui, dans le premier cas est un suxe de v , et dans le deuxi` eme cas un pr exe de u. La notation est etendue aux parties en posant, pour X, Y A X 1 Y =
xX y Y

x1 y,

XY 1 =
xX y Y

xy 1

Les quotients sont un outil important pour l etude des automates nis et des langages rationnels. On utilise principalement les quotients gauches par un mot, cest-` a-dire les ensembles u1 X = {w A | uw X } Notons quen particulier, 11 X = X pour tout ensemble X , et que (uv )1 X = v 1 (u1 )X . Pour toute partie X de A , on pose Q(X ) = {u1 X | u A } (5.1)

Exemple. Sur A = {a, b}, soit X lensemble des mots qui contiennent au moins une fois la lettre a. Alors on a : 11 X = X, a1 X = A , b1 X = X, a1 A = b1 A = A

donc Q(X ) = {X, A }. Proposition 5.1. Soit X A le langage reconnu par un automate ni d eterministe, accessible et complet A = (Q, i, T ) ; pour q Q, soit Lq (A) = {w A | q w T }. Alors {Lq (A) | q Q} = Q(X ) (5.2) Preuve. Montrons dabord que Q(X ) est contenu dans {Lq (A) | q Q}. Soit u A , et soit q = i u (cet etat existe parce que A est complet). Alors u1 X = Lq (A), puisque w u1 X uw X i uw T q w T w Lq (A) Pour montrer linclusion r eciproque, soit q Q et soit u A tel que q = i u (un tel mot existe parce que lautomate est accessible). Alors Lq (A) = u1 X . Ceci prouve la proposition. Version 6 f evrier 2005

9.5. Automate minimal


a b 5 b 2 a b 4 b a,b a

313

1 a 0

3 a,b 6 a,b

Figure 5.1: Un automate reconnaissant X = b a{a, b} . Exemple. Consid erons lautomate A donn e dans la gure 5.1. Un calcul rapide montre que L1 (A) = L3 (A) = L5 (A) = L6 (A) = {a, b} L0 (A) = L2 (A) = L4 (A) = b a{a, b} L equation (5.2) est bien v eri ee. On d eduit de cette proposition que, pour un langage reconnaissable X , lensemble des quotients gauches Q(X ) est ni ; nous allons voir dans un instant que la r eciproque est vraie egalement. L equation (5.2) montre par ailleurs que tout automate d eterministe, accessible et complet reconnaissant X poss` ede au moins |Q(X )| etats. Nous allons voir que ce minimum est atteint, et m eme, au paragraphe suivant, quil existe un automate unique, a ` un isomorphisme pr` es, qui a |Q(X )| etats et qui reconna t X . A(X ) = (Q(X ), X, T (X )) dont lensemble d etats est donn e par (5.1), ayant X comme etat initial, lensemble T (X ) = {u1 X | u X } = {u1 X | 1 u1 X } comme ensemble d etats terminaux, la fonction de transition etant d enie, pour Y Q et a A par Y a = a1 Y

Soit X A . On appelle automate minimal de X lautomate d eterministe

Notons que si Y = u1 X , alors Y a = a1 (u1 X ) = (ua)1 X , donc la fonction de transition est bien d enie, et lautomate est complet.

Exemple. Lautomate A(X ) pour le langage X = b a{a, b} a les deux etats X et {a, b} , le premier est initial, le deuxi` eme est nal. Lautomate est donn e dans la gure 5.2. Proposition 5.2. Le langage reconnu par lautomate A(X ) est X . Version 6 f evrier 2005

314

Chapitre 9. Automates

b X

a A
*

Figure 5.2: Automate minimal pour X = b a{a, b} Preuve. Montrons dabord que, pour tout w A et pour tout Y Q(X ), on a Y w = w 1 Y . En eet, ceci est vrai si w est une lettre ou le mot vide. Si w = ua, avec a une lettre, alors Y ua = (Y u) a = (u1 Y ) a = a1 (u1 Y ) = (ua)1 Y . Ceci prouve la formule. Il en r esulte que Donc A(X ) reconna t X . w L(A(X )) X w T w 1 X T w X

Corollaire 5.3. Une partie X A est reconnaissable si et seulement si lensemble Q(X ) est ni. Preuve. Si X est reconnaissable, alors (5.2) montre que Q(X ) est ni. La r eciproque d ecoule de la proposition pr ec edente. On peut calculer lensemble Q(X ) pour un langage rationnel, a ` partir dune expression rationnelle pour X , a ` laide des formules de la proposition suivante. Cela ne r esout pas compl` etement le probl` eme du calcul de lautomate minimal, parce quune dicult e majeure demeure, a ` savoir tester si deux expressions sont equivalentes. On en parlera plus loin. Proposition 5.4. Soit a une lettre, et soient X et Y des langages. Alors on a a1 = a1 1 = a1 a = 1 a1 b = (b = a) a1 (X Y ) = a1 X a1 Y a1 (XY ) = (a1 X )Y (X 1)a1 Y a1 X = (a1 X )X

(5.3) (5.4)

Preuve. Seules les deux derni` eres formules demandent une v erication. Si w a1 (XY ), alors aw XY ; il existe donc x X , y Y tels que aw = xy . Si x = 1, alors aw = y , donc w (X 1)a1 Y ; sinon, x = au pour un pr exe u 1 1 de w , et u a X , do` u w (a X )Y . Linclusion r eciproque se montre de la m eme mani` ere. Consid erons la derni` ere formule. Soit w a1 X . Alors aw X , donc aw = xx , avec x X , x = 1, et x X . Mais alors x = au, avec u a1 X , donc w (a1 X )X . R eciproquement, on a par la formule (5.3), linclusion (a1 X )X a1 (XX ), donc (a1 X )X a1 X . Version 6 f evrier 2005

9.5. Automate minimal Exemple. Calculons, a ` laide de ces formules, le langage a1 (b aA ). On a a1 (b aA ) = a1 (b (aA )) = (a1 b )aA a1 (aA ) par (5.3) ; or le premier terme de lunion est vide par (5.3), do` u a1 (b aA ) = (a1 a)A (a 1)a1 A = (a1 a)A = A

315

9.5.2

Equivalence de Nerode

Dans ce paragraphe, tous les automates consid er es sont d eterministes, accessibles et complets. Soit A = (Q, i, T ) un automate sur un alphabet A reconnaissant un langage X . Pour tout etat q , on pose Lq (A) = {w A | q w T } Cest donc lensemble des mots reconnus par lautomate A en prenant q comme etat initial. Bien entendu, le langage X reconnu par A co ncide avec Li (A). On a vu, au paragraphe pr ec edent, que {Lq (A) | q Q} = Q(X ) La correspondance s etablit par Lq (A) = u1 X Notons que, plus g en eralement, Lqv (A) = v 1 Lq (A) (5.5) si i u = q

En eet, w Lqv (A) si et seulement si (q v ) w T donc si et seulement si vw Lq (A). Lorsque lautomate est x e, on ecrira Lq au lieu de Lq (A). Deux etats p, q Q sont dits ins eparables si Lp = Lq , ils sont s eparables sinon. Ainsi, p et q sont s eparables si et seulement sil existe un mot w tel que p w T et qw / T ou vice-versa. Si w est un mot ayant cette propri et e, on dit quil s epare les etats p et q . L equivalence de Nerode sur Q (ou sur A) est la relation d enie par p q p et q sont ins eparables Proposition 5.5. Dans lautomate minimal, deux etats distincts sont s eparables, et l equivalence de Nerode est l egalit e. Preuve. Soit Y = u1 X un etat de lautomate minimal A(X ) du langage X . Comme Y = X u, on a LY = u1 X = Y . Par cons equent, deux etats distincts ne sont pas equivalents. Version 6 f evrier 2005

316
a b 5 b 2 a b 4 b a,b a

Chapitre 9. Automates

1 a 0

3 a,b 6 a,b

Figure 5.3: Un automate qui nest pas minimal. Exemple. Reprenons lautomate donn e dans la gure 5.3 ci-dessous, et d ej` a consid er e dans le paragraphe pr ec edent. Puisque L1 = L3 = L5 = L6 = {a, b} L0 = L2 = L4 = b a{a, b} l equivalence de Nerode a donc les deux classes {0, 2, 4} et {1, 3, 5, 6}. Le mot vide s epare deux etats pris dans des classes distinctes. Proposition 5.6. L equivalence de Nerode est une relation d equivalence r eguli` ere a ` droite, cest-` a-dire v eriant pq puqu (u A )

De plus, une classe de l equivalence ou bien ne contient pas d etats terminaux, ou bien ne contient que des etats terminaux. Preuve. Soit A = (Q, i, T ) un automate. Il est clair que la relation est une relation d equivalence. Pour montrer sa r egularit e, supposons p q , et soit u A . En vue de (5.5), on a Lqu = u1 Lq = u1 Lp = Lpu , donc p u q u. Supposons enn p q et p terminal. Alors 1 Lp , et comme Lp = Lq , on a 1 Lq , donc q est terminal. L equivalence de Nerode sur un automate A = (Q, i, T ) etant r eguli` ere a ` droite, on peut d enir un automate quotient en confondant les etats dune m eme classe. Plus pr ecis ement, notons [q ] la classe dun etat q dans l equivalence. Lautomate quotient est alors d eni par A/ = (Q/ , [i] , {[t] : t T }) avec la fonction de transition [q a] = [q ] a (5.6)

qui justement est bien d enie (ind ependante du repr esentant choisi dans la classe de q ) parce que l equivalence est r eguli` ere a ` droite. Version 6 f evrier 2005

9.5. Automate minimal


b a 024 1356 b a

317

Figure 5.4: Un automate quotient. Dans lexemple ci-dessus, lautomate quotient a deux etats : l etat {0, 2, 4} est initial, et {1, 3, 5, 6} est l etat nal. La formule (5.6) permet de calculer les transitions. On obtient lautomate de la gure 5.4. Comme le sugg` ere cet exemple, lautomate quotient est en fait lautomate minimal, a ` une renum erotation des etats pr` es. Nous avons besoin, pour le prouver, de la notion disomorphisme dautomates. Soient A = (Q, i, T ) et A = (Q , i , T ) deux automates sur A. Ils sont dits isomorphes sil existe une bijection :QQ telle que (i) = i , (T ) = T , et (q a) = (q ) a pour tout q Q et a A. Proposition 5.7. Soit A = (Q, i, T ) un automate sur un alphabet A reconnaissant un langage X . Si l equivalence de Nerode de A est l egalit e, alors A et lautomate minimal A(X ) sont isomorphes. Preuve. Soit : Q Q(X ) d enie par (q ) = Lq (A). Comme l equivalence de Nerode est l egalit e, est une bijection. Par ailleurs, (i) = Li = X , et t T si et seulement si 1 Lt (A), donc si et seulement si Lt (A) est etat nal de A(X ). Enn, on a Lqa (A) = Lq (A) a montrant que est bien un morphisme. De cette propri et e, on d eduit une cons equence importante : Th eor` eme 5.8. Lautomate minimal dun langage X est lautomate ayant le moins d etats parmi les automates d eterministes complets qui reconnaissent X . Il est unique a ` un isomorphisme pr` es. Preuve. Soit B un automate reconnaissant X et ayant un nombre minimal d etats. Alors son equivalence de Nerode est l egalit e, sinon on pourrait passer au quotient par son equivalence de Nerode et trouver un automate plus petit. Par la proposition pr ec edente, B est isomorphe a ` A(X ). Lunicit e de lautomate minimal ne vaut que pour les automates d eterministes. Il existe des automates non d eterministes, non isomorphes, ayant un nombre minimal d etats, et reconnaissant un m eme langage (voir exercices). Version 6 f evrier 2005

318

Chapitre 9. Automates

9.6

Calcul de lautomate minimal

Le calcul de lautomate minimal peut se faire par un proc ed e appel e la construction de Moore et que nous exposons dans le premier paragraphe. Nous verrons dans la suite une impl ementation sophistiqu ee de cette construction.

9.6.1

Construction de Moore

Soit A = (Q, i, T ) un automate d eterministe, accessible et complet sur un alphabet A. Pour calculer lautomate minimal, il sut de calculer l equivalence de Nerode d enie, rappelons-le, par p q Lp = Lq o` u Lp = {w A | p w T }. Pour calculer cette equivalence, on proc` ede par approximations successives. On consid` ere pour ce faire l equivalence suivante, o` u k est un entier naturel :
(k ) (k ) p k q Lp = Lq

avec
(k ) Lp = {w Lp | |w | k }

L equivalence de Nerode est lintersection de ces equivalences. La proposition suivante exprime l equivalence k au moyen de l equivalence k1 . Elle permettra de prouver que lon obtient bien a ` la limite l equivalence de Nerode, et elle donne aussi un proc ed e de calcul. Proposition 6.1. Pour tout entier k 1, on a p k q p k1 q Preuve. On a
(k ) Lp = {w | p w T et |w | k } = {w | p w T et |w | k 1} a{v | (p a) v T et |v | k 1}

et ( a A,

p a k1 q a)

(k 1) Lp

aA

aA

k 1) aL( pa

Lobservation nest quune traduction de ces egalit es. Corollaire 6.2. Si les equivalences k et k+1 co ncident, les equivalences k+l (l 0) sont toutes egales, et egales a ` l equivalence de Nerode. Version 6 f evrier 2005

9.6. Calcul de lautomate minimal

319

Preuve. De la proposition, il r esulte imm ediatement que l egalit e des equivalences k et k+1 entra ne celle des equivalences k+1 et k+2 . Do` u la premi` ere assertion. Comme p q si et seulement si p k q pour tout k 0, la deuxi` eme assertion sen d eduit. Proposition 6.3. Si A est un automate a `n etats, l equivalence de Nerode de A est egale a ` n2 . Preuve. Si, pour un entier k > 0, les equivalences k1 et k sont distinctes, le nombre de classes de l equivalence k est k + 2.

9.6.2

Scinder une partition

La construction de lautomate minimal par la m ethode de Moore appliqu ee directement a ` un automate a `n etats sur un alphabet a ` m lettres fournit un algorithme qui a un temps de calcul dans le pire des cas en O (mn2 ). Nous pr esentons ici un algorithme d ua ` Hopcroft, dont la preuve a et e simpli ee par D. Gries, et dont la complexit e en temps est O (mn log n). Soient R et R deux relations d equivalence sur un ensemble Q. On dit que R est plus ne que R , ce que lon note R R , si : pRq pR q. R R si et seulement si P P , P P , P P . Soit A un ensemble op erant a ` droite sur Q par une application de Q A dans Q o` u limage du couple (q, a) est not ee q a (cest le cas de la fonction de transition dun automate d eterministe complet). On note alors a1 S = {q Q | q a S }. Pour la partie Q S . Remarquons que Q = a1 S a1 S , toute partie S de Q, on note S et que cette union est disjointe. On peut alors etablir un certain nombre de propri et es : Soient P une partition de Q, P et S deux el ements de P et a un el ement de A. On dit que P est stable pour (S, a) si on a : P a S ou P a S ou encore de mani` ere equivalente si : P a1 S ou P a1 S Si P nest pas stable pour (S, a), on dit que P est bris ee par (S, a) ; cela signie que les ensembles P a1 S et P a1 S Version 6 f evrier 2005

Soient P et P les partitions associ ees a ` R et R , on a alors :

320

Chapitre 9. Automates

sont tous les deux non vides. On d enit une op eration Scinder de la mani` ere suivante : Scinder(P, (S, a)) encore not e P S est d eni par :
a

P S =
a

{P } si P est stable pour (S, a) } sinon {P a1 S, P a1 S


a a

. On peut noter aussi que lon a : P S = P S


a b 5 b 2 a b 4 b a,b a

1 a 0

3 a,b 6 a,b

Figure 6.1: Un exemple illustrant lop eration . Exemple. Consid erons lautomate d eterministe complet de la gure 6.1. La partie Q nest pas stable pour (T, b) car Q b = {2, 4, 5, 6} ; or 2 T , et 5 T . On a alors : Q T = {{1, 3, 5, 6}, {0, 2, 4}}.
b

est stable pour (T, a) et pour (T, b), car T a T et T bT . Par contre T Lemme 6.4. Soit A un ensemble op erant a ` droite sur Q, soient P, S, T des parties de Q et a, b A. i) lop eration Scinder est commutative , i.e. :
a b b

P S T = P T S
a

ii) lop eration Scinder est monotone , i.e. si {S1 , S2 } est une partition de S alors : P S S1 = P S2 S1 .
a a a a

, Preuve. i) P S est form e des ensembles non vides parmi P a1 S , P a1 S et P S T est compos e des ensembles non vides parmi :
a b a

b1 T, P a1 S b1 T , P a1 S b1 T . P a1 S b1 T, P a1 S On constate ais ement que la permutation de S et T et de a et b donne le m eme r esultat. Version 6 f evrier 2005

9.6. Calcul de lautomate minimal

321

ii) Comme lop eration Scinder est commutative, il sut de comparer P S1 S a ` P S1 S2 . Il est facile de v erier que les op erations S2 et S ne modient pas la partition P S1 , do` u le r esultat cherch e.
a a a a a a a

Lop eration Scinder agissant sur une partition a les propri et es suivantes : Lemme 6.5. i) Si une partition P de Q est stable pour (S, a), alors toute partition plus ne que P lest egalement. pas stable pour (S, a), alors P est strictement plus ne que P . ii) La partition P = P S est stable pour (S, a), plus ne que P , et si P nest
a

obtenue en rempla cant dans P chaque classe P par Scinder(P, (S, a)).

Une partition P est stable pour (S, a) si les classes qui la composent le sont. On d enit Scinder(P , (S, a)) que lon note aussi P S comme etant la partition P
a

Preuve. Les preuves sont faciles et laiss ees au lecteur a ` titre dexercice. Remarques. Il est facile de v erier que les propri et es enonc ees au lemme 6.4 restent vraies si lon remplace P par une partition P .
a

((Sk , ak )) de couples, et on ecrira alors P L ou bien Scinder(P, L).

La notation P S T peut s etendre a ` une liste quelconque L = ((S1 , a1 ), . . .,


b

Notons que la r egularit ea ` droite dune relation d equivalence sur Q peut s enoncer en termes de stabilit e de la fa con suivante : Lemme 6.6. Une relation d equivalence sur Q est r eguli` ere a ` droite si et seulement si la partition P associ ee est stable pour tous les couples (P, a) o` uP P et a A.

9.6.3

Algorithme de Hopcroft

Revenons a ` l equivalence de Nerode. Soit A = (Q, i, T ) un automate d eterministe complet a `n etats sur un alphabet A a ` m lettres. Rappelons que l equivalence de Nerode sur Q est d enie par : p q Lp = Lq o` u Lp est lensemble des etiquettes des chemins de i a ` p. Note On appelle partition de Nerode la partition de Q associ ee a ` cette relation d equiva- 9.6.2 lence. On a vu (proposition 5.6) que l equivalence de Nerode est r eguli` ere a ` droite. Version 6 f evrier 2005

322

Chapitre 9. Automates

Nous supposons d esormais que lensemble T d etats terminaux de A est non vide }, et R0 la relation et distinct de Q. Consid erons la partition de Q, P0 = {T, T d equivalence associ ee. Compte tenu des d enitions donn ees, on peut enoncer la proposition suivante : Proposition 6.7. L equivalence de Nerode est l equivalence r eguli` ere a ` droite la plus grossi` ere qui soit plus ne que R0 . Preuve. Soit R l equivalence de Nerode. Dapr` es la proposition 5.6, il est clair que R est r eguli` ere a ` droite et plus ne que R0 .

Soit R une relation d equivalence r eguli` ere a ` droite et plus ne que R0 . Supposons que R ne soit pas plus ne que R. Dans ce cas il existe p, q Q tels que pR q et Lp = Lq . Alors on peut supposer par exemple quil existe u Lp et u Lq . Soit t = p u et q = q u. On a t T , q T et tR q puisque pR q . Ce qui induit une contradiction puisque R0 R . Une partition P de lensemble Q sera dite admissible si la relation d equivalence associ ee est plus ne que R0 et moins ne que l equivalence de Nerode. La proposition 6.7 devient : Lemme 6.8. Une partition de lensemble Q est la partition de Nerode de lautomate A si et seulement si elle est admissible et stable. Par ailleurs on d eduit facilement de ce qui pr ec` ede la propri et e suivante : Lemme 6.9. Si P est une partition admissible, non stable pour le couple (P, a), alors P P est une partition admissible.
a

Pour calculer lautomate minimal de lautomate A = (Q, i, T ), nous allons calculer son equivalence de Nerode et, pour cela, calculer la partition de Nerode associ ee a ` cette relation d equivalence. } que Le principe de lalgorithme est le suivant. On part de la partition P0 = {T, T lon rane par bris successifs ; plus pr ecis ement, tant que P (au d ebut P = P0 ) nest pas stable, on brise une classe de la partition. Premi` ere ecriture de lalgorithme } la partition initiale de Q. Soient A = (Q, i, T ) un automate sur A et P0 = {T, T Consid erons lalgorithme suivant :

Version 6 f evrier 2005

9.6. Calcul de lautomate minimal proc edure Moore1 (A) ; P := P0 ; tantque P P et a A tels que P nest pas stable pour (P, a) faire P := P P
a

323

ntantque.

La boucle tantque est ex ecut ee au plus n 1 fois, car a ` chaque ex ecution le nombre d el ements de P augmente strictement et est major e par n. La partition P obtenue est stable. Par ailleurs, P est admissible est un invariant de la boucle tantque en raison du lemme 6.9. Comme P0 est admissible, cela implique que la partition obtenue a ` larr et de la boucle est admissible, cest donc la partition de Nerode. Do` u: Proposition 6.10. La proc edure Moore1 calcule l equivalence de Nerode.

Nous modions la premi` ere proc edure en transformant lit eration de la fa con suivante : a ` chaque entr ee dans la boucle on dresse la liste L des couples (P, a) pour lesquels P nest pas stable, et on remplace P par Scinder(P , L). Notons quon ne fait plus la m eme suite de scissions que dans la proc edure Moore1, car si L = ((P1 , a1 ), . . . , (Pk , ak )), et si lon suppose que P2 a et e scind e lors de la scission relative a ` (P1 , a1 ), alors dans la proc edure Moore1 on ne fera pas de scission relativement a ` (P2 , a2 ) parce que P2 nappartient plus a ` la partition. Il est facile de voir que cette modication nalt` ere pas la validit e de lalgorithme. On peut enoncer le r esultat ainsi : Lemme 6.11. Si P est une partition admissible et L est la liste des couples (P, a) (P P , a A) pour lesquels P nest pas stable, alors Scinder(P , L) est encore une partition admissible. Preuve. Il sut de prouver que si P est admissible et que P est une union d el ements de P alors P P est encore admissible. La preuve est similaire a ` celle
a

de la Proposition 6.10 et est laiss ee au lecteur.

On peut donc remplacer la proc edure Moore1 par la suivante : proc edure Moore2 (A) ; P := P0 ; tantque P nest pas stable faire calculer la liste L des couples (P, a) qui brisent P ; PP L ntantque. Version 6 f evrier 2005

Note 9.6.3

324

Chapitre 9. Automates

Donnons un exemple pour montrer que la suite des scissions nest pas la m eme dans les proc edures Moore1 et Moore2. Exemple. Consid erons lautomate de la gure 6.2.
3 a a 2 a 1 b b 5 a 6 a,b b b 8 a 7 a,b b 4 a,b

Figure 6.2: Exemple. Note 9.6.4 La proc edure Moore1 donne la suite de scissions suivantes : P : 46 123578 Scission relative a ` (46, a) Scission relative a ` (5, b) Scission relative a ` (28, a) Termin e P : 46 12378 5 P : 46 17 28 3 5 P : 46 1 7 2 8 3 5

La proc edure Moore2 donne la suite de scissions suivantes : P : 46 123578 L = ((46, a), (46, b), (123578, a), (123578, b)) Scission relative a ` (46, a) P : 46 12378 5 Scission relative a ` (46, b) P : 46 1278 3 5 Scission relative a ` (123578, a) P : pas de changement Scission relative a ` (123578, b) P : pas de changement L = ((1278, a)(1278, b), (3, a), (5, b)) Scission relative a ` (1278, a) : P : 46 178 2 3 5 Scission relative a ` (1278, b) : P : 46 17 8 2 3 5 Scission relative a ` (3, a) : P : pas de changement Scission relative a ` (5, b) : P : 46 1 7 8 2 3 5 L= Termin e Lautomate minimal obtenu est donc le suivant et reconna t le langage {a2 b, b(b2 ) a}{a, b} :

Version 6 f evrier 2005

9.6. Calcul de lautomate minimal


3 a a 2 a 1 b 5 b b b 8 a a,b 7 a 46 a,b b

325

Figure 6.3: Automate minimal obtenu a ` partir de celui de la gure 6.2. Version d enitive de lalgorithme Contrairement a ` ce que laisserait croire lexemple trait e, l ecriture de lalgorithme sous cette forme va nous permettre de mieux exploiter les propri et es de lop eration Scinder pour am eliorer les performances de lalgorithme. Dans un premier temps, au lieu de calculer les couples (P, a) pour lesquels P nest pas stable, on peut prendre L = P A ; cela revient a ` ajouter des couples pour lesquels P est stable et pour lesquels lop eration Scinder naura aucun eet. Ceci fait, en vertu du lemme 6.5 iv), on peut remplacer a ` la premi` ere it eration L := {T , T } A par L := {T } A ou L := {T } A. On choisira , la partie de plus faible cardinal, pour des raisons qui s entre T et T eclairciront plus tard mais dont on devine dores et d ej` a lint er et (r eduction de la taille des ensembles relativement auxquels on fait la scission). Ceci nous am` ene a ` ecrire la version quasiment d enitive de lalgorithme. Ecrivons lalgorithme sous la forme suivante : proc edure Hopcroft (A) ; } ; P := {T, T ) alors L := {T } A sinon L := {T } A ; si Card(T ) < Card(T tantque L = faire (a) enlever un couple (P, a) de L ; (b) d eterminer lensemble B des el ements de P bris es par (P, a) ; (c) pour tout B B calculer {B , B } = B P ;
a

(d) pour tout B B et pour tout b A faire si (B, b) L alors (e) enlever (B, b) et ajouter (B , b) et (B , b) a `L (f) sinon si Card(B ) < Card(B ) alors ajouter (B , b) a `L sinon ajouter (B , b) a `L nsi ntantque ; retourner (P ).

Version 6 f evrier 2005

326

Chapitre 9. Automates

Dans cette version de lalgorithme, la liste L repr esente certains des couples (P, a) pour lesquels il faut scinder P . Mais a ` un instant donn e, L ne repr esente pas la liste de tous les couples (P, a), P P pour lesquels P nest pas stable. N eanmoins la propri et e suivante (I) est un invariant de la boucle tantque : si P P et (P, a) L pour un certain a, alors ou (I )

a) P est stable pour (P, a)

Prouvons donc que (I) est un invariant de la boucle tantque en utilisant les lemmes 6.4 et 6.5 . Appelons Pk la partition obtenue avant la k -i` eme it eration de la boucle, et PN la partition nale. Avant dentrer dans la boucle tantque (I) est vrai : supposons que a) soit faux ; , a) L, et les lemmes 6.4 et 6.5 assurent que les comme (P, a) L, alors (P transformations de L qui ont lieu en (a), (e), ou (f) sont telles que PN est stable , a) et donc pour (P, a). pour (P Supposons maintenant quavant la k -i` eme it eration, (I) soit vrai et soient respectivement Lk et Lk+1 l etat de L avant et apr` es cette k -i` eme it eration. Montrons que (I) est vrai pour Pk+1 a ` la sortie de la k -i` eme it eration de la boucle tantque . Soit un couple (P, a) Lk+1 , avec P Pk+1 ; ou bien P Pk ;

b) a ` larr et de la boucle tantque , la partition P est stable pour (P, a).

si (P, a) Lj , il est facile de voir que n ecessairement la k -i` eme it eration est une scission relativement a ` (P, a) et que P na pas et e bris e lors de cette scission. La partition Pk+1 est donc stable pour (P, a) ainsi que toutes les suivantes (cqfd) ; ou bien P Pk ;

si (P, a) Lj , par hypoth` ese de r ecurrence Pk est stable pour (P, a) et donc aussi Pk+1 , ou bien PN est stable pour (P, a) (cqfd) ;

si (R, a) Lk , alors a ` la sortie de la boucle on a (P, a) Lk+1 par hypoth` ese, et donc (P , a) Lk+1 . Ainsi on est s ur que PN sera stable pour (P , a) et par hypoth` ese de r ecurrence que Pk est stable pour (R, a) ou que PN sera stable pour (R, a). Donc par application du lemme 6.4 ii), PN sera stable pour (P, a) (cqfd) ;

alors P a et e obtenu lors de la k -i` eme it eration par bris dune partie R en deux parties P et P , avec R Pk ;

si (R, a) Lk , comme (P, a) Lk+1 , cest que la scission faite lors de la k -i` eme it eration est une scission relative a ` (R, a) (sinon, puisque (R, a) Lk , on aurait (P, a) et (P , a) Lk+1 , ce qui contredit (P, a) Lk+1 ). Donc PN sera stable pour (R, a), et puisque (P, a) Lk+1 cest que (P , a) Lk+1 , et donc PN sera stable pour (P , a). Do` u lon d eduit que PN sera stable pour (P, a) (cqfd). Version 6 f evrier 2005

9.6. Calcul de lautomate minimal On peut donc enoncer le lemme :

327

Lemme 6.12. Lalgorithme Hopcroft sarr ete et calcule la partition de Nerode. Preuve. Il reste uniquement a ` v erier que la boucle tantque sarr ete. Or, on ne peut ajouter deux fois un m eme couple (P, a) dans L, car chaque couple (P, a) ajout e dans la boucle en (e) ou (f) est constitu e dune partie P strictement contenue dans une classe de la partition courante, et comme chaque passage dans la boucle supprime un el ement de L, la boucle tantque sarr ete. Nous enon cons un dernier lemme utile a ` l etude de la complexit e de lalgorithme : Lemme 6.13. Le nombre dit erations de la boucle tantque est major e par 2mn. Preuve. Il sut de prouver que le nombre de couples (P, a) introduits dans L est au plus 2mn, puisqu` a chaque it eration on enl` eve un couple de L. Pour chaque couple (P, a) introduit dans L, P est el ement de la partition courante. Consid erons larbre binaire repr esentant les scissions successives op er ees sur P . La racine est (si T = Q, on part de T ), et chaque la partie Q toute enti` ere et ses ls sont T et T nud P admet pour ls P et P , r esultats dune scission appliqu ee a ` P . Un tel arbre binaire complet a au plus n feuilles et donc au plus 2n 1 sommets. Do` u le r esultat.

9.6.4

Complexit e de lalgorithme

Avant de d ecrire les structures de donn ees n ecessaires a ` limpl ementation de lalgorithme, nous allons d etailler l ecriture des instructions (b), (c) et (d) de la proc edure Hopcroft. D etaillons l ecriture des instructions (b), (c) et (d) de la proc edure Hopcroft : On remplace (b) par : (b) calculer a1 P ; dresser la liste Classes-Rencontr ees des classes B P telles que B a1 P = ; Notons que cette liste contient toutes les classes susceptibles d etre bris ees, mais certaines dentre elles peuvent etre stables pour (P, a). Cest a ` l etape suivante que lon d etermine les classes devant etre bris ees. Ainsi (c-f) est remplac e par :

Version 6 f evrier 2005

328

Chapitre 9. Automates (c) pour tout B Classes-Rencontr ees faire si B a P alors cr eer une nouvelle classe Jumeau(B ) ; enlever de B et mettre dans Jumeau(B ) tous les etats p tels que p a P ; (d) pour tout b A faire si avant scission (B, b) L alors (e) ajouter (Jumeau(B ),b) a `L (f) sinon si apr` es scission Card(B ) Card(Jumeau(B )) alors ajouter (B, b) a `L sinon ajouter (Jumeau(B ),b) a `L nsi npour nsi npour.

Consid erons une it eration de la boucle (c) pour laquelle B a P . A la n de cette it eration, B et Jumeau(B ) sont exactement les ensembles B et B . Do` u lalgorithme complet :

Version 6 f evrier 2005

9.6. Calcul de lautomate minimal proc edure Hopcroft (A) ; } ; P := {T, T ) alors L := {T } A sinon L := {T } A ; si Card(T ) < Card(T tantque L = faire (a) enlever un couple (P, a) de L ; (b) Inverse:= a1 P ; dresser la liste Classes-Rencontr ees des classes B P telles que B Inverse= ; (c) pour tout B Classes-Rencontr ees faire si B a P alors cr eer une nouvelle classe Jumeau(B ) ; d eplacer de B dans Jumeau(B ) tous les etats p | p a P ; (d) pour tout b A faire si avant scission (B, b) L alors ajouter (Jumeau(B ),b) a `L sinon si apr` es scission Card(B ) Card(Jumeau(B )) alors ajouter (B, b) a `L sinon ajouter (Jumeau(B ),b) a `L nsi npour nsi npour ntantque. Structures de donn ees

329

Les etats de lautomate sont les entiers de 1 a ` n. Les lettres sont les entiers de 1a ` m. Une partition ayant au plus n el ements, un el ement dune partition aura pour nom un entier entre 1 et n, ainsi un couple (P, a) sera repr esent e comme un el ement de {1, . . . , n} {1, . . . , m}, o` u la premi` ere composante est le nom de la partie P . Comme le nombre de classes grossit au cours du temps, une variable Compt initialis ee a ` 2 (ou a ` 1 si T = Q) indique quels sont les entiers d ej` a utilis es pour nommer les classes, a ` savoir les entiers de 1 a ` Compt. Une partition de Q sera g er ee gr ace a ` quatre tableaux indic es par les entiers de 1a ` n : Classe, Part, Card, Place. Pour tout etat i, Classe[i] est le nom de la classe contenant i. Pour toute classe de nom P , Part[P ] est un pointeur sur une liste doublement cha n ee des el ements de P , et Card[P ] est le nombre d el ements de la classe P . Enn, pour tout etat i appartenant a ` la classe de nom P , Place[i] est un pointeur sur la place de i dans la liste doublement cha n ee Part[P ] des el ements de la classe de nom P . Cela permet en temps O (1) de supprimer un el ement dune classe et de lins erer dans une autre. Version 6 f evrier 2005

330 Exemple. Q = {1, , 6}, P :35 1 246


CLASSE 2 3 1 3 1 3

Chapitre 9. Automates

CARD

PART

PLACE

Figure 6.4: Un exemple. Pour calculer Inverse:= a1 P , on dispose dun tableau Inv indic e par {1, . . . , n} {1, . . . , m} tel que Inv[p, a] est un pointeur sur une liste cha n ee des el ements q tels que q a = p. Ainsi Inverse sera non pas construit physiquement , mais lu en temps proportionnel a ` sa taille en parcourant la liste Part[P ] et, pour chaque el ement p de cette liste, en parcourantInv[p, a]. Ainsi lexpression pour tout q dans Inverse est programm ee par : pour tout p P et pour tout q Inv[p, a]. La liste L doit etre g er ee de telle sorte que les op erations dadjonction, de recherche, et de suppression dun el ement arbitraire soient ais ees (arbitraire fait r ef erence ici a ` la ligne (1) de la proc edure Hopcroft, cest-` a-dire quon veut supprimer un el ement de L, peu importe lequel). Comme la taille de L est major ee par mn, on la repr esentera par un tableau de bool eens Liste indic e par {1, . . . , n}{1, . . . , m} tel que Liste[P, a] est vrai si (P, a) L, et simultan ement par une liste cha n ee. Ainsi, ladjonction se fait en temps O (1), (la mise a ` jour dans le tableau et dans la liste cha n ee prenant un temps constant) ; la recherche se fait en temps O (1) en utilisant le tableau ; enn la suppression dun el ement arbitraire (ligne (a) de la proc edure) se fait en deux temps, on enl` eve le premier el ement de la liste cha n ee puis on met a ` jour le tableau, ce qui prend un temps Version 6 f evrier 2005

9.6. Calcul de lautomate minimal

331

O (1), de m eme le test L = se fait en temps O (1) gr ace a ` la structure de liste cha n ee. Le traitement de Classes-Rencontr ees et de Jumeau est relativement d elicat. ees, et pour g erer les scissions, on Pour dresser la liste de Classes-Rencontr utilise trois structures de donn ees : ees des noms des classes a ` scinder, une liste cha n ee Classes-Rencontr un tableau dentiers Partage indic e par {1, . . . , n}, tel que pour toute classe B de nom i, Partage[i] est le cardinal de B a1 P (le tableau Partage do t etre a `0a ` chaque entr ee dans la boucle tantque ) et un tableau Jumeau indic e par {1, . . . , n}. L el ement Jumeau[i] est le nom de la nouvelle classe cr e ee pour briser la classe de nom i. Ce tableau est initialis ea ` 0 au d ebut de lalgorithme. Analyse de la complexit e Analysons le temps dex ecution de la proc edure Hopcroft avec les structures de donn ees propos ees ci-dessus. Notons au passage que pour obtenir une faible complexit e en temps il a et e n ecessaire de ne pas l esiner sur lespace m emoire utilis e. Linitialisation qui pr ec` ede la boucle tantque prend un temps O (mn). Le nombre dit erations de la boucle tantque etant major e par 2mn, le temps global dex ecution de la ligne (a) est O (mn). On a vu dans la preuve du lemme 6.13 que le nombre de classes cr e ees est major e par 2n 1, donc le temps global dex ecution du bloc (d) prend un temps O (mn).

Il reste a ` evaluer le temps global dex ecution des blocs (b) et (c). Soit N le nombre de passages dans la boucle tantque . Dans un premier temps, evaluons la somme des tailles des N listes abstraites Inverse parcourues. Proposition 6.14. Soient a A, p Q. Le nombre de fois o` u lon supprime de la liste L un couple (P, a) tel que p P , est major e par log 2 n.

Preuve. On dira quun couple (P, a) est marqu e si p P (a et p sont x es). Avant dentrer dans la boucle tantque , L contient au plus un couple marqu e, et ceci reste vrai a ` tout instant. Soit (P, a) le premier couple marqu e qui soit supprim e de L. Le prochain couple (P , a) marqu e qui sera introduit dans L dans la boucle tantque est tel que P est une classe r esultat de Scinder(P , b), pour un b A o` u P est une partie de P et Card(P ) Card(P )/2. Tant quil ny a pas de suppression dans L dun couple marqu e, L contient un unique couple marqu e dont la premi` ere composante est un sous-ensemble de P , donc sa taille est inf erieure ou egale a ` celle de P . Ainsi, le prochain couple marqu e qui sera supprim e dans L Version 6 f evrier 2005

332

Chapitre 9. Automates

aura une taille inf erieure ou egale a ` Card(P )/2. En it erant ce processus, et tenant compte du fait que le premier couple marqu e introduit ( eventuellement) dans L v erie Card(P ) n/2, il sensuit qu on ne peut supprimer de L plus de log 2 n fois un tel couple. Corollaire 6.15. La somme des tailles des N listes Inverse parcourues est major ee par mn log2 n. Preuve. Soit un triplet x e (p, a, q ) tel que q = p a. Le nombre de fois o` u p est lu dans la liste Inverse parce que q = p a, est exactement egal au nombre de couples (P, a) tels que q P , qui sont supprim es de la liste L. Or par la proposition 6.14 ce nombre est major e par log2 n. Do` u le r esultat. Il reste a ` constater que le temps global dex ecution des blocs (b) et (c) est proportionnel a ` la somme des tailles des N listes Inverse. En r ealit e, les blocs (b) et (c) sex ecutent en parcourant deux fois la liste Inverse de la mani` ere suivante : (b) cr eer une liste vide Classes-Rencontr ees ; pour tout p P et pour tout q Inv[p, a] faire i :=Classe[q ] ; si Partage[i] = 0 alors Partage[i] := 1 ; ajouter i a ` Classes-Rencontr ees sinon Partage[i] :=Partage[i] + 1 nsi npour ;

(c) pour tout p P et pour tout q Inv[p, a] faire i :=Classe[q ] ; si Partage[i] <Card[i] alors si Jumeau[i] = 0 alors Compt:=Compt+1 ;Jumeau[i] :=Compt nsi ; supprimer q de sa classe et lins erer dans la classe de nom Jumeau[i] nsi npour ; pour tout j appartenant a ` Classes-Rencontr ees faire Partage[j ] := 0 ;Jumeau[j ] := 0 ; Version 6 f evrier 2005

Notes

333

En ecrivant ainsi les blocs (b) et (c) et compte-tenu des structures de donn ees choisies, il est clair que le temps dex ecution de chacun de ces blocs prend un temps proportionnel a ` la somme des tailles des N listes Inverse et donc un temps O (mn log n). En conclusion, on peut enoncer le : Th eor` eme 6.16. Si A est un alphabet a ` m lettres et A un automate a `n etats sur cet alphabet, la proc edure Hopcroft calcule, dans le pire des cas, en temps O (mn log n) lautomate minimal de A.

Notes
La th eorie des automates, dont nous avons d ecrit ici les bases, a connu des d eveloppements consid erables. Un trait e substantiel est louvrage de S. Eilenberg : S. Eilenberg, Automata, Languages, and Machines, Vol. A Academic Press, 1974. Pour les d eveloppements r ecents, notamment en rapport avec lalgorithmique des mots, voir : D. Perrin, Finite Automata, in : J. van Leeuwen, ed., Handbook of Theoretical Computer Science, Vol. B, North-Holland, 1990, 157. Une th eorie des langages rationnels et reconnaissables de mots innis a vu le jour en m eme temps que la th eorie portant sur les mots nis. On pourra consulter le chapitre de W. Thomas dans ce m eme volume.

Exercices
9.1. Montrer les egalit es suivantes pour X, Y, Z A : (XY )1 Z = Y 1 (X 1 Z ) X (Y Z 1 ) = (X 1 Y )Z 1 (XZ 1 )Y 1 = X (Y Z )1
1

9.2. D ecrire un algorithme qui permet de tester si le langage reconnu par un automate donn e est vide, ni non vide, ou inni. 9.3. (Lemme de l etoile) D emontrer que pour tout langage reconnaissable L, il existe un entier N tel que tout mot w de L de longueur |w | N admet une factorisation w = uxv avec 0 < |x| N et v eriant ux v L.

9.4. Utiliser le lemme de l etoile pour prouver que les langages {an bn | n 0}, {an bp | n p 0}, {an bp | n = p} ne sont pas reconnaissables. Version 6 f evrier 2005

334

Chapitre 9. Automates

9.5. D emontrer que si L est un langage reconnaissable, alors lensemble des facteurs des mots de L est encore un langage reconnaissable. (M eme question pour les pr exes, suxes.) 9.6. Soient A et B deux alphabets. Un morphisme de A dans B est une application f : A B v eriant f (uv ) = f (u)f (v ) pour u, v A . a) D emontrer que si K est un langage rationnel sur A, alors f (K ) est un langage rationnel sur B .

b) D emontrer que f 1 (L) est un langage rationnel sur A pour tout langage rationnel L sur B . 9.7. Une substitution de A dans B est une application s de A dans lensemble des parties de B qui v erie s(uv ) = s(u)s(v ) pour u, v A , et s(1) = {1}. D emontrer que si s(a) est un langage rationnel pour tout a A, alors s(K ) est un langage rationnel pour tout langage rationnel K sur A. 9.8. Montrer que les deux automates de la gure 6.5 reconnaissent le m eme langage.

a a b a b b a b a a b

Figure 6.5: Deux automates non d eterministes reconnaissant le m eme langage. Quel est lautomate minimal d eterministe reconnaissant ce langage ? Plus g en e n ralement, montrer que les langages A wA , avec A = {a, b}, n > 0 sont reconnus par au moins |w | + 1 automates non d eterministes non isomorphes ayant strictement moins d etats que lautomate (d eterministe) minimal de ce langage. 9.9. Soient A = (Q, i, T ) et A = (Q , i , T ) deux automates d eterministes sur un alphaber A. On se propose de tester si ces deux automates sont equivalents, cest-` a-dire reconnaissent le m eme langage. 1) Donner un algorithme r esolvant ce probl` eme d equivalence en utilisant la minimisation des automates d eterministes. Quelle est sa complexit e? 2) a) Soit A = (Q , {i, i }, T T ) lautomate union des automates A et A (les ensembles Q et Q sont suppos es disjoints). Lautomate A est d eterministe a ` ceci pr` es quil a deux etats initiaux. Pour tout a A, on note a la restriction a ` Q {a} de la fonction de transition de lautomate A . Soit P la partition la plus ne de lensemble Q telle que i et i soient dans la m eme classe, et qui soit compatible avec la fonction de transition de lautomate A i.e. v eriant u d esigne la relation p q a .p b .q pour tout p, q Q et tout a A, o` d equivalence associ ee a ` la partition consid er ee. Version 6 f evrier 2005

Exercices

335

c) En d eduire un algorithme r esolvant le probl` eme d equivalence de deux automates d eterministes. On utilisera pour ce faire lalgorithme union-nd . Calculer sa complexit e Cet algorithme est d ua ` Hopcroft et Karp. 9.10. Soit A = (Q, F, I, T ) un un automate ni sur un alphabet A reconnaissant un langage L. Soit Ar = (Q, F r , T, I ) lautomate obtenu en renversant les ` eches de A (i.e. (p, a, q ) F r (q, a, p) F ) et en echangeant etats initiaux et terminaux. 1) Montrer que Ar reconna t limage miroir de L not ee Lr , i.e. lensemble : Lr = {a1 an A | pour tout ai A et an a1 L} 2) Soit Ar eterminste emond e obtenu a ` partir de Ar par la consd lautomate d eterministe truction donn ee dans ce chapitre. Montrer que Ar d est lautomate d minimal reconnaissant Lr . La preuve de ce r esultat est due a ` J. Brzozowski. 3) En d eduire un algorithme de calcul de lautomate d eterministe minimal dun automate donn e, et en donner sa complexit e.

b) Montrer que les automates A et A sont equivalents si et seulement si lensemble T T est satur e pour la relation d equivalence associ ee a ` la partition P .

Version 6 f evrier 2005

336

Chapitre 9. Automates

Version 6 f evrier 2005

337

Chapitre 10

Motifs
Dans ce chapitre, nous consid erons dabord le probl` eme de la recherche dune ou de toutes les occurrences dun mot x dans un texte t. Nous pr esentons lalgorithme na f, lalgorithme de Morris et Pratt, et sa variante due a ` Knuth, Morris et Pratt, limpl ementation par automate ni et lalgorithme de Simon, et pour nir lalgorithme de Boyer et Moore, dans sa version de Horspool et dans la version compl` ete. Ensuite, nous consid erons la recherche dune occurrence de plusieurs motifs, et d ecrivons lalgorithme de Aho et Corasick. Dans la derni` ere section, nous etudions la recherche doccurrences de mots d ecrits par une expression rationnelle.

Introduction
La recherche de motifs dans un texte est un probl` eme important qui appara t dans de nombreux domaines scientiques. En informatique, on le rencontre naturellement en traitement des donn ees, dans l edition de textes, en analyse syntaxique ou en recherche dinformations ; en particulier, tous les editeurs de textes et de nombreux langages de programmation orent des possibilit es de recherche de motifs. Dans sa forme la plus simple, le probl` eme se ram` ene a ` localiser une occurrence dun mot, le motif, dans une cha ne de caract` eres, le texte. Par exemple, le texte rechercher contient deux occurrences du motif cher. M eme pour ce probl` eme simple, il existe de nombreux algorithmes int eressants, plus ou moins sophistiqu es, et qui sont plus ecaces que la m ethode na ve qui vient imm ediatement a ` lesprit. Le probl` eme devient plus complexe lorsque lon autorise des ensembles de motifs ou des motifs repr esent es par des expressions rationnelles. Par exemple, dans plusieurs traitements de textes courants lexpression ch.*r d enote les mots qui commencent par ch et qui se terminent par r. Dans le texte rechercher, les mots cher et chercher sont des occurrences de mots d ecrits par cette expression. Version 6 f evrier 2005

338

Chapitre 10. Motifs

Le r esultat eectif de lalgorithme d epend de lapplication consid er ee. Dans le cas o` u les donn ees sont organis ees en lignes par exemple, comme dans un dictionnaire ou un listage de programme, nous pouvons etre int eress es par les lignes qui correspondent au motif. En compilation, on vise plut ot a ` partitionner la cha ne de caract` eres dentr ee en une suite de lex` emes, tels que commentaires, identicateurs, op erateurs, o` u la forme des lex` emes est d etermin ee par une expression rationnelle. Dans l edition de textes, on cherche des occurrences de motifs en vue notamment de les remplacer par dautres. Dans ce chapitre, nous consid erons trois probl` emes : le plus important, et qui sera trait e en d etail, est la recherche dune ou de toutes les occurrences dun mot x dans un texte t. Nous pr esentons trois algorithmes pour ce probl` eme. Ensuite, nous consid erons la recherche dune occurrence de plusieurs motifs, et enn la recherche doccurrences de mots d ecrits par une expression rationnelle. Dans tous les cas, cest le motif recherch e qui subit une analyse pr ealable, et jamais le texte. En eet, le motif est consid er e comme xe, et le texte est changeant et inconnu. Une situation duale, o` u le texte est xe et le motif peut varier, se pr esente par exemple dans la recherche dentr ees dans un dictionnaire. Une recherche ecace demande alors dorganiser et de coder de mani` ere convenable le dictionnaire. Ce probl` eme ne sera pas consid er e ici.

10.1

Recherche dun motif

Le probl` eme que nous abordons dans cette section est le suivant : etant donn es un texte t A et un motif x A , o` u A est un alphabet, d eterminer si x est un facteur de t, et le cas ech eant trouver une occurrence de x dans t. Lecacit e dun algorithme de recherche se mesure en nombre de comparaisons de caract` eres. Posons t = t1 tn et x = x1 xm , o` u les tj et les xi sont des lettres. Les algorithmes que nous pr esentons sont b atis sur le sch ema que voici : le motif x est compar e aux facteurs tk+1 tk+m de longueur m de t jusqu` a trouver une co ncidence, si elle existe. Lalgorithme na f fait cette comparaison pour toutes les positions k = 0, . . . , n m. Les am eliorations que nous examinons ensuite ne font la comparaison que pour un sous-ensemble des positions, en tirant prot de la connaissance du texte t accumul ee lors des comparaisons pr ec edentes et dun pr etraitement du motif x. Le sch ema g en eral est donc :

Recherche-dun-motif(x, t) ; k := 0 ; tester l egalit e x = tk+1 tk+m ; sil y a egalit e, reporter k et arr eter sinon augmenter k et recommencer.

Version 6 f evrier 2005

10.1. Recherche dun motif

339

De fa con imag ee, la m ethode consiste a ` faire glisser le motif x le long de la cha ne t, et a ` comparer x au bloc de t couvert (voir gure 1.1). Les divers algorithmes d eterminent selon des crit` eres di erents la position suivante o` u le motif x a des chances de se trouver dans le texte t. Lecacit e dune m ethode sp ecique d epend grandement du pr etraitement appliqu e au motif x. Linformation recueillie sur le motif peut etre employ ee pour former un analyseur, voire un automate ni, qui est ensuite appliqu e au texte.
tex te mo tif que force soit avec lala force toi la forme

Figure 1.1: Le motif glissant sur le texte.

10.1.1

Un algorithme na f

Posons t = t1 tn et x = x1 xm . Lalgorithme na f consiste a ` comparer le motif x a ` chaque facteur de t de longueur m. Si une occurrence est rencontr ee, on la signale ; sinon, on recommence avec le facteur suivant de t. Le but est de calculer un entier k o` u commence une occurrence de x, cest-` a-dire tel que x1 xm = tk+1 tk+m Lalgorithme na f suivant r ealise cette recherche : proc edure Recherche-na ve(x, t) ; i := 1 ; j := 1 ; tantque i m et j n faire si t[j ] = x[i] alors i := i + 1 ; j := j + 1 sinon j := j i + 2 ; i := 1 nsi ntantque ; si i > m alors occurrence de x a ` la position j m sinon pas doccurrence nsi. Dans le cas le plus d efavorable, le nombre de comparaisons est (n m + 1)m = nm m2 + m. Ce cas est r ealis e par exemple pour x = am1 b, t = an1 b. Pour m petit devant n, ce nombre est de lordre de nm = |x||t|. Toutefois, le comportement moyen de lalgorithme na f est plut ot bon, comme le montre lobservation suivante : Version 6 f evrier 2005

340

Chapitre 10. Motifs

Proposition 1.1. Si lalphabet comporte au moins deux lettres, et dans lhypoth` ese dune distribution de probabilit e uniforme et ind ependante sur les lettres, le nombre moyen de comparaisons pour rechercher un motif dans un texte de longueur n par lalgorithme na f est au plus 2n. Bien entendu, les textes et les motifs nont, dans la pratique, aucune raison d etre equiprobables, ce qui limite quelque peu la port ee de la proposition. Preuve. Soit q = |A|. Consid erons un motif x e x = x1 xm . Nous montrons que le nombre moyen de comparaisons de caract` eres faites dans la comparaison de x a ` tk+1 tk+m est major e par 2. Ce nombre est
m

ici
i=1

o` u ci est la probabilit e pour que lon fasse exactement i comparaisons. Or


m m

ici =
i=1 i=1

di

o` u di = ci + + cm est la probabilit e pour que lon fasse au moins i comparaisons. Maintenant, on fait au moins i comparaisons lorsque x1 xi1 = tk+1 tk+i1 de sorte que di = 1/q i1 . Le nombre moyen de comparaisons est donc 1 + 1/q + + 1/q m1 1 + 1 2 q1

Il en r esulte que le nombre moyen de comparaisons de lalgorithme na f sur un texte t de longueur n est major e par 2n.

10.1.2

Lalgorithme de Morris et Pratt

La lenteur de lalgorithme na f, dans le cas le plus d efavorable, sexplique par le fait quen cas d echec, il recommence a ` z ero la comparaison du motif x au facteur suivant de t, sans exploiter linformation contenue dans la r eussite partielle de la tentative pr ec edente. Si l echec sest produit a ` la i-i` eme lettre du motif x, on a (voir gure 1.2) pour un entier k x1 xi1 = tk+1 tk+i1 et xi = tk+i

Toute recherche ult erieure qui commence dans le facteur tk+1 tk+i1 peut tirer prot du fait que le mot tk+1 tk+i1 est un pr exe du motif x. Si une nouvelle recherche commence en position + 1 (avec k < < k + i 1), elle compare Version 6 f evrier 2005

10.1. Recherche dun motif


k k +1 t:

341
l b c

k +i -1

a 1 a

i -1

x :

x :

Figure 1.2: Echec a ` la i-i` eme lettre du motif. t +1 t +2 a ` x1 x2 . Or t +1 t +2 est un suxe de tk+1 tk+i1 qui lui est egal a ` x1 xi1 . En dautres termes, on compare x1 x2 a ` un suxe de x1 xi1 , donc a ` un morceau du motif lui-m eme ! Ces comparaisons sont ind ependantes du texte t, puisquelles ne concernent que des morceaux du motif. On peut donc les faire avant de consid erer t, et on peut en attendre un gain de temps substantiel dans la mesure o` u ce pr etraitement sur le motif ne sera fait quune seule fois et quil permettra d eviter, lors de lexamen du texte, de r ep eter des comparaisons identiques a ` plusieurs endroits di erents du texte. Le pr etraitement sur le motif x que nous allons r ealiser permettra de reconna tre rapidement les seules congurations o` u la recherche dune occurrence vaut la peine d etre continu ee. Pour cela, il sagit de d eterminer les indices i o` u le mot x1 xi1 se termine par un pr exe de x. Introduisons une d enition. Soit u un mot quelconque non vide ; un bord de u est un mot distinct de u qui est a ` la fois pr exe et suxe de u. Exemple. Le mot u = abacaba poss` ede les trois bords , a, et aba. Le mot u = abcabcab poss` ede les bords , ab et abcab. On note Bord(x) et on appelle bord maximal le bord le plus long dun mot non vide x. Si x est de longueur m, on d enit une fonction : {0, 1, . . . , m} {1, . . . , m 1} d ependant de x par (0) = 1 et pour i > 0, par (i) = |Bord(x1 xi )| Bien entendu, (i) i 1. Voici par exemple les bords maximaux et leurs longueurs, pour les pr exes du mot abacabac : a Indice 0 1 Bord 1 0 b 2 0 a 3 a 1 c 4 0 a b a c 5 6 7 8 a ab aba abac 1 2 3 4 Version 6 f evrier 2005

342

Chapitre 10. Motifs

Revenons a ` lam elioration de lalgorithme na f. Si (voir gure 1.3) x1 xi1 = tk+1 tk+i1 et xi = tk+i ,

alors le mot tk+p+1 tk+i1 ne peut etre d ebut dune occurrence de x que sil est un bord de x1 xi1 . Il sut donc, pour chercher une occurrence, de d ecaler x
k k +1 t:

k +p+1

k +i -1 b

i -1 i

x : x :

Bord(x 1 ...x i -1 )

(i -1)

1+ (i -1) =s (i)

Figure 1.3: D ecalage dune position. dune longueur appropri ee pour superposer x1 xi1 avec son plus grand bord. Le d ecalage se r ealise en poursuivant les comparaisons entre la lettre tk+i et la lettre x1+ (i1) . Dans la pratique, on utilise a ` la place de une fonction s : {1, . . . , m} {0, . . . , m} d enie pour i = 1, . . . , m par s(i) = 1 + (i 1) de sorte que le d ecalage consiste a ` remplacer i par s(i). La fonction s est appel ee la fonction de suppl eance du motif x. Voici par exemple les fonctions et s pour le mot abacabac : a b a c a b a c 0 1 2 3 4 5 6 7 8 1 0 0 1 0 1 2 3 4 s 0 1 1 2 1 2 3 4 Avec la fonction de suppl eance, on obtient lalgorithme ci-dessous, d ua ` Morris et Pratt. Dans cet algorithme, j est lindice de la lettre courante du texte t, et i lindice de la lettre courante du motif x. A chaque tour dans la boucle tantque, on a x1 xi1 = tj i+1 tj 1 Si tj = xi , on progresse dans lanalyse, et sinon on d ecale x en rempla cant i par s(i) = 1 + (i 1).

Version 6 f evrier 2005

10.1. Recherche dun motif

343

proc edure Morris-Pratt(x, t) ; i := 1 ; j := 1 ; tantque i m et j n faire si i 1 etalors t[j ] = x[i] alors i := s(i) sinon i := i + 1 ; j := j + 1 nsi ntantque ; si i > m alors occurrence de x a ` la position j m sinon pas doccurrence de x dans t nsi. Proposition 1.2. Lalgorithme de Morris et Pratt calcule une occurrence dun motif x dans un texte t en au plus 2|t| 1 comparaisons de caract` eres, si lon dispose de la fonction de suppl eance sur x. Preuve. Posons n = |t|. Appelons test positif un test pour lequel t[j ] = x[i], et test n egatif un test pour lequel t[j ] = x[i]. Chaque test positif incr emente i et j , et chaque test n egatif diminue i, eventuellement de plus dune unit e. Comme chaque test positif augmente j , il y a au plus n tests positifs. Il ny a n tests positifs que si i ne sannule pas. Pour compter le nombre de tests n egatifs, consid erons lentier j i. Au d ebut, j i = 0. Un test positif ne change pas la valeur de j i, un test n egatif laugmente strictement. Donc le nombre de tests n egatifs est major e par la valeur qua j i a ` la n du calcul, donc par n ou par n 1 selon que i sannule ou non. Exemple. La table suivante donne, pour la recherche du motif x = abacabac dans le texte t = babacacabacaab, la suite des valeurs que prend lindice i dans lalgorithme : j i 1 b 1 0 2 3 4 5 6 a b a c a 1 2 3 4 5 7 c 6 2 1 0 8 9 10 11 12 13 a b a c a a 1 2 3 4 5 6 2 1 14 b 2

La gure 1.4 montre les d ecalages successifs du motif. Les di erences sont constat ees aux positions sombres du texte. Le nombre total de comparaisons est 18. Lorsque j = 7 et i = 6, on a tj = xi , et on compare t7 a ` la lettre qui suit le bord maximal de x1 x5 , a ` savoir x2 . Le m eme sch ema se r ep` ete pour j = 13, et en fait chaque fois quune lettre tj est compar ee a ` x6 . A chaque fois, on compare tj a ` x2 , et cette comparaison est inutile parce que x6 = x2 . Une version de lalgorithme, due a ` Knuth, Morris et Pratt et que nous pr esentons plus loin permet d eliminer en partie ces comparaisons redondantes. Version 6 f evrier 2005

344
1 2 3 4 5 6 7 8 9 10 11 12 13 14

Chapitre 10. Motifs

t: x :

b a

a b a

b a b

a c a

c a c

a b a a

c a b b a

a c a a b a

c c a b a c a b a c a b a a c a b b a c a a b c c a a c b a a b c a c

Figure 1.4: D ecalages successifs du motif.

10.1.3

Bords

Pour compl eter lexpos e de lalgorithme de Morris et Pratt, il faut indiquer comment calculer la fonction ou, de mani` ere equivalente, la fonction de suppl eance. Cela demande une etude plus approfondie des bords dun mot. Proposition 1.3. Soit x un mot non vide, et soit k le plus petit entier tel que Bordk (x) = . (1) Les bords de x sont les mots Bord(x), Bord2 (x), . . . , Bordk (x). (2) Soit a une lettre. Alors Bord(xa) est le plus long pr exe de x qui est 2 k dans lensemble {Bord(x)a, Bord (x)a, . . . , Bord (x)a, }. Preuve. (1) Un bord de Bord(x) est aussi un bord de x, donc les mots Bord(x), Bord2 (x), . . ., Bordk (x) sont tous des bords de x. R eciproquement, soit z un bord de x. Ou bien z = Bord(x), ou alors z est un bord de Bord(x). Par r ecurrence, z est un des mots Bord(x), Bord2 (x), . . ., Bordk (x). (2) Soit z un bord de xa. Si z = , alors z = z a, o` u z est un bord de x. Donc, par (1), z est un des mots de lensemble B = {Bord(x)a, Bord2 (x)a, . . . , Bordk (x)a, } R eciproquement, tout mot de B est suxe de xa, donc est un bord de xa sil est pr exe de xa. On d eduit de la proposition la caract erisation suivante du plus long bord : Corollaire 1.4. Soit x un mot non vide et soit a une lettre. Alors Bord(xa) = Bord(x)a si Bord(x)a est pr exe de x, Bord(Bord(x)a) sinon.

Version 6 f evrier 2005

10.1. Recherche dun motif

345

Preuve. Si Bord(x)a est pr exe de x, alors Bord(xa) = Bord(x)a. Dans le cas contraire, posons y = Bord(x). Alors Bord(xa) est pr exe de y , et par le (2) de la proposition 1.3, Bord(xa) est le plus long pr exe de x, donc de y , dans lensemble {Bord(y )a, Bord2 (y )a, . . . , Bordk1 (y )a, }. A nouveau par 1.3(2), cela signie que Bord(xa) = Bord(ya). Voici quelques exemples : x = ababb x = babbaa x = abaaab x = abbaab Bord(x) = Bord(x) = Bord(x) = ab Bord(x) = ab Bord(xa) = Bord(x)a Bord(xa) = Bord(a) = Bord(xa) = Bord(x)a = aba Bord(xa) = Bord(aba) = a

Un autre corollaire de la proposition 1.3 indique comment calculer ecacement la fonction . On a en eet : Corollaire 1.5. Soit x un mot de longueur m. Pour j = 0, . . . , m 1, on a (1 + j ) = 1 + k (j ) o` u k 1 est le plus petit entier tel que lune des deux conditions suivantes est v eri ee (i) 1 + k (j ) = 0 ; (ii) 1 + k (j ) = 0 et x1+ k (j ) = x1+j . Ce corollaire se traduit en une proc edure qui calcule la fonction pour un mot x, sous la forme dun tableau : proc edure Bords-maximaux(x, ) ; [0] := 1 ; pour j de 1 a ` m faire i := [j 1] ; tantque i 0 etalors x[j ] = x[i + 1] faire i := [i] ntantque ; [j ] := i + 1 npour. Une proc edure tout a ` fait semblable calcule la fonction de suppl eance : proc edure Suppl eance(x, s) ; s[1] := 0 ; pour j de 1 a ` m 1 faire i := s[j ] ; tantque i > 0 etalors x[j ] = x[i] faire i := s[i] ntantque ; s[j + 1] := i + 1 npour. Version 6 f evrier 2005

346

Chapitre 10. Motifs

Une preuve analogue a ` celle de la proposition 1.2 montre que le calcul de la fonction dun motif de longueur m se fait en 2m 3 comparaisons de caract` eres. Corollaire 1.6. La recherche dune occurrence dun motif x de longueur m dans un texte t de longueur n par lalgorithme de Morris et Pratt demande au plus 2(n + m) 4 comparaisons de caract` eres.

10.1.4

Lalgorithme de Knuth, Morris et Pratt

Lalgorithme de Knuth, Morris et Pratt que nous pr esentons maintenant est une am elioration de lalgorithme pr ec edent, bas ee sur l elimination de situations quil est inutile dexaminer.
k k +1 t: k +p

x :

1
p

k +i -1 k +i b

i -1 i a 1 i-p c

Figure 1.5: Lorsque b = a, le d ecalage est inutile si c = a. Revenons a ` la conguration o` u une recherche du motif x = x1 xm dans un texte t = t1 tn a echou e parce que x1 xi1 = tk+1 tk+i1 et xi = tk+i

Le d ecalage propos e par lalgorithme de Morris et Pratt est d etermin e par la longueur du bord Bord(x1 xi1 ) ; la nouvelle position du motif d ebute a ` la lettre dindice p + 1, avec p = i 1 (i 1) (voir gure 1.5). Ce d ecalage nest utile que si lon est assur e de pouvoir r eellement progresser, cest-` a-dire si la lettre tk+i est egale a ` la lettre de x qui va lui etre compar ee, a ` savoir la lettre xip ; sinon, il faut chercher un autre bord. Or, cette condition ne peut pas etre traduite en une condition sur le mot x seul, donc ne peut pas etre incluse dans le pr etraitement de x. Mais on peut la remplacer par une condition plus faible et exiger de ne pas se retrouver dans la m eme situation que pr ec edemment, a ` savoir que xip = xi . Cest cette condition suppl ementaire qui est test ee dans lalgorithme de Knuth, Morris et Pratt. Pour la mettre en uvre, on d enit une fonction analogue a ` la fonction de Morris et Pratt, et qui va tenir compte de cette condition. Auparavant, introduisons une d enition. Version 6 f evrier 2005

10.1. Recherche dun motif

347

Soit x = x1 xm . Deux pr exes u et v de x sont disjoints (dans x) si x1+|u| = x1+|v| ou si lun des deux mots est x tout entier. Le pr exe u est un bord disjoint du pr exe v si u est un bord de v , et si u et v sont des pr exes disjoints de x. Si v poss` ede un bord disjoint dans x, on note DBord(v ) le plus long bord disjoint de v , appel e bord disjoint maximal de v . Contrairement a ` la notion de bord, le concept de bord disjoint nest d eni que sur les pr exes dun mot x. Exemple. Soit x = abcababcac. Le pr exe v = abcababca de x poss` ede les trois bords , a, abca qui sont tous les trois disjoints de v . Les pr exes ab et abcabab de x ne sont pas disjoints car ils sont tous les deux suivis de la lettre c. Le pr exe w = abcababc enn a les deux bords et abc, dont aucun nest disjoint de w ; il na donc pas de bord maximal disjoint. On d enit la fonction = x : {0, . . . , m} {1, . . . , m 1} par (0) = 1 et, pour j = 1, . . . , m, (j ) = |DBord(x1 xj )| si x1 xj a un bord disjoint dans x ; 1 sinon.

Exemple. Voici les fonctions et tabul ees pour le motif x = abcababcac. Leur comparaison illustre le gain que lon peut attendre de lusage de a ` la place de . a j 0 1 (j ) 1 0 (j ) 1 0 b c 2 3 0 0 0 1 a 4 1 0 b 5 2 2 a 6 1 0 b c 7 8 2 3 0 1 a c 9 10 4 0 4 0

Soit v un pr exe du mot x. Les bords de v sont, par la proposition 1.3, les mots Bord(v ), Bord2 (v ), . . . , Bordk (v ), , o` u k est le plus grand entier tel que Bordk (v ) = . Les longueurs des bords de v sont donc les nombres (j ), 2 (j ), . . ., k (j ), 0, avec j = |v |. Il en r esulte que si (j ) = 1, alors (j ) = d (j ), o` ud d est le plus petit entier tel que Bord (v ) est disjoint de v . Proposition 1.7. Soit x = x1 xm un mot non vide ; la fonction = x v erie, pour j 1 (j ) = (j ) si j = m ou x1+j = x1+ (j ) , ( (j )) sinon.

Preuve. Soit j 1. Si j = m, alors (m) = (m). Supposons donc j < m, et soit x1 xi le bord maximal de x1 xj . On a donc i = (j ). Si x1+i = x1+j , alors (j ) = (j ). Si x1+i = x1+j , les bords disjoints de x1 xi sont exactement les bords disjoints de x1 xj car si x1 xk est un tel bord, on a x1+k = x1+j si et seulement si x1+k = x1+i , donc (j ) = (i). Version 6 f evrier 2005

348

Chapitre 10. Motifs

Cette proposition permet de calculer a ` partir de la fonction . R eciproquement, peut sexprimer en fonction de , et la combinaison de ces deux relations permet d evaluer sans calculer pr ealablement la fonction . Proposition 1.8. Soit x un mot de longueur m. Pour j = 0, . . . , m 1, on a (1 + j ) = 1 + k ( (j )) o` u k 0 est le plus petit entier tel que lune des deux conditions suivantes est v eri ee : (i) 1 + k ( (j )) = 0 ; (ii) 1 + k ( (j )) = 0 et x1+ k ( (j )) = x1+j . Preuve. Posons i = (j ) et y = x1 xi , et soit a = x1+i , et b = x1+j . Si a = b, alors (1 + j ) = 1 + (j ), et la formule est vraie avec k = 0. Sinon, (1 + j ) est soit nul, soit lun des nombres 1 + r (j ). Or, parmi les mots y , Bord(y ), . . ., il sut dexaminer ceux qui sont suivis dune lettre autre que b. Il sut donc de chercher le bord maximal disjoint de y , dont la longueur est (i). En vertu des propositions 1.7 et 1.8, on obtient la proc edure que voici pour le calcul de . La boucle tantque calcule en fait (j ) :

proc edure Bords-disjoints-maximaux(x, ) ; [0] := 1 ; i := 1 ; pour j de 1 a ` m faire {ici i = (j 1)} tantque i 0 etalors x[j ] = x[i + 1] faire i := [i] ntantque ; i := i + 1 ; {ici i = (j )} si x[1 + j ] = x[1 + i] alors [j ] := i sinon [j ] := [i] npour.

Introduisons une deuxi` eme fonction de suppl eance r d enie par r (i) = 1 + (i 1) On peut alors calculer r par proc edure Deuxi` eme-suppl eance(x, r ) ; r [1] := 0 ; i := 0 ; pour j de 1 a ` m 1 faire tantque i > 0 etalors x[j ] = x[i] faire i := r [i] ntantque ; i := i + 1 ; si x[1 + j ] = x[i] alors r [1 + j ] := i sinon r [1 + j ] := r [i] npour. Version 6 f evrier 2005

10.1. Recherche dun motif

349

Avec cette deuxi` eme fonction de suppl eance, lalgorithme de Knuth, Morris et Pratt s ecrit exactement comme lalgorithme de Morris et Pratt. La seule modication est le remplacement de s par r . Nous changeons tr` es l eg` erement sa structure, en rempla cant le double test sur i et j par deux boucles tantque imbriqu ees, ceci pour pouvoir mettre en evidence la notion de d elai entre lexamen de deux caract` eres :

proc edure Knuth-Morris-Pratt(x, t) ; i := 1 ; j := 1 ; tantque i m et j n faire tantque i > 0 etalors t[j ] = x[i] faire i := r [i] ntantque ; i := i + 1 ; j := j + 1 ntantque ; si i > m alors occurrence de x a ` la position j m sinon pas doccurrence de x dans t nsi.

Revenons sur un exemple pr ec edent, o` u lon cherche le motif x = abacabac dans le texte t = babacacabacaab. Les deux fonctions de suppl eance s et r sont les suivantes : a 1 s 0 r 0 b 2 1 1 a 3 1 0 c 4 2 2 a 5 1 0 b 6 2 1 a 7 3 0 c 8 4 2

La gure 1.6 montre les d ecalages successifs du motif. Les di erences sont constat ees aux positions sombres du texte. Le nombre total de comparaisons est 16.
1 2 3 4 5 6 7 8 9 10 11 12 13 14

t: x :

b a

a b a

b a b

a c a

c a c

a b a

c a b a

a c a b a

c a b c a a c b a a b a c a b c a c a b a c

Figure 1.6: D ecalages successifs du motif.

Version 6 f evrier 2005

350

Chapitre 10. Motifs

Le tableau donne, pour chaque lettre, la suite des valeurs que prend lindice i dans lalgorithme : j i 1 b 1 0 2 3 4 5 6 a b a c a 1 2 3 4 5 7 c 6 1 0 8 9 10 11 12 13 a b a c a a 1 2 3 4 5 6 1 14 b 2

Lorsque j = 7 et i = 6, on a tj = xi , et on compare cette fois-ci t7 directement a ` la lettre x1 . La di erence entre les deux fonctions de suppl eance appara t bien si on trace leur graphe (gure 1.7). Il est clair que lalgorithme de Knuth, Morris et

8 5

7 6 2 3 1
4 0

s r

Figure 1.7: Les graphes des deux fonctions de suppl eance. Pratt est plus ecace que lalgorithme de Morris et Pratt, m eme si, dans le cas le plus d efavorable, leur complexit e est la m eme. Une di erence de comportement notable entre ces deux algorithmes concerne le d elai, cest-` a-dire le nombre maximum de comparaisons de caract` eres faites sur un caract` ere du texte a ` analyser. Dans lalgorithme ci-dessus, cest le nombre de tours eectu es dans la boucle tantque interne. Le d elai est le temps que lon doit attendre avant de pouvoir passer au caract` ere suivant du texte t, et il mesure donc jusqu` a quel point lalgorithme est di erent dun algorithme en temps r eel, cest-` a-dire est capable de traiter un symbole par unit e de temps. Il a et e prouv e que le d elai de lalgorithme de Morris et Pratt peut atteindre la longueur m du motif, alors que pour Knuth, Morris et Pratt, il ne d epasse jamais 1 + log m, o` u = (1 + 5)/2. En ce sens aussi, lalgorithme de Knuth, Morris et Pratt, sans etre plus dicile a ` programmer, est plus ecace.

10.1.5

Lautomate des occurrences

Dans cette section, nous montrons comment lalgorithme de Knuth, Morris et Pratt sinterpr` ete en termes dautomates nis. Soit A lalphabet sur lequel sont ecrits le texte et le motif. Soit x A le motif dont on cherche a ` d eterminer les Version 6 f evrier 2005

10.1. Recherche dun motif

351

occurrences dans le texte t. Comme x a une occurrence dans t si et seulement si t A xA , d eterminer les occurrences de x dans t equivaut a ` trouver les pr exes de t qui appartiennent au langage (rationnel) A x. Pour cela, il sut de construire lautomate reconnaissant A x, et de lui faire lire le texte t. Or, un automate reconnaissant A x est vite construit. Cest lautomate A = (P, , x, F ) o` u P est lensemble des pr exes de x, l etat initial est le mot vide, lunique etat nal est le motif x, et dont les ` eches sont F = {(, a, ) | a A} {(p, a, pa) | p, pa P, a A} Exemple. Pour A = {a, b, c}, et pour x = abcababcac, lautomate A est donn e dans la gure 1.8, o` u les etats sont repr esent es par leur longueur.
a ,b,c 0 a 1 b 2 c 3 a 4 b 5 a 6 b 7 c 8 a 9 c 10

Figure 1.8: Automate reconnaissant le langage A abcababcac. Dans la mesure o` u cet automate nest pas d eterministe, il nest pas facilement exploitable. Nous allons voir que lautomate minimal d eterministe reconnaissant A x nest pas dicile a ` calculer et a autant d etats que lautomate ci-dessus, a ` savoir 1 + m, o` u m est la longueur de x. Pour le caract eriser, nous consid erons la fonction fx qui a ` tout mot u associe fx (u) = le plus long suxe de u qui est pr exe de x Par exemple, pour x = abcababcac, on a fx (abacababc) = abc ; si p est pr exe de x, on a evidemment fx (p) = p. Proposition 1.9. Soit x un mot et soit P lensemble de ses pr exes. Lautomate minimal reconnaissant A x est lautomate d eterministe A(x) = (P, , x) dont la fonction de transition est d enie par p a = fx (pa). Preuve. Nous allons v erier que pour tout u A , u1 (A x) = fx (u)1 (A x) Ceci prouve que les etats de lautomate minimal sidentient aux pr exes de x, et que la fonction de transition est bien celle indiqu ee. Soit donc u A , et soit u tel que u = u fx (u). On a u1 (A x) = fx (u)1 u 1 (A x) fx (u)1 (A x) Version 6 f evrier 2005

352

Chapitre 10. Motifs

Pour prouver linclusion r eciproque, soit w u1 (A x). Alors uw A x, et il existe donc un mot v tel que uw = vx. Si x est suxe de w , alors w A x, donc fx (u)w A x et w fx (u)1 (A x). Si en revanche w est suxe de x, appelons z le mot tel que x = zw . Alors on a aussi u = vz , donc z est suxe de u et pr exe de x. Par d enition de fx (u), il existe y tel que fx (u) = yz . Mais alors fx (u)w = yzw = yx, montrant que w fx (u)1 (A x). Ceci prouve linclusion et ach` eve la d emonstration. Lautomate A(x) est lautomate des occurrences. On obtient imm ediatement lalgorithme suivant de recherche de motifs, o` u le texte t = t1 tn est de longueur n. Dans la mesure o` u lautomate des occurrences A(x) est disponible et rang e dans une table (de taille O (|A|(|x| + 1))), le calcul de l etat suivant se fait en temps constant, et le temps dex ecution de lalgorithme est O (n) pour un texte de longueur n. proc edure Recherche-automate(x, t) ; q := etat initial ; pour j de 1 a ` n faire q := q t[j ] ; si q est etat nal alors j est une n doccurrence nsi npour. Lautomate A(x) pour x = abcababcac est donn e dans la gure 1.9. Les etats sont repr esent es par leurs longueurs. Lexpression donn ee ci-dessous fait le lien avec
a a a a a b,c 0 a c b a 1 b a b,c c b c b b,c b,c 2 c 3 a c 4 b 5 a 6 b b 7 c 8 a 9 c 10

Figure 1.9: Automate d eterministe A(abcababcac). lalgorithme de Morris et Pratt. Version 6 f evrier 2005

10.1. Recherche dun motif

353

Proposition 1.10. La fonction de transition de lautomate des occurrences A(x) v erie, pour tout pr exe p non vide de x et toute lettre a, pa= pa si pa est pr exe de x ; Bord(pa) sinon.

Preuve. Si pa est pr exe de x, alors fx (pa) = pa ; sinon, fx (pa) est le plus long suxe de pa qui est pr exe de x, donc pr exe de pa, cest-` a-dire Bord(pa). Le calcul de la fonction de transition de lautomate des occurrences est en fait assez facile, et est r ealisable en temps lin eaire. Ceci r esulte du corollaire suivant : Corollaire 1.11. La fonction de transition de lautomate des occurrences A(x) v erie, pour tout pr exe p non vide de x et toute lettre a pa= pa si pa est pr exe de x ; Bord(p) a sinon.

Preuve. L enonc e r esulte imm ediatement de la proposition si pa est pr exe de x. Si pa nest pas pr exe de x, alors en vertu de 1.4 p a = Bord(pa) = Bord(p)a si Bord(p)a est pr exe de p, Bord(Bord(p)a) sinon,

donc Bord(pa) = Bord(p) a. Corollaire 1.12. La fonction de transition de lautomate des occurrences A(x) v erie, pour tout pr exe p de x et toute lettre a pa= pa si pa est pr exe de x ; DBord(p) a si DBord(p) existe ; sinon.

Preuve. Si p = et pa nest pas pr exe de x, alors p.a = Bord(pa). Si Bord(pa) = , alors Bord(pa) = qa, o` u q est le plus long bord de p tel que qa est pr exe de x. Comme pa nest pas pr exe de x, le mot q est un bord disjoint de p ; do` u la formule par r ecurrence. Exemple. Pour lautomate de la gure 1.9, les fonctions et prennent les valeurs suivantes : a b c 0 1 2 3 1 0 0 0 1 0 0 1 a 4 1 0 b 5 2 2 a 6 1 0 b c 7 8 2 3 0 1 a c 9 10 4 0 4 0

On en d eduit par exemple que 5 b = 2 b = 0, et de fa con similaire 9 a = 4 a(= 1 a) = 0 a = 1, selon que lon utilise la formule du premier ou du deuxi` eme corollaire. Enn, 3 b = 3 c = 0. Version 6 f evrier 2005

354

Chapitre 10. Motifs

La recherche dun motif x avec un automate ni se fait en temps r eel. La fonction de transition de lautomate se calcule, a ` partir de ou de , en temps lin eaire, cest-` a-dire en temps O (|x| |A|), o` u A est lalphabet de base. Linconv enient majeur est lencombrement de lautomate : sa taille, qui est egalement O (|A|(|x| + 1)), devient prohibitive si A est par exemple lalphabet des 256 caract` eres Ascii etendus.

10.1.6

Lalgorithme de Simon

I. Simon a propos e un algorithme qui est un compromis entre lalgorithme de Knuth, Morris et Pratt, et limpl ementation par automate. Simon part de lautomate minimal A(x) associ e a ` un motif x de longueur m, et remarque quil ny a que peu de ` eches signicatives : il y a dabord les ` eches avant , qui font passer dun etat i a ` l etat i + 1, et les ` eches arri` ere , qui font passer dun etat i a ` un etat j < i, avec j = 0. Les autres ` eches m` enent a ` l etat 0, et ne sont pas signicatives . Nous prouverons que les ` eches signicatives (nous dirons actives) sont en nombre au plus 2m, et si lon ne stocke que celles-ci, on est ramen e a ` un algorithme en place lin eaire, ind ependamment de la taille de lalphabet. En contrepartie, la recherche de la bonne ` eche pour eectuer une transition ne se fait plus en temps constant (donc lalgorithme nest pas en temps r eel), mais le rangement des transitions peut etre organis e de mani` ere a ` rendre cette recherche toujours au moins aussi ecace que dans lalgorithme de Knuth, Morris et Pratt. Soit donc x A un motif de longueur m, et soit A(x) = (P, , x) lautomate minimal reconnaissant A x. On identiera souvent un etat de P , cest-` a-dire un pr exe p de x, a ` sa longueur. Une ` eche (p, a, q ) de lautomate est une ` eche active si q = , elle est passive si q = . Une ` eche active (p, a, q ) est une ` eche avant si q = pa, cest une ` eche arri` ere si q = pa (et q = ). Exemple. La gure 1.10 donne lautomate de la gure 1.9, o` u lon na conserv e que les ` eches actives. Il y a 9 ` eches arri` ere.
a a a a a a 0 a 1 b a 2 c 3 a c 4 b 5 a 6 b b 7 c 8 a 9 c 10

Figure 1.10: Automate A(abcababcac), sans ses ` eches passives.

Version 6 f evrier 2005

10.1. Recherche dun motif

355

Le motif x etant de longueur m, lautomate A(x) a m ` eches avant. Nous allons prouver quil a au plus m ` eches arri` ere. Pour cela, nous avons besoin dune d enition qui a par ailleurs son int er et propre. Soit w = a1 an un mot, avec a1 , . . . , an des lettres. Une p eriode de w est un entier p > 0 tel que ai = ap+i pour tout i = 1, . . . , n p

Notons que |w | est toujours une p eriode de w . Par exemple, le mot w = abcababca, de longueur 9, a les p eriodes 9, 8, 5. On peut voir une p eriode comme un d ecalage qui conserve la co ncidence des lettres qui se superposent. Plus pr ecis ement, on a le lemme suivant : Lemme 1.13. Soit w un mot de longueur n, et soit p > 0. Alors p est une p eriode de w si et seulement si w poss` ede un bord de longueur n p. Preuve. Soit w = a1 an . Alors p est une p eriode si et seulement si a1 anp = a1+p an , donc si et seulement si le pr exe de longueur n p de w est aussi suxe de w . Notons p er(w ) la plus petite p eriode de w . Il r esulte du lemme 1.13 que p er(w ) + (w ) = |w | (1.1)

o` u (w ) est la longueur du plus long bord de w . Revenons a ` lautomate A(x). Proposition 1.14. Lautomate A(x) a au plus |x| ` eches arri` ere. Preuve. Nous allons dabord prouver lassertion que voici : si (p, a, q ) et (p , a , q ) sont deux ` eches arri` ere distinctes, alors p er(pa) = p er(p a ). Soient en eet (p, a, q ) et (p , a , q ) deux ` eches arri` ere. Par la proposition 1.10, on a q = Bord(pa), q = Bord(p a ), et q = , q = . Supposons, en raisonnant par labsurde, que pa et p a ont m eme p eriode, disons t = p er(pa) et, pour xer les id ees, supposons |p| |p |. Si k = |pa|, on a t < k par l equation 1.1. Notons b la lettre dindice k dans p a . Alors a = b. Ceci est clair si |p | > |p| parce que p est pr exe de x, alors que pa ne lest pas. Cest vrai aussi si |p | = |p| parce qualors b = a = a. Comme t est une p eriode de pa, les lettres dindice k et k t de pa sont les m emes. Comme p est pr exe de x, la lettre dindice k t de pa est xkt , donc xkt = a. Or t est aussi une p eriode de p a , et donc les lettres dindice k et k t de p a sont les m emes. On a donc aussi xkt = b, ce qui est impossible puisque a = b. Ceci prouve lassertion. Il r esulte de lassertion que lapplication qui a ` une ` eche arri` ere (p, a, Bord(pa)) associe p er(pa) est injective. Or p er(pa) = |pa| Bord(pa) < |pa| dapr` es l equation 1.1, donc 1 p er(pa) |x|, ce qui montre la proposition. Version 6 f evrier 2005

356

Chapitre 10. Motifs

Limpl ementation de Simon de lautomate A(x) consiste a ` associer, a ` chaque etat p, la liste des ` eches avant et arri` ere issues de p, ordonn ees par num ero d ecroissant d etat darriv ee. Chaque ` eche u = (p, a, q ), pour p x e, est repr esent ee par un couple (lettre(u), etat(u)) = (a, q ). Avec cette structure de donn ees, le calcul de l etat suivant se fait par la fonction :

fonction Etat-suivant-par-Simon(p, a) ; u :=t ete-liste(p) ; tantque u = vide faire si lettre(u) = a alors retourner etat(u) sinon u := suivant(u) ntantque ; retourner(0).

et lalgorithme de recherche du motif x, de longueur m, dans un texte t de longueur n est, comme pour tout automate (voir la proc edure Recherche-automate) :

proc edure Simon(x, t) ; p := 0 ; pour j de 1 a ` n faire p :=Etat-suivant-par-Simon(p, t[j ]) ; si p = m alors j est une n doccurrence npour.

Exemple. Limpl ementation de lautomate A(abcababcac) est repr esent ee dans la gure 1.11 ; les pr exes sont repr esent es par leur longueur.
0 a ,1 1 b,2 a ,1 2 c ,3 a ,1 3 a ,4 a ,1 4 b,5 a ,1 5 a ,6 c ,3 6 b,7 a ,1 7 c ,8 a ,1 8 a ,9 9 c ,10 b,5 a ,1 10 a ,1

Figure 1.11: Impl ementation de lautomate A(abcababcac). Proposition 1.15. Lalgorithme de Simon calcule les occurrences dun motif x dans un texte t en un nombre de comparaisons de caract` eres inf erieur ou egal a ` celui de lalgorithme de Knuth, Morris et Pratt.

Version 6 f evrier 2005

10.1. Recherche dun motif

357

Preuve. Soit p un etat, et soit a une lettre. Le nombre de comparaisons faites par lalgorithme de Simon pour d eterminer l etat suivant est egal au nombre de comparaisons faites dans la liste associ ee a ` l etat p. La premi` ere comparaison concerne la ` eche avant, les suivantes des ` eches arri` ere ; si toutes les comparaisons sont n egatives, cest une ` eche passive qui est utilis ee. Soit (p, b, p b) une ` eche arri` ere. Alors par le corollaire 1.11, p b = qb, et q est un bord disjoint de p. En dautres termes, si (p, a1 , q1 a1 ), . . . , (p, ak , qk ak ) est la suite ordonn ee des ` eches arri` ere, les etats q1 , . . . , qk sont des bords disjoints de p, et mutuellement disjoints. Ils gurent donc dans lensemble Comme les etats sont rang es en ordre d ecroissant, ces bords disjoints sont calcul es successivement dans lalgorithme de Knuth, Morris et Pratt, alors que lalgorithme de Simon nen s electionne quun sous-ensemble. Il reste a ` pr eciser comment r ealiser, en temps lin eaire, limpl ementation de Simon, cest-` a-dire le calcul de la suite ordonn ee des ` eches actives pour chaque etat. Notons F (p) la suite ordonn ee des ` eches actives issues de l etat p ; chaque ` eche est repr esent ee par le couple (lettre, etat darriv ee), comme dans la gure 1.11. Soit x = x1 xm un motif. Pour l etat initial de lautomate A(x), la suite F () des ` eches actives est r eduite a ` l el ement (x1 , 1). Soit p un autre etat, et soit i = |p| sa longueur. La suite F (p) contient tout dabord la ` eche (xi+1 , i + 1), sauf lorsque i = m. Pour d eterminer les autres ` eches, nous utilisons le corollaire 1.12. Si DBord(p) existe, cest-` a-dire si (i) = 1, alors on a p a = DBord(p) a pour toute lettre a = xi+1 . Ainsi, la suite F (p) se prolonge par la suite F (DBord(p)) des ` eches actives de DBord(p), purg ee de la ` eche dont la lettre est xi , si cette ` eche y gure. Si en revanche DBord(p) nexiste pas, la suite F (p) est r eduite a ` son premier el ement. Il est clair que la copie dune liste, avec purge eventuelle dun el ement, se fait en temps lin eaire. Limpl ementation de Simon se calcule donc en temps lin eaire, puisque la fonction se calcule, elle aussi, en temps lin eaire. Exemple. La fonction x pour x = abcababcac valeurs sont : a b c a b a j 0 1 2 3 4 5 6 (j ) 1 0 0 1 0 2 0 a d ej` a et e donn ee plus haut. Ses b c a c 7 8 9 10 0 1 4 0 {DBord(p), DBord2 (p), . . .}

La liste F (8) est r eduite a ` (a, 9) parce que (8) = 1 ; la liste F (9) est la concat enation de (c, 10) et de F (4) ; enn, la liste F (5) est compos ee de (a, 6) et de la liste F (2), purg ee de son el ement (a, 1), donc r eduite a ` (c, 3). Version 6 f evrier 2005

358

Chapitre 10. Motifs

10.2

Lalgorithme de Boyer et Moore

Lalgorithme de Boyer et Moore se rattache au sch ema g en eral des algorithmes de recherche que nous avons expos e au d ebut de la section pr ec edente : on compare le motif x a ` certains facteurs du texte t, en faisant glisser x de gauche a ` droite le long du texte t. La di erence principale entre lalgorithme de Boyer et Moore et les algorithmes pr ec edents r eside dans la mani` ere de comparer le motif x aux facteurs du texte. Alors que lalgorithme na f et lalgorithme de Knuth, Morris et Pratt comparent les lettres du motif x aux lettres du facteur de t de la gauche vers la droite, lalgorithme de Boyer et Moore les compare de la droite vers la gauche. Cette modication apparemment anodine est tr` es rentable puisquen pratique, lalgorithme de Boyer et Moore est le plus rapide des algorithmes connus.

10.2.1

Algorithme de Horspool

Dans sa version la plus simple, lalgorithme (appel e algorithme de Boyer-MooreHorspool) compare le motif x = x1 xm a ` un facteur tk+1 tk+m du texte. Si une di erence entre x et ce facteur est constat ee, on d ecale le motif vers la droite de mani` ere a ` faire co ncider la derni` ere lettre du facteur, cest-` a-dire la lettre tk+m , avec son occurrence la plus a ` droite dans x. Exemple. La gure 2.1 montre le fonctionnement de lalgorithme de BoyerMoore-Horspool sur le texte t = aabbbababacaabbaba et le motif x = aababab. Les di erences sont constat ees aux positions 4, 11, 18 du texte (cases sombres du
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

t: x :

a a

a a

b b a

b a a

b b b a

a a a a

b b b b

a a

b b a b a a a b a a b b a a b b a b

Figure 2.1: Algorithme de Horspool. texte et de loccurrence du motif). Les lettres qui d eterminent le d ecalage sont soulign ees (les indices correspondants sont gras). La premi` ere di erence constat ee conduit a ` d ecaler le motif de 2 vers la droite pour faire co ncider la lettre b a ` la cinqui` eme position dans x avec la septi` eme lettre du texte. La deuxi` eme di erence entra ne a ` nouveau un d ecalage de 2. La troisi` eme di erence constat ee doit entra ner un d ecalage pour faire co ncider la lettre c avec une lettre du motif. Version 6 f evrier 2005

10.2. Lalgorithme de Boyer et Moore

359

Comme il ny a pas doccurrence de la lettre c dans le motif, le motif est d ecal e de toute sa longueur. Le dernier d ecalage est dune unit e, parce quil y a une occurrence de a en avant-derni` ere position dans x. Soit x un mot de longueur m. Pour toute lettre a de lalphabet, soit d(a) la distance entre la derni` ere occurrence de a dans x (la derni` ere place except ee) et la derni` ere lettre de x. Plus pr ecis ement d(a) = |u| si au est suxe de x, u = et a ne gure pas dans u, |x| si a ne gure pas dans x.

La fonction d est la fonction de derni` ere occurrence. Par exemple, pour le mot x = aababab, la fonction de derni` ere occurrence vaut : a b c d 1 2 7 Lalgorithme esquiss e plus haut est le suivant (x est un mot de longueur m, et t un texte de longueur n). La version que nous donnons calcule toutes les occurrences de x dans t : Algorithme Boyer-Moore-Horspool(x, t) ; j := m ; tantque j n faire i := m ; tantque i > 0 etalors tj m+i = xi faire i := i 1 ntantque ; si i = 0 alors j est une n doccurrence de x ; j := j + 1 sinon j := j + d[tj ] nsi ntantque.

Sur notre exemple, les valeurs successives que prend lindice j dans la boucle externe sont 7, 9, 11, 18, 19. Le nombre de comparaisons de caract` eres nest que 12. Cet exemple illustre lecacit e des algorithmes du type Boyer et Moore : en pratique, on constate que le nombre total de comparaisons est tr` es souvent inf erieur a ` la longueur du texte. En dautres termes, ces algorithmes nexaminent m eme pas tous les caract` eres, par opposition a ` tous les algorithmes op erant de la gauche vers la droite qui, eux, examinent au moins une fois chaque caract` ere. En revanche, il nest pas dicile de voir que lalgorithme est en temps O (|x||t|) dans le cas le plus d efavorable. Consid erons le motif x = bam1 dont on cherche une occurrence Version 6 f evrier 2005

360

Chapitre 10. Motifs

dans an . La fonction de d ecalage napporte pas dam elioration puisque d(a) = 1. On fait donc n m d ecalages, et chaque test demande (sil est fait de droite a ` gauche) m comparaisons de caract` eres. Le comportement en moyenne de lalgorithme a fait lobjet d etudes exp erimentales et est tout a ` fait excellent. On peut prouver, mais cela d epasse le cadre de ce texte, que lalgorithme est sous-lin eaire en moyenne (voir les notes). La comparaison entre x et tj m+1 tj est faite de droite a ` gauche, mais on pourrait aussi bien la faire de gauche a ` droite ; ce qui importe cest le calcul du d ecalage en fonction de la derni` ere lettre du facteur. Il reste a ` calculer la fonction de derni` ere occurrence d pour le motif x. Cela se fait tr` es simplement comme suit : proc edure Derni` ere-occurrence (x, d) ; pour toute lettre a de A faire d[a] := m npour ; pour i de 1 a ` m 1 faire d[xi ] := m i npour. Bien entendu, ce calcul de d peut etre inclus au d ebut de la proc edure pour lalgorithme de Boyer, Moore et Horspool.

10.2.2

Algorithme de Boyer et Moore

La fonction de derni` ere occurrence peut etre employ ee di eremment : alors que dans la version de Horspool, le d ecalage est d etermin e par la derni` ere lettre du facteur examin e, on peut utiliser la lettre du facteur o` u la di erence a et e constat ee. Ainsi, la superposition du motif x = aababab au facteur aabcbab conduit, dans Horspool, a ` un d ecalage de 2 a ` cause de la lettre b terminant le facteur, et ceci ind ependamment du fait que cest a ` loccurrence de la lettre c dans le facteur que la di erence a et e constat ee. Dans une variante de lalgorithme de Boyer et Moore (pour etre historiquement exact, cest Horspool qui a introduit une variante de lalgorithme de Boyer et Moore), cest la lettre o` u la di erence se manifeste qui d etermine le d ecalage. Plus pr ecis ement, lorsquune co ncidence partielle du texte et du motif est constat ee : xi = t j , xi+1 xm = tj +1 tm+j i

on d ecale le motif pour faire co ncider la lettre tj avec xd(tj ) , cest-` a-dire avec la derni` ere occurrence de tj dans x, puis on recommence les comparaisons sur le nouveau facteur du texte ; toutefois, ce d ecalage nest fait que si cela fait r eellement avancer le motif, cest-` a-dire lorsque d(tj ) > m i ; sinon, on d ecale le motif de 1. En dautres termes, la comparaison est reprise pour les nouvelles valeurs j := j + max(d(tj ), m i + 1); i := m Voici lalgorithme obtenu : Version 6 f evrier 2005

10.2. Lalgorithme de Boyer et Moore Algorithme Boyer-Moore-simplifi e(x, t) ; j := m ; tantque j n faire i := m ; tantque i > 0 etalors tj = xi faire i := i 1 ; j := j 1 ntantque ; si i = 0 alors n dune occurrence de x en j ; j := j + max(d[tj ], m i + 1) ; ntantque.

361

Exemple. Reprenons lexemple pr ec edent de la recherche du motif x = aababab dans le texte t = aabbbababacaabbaba avec lalgorithme de Boyer-Moore simpli e. La gure 2.2 montre les d ecalages successifs du motif. Les di erences sont
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

t: x :

a a

a a a

b b a a

b a b a a

b b a b a a

a a b a b a

b b a b a b

b a b a b a b b a b a a a b a a b b a a b b a b

Figure 2.2: Algorithme de Boyer-Moore simpli e. constat ees aux positions sombres du texte. Les valeurs successives que prend lindice j en d ebut de la boucle tantque ext erieure sont indiqu ees en gras. Le nombre total de comparaisons de caract` eres est 14. La version compl` ete de lalgorithme de Boyer et Moore fait intervenir, en plus de la fonction de derni` ere occurrence d, une deuxi` eme fonction qui prend en compte le suxe o` u la di erence entre le motif et le texte a et e constat ee. La fonction de derni` ere occurrence est employ ee de la fa con que nous venons dindiquer. Avant la description formelle, donnons une description sommaire de la deuxi` eme fonction de d ecalage. Supposons que la comparaison, de droite a ` gauche, du motif x = x 1 xm a ` un facteur du texte t ait mis en evidence une co ncidence avec un suxe propre u = xi+1 xm de x, mais que la lettre xi soit di erente de la lettre correspondante tj du texte. On a donc (voir gure 2.3) : xi = t j , xi+1 xm = tj +1 tj +mi Version 6 f evrier 2005

362
j t: x : z a i u u

Chapitre 10. Motifs

Figure 2.3: Co ncidence partielle du motif et du texte. Un d ecalage qui tient compte de cette information va aligner x sur la derni` ere occurrence de u dans x qui est pr ec ed ee dune lettre di erente de xi (voir gure 2.4). Le d ecalage (not e d2 (i) dans la gure) est la quantit e dont lindice j va
j t: x : z b u u p = d 2 (i ) i a u

Figure 2.4: D ecalage : premier cas. etre augment ee ; il est egal a ` la longueur p du plus court suxe v de x qui a u comme bord, et qui nest pas pr ec ed e de la lettre xi . Il se peut que x nait pas

x : u
p = d 2 (i )

i a

Figure 2.5: D ecalage : deuxi` eme cas. doccurrence du suxe u pr ec ed ee dune lettre di erente de xi . Dans ce cas, on cherche le plus long suxe de u qui est un pr exe de x ; le d ecalage (encore not e d2 (i)) d epasse alors |x| (voir gure 2.5). Cette situation se produit en particulier si x = u. Dans ce cas, i = 0 et d2 (0) = |x| + |Bord(x)|. Il est commode dappeler, par analogie avec la notion de bord disjoint, bord disjoint droit dun suxe v de x un bord u de v tel que les suxes u et v ne sont pas pr ec ed es de la m eme lettre dans x. Pour tout suxe u de x on pose V (u) = {v | v est suxe de x, u est bord disjoint droit de v } et Lensemble V (u) contient les suxes de x pour lesquels le premier type de d ecalage est possible, et W (u) contient les mots intervenant dans le deuxi` eme Version 6 f evrier 2005 W (u) = {w | x est suxe de w, u est bord de w, |w | |ux|}

10.2. Lalgorithme de Boyer et Moore

363

cas ; on peut clairement se limiter aux mots de longueur major ee par |ux|. La deuxi` eme fonction de d ecalage, que nous appellerons la fonction du bon suxe est traditionnellement not ee d2 . Elle est d enie, pour i = 0, . . . , m, en posant u = xi+1 xm par d2 (i) = min |v |
v V (u)W (u)

Notons que les mots de W (u) sont de longueur sup erieure a ` |x| ; on les consid` ere donc uniquement lorsque V (u) = . Exemple. Consid erons le mot x = aababab. La fonction du bon suxe est : 1 2 3 4 5 6 7 x a a b a b a b d2 (i) 14 13 12 6 10 6 8 1 Pour i = 5, le suxe u = ab est bord des suxes abab et ababab. Seul le deuxi` eme est disjoint de u, donc V (u) = {ababab}, et d2 (5) = 6. Pour i = 4, le suxe est u = bab ; on a V (u) = et W (u) = {ux}, donc d2 (4) = 10. Pour i = 7, le mot vide est bord disjoint de b, donc d2 (1) = 1. Lalgorithme de Boyer et Moore proc` ede comme suit : Le motif x = x1 xm est compar e aux facteurs de longueur m du texte t. Pour une position donn ee, on compare les lettres de la droite vers la gauche. Lorsquune di erence est constat ee, cest-` a-dire lorsque xi = tj pour des indices i et j , lindice j est incr ement e, lindice i remis a ` m, et la comparaison recommence sur les lettres tj et xi . Pour lincr ementation de j , on peut choisir lune ou lautre des fonctions de d ecalage ; en fait, on choisit celle qui fournit la plus grande valeur. Do` u lalgorithme : 0

Algorithme Boyer-Moore(x, t) ; j := m ; tantque j n faire i := m ; tantque i > 0 etalors tj = xi faire i := i 1 ; j := j 1 ntantque ; si i = 0 alors j est une n doccurrence de x ; j := j + d2 [i] sinon j := j + max(d[tj ], d2 [i]) nsi ntantque.

Exemple. Reprenons le m eme exemple du texte t = aabbbababacaabbaba et du motif x = aababab avec lalgorithme de Boyer et Moore complet. La Version 6 f evrier 2005

364
1 2 3 4 5 6 7 8 9 10 11

Chapitre 10. Motifs


12 13 14 15 16 17 18

t: x :

a a

a a

b b

b a

b b a

a a a

b b b

b a a a b a a b b a a b b a b

Figure 2.6: Algorithme de Boyer-Moore complet. gure 2.6 montre les d ecalages successifs du motif. Les di erences sont constat ees aux positions sombres du texte. Les valeurs successives que prend lindice j en d ebut de la boucle tantque ext erieure sont indiqu ees en gras. Le nombre total de comparaisons de caract` eres est 8. Malgr e son ecacit e exp erimentale, lalgorithme de Boyer et Moore peut prendre un temps en O (|x||t|) lorsque lon cherche toutes les occurrences dun motif dans un texte (prendre x = am et t = an ). Une modication de lalgorithme a et e propos ee qui permet, au moyen dun pr etraitement plus compliqu e, dobtenir un temps lin eaire dans tous les cas. R. Cole a prouv e r ecemment quavec cet algorithme, le nombre de comparaisons est toujours born e par 3|t|. La preuve est compliqu ee et ne sera pas donn ee ici.

10.2.3

Fonction du bon suxe

Pour compl eter lexpos e de lalgorithme de Boyer et Moore, nous allons calculer la fonction du bon pr exe d2 . Il sav` ere que lon peut se ramener a ` des concepts familiers en retournant le motif (cest-` a-dire en prenant son image miroir). Nous allons en fait calculer une fonction du bon pr exe du motif. Soit x = x1 xm un mot, et soit u un pr exe de x. Posons V (u) = {v | v est pr exe de x et u est bord disjoint de v } Par ailleurs, soit (en conformit e avec la notation de la section 10.2.5) fu (x) le plus long suxe de x qui est pr exe de u et wu = gu (x)u, o` u gu (x) est d eni par gu (x)fu (x) = x. On d enit la fonction du bon pr exe pour i = 0, . . . , m 1 et u = x1 xi par (i) = min |v |
v V

Si d2 est la fonction du bon suxe de x = xm x1 , alors par construction d2 (i) = (m i) i = 1, . . . , m 1 Pour d eterminer la fonction du bon pr exe, il faut evaluer lensemble V (u) et le mot wu pour chaque pr exe u de x. Les mots wu se calculent bien a ` laide de la Version 6 f evrier 2005

(u){wu }

10.2. Lalgorithme de Boyer et Moore

365

fonction = x qui donne, pour chaque pr exe x1 xj de x, la longueur (j ) du bord maximal de x1 xj . Nous avons d ej` a expliqu e plus haut comment calculer cette fonction. Consid erons alors les nombres m, (m), 2 (m), . . . , r (m) = 0 et soit u = x1 xi un pr exe de x. Si i est dans lintervalle [ k (m), k1 (m)[, on a |fu (x)| = k (m), puisque fu (x) est un bord de x. Il en r esulte que |wu | = |gu (x)| + |u| = m k (m) + i Ceci conduit aux instructions suivantes qui calculent les longueurs |wu | pour les pr exes de x : j := m ; tantque j > 0 faire pour i de [j ] a ` j 1 faire [i] := m [j ] + i ; j := [j ] ntantque Venons-en aux mots de V (u). Posons u = x1 xi . Alors V (u) = {x1 xj | (j ) = i et xj +1 = xi+1 } i o` u i est un terme correctif d eni par i = {x} si (m) = i ; sinon.

Pour evaluer correctement ces mots, il semble a ` premi` ere vue n ecessaire de d eterminer tous les bords disjoints de tous les pr exes de x, ce qui conduit a ` un algorithme qui nest plus lin eaire en temps. En fait, le morceau de programme suivant convient : (1) pour j de 1 a ` m 1 faire (2) i := [j ] ; (3) tantque i 0 etalors xj +1 = xi+1 faire (4) [i] := min( [i], j ) ; (5) i := [i] (6) ntantque (7) npour Expliquons pourquoi ce programme est correct. Si lon remplace les lignes (3) (6) par

Version 6 f evrier 2005

366 (3 ) (4 ) (5 ) (6 )

Chapitre 10. Motifs tantque i 0 faire si xj +1 = xi+1 alors [i] := min( [i], j ) ; i := [i] ntantque

le programme calcule tous les bords disjoints, et choisit le plus petit. Le premier programme ne calcule quun sous-ensemble des bords disjoints ; pour un indice j donn e, il calcule uniquement la suite de bords disjoints cons ecutifs a ` partir du plus grand bord de x1 . . . xj . En dautres termes, d` es que lon rencontre un bord, disons x1 xk , qui nest pas disjoint de x1 . . . xj , le calcul des bords est interrompu. Ceci se justie par la double observation suivante : un bord de x1 xk est disjoint de x1 xk si et seulement sil est disjoint de x1 xj , et les bords disjoints de x1 xk (donc les bords disjoints manquants de x1 xj ) ont d ej` a et e calcul es lorsque lindice de la boucle pour a pris la valeur k . En composant les deux parties que nous venons de d evelopper, on obtient le programme complet calculant la fonction du bon pr exe : proc edure Bon-Pr efixe(x, ) ; j := m ; tantque j > 0 faire pour i de [j ] a ` j 1 faire [i] := m [j ] + i ; j := [j ] ntantque ; pour j de 1 a ` m 1 faire i := [j ] ; tantque i 0 etalors xj +1 = xi+1 faire [i] := min( [i], j ) ; i := [i] ntantque npour. Cette proc edure calcule la fonction du bon pr exe en temps lin eaire. La fonction du bon suxe sobtient en trois etapes ; on prend limage miroir du motif, on en calcule la fonction du bon pr exe, et on en d eduit d2 : proc edure Bon-Suffixe(x, d2 ) ; pour i de 1 a ` m faire y [i] := x[m + 1 i] ; Bords-maximaux(y, ) ; Bon-Pr efixe(y, ) ; d2 [0] := m + [0] ; pour i de 1 a ` m faire d2 [i] := [m i]. On peut ne pas passer par limage miroir et on peut incorporer le calcul de a ` lint erieur de la proc edure, mais le programme devient moins facile a ` comprendre. Version 6 f evrier 2005

10.3. Lalgorithme de Aho et Corasick

367

10.3

Lalgorithme de Aho et Corasick

Soit X un ensemble ni de mots. Nous consid erons ici le probl` eme de localisation des occurrences des mots de X dans un texte t. On peut faire cette recherche s equentiellement, et chercher successivement les occurrences de chaque motif dans le texte, a ` laide dun des algorithmes pr esent es pr ec edemment. Cette d emarche nest pas ecace, puisquelle oblige a ` lire le texte t autant de fois quil y a de motifs. En revanche, un algorithme qui eectue la recherche parall` element pour chaque motif semble prometteur. Cest essentiellement le fonctionnement de lalgorithme de Aho et Corasick que nous pr esentons ici. Il g en eralise lalgorithme de Knuth, Morris et Pratt au cas de plusieurs motifs a ` rechercher dans un texte. Lalgorithme se pr esente comme une g en eralisation de lautomate des occurrences. On construit un automate d eterministe reconnaissant lensemble A X , sans toutefois expliciter compl` etement sa fonction de transition, puis on utilise une fonction de suppl eance similaire a ` celle d ecrite pr ec edemment pour guider le cheminement dans lautomate. Soit donc X un ensemble ni de mots sur un alphabet A, et soit P lensemble des pr exes des mots de X . On construit un automate A = (P, , P A X ) reconnaissant A X , dont P est lensemble d etats, est l etat initial et P A X lensemble d etats terminaux. La fonction de transition est d enie, pour p P et a A, par p a = fX (pa) o` u fX est une extension de la fonction fx utilis ee dans lalgorithme de Knuth, Morris et Pratt. Elle est d enie par fX (u) = le plus long suxe de u qui est dans P. En particulier, p a = pa si pa P . La partie de lautomate form ee seulement des ` eches (p, a, pa), avec p et pa dans P , est appel ee le squelette de lautomate. Exemple. Consid erons lensemble X = {aba, bab, acb, acbab, cbaba} de 5 mots sur lalphabet A = {a, b, c}. Le squelette de lautomate A est donn e dans la gure 3.1. Les etats sont num erot es de fa con arbitraire. La fa con dobtenir que 4 est etat terminal sera expliqu e plus loin. Pour poursuivre lanalogie avec lautomate des occurrences, d enissons, pour tout mot u non vide, le mot BordX (u) comme le plus long suxe propre de u qui est dans P . Voici la fonction BordX pour lensemble ci-dessus. On a remplac e les pr exes par leurs num eros. i = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 BordX (i) = 0 13 14 15 8 0 13 14 1 2 3 15 0 6 7 Version 6 f evrier 2005

368
b b c 13 a 14 b 15 9 a a b b

Chapitre 10. Motifs


a

c 0 a b

1 6

2 7

3 8 10

11

12

Figure 3.1: Automate pour lensemble X . La fonction de transition de lautomate sexprime a ` laide des bords. En eet : pa= et de plus, BordX (p) a si p = ; sinon. Ces formules permettent d evaluer la fonction de transition comme suit : BordX (pa) = fonction Transition(p, a) ; tantque pa / P et p = faire p := BordX (p) ntantque ; si pa P alors retourner(pa) sinon retourner(). Pour mettre en uvre cette fonction, on doit r esoudre deux probl` emes : il faut conna tre la fonction BordX , et il faut savoir tester rapidement si pa est dans P . Consid erons dabord la r ealisation du test. On peut calculer une table g indic ee par P A, avec pa si pa P ; g [p, a] = echec sinon, mais cette fa con de faire est irr ealiste, car la table occupe trop de place d` es que lalphabet est grand (par exemple, si A est lensemble des caract` eres Ascii). Si, dans une application donn ee, un tableau de cette taille ne cr ee pas de probl` eme, alors mieux vaut remplir avec la fonction de transition compl` ete de lautomate les cases qui contiendraient echec , ce qui acc el` ere ensuite la recherche. De fa con plus concr` ete, on range lensemble P des pr exes des motifs de X dans un arbre ; tester si, pour un pr exe p et une lettre a, le mot pa est pr exe, revient a ` tester sil y a un arc sortant de p et etiquet e par a. Ce test peut prendre un temps proportionnel a ` |A| (ou log(|A|) si lon programme plus soigneusement, en Version 6 f evrier 2005 pa si pa P ; BordX (pa) sinon ;

10.4. Recherche dexpressions

369

rangeant les ls dun sommet dans un arbre binaire equilibr e). La place prise par larbre est proportionnelle a ` Card(P ) m, o` u m = xX |x| est la somme des longueurs des motifs. La recherche des occurrences des mots de X dans un texte t = t1 . . . tn se fait par lalgorithme suivant, o` u lon a incorpor e l evaluation des transitions :

proc edure Aho-Corasick(X, t) q := ; { etat initial} pour i de 1 a ` n faire tant que qti / P et q = faire q := BordX [q ] ntantque ; si qti P alors q := qti sinon q := nsi ; si q est un etat nal alors acher(q ) nsi npour.

Une table repr esentant la fonction BordX se calcule a ` laide dun parcours en largeur du squelette de A. Simultan ement, on calcule les etats terminaux autres que ceux correspondant aux mots de X . Lalgorithme est le suivant :

proc edure Bords-de-X (P, BordX ) pour a A faire BordX [a] := npour ; pour p P \ et a A tels que pa P faire q := BordX [p] ; tantque qa / P et q = faire q := BordX [q ] ntantque ; si qa P alors BordX [pa] := qa sinon BordX [pa] := nsi ; si qa est terminal alors ajouter pa aux etats terminaux nsi ; npour.

Il nest alors pas dicile de voir que lalgorithme de calcul des occurrences des mots de X dans t est en temps O (n + m) et en place O (m) (plus pr ecis ement en temps O ((n + m)|A|) ou O ((n + m) log |A|) si lon tient compte de la taille de lalphabet).

10.4

Recherche dexpressions

Le probl` eme que nous consid erons dans cette section est le suivant : etant donn es une expression rationnelle e et un texte t, d eterminer sil existe un mot dans le langage X = L(e) d enot e par e qui gure dans le texte t, et dans larmative rapporter le mot et son occurrence. Ce probl` eme appara t couramment dans les editeurs de textes, d` es quils ont des possibilit es de recherche un peu sophistiqu ees. Version 6 f evrier 2005

370

Chapitre 10. Motifs

Comme pour la recherche de motifs, la question revient a ` chercher le ou les pr exes du texte t qui appartiennent au langage A X ; la d emarche est aussi la m eme : on construit dabord, en pr etraitement , un automate reconnaissant A X , puis on cherche les pr exes de t reconnus par cet automate. La construction dun automate d eterministe pour le langage A X nest pas dicile, mais il peut avoir un nombre consid erable d etats, m eme pour une expression courte : lexemple donn e dans le chapitre pr ec edent montre que le nombre d etats peut etre exponentiel en fonction de la taille de lexpression. Si lon se contente dun automate qui nest pas n ecessairement d eterministe, cest en revanche la reconnaissance dun mot qui sen trouve compliqu ee. Nous proposons un compromis entre ces deux possibilit es : on construit dabord un automate asynchrone particulier pour le langage d enot e par une expression rationnelle e, et dont le nombre d etats et de ` eches est lin eaire en fonction de la taille de e. On montre ensuite que la recherche des occurrences des mots du langage dans un texte t de longueur n peut se faire en temps O (nm), o` u m est la taille de lexpression e.

10.4.1

Calcul ecace dun automate

Nous etudions ici un proc ed e de calcul ecace dun automate reconnaissant le langage d enot e par une expression rationnelle. Soit A un alphabet, et soit e une expression rationnelle sur A. La taille de e, not ee |e|, est le nombre de symboles gurant dans e. Plus pr ecis ement, on a |0| = |1| = |a| = 1 pour a A |e + f | = |e f | = 1 + |e| + |f |, |e | = 1 + |e| Nous allons construire, pour toute expression e, un automate reconnaissant L(e) qui a des propri et es particuli` eres. Un automate asynchrone A est dit normalis e sil v erie les conditions suivantes : (i) il existe un seul etat initial, et un seul etat nal, et ces deux etats sont distincts ; (ii) aucune ` eche ne pointe sur l etat initial, aucune ` eche ne sort de l etat nal ; (iii) tout etat est soit lorigine dexactement une ` eche etiquet ee par une lettre, soit lorigine dau plus deux ` eches etiquet ees par le mot vide . Notons que le nombre de ` eches dun automate normalis e est au plus le double du nombre de ses etats. Proposition 4.1. Pour toute expression rationnelle e de taille m, il existe un automate normalis e reconnaissant L(e), et dont le nombre d etats est au plus 2m. Preuve. Elle est constructive, et elle constitue en fait une autre d emonstration de ce que tout langage rationnel est reconnaissable. On proc` ede par r ecurrence Version 6 f evrier 2005

10.4. Recherche dexpressions


" (2) a (3)

371

i (1)

Figure 4.1: Automates normalis es reconnaissant (1) lensemble vide, (2)


le mot vide, (3) la lettre a.

sur la taille de e. Pour e = 0, e = 1, et e = a, o` u a A, les automates de la gure 4.1 donnent des automates normalis es ayant 2 etats. Si e = e + e , soient A = (Q , i , t ) et A = (Q , i , t ) deux automates normalis es reconnaissant des langages X = L(e ) et X = L(e ). On suppose Q et Q disjoints.
i0 A A
0

1 i 1

1 t 1

i0 0

00

00

Figure 4.2: Automate pour lunion. Lautomate o` u i et t sont deux nouveaux etats distincts et dont les ` eches sont, en plus de celles de A et de A , les quatre ` eches (i, 1, i ), (i, 1, i ), (t , 1, t), (t , 1, t) reconna t X X = L(e) (voir gure 4.2). Lautomate est normalis e, et |Q| 2|e|. Si e = e e , consid erons lautomate A = ((Q \ t ) Q , i , t ) obtenu en identiant t et i , cest-` a-dire en rempla cant toute ` eche aboutissant en t par la m eme ` eche, mais aboutissant en i (voir gure 4.3).
i0 A
0

A = (Q Q {i, t}, i, t)

00

00

t0 0

Figure 4.3: Automate pour le produit. Cet automate reconna t le langage X X ; clairement, son nombre d etats est major e par 2|e|. Enn, si e = e , lautomate A = (Q {i, t}, i, t) de la gure 4.4 qui, en plus des ` eches de A , poss` ede les quatre ` eches (i, 1, i ), (i, 1, t), (t , 1, i ), (t , 1, t) reconna t le langage X = L(e). Il est normalis e et a 2 etats de plus que A . Version 6 f evrier 2005

372
1 i 1 i0 t
0

Chapitre 10. Motifs

A0 1

Figure 4.4: Automate pour l etoile. Exemple. Pour lexpression (a + b) b(1 + a)(1 + a) , la construction de la preuve produit lautomate de la gure 4.5, dans laquelle les ` eches non marqu ees portent comme etiquette le mot vide. Observons quil existe de nombreux chemins dont

a i b b *

a t

Figure 4.5: Un automate pour lexpression (a + b) b(1 + a)(1 + a) . l etiquette est vide, par exemple de l etat marqu e dune etoile a ` l etat terminal.

10.4.2

Recherche doccurrences

Le calcul dun automate normalis ea ` partir dune expression rationnelle peut se faire en temps et en place lin eaires en fonction de la taille de lexpression. Une fa con economique de repr esenter un automate normalis e est dutiliser deux tables indic ees par son ensemble d etats : la premi` ere contient, pour lindice q , lunique couple (a, q ), sil existe, tel que (q, a, q ) est une ` eche de lautomate avec a une Version 6 f evrier 2005

Soit e une expression rationnelle ; la recherche doccurrences de mots d enot es par lexpression e dans un texte t se fait en deux etapes ; dans un premier temps, on construit un automate normalis e A reconnaissant le langage A L(e), a ` partir de lexpression (a1 + + ah ) e, o` u A = {a1 , . . . , ah }. Cette etape constitue le pr etraitement. Dans un deuxi` eme temps, le texte t est lu lettre par lettre. Pour chaque pr exe de t, on calcule lensemble des etats de A accessibles a ` partir de l etat initial par ce pr exe, et on ache les pr exes pour lesquels l etat nal est accessible. Cette deuxi` eme etape est r ealisable en temps O (N n) o` u N est le nombre d etats de A et n est la longueur de t ; la raison en est la forme particuli` ere de A qui permet de calculer chaque nouvel ensemble d etats accessibles en temps lin eaire en N a ` partir du pr ec edent. Comme N = O (|e|), on obtient un algorithme en O (nm), o` u m = |e|.

10.4. Recherche dexpressions

373

lettre ; la deuxi` eme contient lensemble des etats qui sont extr emit es de ` eches dorigine q et etiquet ees par le mot vide ; cet ensemble a au plus 2 el ements. Nous en venons maintenant a ` la reconnaissance. Soit A = (Q, i, t) un automate normalis e. Comment v erier si un mot w est reconnu par lautomate A ? Evidemment, on ne veut pas d eterminiser lautomate, pour ne pas perdre le prot du nombre r eduit d etats et de ` eches. La m ethode consiste a ` simuler la d eterminisation de lautomate A en conservant, a ` chaque etape, lensemble des etats accessibles de l etat initial par un chemin dont l etiquette est la partie d ej` a lue du mot dentr ee. La seule dicult e est le calcul des etats accessibles a ` partir dun etat par un chemin d etiquette 1. Soit P un ensemble d etats. Notons (P ) lensemble des etats q Q pour lesquels il existe p P et un chemin c : p q d etiquette 1. Pour toute lettre a, notons P a lensemble des etats q Q tels quil existe une ` eche (p, a, q ) dans A, avec p P . Pour v erier si un mot w = a1 an est reconnu par A, on construit une suite P0 , . . . , Pn densembles d etats par P0 = ({i}); Pk = (Pk1 ak ) , k = 1, . . . , n.

Il est imm ediat que Pk est lensemble des etats accessibles de i par un chemin d etiquette a1 ak . Par cons equent, w est accept e par A si et seulement si l etat nal t appartient a ` Pn . On en d eduit donc lalgorithme suivant (o` u w = a 1 an , trans(P, a) = P a, et epsilon(P ) = (P )) : fonction reconnaissance(w : mot) : bool een ; P :=epsilon({i}) ; pour k de 1 a ` n faire P :=epsilon(trans(P, ak )) npour ; si (t P ) alors retourner(vrai) sinon retourner(faux) nsi. Pour la mise en uvre de cet algorithme, nous repr esentons les ensembles d etats par deux structures de donn ees, lune qui permet ladjonction et la suppression dun el ement en temps constant, comme une pile ou une le, et lautre qui permet ladjonction et le test dappartenance en temps constant, comme un vecteur bool een. La premi` ere ou la deuxi` eme structure est utilis ee dans le calcul de la fonction de transition :

Version 6 f evrier 2005

374

Chapitre 10. Motifs

fonction trans(P : ensemble ; a : lettre) : ensemble ; (1) R := ; (2) pour q dans P faire (3) sil existe q tel que (q, a, q ) est une ` eche alors (4) R := R q (5) nsi (6) npour ; (7) retourner(R).

Linitialisation a ` la ligne (1) se fait en temps O (N ), si A a N etats ; le test a ` la ligne (3) est en temps constant, donc la boucle est en temps O (N ). Le calcul de se fait bien entendu par un parcours de graphe, puisquil sagit de calculer les etats accessibles par des chemins compos es uniquement de ` eches etiquet ees par le mot vide. On peut limpl ementer par exemple comme suit, en utilisant deux repr esentations dun m eme ensemble, la premi` ere (not ee T ) permettant de tester en temps constant si cet ensemble est vide, et dajouter et de supprimer des el ements (pile ou le par exemple), la deuxi` eme (not ee R) permettant de tester lappartenance en temps constant (un tableau bool een par exemple) :

fonction epsilon(P : ensemble) : ensemble ; (1) T := P ; R := P ; (2) tant que T = faire (3) choisir q dans T ; (4) pour chaque ` eche (q, 1, q ) dorigine q faire (5) si q / R alors R := R q ; T := T q nsi (6) npour (7) ntantque ; (8) retourner(T ).

La ligne (1) se fait en temps lin eaire en N (nombre d etats de lautomate A), la boucle (2) nest pas ex ecut ee plus de N fois, puisqu` a chaque tour on enl` eve un el ement a ` T , et que lon najoute que des etats non encore visit es. Le nombre de ` eches examin ees dans la boucle (4) est au plus 2 (et ceci est essentiel pour la lin earit e de lalgorithme), et les op erations de la ligne (5) se font en temps constant. Ceci montre que lalgorithme est en temps O (N ). Pour le test doccurrences, on proc` ede comme pour la reconnaissance, sauf que lon ache toutes les positions o` u se termine un mot reconnu par lautomate. Voici lalgorithme (on a pos e t = t 1 tn ) :

Version 6 f evrier 2005

Notes

375

proc edure occurrences(t : mot) : bool een ; P :=epsilon({i}) ; pour k de 1 a ` n faire P :=epsilon(trans(P, tk )) ; si l etat terminal est dans P alors acher(k ) nsi ; npour.

Notes
Parmi les di erents algorithmes de recherche dun motif qui ont et e expos es, lalgorithme de Boyer et Moore est exp erimentalement le plus rapide, et dans la variante de Horspool, il est simple a ` programmer. La fonction egrep de Unix utilise par exemple un algorithme de recherche dexpressions et, pour des cha nes de caract` eres, lalgorithme de Boyer-Moore dans la variante de Horspool. L editeur de texte Emacs fait amplement appel a ` la recherche dexpressions, par exemple dans le traitement du courrier. Les performances des divers algorithmes dans le cas le plus d efavorable sont bien connues, pour lecacit e en moyenne (sous lhypoth` ese de distribution uniforme) certains des r esultats sont tr` es r ecents, et dautres manquent encore. Voici une table de valeurs connues : pire cas |x| |t| 2|t| id. id. |x| |t| id. 3|t| moyenne 1 + 1/(q 1) 1 + 1/q 2/q 2 2/(1 + q )

Na f Morris-Pratt Knuth-Morris-Pratt Simon Horspool Boyer-Moore simple Boyer-Moore (variante)

Les estimations en moyenne sont de M. R egnier et de Baeza-Yates, R egnier. Elles d esignent le nombre moyen de comparaisons par caract` ere du texte, et valent lorsque la longueur du motif et la taille q de lalphabet sont grandes . Lestimation dans le cas le plus d efavorable de lalgorithme de Boyer-Moore, due a ` R. Cole, sapplique a ` une variante de cet algorithme. Lexpos e de ce chapitre a prot e des notes du cours de M. Crochemore a ` lUniversit e Paris 7. Lhistoire des algorithmes de recherche de motifs jusquen 1977 est cont ee dans : D.E. Knuth, J.H. Morris Jr, V.R. Pratt, Fast pattern matching in strings, SIAM J. Comput. 6 (1977), 323350. La version simpli ee de lalgorithme, due a ` Morris et Pratt, et qui date de 1970, na jamais et e publi ee. La r ef erence la plus compl` ete est : Version 6 f evrier 2005

376

Chapitre 10. Motifs

A. V. Aho, Algorithms for nding patterns in strings, in : J. van Leeuwen, ed., Handbook of Theoretical Computer Science, Vol. A, North-Holland, 1990, 255 300. Ce chapitre contient dautres algorithmes, comme lalgorithme de CommentzWalter qui est une version a ` la Boyer et Moore de la recherche dun ensemble de motifs dans un texte. Les recherches continuent activement sur l elaboration et l evaluation dalgorithmes de recherche de motifs, en particulier dalgorithmes qui minimisent a ` la fois le nombre de comparaisons, le d elai, et la place requise pour conserver le pr etraitement. Dautres algorithmes pour une recherche en parall` ele, ou pour une recherche avec symboles indi erents, ont aussi et e propos es.

Exercices
10.1. D ecrire comment il convient de modier lalgorithme de Knuth, Morris et Pratt pour quil d etecte toutes les occurrences dun motif dans un texte. 10.2. Deux mots u et v sont conjugu es sil existe x, y tels que u = xy , v = yx. Donner un algorithme qui teste en temps O (n) si deux mots de longueur n sont conjugu es. 10.3. Les mots de Fibonacci sont d enis par f0 = a, f1 = ab, et fn+2 = fn+1 fn pour n 0. Montrer que Bord(fn+2 ) = fn .

10.4. Donner des exemples de mots x pour lesquels lautomate A(x) a exactement |x| ` eches arri` ere.

10.5. Montrer que tout chemin d etiquette x dans lautomate A(x) utilise au plus une ` eche arri` ere.

10.6. Montrer que lalgorithme de Boyer et Moore fait de lordre de 3|t| op ek 2 k +2 k +2 p rations en cherchant une occurrence de x = (ba ) dans t = a (ba ) , quels que soient les entiers positifs k et p. 10.7. Montrer que lautomate construit dans lalgorithme de Aho et Corasick nest en g en eral pas lautomate minimal reconnaissant A X . 10.8. Soit A un alphabet, et soit une lettre qui nest pas dans A. Si u = a1 am et v = b1 bm sont deux mots, avec ai , bi A {}, on pose u v si ai = implique ai = bi pour 1 i m.

Soit x = x1 xm un mot de longueur m sur A. Lautomate de Boyer et Moore de x, not e A(x), a pour etats les mots y de longueur m sur A {} tels que y x (accessibles a ` partir de l etat initial comme expliqu e ci-dessous). L etat m initial est , l etat nal est x. La fonction de transition est d enie comme suit. Soit q = uv , avec v = xk+1 xm A , soit a A, et soit p = uav = y1 ym . Alors p si a = xk ; qa= d y1+d ym sinon, Version 6 f evrier 2005

Exercices

377

o` u d est le plus petit entier tel que y1+d ym x1 xmd . Par exemple, lautomate de Boyer et Moore de aba est donn e dans la gure ci-dessous.

a a a b a a b b b a b b a a b b a a ab a

Figure 4.6: Lautomate de Boyer et Moore pour aba. a) Ecrire un programme qui prend en argument un mot x et qui calcule lautomate de Boyer et Moore. b) Montrer que si toutes les lettres de x sont distinctes, lautomate a exactement m(m + 1)/2 etats. c) Montrer que si x = ai baj avec i + j + 1 = m, alors A(x) a (m3 ) etats.

Version 6 f evrier 2005

378

Chapitre 10. Motifs

Version 6 f evrier 2005

379

Chapitre 11

G eom etrie algorithmique


La premi` ere section de ce chapitre contient un rappel de quelques notations classiques en g eom etrie euclidienne, ainsi que la mise en place doutils el ementaires qui nous seront utiles dans les sections suivantes. La deuxi` eme section est consacr ee aux algorithmes de calcul de lenveloppe convexe dun ensemble ni de points du plan. Nous terminons par un algorithme dynamique plus sophistiqu e. Quelques probl` emes de localisation dun point dans le plan divis e en r egions sont etudi es dans la troisi` eme section ; on y utilise des structures de donn ees assez complexes, en particulier les ensembles ordonn es persistants. La derni` ere section est consacr ee aux diagrammes de Vorono de points et de segments.

11.1

Notions pr eliminaires

Le d eveloppement r ecent de lalgorithmique g eom etrique est d u aux progr` es de la technologie. En eet, la synth` ese dimages par ordinateur etait encore, il y a quelques ann ees, fort co uteuse. Les ordinateurs actuels ont une rapidit e et une puissance de calcul qui rendent linteractivit e possible en infographie. Il est inutile de souligner limportance de cet outil comme moyen de communication entre la machine et lutilisateur. La g eom etrie joue un r ole fondamental dans un grand nombre de domaines tels que vision par ordinateur, robotique, conception assist ee par ordinateur, design industriel, image de synth` ese, etc. Cela explique limportance algorithmique des probl` emes g eom etriques. Grossi` erement, on peut, si lon y tient, placer une fronti` ere entre les math ematiques et l informatique de la fa con suivante. Le math ematicien prouve lexistence dun objet : lenveloppe convexe dun ensemble ni de points du plan est un polygone convexe , linformaticien le calcule (si cest possible), et cherche un algorithme ecace (sil en existe). Dans ce chapitre, nous pr esentons des algorithmes pour quelques probl` emes fondamentaux de g eom etrie plane. Il est int eressant de noter que certains principes algoVersion 6 f evrier 2005

380

Chapitre 11. G eom etrie algorithmique

rithmiques classiques tels que la dichotomie se r ev` elent souvent particuli` erement adapt es a ` un certain nombre de probl` emes g eom etriques. Dautre part, de nouvelles m ethodes sp eciques a ` la g eom etrie emergent. Parmi elles, on peut citer le principe de balayage de lespace par un hyperplan. Ce principe permet de transformer un probl` eme statique en dimension k en un probl` eme dynamique en dimension k 1, et exploite le fait quen cours de balayage, la situation etudi ee nest modi ee de mani` ere signicative quen un nombre ni de positions de lhyperplan et que par ailleurs deux situations cons ecutives sont peu di erentes ; on dispose donc dune grande partie de linformation d ej` a calcul ee, en utilisant par exemple la structure densemble ordonn e persistant. Une autre approche algorithmique fr equente consiste a ` subdiviser lespace en r egions o` u les solutions au probl` eme pos e sont les m emes. Cest le cas par exemple dans la recherche des voisins : on calcule le diagramme de Vorono de lensemble des sites.

11.1.1

Notations

Les objets consid er es appartiennent a ` un plan ane euclidien orient e. Parmi les bases orthonorm ees directes, on en privil egie une not ee (, ), d enissant deux directions appel ees horizontale () et verticale (). On notera : pq d(p, u) d(p, u) d(p, q ) d(p, q ) [p, q ] [p, u( d et (u, v ) (u, v ) le vecteur dorigine p et dextr emit e q; la droite passant par p, de vecteur directeur u non nul ; la droite orient ee par u passant par p ; la droite passant par p et q (p = q ) ; la droite orient ee de p vers q passant par p et q (p = q ) ; le segment dextr emit es p et q ; la demi-droite dorigine p de vecteur directeur u ; le d eterminant du couple de vecteurs (u, v ) dans une base orthonorm ee directe ; langle de u avec v ; on notera encore (u, v ) lorsquil ny a pas ambigu t e le secteur angulaire associ e a ` langle (u, v ).

Un angle(u, v ) est dit convexe (resp. r eexe, plat) sil est de mesure strictement inf erieure a ` (resp. strictement sup erieure a ` , egale a ` ). Etant donn ee une suite de points (x1 , ..., xn ), on appelle suite circulaire et on note ((x1 , ..., xn )) lensemble des suites (xi , xi+1 , , xn , x1 , , xi1 ) conjugu ees de la suite (x1 , ..., xn ). Dans une suite circulaire ((x1 , ..., xn )), chaque el ement a un successeuret un pr ed ecesseur unique. Le successeur de xi est xi+1 , avec la convention que xn+1 = x1 . De m eme, le pr ed ecesseur de xi est xi1 , avec la convention que x0 = xn . Version 6 f evrier 2005

11.1. Notions pr eliminaires

381

11.1.2

Lignes polygonales, polygones

Une ligne polygonale est une suite L = (S1 , ..., Sn ) de segments Si = [xi , xi+1 ] de longueur non nulle. Les segments Si sont les c ot es de la ligne polygonale, et les points xi sont ses sommets. On convient aussi de repr esenter la ligne polygonale L par la suite (x1 , ..., xn+1 ) de ses sommets. La ligne polygonale L est ferm ee si xn+1 = x1 . Elle est simple si deux segments non cons ecutifs ont une intersection vide et si deux segments cons ecutifs ont une intersection r eduite a ` une extr emit e et ont pour support des droites distinctes. Dans le cas o` u la ligne polygonale est ferm ee, on consid` ere que les segments Sn et S1 sont cons ecutifs. Un polygone (simple) est une ligne polygonale ferm ee (simple) ayant au moins trois c ot es.
x9 x2 x1 x6 x5 x3 x4 x2 polygone polygone simple x7 x5 x6 x2 x8 x1 x4 x3 x1 x3 x5 x4

ligne polygonale

Figure 1.1: Lignes polygonales. Un polygone simple d etermine deux r egions du plan. Lune born ee, est appel ee lint erieur, lautre non born ee est appel ee lext erieur. La fronti` ere de ces deux r egions est lunion des c ot es du polygone. Pour ne pas alourdir l ecriture, il est dusage dappeler encore polygone la r egion ferm ee et born ee d enie par lint erieur du polygone et sa fronti` ere.
A E D B C

Figure 1.2: Le contour positif du polygone est ((A, B, C, D, E )). Soit P = (x1 , ..., xn , xn+1 = x1 ) un polygone simple. Le plan etant orient e, P a un contour positif (ou direct) et un contour n egatif quon conviendra de repr esenter Version 6 f evrier 2005

382

Chapitre 11. G eom etrie algorithmique

par les suites circulaires ((x1 , ..., xn )) et ((xn , . . . , x1 )). Le contour positif est tel que lint erieur du polygone se trouve a ` sa gauche (voir gure 1.2). Exemple. Le contour positif du polygone P de la gure 1.2 est ((A, B, C, D, E )) et son contour n egatif est ((A, E, D, C, B )).

11.1.3

Ordre polaire, circuit polaire

Ordre polaire On note mmes(u, v ) la mesure en radian de langle (u, v ) dans lintervalle [0, 2 [. Soit D une demi-droite du plan dorigine O . On d enit dans le plan priv e de O un ordre total appel e ordre polaire relatif a ` la demi-droite D par : pq si et seulement si : mes(D, Op) < mes(D, Oq) ou (mes(D, Op) = mes(D, Oq ) et Oq Op) Autrement dit, lordre polaire relatif a ` D est lordre lexicographique pour les coordonn ees polaires des points par rapport a ` D, a ` ceci pr` es que lordre relatif a ` la distance a ` O est invers e. Exemple. Pour les points de la gure 1.3, lordre polaire de S par rapport a `D est (p6 , p5 , p4 , p2 , p1 , p3 , p7 ).
D p p
7 6

p p
3

O p5 p
4

Figure 1.3: Ordre polaire. Lemme 1.1. Soit S un ensemble de points, O / S , et deux demi-droites D et D dorigine O . Les suites obtenues en rangeant les points de S pour les deux ordres polaires relatifs a ` D et D sont conjugu ees lune de lautre. Ce lemme nous permet de d enir une notion qui ne d epend que de S et O , celle de circuit polaire de S relativement a ` O. Version 6 f evrier 2005

11.1. Notions pr eliminaires Circuit polaire

383

Soit S un ensemble de points et O / S , on appelle circuit polaire de S relativement a ` O la suite circulaire de lordre polaire des points de S par rapport a ` une demidroite quelconque D dorigine O . Dans lexemple de la gure 1.3, la suite circulaire ((p1 , p3 , p7 , p6 , p5 , p4 , p2 )) est le circuit polaire de S = {p1 , ..., p7 } par rapport a ` O. Nous introduisons ici une nouvelle notion qui permettra de calculer ecacement le circuit polaire dun ensemble de points relativement a ` un point x e. Soit O un point x e du plan. On consid` ere dans lensemble des points du plan priv e de O une relation appel ee relation de pr ec edence circulaire convexe relativement a `O not ee O et d enie par : p O p 0 < mes(Op, Op ) ou (mes(Op, Op ) = 0 et Op Op )

On notera O la relation stricte associ ee. Il est clair que O nest pas une relation dordre car elle nest ni transitive ni anti-sym etrique (mais presque...). Dans lexemple de la gure 1.4 ci-dessous, on a : p1 O p2 , p2 O p3 , p3 O p1 N eanmoins, la relation de pr ec edence circulaire convexe poss` ede certaines pro-

p O

Figure 1.4: p1 O p2 , p2 O p3 , p3 O p1 pri et es utiles, comme nous allons le voir. Notons que cette relation se calcule en temps constant, en eectuant uniquement des op erations el ementaires telles que multiplications, additions ou soustractions de nombres r eels, sans que lon soit oblig e de calculer les mesures des angles. En eet, on a : d et (Op, Op ) > 0 ou p O p d et (Op, Op ) = 0, Op et Op de m eme sens, et Op Op ou d et (Op, Op ) = 0, Op et Op de sens contraire. i {0, 1, 2} pi
O

On d enit par ailleurs la relation ternaire p1 est entre p0 et p2 par rapport a `O que lon notera entreO (p0 , p1 , p2 ) par : pi+1 et pi+1
O

pi+2 Version 6 f evrier 2005

384

Chapitre 11. G eom etrie algorithmique

(les indices sont d enis modulo 3.) Cest une notion etroitement li ee a ` la notion de circuit polaire qui sera fort utile dans la suite, en eet : Lemme 1.2. Soit p0 , p1 , p2 trois points distincts et distincts de O . On a entreO (p0 , p1 , p2 ) si et seulement si le circuit polaire de {p0 , p1 , p2 } relativement a ` O est ((p0 , p1 , p2 )). On peut remarquer que dire que c est entre a et b par rapport a ` O signie simplement que le point c appartient au secteur angulaire (Oa, Ob) dont une partie de la fronti` ere est exclue, ce qui est pr ecis e dans la gure 1.5. Les traits en gras font partie du secteur angulaire.
O b

Figure 1.5: Un secteur angulaire. On peut alors red enir les notions de circuit polaire et dordre polaire gr ace a ` la relation entre O : Proposition 1.3. La suite circulaire ((p1 , ..., pn )) est un circuit polaire par rapport a ` O si et seulement si pour tout i, le point pi est entre pi1 et pi+1 . Proposition 1.4. Soit p0 un point distinct de O , et soit lordre polaire par rapport a ` la demi-droite [O, Op0 (. On a l equivalence suivante : p q p est entre p0 et q Cet enonc e fournit un algorithme de calcul du circuit polaire dun ensemble S par rapport a ` un point O qui ne n ecessite pas le calcul de mesures dangles. Cela est appr eciable car dune part ces calculs sont co uteux, dautre part ils utilisent des fonctions r eciproques de fonctions trigonom etriques qui engendrent des erreurs dapproximation. Proposition 1.5. Soit S un ensemble de N points et O un point nappartenant pas a ` S . Le circuit polaire de S par rapport O se calcule en O (N logN ) comparaisons entre les points pour la relation de pr ec edence circulaire convexe.

Version 6 f evrier 2005

11.1. Notions pr eliminaires

385

Preuve. Il sut de choisir un point p0 distinct de O , et de trier les points pour lordre polaire relatif a ` la demi-droite [O, Op0 ( en utilisant la propri et e pr ec edente. On peut remarquer que la relation dordre polaire se calcule encore plus simplement dans le cas particulier suivant : Proposition 1.6. Soit S un ensemble ni de points, et O un point x e nappartenant pas a ` S . Si tous les points de S appartiennent a ` un demi-plan ouvert dont la fronti` ere passe par O , alors la relation de pr ec edence circulaire convexe par rapport a ` O est un ordre total sur S ; cest lordre polaire associ ea ` toute demidroite Ox non situ ee dans ce demi-plan. Nous terminons par la d enition de tour gauche ou droit. Soient p, q, r trois points distincts du plan. Le triplet (p, q, r ) est un tour gauche (resp. droit) si le point r est situ e strictement a ` gauche (resp. a ` droite) de la droite orient ee d (p, q ). Proposition 1.7. Soient p, q, r trois points non align es du plan. Les cinq propri et es qui suivent sont equivalentes : (i) (p, q, r ) est un tour gauche ; (ii) ((p, q, r )) est le contour positif du triangle form e des trois points p, q, r ; (iii) d et(pq, pr ) > 0 ; (iv) langle ( pq, pr ) est convexe non nul ; (v) q p r . Nous consid erons maintenant la question de la fusion en un seul circuit de deux circuits polaires par rapport a ` un m eme point O . Lalgorithme propos e est voisin de celui quon utilise habituellement pour la fusion de deux listes tri ees, mais il est adapt e aux circuits qui sont de nature l eg` erement di erente. Soient P= ((p0 , . . . , pn1 )), Q = ((q0 , . . . , qk1 )) deux circuits polaires par rapport a ` un point O . La suite (p0 , . . . , pn1 ) repr esente la liste tri ee des points de P pour lordre polaire relativement a ` la demi-droite [O, Op0 (, de m eme (q0 , . . . , qk1 ) repr esente la liste tri ee des points de Q pour lordre polaire relativement a ` la demi-droite [O, Oq0 (. Il sut pour r esoudre le probl` eme de fusionner deux listes tri ees pour le m eme ordre, par exemple pour lordre polaire par rapport a ` [O, Oq0 (. Or on sait que la suite tri ee des points de P pour lordre polaire par rapport a ` [O, Oq0 ( est une suite conjugu ee de la suite (q0 , . . . , qk1 ), commen cant disons par pi+1 (gure 1.6). Ce point sobtient en ins erant q0 dans le circuit P , car q0 sins` ere alors entre pi et pi+1 . Il reste alors a ` fusionner les deux listes tri ees (q0 , . . . , qk1 ) et (pi+1 , . . . , pn1 , p0 , . . . , pi ) pour lordre polaire par rapport a ` [O, Oq0 (. Les circuits P et Q par rapport a ` O sont donn es sous forme de listes. Lalgorithme Fusion(P, Q, O ) calcule une liste qui repr esente le circuit fusion de P et Q par rapport au point O . Version 6 f evrier 2005

386
p q
0 2

Chapitre 11. G eom etrie algorithmique


q p p
3 1 6 q 5

O p4 q q3
2

q
4

Figure 1.6: q0 sins` ere entre p3 et p4 , on fusionne alors


(q0 , . . . , q6 ) avec (p4 , p5 , p0 , . . . , p3 ).

Algorithme Fusion(P, Q, O ) ; (1) Ins erer q0 dans le circuit P ; soit pi le pr ed ecesseur de q0 ; (2) Fusionner les listes tri ees (q0 , . . . , qk1 ) et (pi+1 , . . . , pn1 , p0 , . . . , pi ) pour lordre polaire relatif a ` la demi-droite [O, Oq0 (. L etape (1) prend un temps O (n). L etape (2) prend un temps O (n + k ). Notons ici encore que la fusion des listes ne n ecessite pas le calcul de langle polaire des points par rapport a ` [O, Oq0 (, la relation de pr ec edence circulaire convexe sut pour trier les points. Proposition 1.8. La fusion de deux circuits polaires de tailles respectives n et k se fait en temps O (n + k ).

11.2
11.2.1

Enveloppe convexe
G en eralit es

La convexit e est une propri et e tr` es int eressante en g eom etrie et elle intervient dans un nombre important dalgorithmes. Cest pourquoi un important travail de recherche sest eectu e sur ce th` eme pour seorcer dobtenir des algorithmes de calcul denveloppe convexe qui soient performants tant en espace quen temps. Nous donnons ici les algorithmes les plus classiques en montrant les avantages et inconv enients de chacun, en terminant par un algorithme dynamique. Un ensemble S est convexe si pour tout couple (x, y ) de points de S , le segment [x, y ] est contenu dans S . Lenveloppe convexe dun ensemble S , not ee EC (S ), est le plus petit ensemble convexe contenant S . Version 6 f evrier 2005

11.2. Enveloppe convexe

387

Remarquons quune intersection quelconque densembles convexes est convexe, et que le plan lui-m eme est convexe. Il sensuit que pour tout ensemble S , lenveloppe convexe de S existe car cest exactement lintersection de tous les ensembles convexes contenant S . Nous nous limitons ici au calcul de lenveloppe convexe dun ensemble ni de points du plan. Dans ce cas, lenveloppe convexe v erie une propri et e int eressante que lon peut d ecrire par limage suivante : on obtient lenveloppe convexe de n points en entourant ces points avec un ruban elastique ; lorsquon le l ache il prend la forme de lenveloppe convexe . Remarque. Dans toute cette section, nous ferons une l eg` ere entorse a ` la d enition dun polygone simple et admettrons quun polygone simple peut navoir que deux c ot es, i.e. etre dint erieur vide, ceci pour donner des th eor` emes aux enonc es plus simples, ainsi que des preuves sans cas particulier. Th eor` eme 2.1. Soit S R2 un ensemble de n points (n > 1). Lenveloppe convexe de S est un polygone convexe dont les sommets appartiennent a ` S. Avant de donner la preuve du th eor` eme, pr ecisons des notations que nous serons amen es a ` utiliser a ` plusieurs reprises par la suite. Soit ((p1 , ..., pn )) le contour direct dun polygone convexe P et p un point ext erieur a ` P . Soient et les deux demi-droites issues de p et tangentes a ` P , telles que langle (, ) soit convexe. Ces demi-droites coupent le contour de P soit en un sommet de P soit en un c ot e de P (voir gure 2.1). Soit pi (resp. pj ) le sommet de P le plus eloign e de p sur (resp. sur ). On dira que le secteur angulaire ( pp one enveloppant P de sommet p. Notons que pi et pj peuvent i , ppj ) est le c encore etre d etermin es de la fa con suivante. Soit D une demi-droite ne coupant pas le polygone P , et consid erons lordre polaire relatif a ` D . Alors pi est le plus petit point pour lordre polaire relatif a ` D parmi les sommets de P ; par ailleurs soit pj le plus grand point parmi les sommets de P , alors pj est le sommet de P le plus loin de O sur la demi-droite [O, Opj (, cest-` a-dire le plus petit sur cette demi-droite pour la relation dordre que lon consid` ere. Les points pi et pj se calculent donc en temps O (n) si n est le nombre de sommets de P . Preuve. La preuve se fait par r ecurrence sur n. La propri et e est vraie pour n = 2. Soit S R2 un ensemble de n points (n > 2), p S , et S = S {p}. Si p appartient a ` lenveloppe convexe EC (S ) alors EC (S ) = EC (S ). Sinon, soit ((p1 , ..., ph )) le contour direct de EC (S ), et soient pi et pj les sommets de EC (S ) tels que ( pp one enveloppant EC (S ) de sommet p. Les sommets pi i , ppj ) soit le c et pj coupent le contour direct de EC (S ) en deux listes telles que lune, de pi vers pj , est rang ee dans le sens positif pour un circuit polaire relativement a ` p, et lautre, de pj vers pi , dans le sens n egatif. En supprimant cette derni` ere liste, sauf les points pi et pj , et en la rempla cant par p on obtient le contour positif de EC (S ) (gure 2.2).

Version 6 f evrier 2005

388
pj

Chapitre 11. G eom etrie algorithmique


'

p1 p

Figure 2.1: C one enveloppant.


pj

Figure 2.2: Adjonction dun point nappartenant pas a ` lenveloppe convexe. Probl` eme 1. Etant donn e un ensemble ni S de points du plan, calculer EC (S ). Avant dexaminer quelques algorithmes classiques pour r esoudre ce probl` eme, nous pouvons donner une borne inf erieure du temps de calcul. Connaissant la nature de lobjet a ` calculer, pr ecisons sous quelle forme nous voulons obtenir le r esultat. Puisque EC (S ) est un polygone, nous demanderons que le r esultat du calcul soit le contour positif du polygone, cest a ` dire une suite circulaire de ses sommets. Th eor` eme 2.2. Le calcul de lenveloppe convexe de n points demande un temps (n log n). es sur une Preuve. Consid erons un ensemble S de n points pi (xi , x2 i )i=1,...,n situ parabole d equation y = x2 . Le contour positif de EC (S ) permet donc dobtenir, apr` es une lecture, les nombres xi tri es par ordre croissant dabscisses. Or le tri de n el ements dun ensemble ordonn e n ecessite un temps (n log n). Notons que la preuve du th eor` eme 2.1 donne un algorithme de calcul en temps 2 O (n ).

Version 6 f evrier 2005

11.2. Enveloppe convexe

389

11.2.2

Marche de Jarvis

La marche de Jarvis est un des algorithmes les plus naturels puisquil correspond a ` la technique demballage dite du paquet cadeau .
p p5 p6 p
4

p1

Figure 2.3: Marche de Jarvis. Dans un premier temps, on peut chercher a ` d eterminer non pas les sommets de lenveloppe, mais ses ar etes. Or [p, q ] est une ar ete de lenveloppe convexe si et seulement si tous les autres points sont situ es sur le segment [p, q ] ou du m eme c ot e de la droite d(p, q ). On peut donc d eterminer en temps O (n) si un segment ` donn e appartient a ` la fronti` ere de lenveloppe convexe. Or il y a (n 2 ) segments a 3 examiner. On obtient donc un algorithme en O (n ). Jarvis a am elior e lalgorithme pr ec edent en utilisant lobservation suivante : soit ((p1 , p2 , . . . , pn )) le contour positif de lenveloppe convexe des n points ; le point pi+1 est le point minimal pour lordre polaire relatif a ` la demi-droite d[pi , p i1 pi (, dans lensemble des sommets priv e de pi . Il sut donc de d eterminer deux points cons ecutifs p1 et p2 de lenveloppe convexe, par exemple pour p1 on peut choisir un point dordonn ee minimale (et dabscisse minimale, sil y a plusieurs points dordonn ee minimale) p2 etant alors le point minimal dans S {p1 } pour lordre polaire relativement a ` la demi-droite [p1 , ( , ce qui prend un temps lin eaire, puis de calculer les points pi gr ace a ` la remarque ci-dessus. Do` u lalgorithme :

Version 6 f evrier 2005

390

Chapitre 11. G eom etrie algorithmique

Algorithme Jarvis(S ) ; (1) Soit p1 le point dordonn ee minimale (et dabscisse minimale sil y a plusieurs points dordonn ee minimale) de S ; (2) Soit p2 le point minimal de S {p1 } pour lordre polaire par rapport a ` la demi-droite [p1 , (; (3) k := 2 ; (4) r ep eter (5) calculer le point q de S minimal pour lordre polaire par rapport a ` [pk , p k 1 pk ( ; k := k + 1 ; pk := q jusqu` a ce que pk = p1 .

Evaluons la complexit e en temps de lalgorithme pour un ensemble S a ` n points. Clairement (1) et (2) prennent un temps O (n). La boucle (4) est r ep et ee h 1 fois o` u h est le nombre de sommets de lenveloppe convexe. La ligne (5) prend un temps O (n). Donc lalgorithme est en temps O (hn) o` u h est le nombre de sommets de lenveloppe convexe, ce qui peut etre int eressant si h est petit devant n, mais dans le pire des cas lalgorithme est en temps O (n2 ).

11.2.3

Algorithme de Graham

Lalgorithme que nous exposons ici est d u a ` Graham ; il repose sur les deux propri et es suivantes dun polygone convexe : Th eor` eme 2.3. Quelque soit le point O int erieur a ` un polygone convexe P, le contour positif de P est exactement le circuit polaire des sommets de P par rapport a ` O. Preuve. En eet si p, q, r sont trois points cons ecutifs du contour positif de P , alors on a entreO (p, q, r ) du fait que P est convexe et que O est int erieur a ` P. On peut faire ici deux remarques : le r esultat reste vrai si O est sur la fronti` ere de P mais nest pas un sommet de P ; l enonc e est faux pour un polygone quelconque, mais nest pas caract eristique des polygones convexes (voir gure 2.4). Th eor` eme 2.4. Un polygone simple est convexe si et seulement si pour tout triplet (p, q, r ) de sommets cons ecutifs dans le sens direct, (p, q, r ) est un tour gauche. Version 6 f evrier 2005

11.2. Enveloppe convexe

391

Figure 2.4: Circuit polaire : exemple et contre-exemple


pour un polygone non convexe.

Lalgorithme de Graham consiste a ` choisir un point int erieur a ` lenveloppe convexe de S , mais nappartenant pas a ` S , trier les points de S en un circuit polaire par rapport a ` O , et eliminer les points qui dans ce circuit ne constituent pas un tour gauche avec leurs deux voisins. Lalgorithme sapplique bien s ur dans le cas o` u les points de S ne sont pas align es. Pour trouver un point int erieur a ` EC (S ) mais nappartenant pas a ` S , il sut de prendre lisobarycentre O de trois points a, b, c de S non align es, et de v erier quil nappartient pas a ` S . Si O S alors on remplace O par le milieu de a et O , on it` ere ce processus au plus n fois. Donc trouver ce point O prend dans le pire des cas un temps O (n). On calcule ensuite le circuit polaire de S par rapport a ` O sous forme de liste doublement cha n ee pour avoir acc` es en temps O (1) au pr ed ecesseur et au successeur dun point du circuit. On r ealise alors un parcours de cette liste ((p0 , . . . , pn1 )) dans le sens croissant, en partant dun point p0 dont on est certain quil appartient a ` EC (S ), par exemple le point dabscisse maximale (et dordonn ee maximale en cas de non unicit e) (g.2.5). Si (pi1 , pi , pi+1 ) est un tour droit, alors il est clair que pi nappartient pas a ` la fronti` ere de EC (S ) puisque O est int erieur a ` EC (S ) , donc pi est int erieur au triangle Opi1 pi+1 et donc int erieur a ` EC (S ). Lalgorithme consiste donc a ` parcourir la liste doublement cha n ee en eliminant de tels points.

Version 6 f evrier 2005

392

Chapitre 11. G eom etrie algorithmique

proc edure Graham(S ) ; (1) D eterminer un point O int erieur a ` S nappartenant pas a ` S; (2) Calculer le circuit polaire de S par rapport a ` O; (3) Soit p0 le point de S dabscisse maximale (et dordonn ee maximale sil y en a plusieurs) ; { si p est un sommet, succ(p) et pred(p) d esignent respectivement le successeur et le pr ed ecesseur de p dans le circuit courant} (4) p := p0 ; tantque succ(p) = p0 faire si (p, succ(p), succ(succ(p)) est un tour gauche alors p := succ(p) sinon supprimer succ(p) ; p := pred(p) nsi ntantque.

P4 P3 P 2 P1 P0 O

Figure 2.5: Algorithme de Graham. Validit e de lalgorithme A la n de la proc edure on obtient une liste doublement cha n ee de points de S telle que (1) les points forment un circuit polaire par rapport a ` O; (2) trois points cons ecutifs quelconques forment un tour gauche. On obtient donc la liste des sommets cons ecutifs dun polygone convexe P en vertu des th eor` emes 2.3 et 2.4, et puisque les points de S qui ont et e supprim es nappartenaient pas a ` la fronti` ere de EC (S ), P est bien la fronti` ere de EC (S ). Th eor` eme 2.5. Lalgorithme de Graham calcule lenveloppe convexe de n points du plan en temps O (n log n) et en espace O (n). Preuve. Les etapes 1 et 3 demandent, on la vu, un temps O (n). L etape 2 se r ealise en temps O (n log n) (Proposition 1.5). Enn il est ais e de voir que la boucle tant que (4) prend un temps lin eaire. En eet, a ` chaque passage dans la boucle soit on avance dun pas dans le parcours, soit on supprime un point. Or on ne peut avancer de plus de n pas, et on ne peut pas supprimer plus de n points. Version 6 f evrier 2005

11.2. Enveloppe convexe

393

Enn lespace n ecessaire a ` lex ecution de la proc edure est une liste doublement cha n ee de taille n, cest donc un espace lin eaire. Traitons un exemple :
p p
6 5 3

p p
4

p
2

p p

p=p1 p=p2 p=p3 p=p2 p=p1 p=p2 p=p5 p=p6 p=p7 p=p6 p=p7

supprimer p4 supprimer p3

supprimer p8 termin

Figure 2.6: Exemple. Bien que lalgorithme de Graham soit optimal dans le pire des cas, il est int eressant dexaminer dautres algorithmes qui peuvent pr esenter des avantages vari es.

11.2.4

Algorithme dichotomique

Lalgorithme qui suit utilise le principe de dichotomie. Pour calculer lenveloppe convexe EC (S ) dun ensemble S , on divise S en deux parties S1 et S2 ayant le m eme nombre d el ements a ` 1 pr` es, on calcule leurs enveloppes convexes EC (S1 ), EC (S2 ), puis on d etermine lenveloppe convexe de EC (S1 ) EC (S2 ). Lecacit e de lalgorithme d epend de la complexit e de la derni` ere etape. Or celle-ci consiste a ` calculer lenveloppe convexe de lunion de deux polygones convexes, probl` eme plus simple que celui dorigine que lon peut esp erer r esoudre en temps lin eaire. On est donc conduit a ` etudier le : Probl` eme 2. Etant donn es deux polygones convexes P1 et P2 , d eterminer lenveloppe convexe de leur union. Nous allons pr esenter un algorithme dont la complexit e est donn ee par le : Th eor` eme 2.6. Lenveloppe convexe de lunion de deux polygones convexes se calcule en temps O (N ), o` u N est le nombre total de sommets. Preuve. On suppose quau moins un des deux polygones a plus de deux sommets (par exemple P1 , sinon on calcule en temps O (1) lenveloppe convexe des quatre points). Soit p un point int erieur a ` P1 , p est d etermin e en temps O (1). Si p appartient a ` EC (P2 ) (ce qui se teste en temps O (n2 ), o` u n2 est le nombre de sommets de P2 ), alors les contours positifs de P1 et P2 sont respectivement les circuits