Aller au contenu principal

Structures de données · L2 · Section 7/7

Ressources

Progression

Points d’expérience : XPSérie de jours consécutifs : · —Progression du module : — / —compris

#Ressources : Structures de données

Pour aller plus loin après les chapitres, et pour choisir vite et bien au moment de coder.

#La grille de décision en une table

Le résumé à connaître par cœur (coûts moyens; le pire cas de la table de hachage est en O(n)):

StructureAccès par cléInsertionOrdre / minPoint fort
Tableau dynamiqueindex O(1), clé O(n)fin O(1) amortitri O(n log n) à la demandelocalité cache
Liste chaînée / dequeO(n)O(1) à position connuenonrecâblage local
Pile / fileextrémités seulesO(1)LIFO / FIFOdiscipline stricte
Table de hachageO(1) moyenO(1) amorti moyennondictionnaire pur
BST équilibréO(log n) garantiO(log n)trié, intervalles, successeurordre dynamique
Tas binairemin O(1)O(log n)min immédiatfile de priorité

Trois réflexes de choix:

  1. Compter les opérations dominantes avant de choisir (voir le chapitre d'introduction du module).
  2. Un ordre ou des intervalles sont nécessaires: arbre équilibré. Juste clé → valeur: hachage. Juste « le plus petit tout de suite »: tas.
  3. Vérifier l'invariant de la structure candidate dans votre contexte (clés immuables pour le hachage, comparabilité totale pour les arbres).

#Références

  • Introduction to Algorithms (CLRS), chapitres 10 à 13 puis 18: structures élémentaires, tables de hachage, arbres de recherche, B-arbres.
  • Algorithms de Sedgewick et Wayne, partie 3: la référence illustrée pour tables de symboles et arbres équilibrés.
  • OpenDSA (opendsa-server.cs.vt.edu, libre): visualisations interactives pile/file/hachage/BST/tas, avec exercices autocorrigés.
  • VisuAlgo (visualgo.net): animations de toutes les structures de ce module, en français partiellement.

#Visualisations intégrées au site

  • Piles et files: StackAnimation et QueueVisualizer (chapitre Piles et files).
  • Tables de hachage: HashTableVisualizer (adressage ouvert) et BloomFilter (chapitre Tables de hachage).
  • Arbres: TreeVisualizer (tas, ce module) et BSTVisualizer (insertion/recherche/suppression pas à pas).
  • Parcours de graphes: GraphTraversalVisualizer (module Algorithmique 1).

#S'entraîner

Implémentez de zéro, sans regarder les chapitres, puis testez contre les corrections:

  1. Une pile et une file sur tableau circulaire (attention au wrap-around des indices).
  2. Une table de hachage par chaînement avec redimensionnement au doublement de α.
  3. Un tas min avec construire en O(n), puis tri par tas.
  4. Un BST complet avec la suppression à deux enfants, puis est_bst par intervalles.

Exercices type entretien pour aller plus loin: LRU cache (table de hachage + liste doublement chaînée), top-K par tas, itérateur d'un BST en O(h) mémoire, médiane d'un flux (deux tas).

#Pièges à revoir avant un examen

  • list.pop(0) en boucle: O(n) par retrait, file à remplacer par deque.
  • Clé mutable insérée dans une table de hachage: paire perdue.
  • Effacement physique en adressage ouvert: chaîne de sondage coupée, il faut un tombstone.
  • Valider un BST en ne comparant que parent et enfants: faux positif, il faut les bornes héritées.
  • Tamiser vers l'enfant gauche sans comparer au droit: invariant cassé dès l'échange.