Polycopié Programmation et Algorithmique

Telechargé par sonia.garrouch
Programmation et Algorithmique
INF 421, ´
Ecole Polytechnique
Philippe Baptiste et Luc Maranget
Avant-propos
Ce polycopi´e est utilis´e pour le cours INF 421 intitul´e Les bases de la programmation et de
l’algorithmique. Ce cours fait suite au cours INF 311 Introduction `a l’informatique et pr´ec`ede le
cours INF 431 intitul´e Fondements de l’informatique. L’objectif du cours est triple : (1) program-
mer en java, (2) maˆıtriser les bases de l’algorithmique sur des structures dynamiques (listes,
arbres) et (3) introduire quelques notions fondamentales d’informatique comme les expressions
r´eguli`eres, les automates et l’analyse syntaxique.
Nous utilisions jusqu’`a l’an pass´e le polycopi´e r´edig´e par Jean Berstel et Jean-Eric Pin. Pour
prendre en compte les r´ecents changements dans l’organisation des cours d’informatique de
l’´
Ecole, nous avons d´ecid´e de r´ediger une nouvelle version de ce polycopi´e. Nous esp´erons qu’elle
est aussi claire, aussi pr´ecise et aussi simple que la pr´ec´edente. Nous avons d’ailleurs conserv´e
de nombreux passages de J. Berstel et J.-E. Pin (en particulier pour les chapitres relatifs aux
arbres).
Nous remercions nos coll`egues de l’´
Ecole Polytechnique, et plus particuli`erement ceux qui
ont d’une mani`ere ou d’une autre contribu´e au succ`es du cours INF 421 : Philippe Chassignet,
Mathieu Cluzeau, Thomas Heide Clausen, Robert Cori, Xavier Dahan, Olivier Devillers, Thomas
Houtmann, Philippe Jacquet, Fabien Laguillaumie, Fabrice Le Fessant, Laurent Mauborgne,
David Monniaux, Sylvain Pradalier, Alejandro Ribes, Dominique Rossin, ´
Eric Schost, Nicolas
Sendrier, Jean-Jacques L´evy, Fran¸cois Morain, Laurent Viennot et Axelle Ziegler. Merci aussi `a
Christoph D¨urr du LIX, qui a magnifiquement illustr´e la page de couverture1de ce polycopi´e.
Les auteurs peuvent ˆetre contact´es par courrier ´electronique aux adresses suivantes :
On peut aussi consulter la version html de ce polycopi´e ainsi que les pages des travaux dirig´es
sur le site http ://www.enseignement.polytechnique.fr/informatique/inf421
1Le 421 est un jeu de bar qui se joue au comptoir avec des d´es.
3
Table des mati`eres
I Listes 7
1 Structure dynamique, structure equentielle . . . . . . . . . . . . . . . . . . . . . 7
2 Listes chaˆın´ees, evisions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3 Tri des listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4 Programmation objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5 Compl´ement : listes boucl´ees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
II Piles et files 45
1`
A quoi ¸ca sert ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2 Impl´ementation des piles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3 Impl´ementation des files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4 Type abstrait, choix de l’impl´ementation . . . . . . . . . . . . . . . . . . . . . . . 63
III Associations Tables de hachage 65
1 Statistique des mots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
2 Table de hachage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
3 Choix des fonctions de hachage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
IV Arbres 81
1 D´efinitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
2 Union-Find, ou gestion des partitions . . . . . . . . . . . . . . . . . . . . . . . . . 83
3 Arbres binaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
4 Arbres de syntaxe abstraite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
5 Files de priorit´e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
6 Codage de Huffman . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
V Arbres binaires 113
1 Implantation des arbres binaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
2 Arbres binaires de recherche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
3 Arbres ´equilibr´es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
VI Expressions r´eguli`eres 135
1 Langages r´eguliers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
2 Notations suppl´ementaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
3 Programmation avec les expressions r´eguli`eres . . . . . . . . . . . . . . . . . . . . 140
4 Impl´ementation des expressions eguli`eres . . . . . . . . . . . . . . . . . . . . . . 144
5 Une autre approche du filtrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
5
1 / 219 100%

Polycopié Programmation et Algorithmique

Telechargé par sonia.garrouch
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 !