introduction à l'algorithmique - جزائريون · pdf filedunod – la...

1176
INTRODUCTION À L’ALGORITHMIQUE Cours et exercices Thomas Cormen Professeur associé d’informatique au Darmouth College Charles Leiserson Professeur d’informatique au MIT Ronald Rivest Professeur d’informatique au MIT Clifford Stein Professeur associé au génie industriel et de recherche opérationelle à l’université de Columbia Préface de Philippe chrétienne , Claire Hanen, Alix Munier, Christophe Picouleau 1 ère édition traduite de l’américain par Xavier Cazin Compléments et mises à jour de la 2 e édition traduits par Georges-Louis Kocher 2 e édition

Upload: vunhi

Post on 06-Feb-2018

224 views

Category:

Documents


4 download

TRANSCRIPT

  • INTRODUCTION LALGORITHMIQUE

    Cours et exercices

    Thomas Cormen

    Professeur associ dinformatique au Darmouth College

    Charles Leiserson

    Professeur dinformatique au MIT

    Ronald Rivest

    Professeur dinformatique au MIT

    Clifford Stein

    Professeur associ au gnie industrielet de recherche oprationelle luniversit de Columbia

    Prface de

    Philippe chrtienne , Claire Hanen, Alix Munier, Christophe Picouleau

    1

    re

    dition traduite de lamricain par Xavier Cazin

    Complments et mises jour de la 2

    e

    dition traduits par Georges-Louis Kocher

    2

    e

    dition

    0 lim Page I Jeudi, 22. juin 2006 5:03 17

  • Ldition originale de ce livre a t publie aux tats-Unis par The MIT Press, Cambridge,Massachusetts, sous le titre

    Introduction to Algorithms

    , second edition.

    The Massachusetts Institute of Technology, 2001First edition 1990

    Dunod, Paris, 1994, pour la 1

    re

    dition Dunod, Paris, 2004, pour la prsente dition

    ISBN 2 10 003922 9

    Ce pictogramme mrite une explication.Son objet est dalerter le lecteur sur la menace que reprsente pour lavenirde lcrit, particulirement dansle domaine de ldition tech-nique et universitaire, le dvelop-pement massif du photo-copillage.

    Le Code de la proprit intellectuelle du 1er juillet 1992interdit en effet expressment laphotocopie usage collectifsans autorisation des ayants droit. Or,cette pratique sest gnralise dans les

    tablissements denseignement suprieur,provoquant une baisse brutale des achatsde livres et de revues, au point que la

    possibilit mme pour les auteursde crer des uvres nouvelles etde les faire diter correctementest aujourdhui menace.

    Nous rappelons donc quetoute reproduction, partielle outotale, de la prsente publicationest interdite sans autorisation duCentre franais dexploitation du

    droit de copie (CFC, 20 rue des Grands-Augustins, 75006 Paris).

    ! " # $ % $

    % $& ' ( ) '& ' *$ % ' & $& &

    + % , & $ %

    -

    0 lim Page II Jeudi, 22. juin 2006 5:03 17

  • Table des matires

    PRFACE LDITION FRANAISE XVII

    PRFACE XXI

    PARTIE 1 INTRODUCTION

    CHAPITRE 1 RLE DES ALGORITHMES EN INFORMATIQUE 31.1 Algorithmes 3Exercices 8

    1.2 Algorithmes en tant que technologie 8Exercices 11

    PROBLMES 11

    CHAPITRE 2 PREMIERS PAS 132.1 Tri par insertion 13Exercices 18

    2.2 Analyse des algorithmes 19Exercices 25

    2.3 Conception des algorithmes 25Exercices 34

    PROBLMES 35

    CHAPITRE 3 CROISSANCE DES FONCTIONS 393.1 Notation asymptotique 40Exercices 48

    3.2 Notations standard et fonctions classiques 48Exercices 54

    PROBLMES 55c D

    unod

    L

    aph

    otoc

    opie

    non

    auto

    ris

    ees

    tun

    dlit

  • IV Table des matires

    CHAPITRE 4 RCURRENCES 59

    4.1 Mthode de substitution 60Exercices 64

    4.2 Mthode de larbre rcursif 64Exercices 68

    4.3 Mthode gnrale 69Exercices 71

    4.4 Dmonstration du thorme gnral 72Exercices 80

    PROBLMES 80

    CHAPITRE 5 ANALYSE PROBABILISTE ET ALGORITHMES RANDOMISS 87

    5.1 Le problme de lembauche 87Exercices 90

    5.2 Variables indicatrices 91Exercices 94

    5.3 Algorithmes randomiss 95Exercices 100

    5.4 Analyse probabiliste et autres emplois des variables indicatrices 101Exercices 112

    PROBLMES 113

    PARTIE 2 TRI ET RANGS

    CHAPITRE 6 TRI PAR TAS 121

    6.1 Tas 121Exercices 123

    6.2 Conservation de la structure de tas 124Exercices 125

    6.3 Construction dun tas 126Exercices 128

    6.4 Algorithme du tri par tas 129Exercices 129

    6.5 Files de priorit 131Exercices 134

    PROBLMES 135

  • Table des matires V

    CHAPITRE 7 TRI RAPIDE 139

    7.1 Description du tri rapide 139Exercices 142

    7.2 Performances du tri rapide 143Exercices 146

    7.3 Versions randomises du tri rapide 147Exercices 148

    7.4 Analyse du tri rapide 148Exercices 152

    PROBLMES 153

    CHAPITRE 8 TRI EN TEMPS LINAIRE 159

    8.1 Minorants pour le tri 159Exercices 161

    8.2 Tri par dnombrement 162Exercices 164

    8.3 Tri par base 164Exercices 167

    8.4 Tri par paquets 167Exercices 171

    PROBLMES 171

    CHAPITRE 9 MDIANS ET RANGS 177

    9.1 Minimum et maximum 178Exercices 179

    9.2 Slection en temps moyen linaire 179Exercices 183

    9.3 Slection en temps linaire dans le cas le plus dfavorable 183Exercices 186

    PROBLMES 187

    PARTIE 3 STRUCTURES DE DONNES

    CHAPITRE 10 STRUCTURES DE DONNES LMENTAIRES 195

    10.1 Piles et files 195Exercices 197c D

    unod

    L

    aph

    otoc

    opie

    non

    auto

    ris

    ees

    tun

    dlit

  • VI Table des matires

    10.2 Listes chanes 199Exercices 203

    10.3 Implmentation des pointeurs et des objets 203Exercices 207

    10.4 Reprsentation des arborescences 208Exercices 209

    PROBLMES 211

    CHAPITRE 11 TABLES DE HACHAGE 215

    11.1 Tables adressage direct 216Exercices 217

    11.2 Tables de hachage 218Exercices 222

    11.3 Fonctions de hachage 223Exercices 230

    11.4 Adressage ouvert 231Exercices 238

    11.5 Hachage parfait 238Exercices 242

    PROBLMES 243

    CHAPITRE 12 ARBRES BINAIRES DE RECHERCHE 247

    12.1 Quest-ce quun arbre binaire de recherche ? 248Exercices 249

    12.2 Requte dans un arbre binaire de recherche 250Exercices 253

    12.3 Insertion et suppression 254Exercices 257

    12.4 Arbres binaires de recherche construits alatoirement 258Exercices 261

    PROBLMES 262

    CHAPITRE 13 ARBRES ROUGE-NOIR 267

    13.1 Proprits des arbres rouge-noir 267Exercices 270

    13.2 Rotation 271Exercices 272

  • Table des matires VII

    13.3 Insertion 273Exercices 280

    13.4 Suppression 281Exercices 286

    PROBLMES 287

    CHAPITRE 14 EXTENSION DUNE STRUCTURE DE DONNES 295

    14.1 Rangs dynamiques 296Exercices 300

    14.2 Comment tendre une structure de donnes 301Exercices 303

    14.3 Arbres dintervalles 304Exercices 309

    PROBLMES 310

    PARTIE 4 TECHNIQUES AVANCES DE CONCEPTION ET DANALYSE

    CHAPITRE 15 PROGRAMMATION DYNAMIQUE 315

    15.1 Ordonnancement de chanes de montage 316Exercices 322

    15.2 Multiplications matricielles enchanes 323Exercices 330

    15.3 lments de la programmation dynamique 330Exercices 341

    15.4 Plus longue sous-squence commune 341Exercices 347

    15.5 Arbres binaires de recherche optimaux 347Exercices 354

    PROBLMES 354

    CHAPITRE 16 ALGORITHMES GLOUTONS 361

    16.1 Un problme de choix dactivits 362Exercices 370

    16.2 lments de la stratgie gloutonne 370Exercices 375

    16.3 Codages de Huffman 376Exercices 382c D

    unod

    L

    aph

    otoc

    opie

    non

    auto

    ris

    ees

    tun

    dlit

  • VIII Table des matires

    16.4 Fondements thoriquesdes mthodes gloutonnes 383

    Exercices 388

    16.5 Un problme dordonnancement de tches 389Exercices 392

    PROBLMES 392

    CHAPITRE 17 ANALYSE AMORTIE 395

    17.1 Mthode de lagrgat 396Exercices 400

    17.2 Mthode comptable 400Exercices 402

    17.3 Mthode du potentiel 402Exercices 405

    17.4 Tables dynamiques 406Exercices 414

    PROBLMES 415

    PARTIE 5 STRUCTURES DE DONNES AVANCES

    CHAPITRE 18 B-ARBRES 425

    18.1 Dfinition dun B-arbre 429Exercices 431

    18.2 Oprations fondamentales sur les B-arbres 432Exercices 437

    18.3 Suppression dune cl dans un B-arbre 439Exercices 442

    PROBLMES 442

    CHAPITRE 19 TAS BINOMIAUX 445

    19.1 Arbres binomiaux et tas binomiaux 447Exercices 450

    19.2 Oprations sur les tas binomiaux 451Exercices 461

    PROBLMES 462

  • Table des matires IX

    CHAPITRE 20 TAS DE FIBONACCI 465

    20.1 Structure des tas de Fibonacci 466

    20.2 Oprations sur les tas fusionnables 469Exercices 477

    20.3 Diminution dune cl et suppression dun nud 478Exercices 481

    20.4 Borne pour le degr maximal 482Exercices 484

    PROBLMES 484

    CHAPITRE 21 STRUCTURES DE DONNES POUR ENSEMBLES DISJOINTS 487

    21.1 Oprations sur les ensembles disjoints 487Exercices 490

    21.2 Reprsentation densembles disjoints par des listes chanes 490Exercices 493

    21.3 Forts densembles disjoints 494Exercices 497

    21.4 Analyse de lunion par rang avec compression de chemin 498Exercices 505

    PROBLMES 506

    PARTIE 6 ALGORITHMES POUR LES GRAPHES

    CHAPITRE 22 ALGORITHMES LMENTAIRES POUR LES GRAPHES 513

    22.1 Reprsentation des graphes 514Exercices 516

    22.2 Parcours en largeur 517Exercices 524

    22.3 Parcours en profondeur 525Exercices 532

    22.4 Tri topologique 534Exercices 536

    22.5 Composantes fortement connexes 536Exercices 541

    PROBLMES 542c D

    unod

    L

    aph

    otoc

    opie

    non

    auto

    ris

    ees

    tun

    dlit

  • X Table des matires

    CHAPITRE 23 ARBRES COUVRANTS DE POIDS MINIMUM 54523.1 Construction dun arbre couvrant minimum 546Exercices 550

    23.2 Algorithmes de Kruskal et de Prim 551Exercices 556

    PROBLMES 558

    CHAPITRE 24 PLUS COURTS CHEMINS ORIGINE UNIQUE 56324.1 Algorithme de Bellman-Ford 571Exercices 574

    24.2 Plus courts chemins origine unique dans les graphes orients sans circuit 575Exercices 577

    24.3 Algorithme de Dijkstra 577Exercices 582

    24.4 Contraintes de potentiel et plus courts chemins 583Exercices 587

    24.5 Dmonstrations des proprits de plus court chemin 589Exercices 594

    PROBLMES 595

    CHAPITRE 25 PLUS COURTS CHEMINS POUR TOUT COUPLE DE SOMMETS 60125.1 Plus courts chemins et multiplic