Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
| tc_info:td2:imprimable [2019/11/20 13:11] – 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 | ||