
INFO3012 Algorithmique I.. Introduction
I. Introduction
I.1. Besoins, coûts et bénéfices
+Les problèmes les plus complexes (prévisions météorologiques, environnementales, analyse des
médias sociaux, etc.) requièrent des algorithmes de plus en plus efficaces, malgré la rapidité
croissante des vitesses de calcul des ordinateurs.
+Un algorithme est dit efficace s’il résout un problème en respectant des contraintes établies
(quantité de mémoire, temps d’exécution, etc.).
+Une structure de données est une manière de représenter les données d’un problème et les
opérations qui s’appliquent à cette collection de données.
+Une structure de données doit donc être choisie soigneusement après avoir analysé les données
et les contraintes d’un problème ainsi que les opérations qui doivent être rendues possibles.
+Toute structure de données a des coûts (inconvénients) et des bénéfices (avantages). Autre-
ment dit selon le problème traité, une structure de données peut être « meilleure » (plus
adaptée) qu’une autre ou inversement.
Exemple : base de données bancaire.
+Il y a très souvent un compromis espace (mémoire) vs temps (d’exécution).
I.2. Types de données abstraits et structures de données
+Un type est une collection de valeurs. Un type peut être simple (booléen, entier, etc.) ou
composé (complexe, « enregistrement » (record), etc.).
+Un type de données est un type et un ensemble d’opérations sur les valeurs du type (par
exemple pour les entiers : addition, soustraction, etc.).
+Un type de données abstrait (en anglais ADT pour Abstract Data Type) est une
réalisation d’un type de données comme composant logiciel. Un type de données abstrait
définit les entrées, les sorties et le comportement de chaque opération sans donner les
détails d’implémentation (séparation entre entêtes (headers) et définitions (sources)).
+Une structure de données est une implémentation d’un type de données abstrait. En POO
(programmation orientée objet), une structure de données donne généralement lieu à une
classe où les opérations manipulant les données sont des fonctions membres de la classe et
les variables représentant les données des attributs. Un objet est une instance de classe qui
reste en mémoire tout le temps de l’exécution d’un programme (à moins d’une libération
Éric Hervet - 1/40 - Hiver 2017