algo polycopie

Telechargé par Romeo Koati
Algorithmique
Prof. Amin Shokrollahi
Semestre d’Automne 2007-2008
Table des mati`eres
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 . . . . . . . . . . . . 6
0.3.3 Ensembles des parties, Ensembles des mots . . . . . . . . . . . . . . 9
0.3.4 Ensembles standards . . . . . . . . . . . . . . . . . . . . . . . . . . 10
0.4 Relations et Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
0.5 Sp´ecification d’un Probl`eme . . . . . . . . . . . . . . . . . . . . . . . . . . 12
0.6 Du Probl`eme `a l’algorithme et son impl´ementation . . . . . . . . . . . . . 13
1 Induction 15
1.1 Ce que c’est et `a quoi ¸ca sert . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2 Techniques d’induction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2.1 Induction simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2.2 Induction descendante . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.2.3 InductionForte............................. 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
2 Analyse d’Algorithmes 28
2.1 Pourquoi analyser des Algorithmes ? . . . . . . . . . . . . . . . . . . . . . . 28
2.2 Exemple : Multiplication de polynˆomes . . . . . . . . . . . . . . . . . . . . 28
2.3 Exemple : Multiplication de matrices . . . . . . . . . . . . . . . . . . . . . 30
2.4 LanotationO................................. 31
2.5 L’algorithme de Karatsuba . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.6 L’algorithme de Strassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.7 Relations de ecurrence . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
i
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 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 CodesdeHuman ............................... 127
ii
Algorithmique - Semestre d’Automne 2007/2008
5.4.1 Codes represent´es par des arbres binaires . . . . . . . . . . . . . . . 130
5.4.2 Le codage de Huffman . . . . . . . . . . . . . . . . . . . . . . . . . 131
5.4.3 Impl´ementation de l’algorithme de codage de Huffman . . . . . . . 131
5.4.4 Optimalit´e de l’algorithme de codage de Huffman . . . . . . . . . . 135
6 Algorithmes de tri 137
6.1 Algorithmes ´el´ementaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
6.1.1 SelectionSort.............................. 139
6.1.2 InsertionSort.............................. 141
6.1.3 ShellSort ................................ 144
6.1.4 BubbleSort............................... 146
6.2 Quicksort .................................... 148
6.2.1 Variantes ................................ 152
6.3 HeapSort .................................... 152
6.3.1 Sifting .................................. 153
6.3.2 Cr´eation d’un heap . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
6.3.3 L’algorithme HeapSort ........................ 156
6.3.4 PriorityQueues............................. 158
7 Algorithmes de graphes 160
7.1 Parcourir des graphes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
7.2 L’algorithme Depth First Search (DFS) . . . . . . . . . . . . . . . . . . . . 162
7.3 L’algorithme Breadth First Search (BFS) . . . . . . . . . . . . . . . . . . . 163
7.4 Tri Topologique (Topological Sorting) . . . . . . . . . . . . . . . . . . . . . 164
7.5 Chemins les plus courts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
7.6 L’algorithme de Moore-Bellman-Ford . . . . . . . . . . . . . . . . . . . . . 171
7.7 Fluxder´eseau.................................. 173
7.8 Application : Maximum Bipartite Matching . . . . . . . . . . . . . . . . . 184
7.9 Arbres couvrants minimaux . . . . . . . . . . . . . . . . . . . . . . . . . . 187
7.9.1 L’algorithme de Kruskal . . . . . . . . . . . . . . . . . . . . . . . . 188
7.9.2 La structure “Union Find” . . . . . . . . . . . . . . . . . . . . . . . 190
7.9.3 Version finale de l’algorithme de Kruskal . . . . . . . . . . . . . . . 192
7.9.4 L’algorithme de Prim . . . . . . . . . . . . . . . . . . . . . . . . . . 193
7.10 D´etecter des cycles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
7.10.1 D´etecter des cycles n´egatifs . . . . . . . . . . . . . . . . . . . . . . 196
7.10.2 L’algorithme de Karp pour trouver des cycles avec poids moyen mi-
nimal................................... 197
8 Les probl`emes NP-complets 200
8.1 LaclasseP ................................... 200
8.2 R´eduction polynomiale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
8.3 LaclasseNP .................................. 201
8.4 NP-Compl´etude................................. 203
iii
Algorithmique - Semestre d’Automne 2007/2008
8.5 Probl`emes de Satisfiabilit´e . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
8.6 Quelques probl`emes de graphe NP-Complets . . . . . . . . . . . . . . . . . 206
8.7 Quelques autres problemes de graphe
NP-complets................................... 208
8.8 Probl`emes de th´eorie des ensembles . . . . . . . . . . . . . . . . . . . . . . 209
1
1 / 215 100%

algo polycopie

Telechargé par Romeo Koati
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 !