Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
tc_info:td2:imprimable [2019/11/20 13:10] – créée edauce | tc_info:td2:imprimable [2019/11/20 13:21] (Version actuelle) – [Partie A : tableaux statiques] edauce | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ===== TD 6 ===== | ||
+ | |||
+ | ==== Partie A : tableaux statiques ==== | ||
+ | |||
+ | ===Exercice 1 === | ||
+ | |||
+ | On considère un ensemble de '' | ||
+ | |||
+ | Remarques : | ||
+ | * Les cases du tableau sont numérotées de '' | ||
+ | * Les données sont de type quelconque mais chaque case ne peut contenir qu'une donnée | ||
+ | * Si '' | ||
+ | * '' | ||
+ | |||
+ | 1. Le stockage est dense, autrement dit: les données sont stockés dans les '' | ||
+ | * Ecrire un algorithme permettant d’insérer une nouvelle donnée '' | ||
+ | * Ecrire un algorithme de // | ||
+ | * le numéro de toutes les cases contenant '' | ||
+ | * une liste vide sinon (" | ||
+ | * Ecrire un algorithme de // | ||
+ | * supprime toutes les occurrences de '' | ||
+ | * Ne fait rien sinon | ||
+ | * Donner la complexité de ces algorithmes. | ||
+ | |||
+ | 2. On suppose maintenant qu'il n’y a pas de doublons dans le tableau, autrement dit ∀ '' | ||
+ | |||
+ | 3. On suppose maintenant qu’il existe un ordre ≺ sur les données. ∀ '' | ||
+ | |||
+ | 4. Que faire quand le tableau est plein? | ||
+ | |||
+ | === Exercice 2 (*) === | ||
+ | |||
+ | On appelle //liste// une structure abstraite ordonnée telle que l'on puisse accéder de manière directe à l' | ||
+ | |||
+ | Une implémentation des listes peut être effectuée comme suit: | ||
+ | * On commence par créer un tableau de taille '' | ||
+ | * A chaque ajout d' | ||
+ | * si '' | ||
+ | * ajouter l' | ||
+ | * '' | ||
+ | * sinon : | ||
+ | * allouer un tableau à '' | ||
+ | * copier les '' | ||
+ | * ajouter l' | ||
+ | * '' | ||
+ | Montrez que la complexité de l’ajout de '' | ||
+ | |||
+ | ==== Partie B : Tables de hachage ==== | ||
+ | <note tip> | ||
+ | Soit '' | ||
+ | </ | ||
+ | |||
+ | === Exercice 1 === | ||
+ | |||
+ | Donnez des algorithmes pour rechercher, insérer & supprimer un élément dans une table de hachage. Donnez leur complexité dans le cas le meilleur, le pire & en moyenne. | ||
+ | |||
+ | (**) Déduisez-en la valeur optimale (en ordre de grandeur) de '' | ||
+ | |||
+ | === Exercice 2 === | ||
+ | Il arrive souvent que l'on ne sache pas à l' | ||
+ | Donnez une ``politique" | ||
+ | |||
+ | === Exercice 3 (*) === | ||
+ | Soit '' | ||
+ | * Donnez une fonction de hachage simple & croissante. | ||
+ | * Quelle est la complexité de cet algorithme dans le cas le meilleur, le pire & en moyenne. | ||
+ | |||
+ | ==== Partie C : dictionnaires ==== | ||
+ | <note tip> | ||
+ | Un // | ||
+ | |||
+ | < | ||
+ | D = {clé_1: | ||
+ | </ | ||
+ | |||
+ | Les clés pouvant être de (presque) n' | ||
+ | * On accède à '' | ||
+ | * L' | ||
+ | * si '' | ||
+ | * si '' | ||
+ | </ | ||
+ | |||
+ | === Exercice 1 === | ||
+ | Donnez une implémentation efficace des dictionnaires. Quelle est alors la complexité (dans le cas le meilleur, le pire & en moyenne) des fonctions de base (recherche, ajout d'un élément, | ||
+ | |||
+ | === Exercice 2 === | ||
+ | Utilisez un dictionnaire pour écrire un algorithme | ||
+ | |||
+ | === Exercice 3 === | ||
+ | Utilisez un dictionnaire pour écrire un algorithme | ||