Algorithmes – Notes de cours
F. Popineau
Ce document rassemble des notes de cours.
La rédaction n’est pas achevée.
Merci de rapporter toute erreur.
TITRE DESSOUS
TITRE DESSUS
TITRE DESSOUS
TITRE DESSUS
TITRE DESSOUS
TITRE DESSUS
TITRE DESSOUS
TITRE DESSUS
TITRE DESSOUS
TITRE DESSUS
TITRE DESSOUS
TITRE DESSUS
24, rue Salomon de Rothschild - 92288 Suresnes - FRANCE
Tél. : +33 (0)1 57 32 87 00 / Fax : +33 (0)1 57 32 87 87
Web : www.carrenoir.com
CentraleSupelec
XXX_13_0000_Logo
13/06/2013
INFORMATION
FILET TECHNIQUE DE CONSTRUCTION
COUPE
OPTION STRUCTURE GRAPHIQUE BASSE
OPTION STRUCTURE GRAPHIQUE HAUTE
TEINTE À DÉFINIR
Ce fichier est un document d’ecution cé sur
Illustrator version CS3.
Table des maères
Table des matières ii
I Introduction 1
1 Ressources 3
2 Complexité des algorithmes 5
2.1 Problèmeetdéfinition.................................... 5
2.2 Pseudo-code ......................................... 6
2.3 Complexitéasymptotique.................................. 7
2.4 Règlesdecalcul........................................ 10
2.5 Enpratique .......................................... 11
2.6 Exercice ............................................ 12
II Structures de données 13
3 Données 15
4 Structures de données de base 17
4.1 Containers........................................... 17
4.2 Tables ............................................. 18
4.3 Piles .............................................. 20
4.4 Files .............................................. 22
4.5 Listeschaînées........................................ 24
5 Arbres 29
5.1 Arbresbinaires........................................ 29
5.2 Arbresn-aires ........................................ 29
6 Dictionnaires 31
6.1 Spécification ......................................... 31
6.2 Implémentation avec une table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
ii
TABLE DES MATIÈRES iii
6.3 Tablesdehachage ...................................... 32
6.4 Arbres binaires de recherche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6.5 Arbres binaire de recherche balancés . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
7 Performance pour les containers 35
8 Files de priorité et tas 37
8.1 Spécification ......................................... 37
8.2 Implémentation avec une table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
8.3 Tas ............................................... 38
8.4 Implémentation à l’aide d’un tableau . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
8.5 Construction d’un tas à partir d’un tableau . . . . . . . . . . . . . . . . . . . . . . . . 40
8.6 Complexitédesopérations ................................. 41
9 Union-find 43
10 Graphes 45
10.1 Définitions .......................................... 45
10.2 Implémentation par matrice d’adjacence . . . . . . . . . . . . . . . . . . . . . . . . . 47
10.3 Implémentation par liste d’adjacence . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
10.4 Implémentation par liste d’incidence . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
11 En Python 49
11.1Pilesetfiles.......................................... 49
11.2ListesettuplesPython ................................... 50
11.3Dictionnaires......................................... 51
11.4Filesdepriorité........................................ 52
11.5Ensembles........................................... 52
11.6 Arbres binaires de recherche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
11.7Graphes ............................................ 53
III Techniques fondamentales 55
12 Problèmes 57
12.1Définition ........................................... 57
13 Méthode Glouton 59
13.1Définition ........................................... 59
13.2 Exemple du classement par insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
13.3 Exemple du rendu de monnaie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
13.4 Exemple de la coloration de graphe . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
13.5Gloutonetoptimalité .................................... 63
14 Méthode diviser pour régner 65
14.1Définition ........................................... 65
14.2AlgorithmedeKaratsuba.................................. 65
14.3 Analyse des algorithmes diviser pour régner . . . . . . . . . . . . . . . . . . . . . . 67
iv TABLE DES MATIÈRES
14.4Théorèmemaître....................................... 68
14.5 Exemples d’application du théorème maître . . . . . . . . . . . . . . . . . . . . . . . 69
15 Programmation dynamique 71
15.1Principe ............................................ 71
15.2 Exemple 1 : le rendu de monnaie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
15.3Exemple2:lesacàdos................................... 73
16 Exploration en espace des états 75
16.1Espacedesétats ....................................... 75
16.2Exemplesdeproblèmes: .................................. 75
16.3Performance ......................................... 77
16.4Backtracking ......................................... 77
16.5 Backtracking : coloration de graphe . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
16.6 Coloration de graphe : forward checking ......................... 80
16.7Explorationgénérique.................................... 83
16.8 Exploration en profondeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
16.9Explorationenlargeur ................................... 84
16.10Exploration à coût uniforme ou UCS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
16.11Exploration Best-First .................................... 84
16.12ExplorationA* ........................................ 85
17 Méta-heuristiques 87
17.1Métaquoi?......................................... 87
17.2BranchandBound...................................... 87
17.3 Branch and bound : sac à dos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
17.4Explorationlocale ...................................... 90
17.5Recuitsimulé......................................... 90
17.6Algorithmesgénétiques................................... 90
IV Algorithmes 91
18 Classement 93
18.1 Définition formelle du problème du classement . . . . . . . . . . . . . . . . . . . . 93
18.2 Classementparinsertion.................................. 93
18.3 Classementparfusion ................................... 95
18.4Classementrapide...................................... 96
18.5 Classementpartas ..................................... 97
18.6Enpratique.......................................... 97
19 Graphes 99
19.1Parcours............................................ 99
19.2 Arbres recouvrants de poids minimal . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
19.3 Recherche des plus courts chemins . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
19.4Similitudes .......................................... 111
TABLE DES MATIÈRES v
V Problèmes 113
20 Problèmes sans solution 115
20.1Leproblèmedelarrêt.................................... 116
20.2 Autres problèmes insolubles algorithmiquement . . . . . . . . . . . . . . . . . . . . 117
21 Problèmes faciles versus difficiles 119
21.1Problèmesetinstances ................................... 119
21.2ClasseP ............................................ 119
21.3ClasseNP ........................................... 120
21.4Réductionpolynomiale ................................... 120
21.5NP-complétude........................................ 121
22 Complexité de problème 123
VI Annexes 125
23 Spécifications 127
24 Compléments Python 131
24.1Lambdaexpressions..................................... 131
24.2Exceptions........................................... 132
25 Programmation objet en Python 135
25.1Introduction ......................................... 135
25.2Classesetinstances ..................................... 135
25.3Méthodes ........................................... 135
25.4Héritage............................................ 135
26 Réalisation Python de structures de données classiques 137
26.1Listechaînée ......................................... 137
26.2 Arbres binaires de recherche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
26.3Dictionnaires......................................... 139
26.4Tas ............................................... 142
1 / 150 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!