Algorithmique - Semestre d’Automne 2007/2008
2.8 RemarquesFinales ............................... 43
3 Structures de donn´ees ´el´ementaires 44
3.1 Structures de donn´ees statiques . . . . . . . . . . . . . . . . . . . . . . . . 44
3.2 Ensembles dynamiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.3 Structures des donn´ees dynamiques ´el´ementaires . . . . . . . . . . . . . . . 46
3.3.1 Stack(oupile) ............................. 46
3.3.2 Files d’attente (Queues) . . . . . . . . . . . . . . . . . . . . . . . . 50
3.3.3 Listes li´ees (Linked lists) . . . . . . . . . . . . . . . . . . . . . . . . 52
3.4 GraphesetArbres ............................... 53
3.4.1 Repr´esenter des graphes . . . . . . . . . . . . . . . . . . . . . . . . 55
3.4.2 Arbres.................................. 57
3.4.3 Repr´esentation d’arbres . . . . . . . . . . . . . . . . . . . . . . . . 60
3.4.4 Parcourir des arbres . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.4.5 R´esum´e de la section 3.4 . . . . . . . . . . . . . . . . . . . . . . . . 66
3.5 Structures de donn´ees pour des algorithmes de recherche . . . . . . . . . . 67
3.5.1 Arbres binaires de recherche . . . . . . . . . . . . . . . . . . . . . . 67
3.5.2 Arbresbicolores............................. 73
3.5.3 ArbresAVL............................... 75
3.6 Le Hachage (Hashing) ............................. 80
4 Construction d’algorithmes par induction 87
4.1 La m´ethode de Horner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
4.2 EliminationdeGauss.............................. 88
4.3 Les algorithmes diviser-pour-r´egner . . . . . . . . . . . . . . . . . . . . . . 91
4.3.1 Le paradigme DPR g´en´eral . . . . . . . . . . . . . . . . . . . . . . . 92
4.3.2 L’algorithme de Karatsuba . . . . . . . . . . . . . . . . . . . . . . . 93
4.3.3 Recherche binaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
4.3.4 MergeSort................................ 95
4.3.5 La paire la plus proche . . . . . . . . . . . . . . . . . . . . . . . . . 96
4.3.6 Carrelage de formes L . . . . . . . . . . . . . . . . . . . . . . . . . 98
4.4 Programmation dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
4.4.1 Multiplication de plusieurs matrices . . . . . . . . . . . . . . . . . . 101
4.4.2 Le probl`eme LCS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
4.4.3 Le plus-court-chemin-pour-toute-paire (Floyd-Warshall) . . . . . . . 109
4.4.4 Le Probl`eme 0/1-Knapsack (Sac-`a-dos 0/1).............. 113
4.5 Un algorithme plus rapide pour le probl`eme LCS . . . . . . . . . . . . . . 117
5 Algorithmes gloutons 124
5.1 Exemple : horaires de salles de cours . . . . . . . . . . . . . . . . . . . . . 124
5.2 ´
El´ements d’une strat´egie gloutonne . . . . . . . . . . . . . . . . . . . . . . 125
5.3 Glouton compar´e `a la programmation dynamique : Le probl`eme du sac `a dos 126
5.4 CodesdeHuffman ............................... 127
ii