Algorithmique
Amin Shokrollahi
Semestre d’Automne 2010-2011
Contents
0 Introduction 1
0.1 Qu’est ce qu’un algorithme? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
0.2 Exemples d’algorithmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
0.2.1 Somme d’entiers positifs . . . . . . . . . . . . . . . . . . . . . . . . . . 1
0.2.2 Probl`
eme de Localisation . . . . . . . . . . . . . . . . . . . . . . . . . . 3
0.2.3 Monnaie Optimale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
0.3 Th´
eorie des ensembles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
0.3.1 Rappels de notations de logique . . . . . . . . . . . . . . . . . . . . . . 6
0.3.2 Rappels de notations de th´
eorie des ensembles . . . . . . . . . . . . . . 7
0.3.3 Ensembles des parties, Ensembles des mots . . . . . . . . . . . . . . . . 9
0.3.4 Ensembles standards . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
0.4 Relations et Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
0.5 Sp´
ecification d’un Probl`
eme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
0.6 Du Probl`
eme `
a l’algorithme et son impl´
ementation . . . . . . . . . . . . . . . . 14
1 Induction 15
1.1 Ce que c’est et `
a quoi c¸a sert . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2 Techniques d’induction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2.1 Induction simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2.2 Induction descendante . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.2.3 Induction Forte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.3 Exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.3.1 La formule d’Euler pour les arbres . . . . . . . . . . . . . . . . . . . . . 22
1.3.2 Ensemble Ind´
ependant de l’Hypercube . . . . . . . . . . . . . . . . . . 24
1.3.3 Le Lemme de Schwartz-Zippel . . . . . . . . . . . . . . . . . . . . . . . 28
2 Analyse d’Algorithmes 30
2.1 Pourquoi analyser des Algorithmes? . . . . . . . . . . . . . . . . . . . . . . . . 30
2.2 Exemple: Multiplication de polynˆ
omes . . . . . . . . . . . . . . . . . . . . . . . 30
2.3 Exemple: Multiplication de matrices . . . . . . . . . . . . . . . . . . . . . . . . 32
2.4 La notation “O” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.5 L’algorithme de Karatsuba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.6 L’algorithme de Strassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
i
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
Algorithmique - Semestre d’Automne 2011/2012
5.4.2 Le codage de Huffman . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
5.4.3 Impl´
ementation de l’algorithme de codage de Huffman . . . . . . . . . . 133
5.4.4 Optimalit´
e de l’algorithme de codage de Huffman . . . . . . . . . . . . . 137
6 Algorithmes de tri 139
6.1 Algorithmes ´
el´
ementaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
6.1.1 Selection Sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
6.1.2 Insertion Sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
6.1.3 Shell Sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
6.1.4 Bubble Sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
6.2 Quicksort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
6.2.1 Variantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
6.3 Heap Sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
6.3.1 Sifting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
6.3.2 Cr´
eation d’un heap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
6.3.3 L’algorithme HEAPSORT . . . . . . . . . . . . . . . . . . . . . . . . . . 159
6.3.4 Priority Queues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
7 Algorithmes de graphes 163
7.1 Parcourir des graphes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
7.2 L’algorithme Depth First Search (DFS) . . . . . . . . . . . . . . . . . . . . . . . 165
7.3 L’algorithme Breadth First Search (BFS) . . . . . . . . . . . . . . . . . . . . . . 165
7.4 Tri Topologique (Topological Sorting) . . . . . . . . . . . . . . . . . . . . . . . 167
7.5 Chemins les plus courts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
7.6 L’algorithme de Moore-Bellman-Ford . . . . . . . . . . . . . . . . . . . . . . . 174
7.7 Flux de r´
eseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
7.8 Application: Maximum Bipartite Matching . . . . . . . . . . . . . . . . . . . . 186
7.9 Arbres couvrants minimaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
7.9.1 L’algorithme de Kruskal . . . . . . . . . . . . . . . . . . . . . . . . . . 190
7.9.2 La structure “Union Find” . . . . . . . . . . . . . . . . . . . . . . . . . 192
7.9.3 Version finale de l’algorithme de Kruskal . . . . . . . . . . . . . . . . . 194
7.9.4 L’algorithme de Prim . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
7.10 D´
etecter des cycles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
7.10.1 D´
etecter des cycles n´
egatifs . . . . . . . . . . . . . . . . . . . . . . . . 198
7.10.2 L’algorithme de Karp pour trouver des cycles avec poids moyen minimal 199
8 Les probl`
emes NP-complets 202
8.1 La classe P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
8.2 R´
eduction polynomiale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
8.3 La classe NP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
8.4 NP-Compl´
etude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
8.5 Probl`
emes de Satisfiabilit´
e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
8.6 Quelques probl`
emes de graphe NP-Complets . . . . . . . . . . . . . . . . . . . 208
iii
Algorithmique - Semestre d’Automne 2011/2012
8.7 Quelques autres problemes de graphe
NP-complets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
8.8 Probl`
emes de th´
eorie des ensembles . . . . . . . . . . . . . . . . . . . . . . . . 211
1
1 / 217 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !