Algorithmique - Semestre d’Automne 2011/2012
2.7 Relations de R´
ecurrence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.8 Remarques Finales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3 Structures de donn´
ees ´
el´
ementaires 46
3.1 Ensembles dynamiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.2 Structures des donn´
ees dynamiques ´
el´
ementaires . . . . . . . . . . . . . . . . . 47
3.2.1 Stack (ou pile) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.2.2 Files d’attente (Queues) . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.2.3 Listes li´
ees (Linked lists) . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.3 Graphes et Arbres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.3.1 Repr´
esenter des graphes . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.3.2 Arbres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.3.3 Repr´
esentation d’arbres . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.3.4 Parcourir des arbres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
3.3.5 R´
esum´
e de la section 3.3 . . . . . . . . . . . . . . . . . . . . . . . . . . 68
3.4 Structures de donn´
ees pour des algorithmes de recherche . . . . . . . . . . . . . 69
3.4.1 Arbres binaires de recherche . . . . . . . . . . . . . . . . . . . . . . . . 69
3.4.2 Arbres AVL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
3.5 Le Hachage (Hashing) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
4 Construction d’algorithmes par induction 90
4.1 La m´
ethode de Horner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
4.2 Elimination de Gauss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
4.3 Les algorithmes diviser-pour-r´
egner . . . . . . . . . . . . . . . . . . . . . . . . 95
4.3.1 Le paradigme DPR g´
en´
eral . . . . . . . . . . . . . . . . . . . . . . . . . 95
4.3.2 L’algorithme de Karatsuba . . . . . . . . . . . . . . . . . . . . . . . . . 96
4.3.3 Recherche binaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
4.3.4 MergeSort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
4.3.5 La paire la plus proche . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
4.3.6 Carrelage de formes L . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
4.4 Programmation dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
4.4.1 Multiplication de plusieurs matrices . . . . . . . . . . . . . . . . . . . . 104
4.4.2 Le probl`
eme LCS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
4.4.3 Le plus-court-chemin-pour-toute-paire (Floyd-Warshall) . . . . . . . . . 112
4.4.4 Le Probl`
eme 0/1-Knapsack (Sac-`
a-dos 0/1) . . . . . . . . . . . . . . . . 115
4.5 Un algorithme plus rapide pour le probl`
eme LCS . . . . . . . . . . . . . . . . . 119
5 Algorithmes gloutons 126
5.1 Exemple: horaires de salles de cours . . . . . . . . . . . . . . . . . . . . . . . . 126
5.2 ´
El´
ements d’une strat´
egie gloutonne . . . . . . . . . . . . . . . . . . . . . . . . . 127
5.3 Glouton compar´
e`
a la programmation dynamique: Le probl`
eme du sac `
a dos . . . 128
5.4 Codes de Huffman . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
5.4.1 Codes represent´
es par des arbres binaires . . . . . . . . . . . . . . . . . 132
ii