Différences
Ci-dessous, les différences entre deux révisions de la page.
| restricted:tc-d:td1:travaux_diriges_premiere_seance_2017 [2017/09/25 12:57] – créée edauce | restricted:tc-d:td1:travaux_diriges_premiere_seance_2017 [2018/01/17 17:29] (Version actuelle) – edauce | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | ====== TD 1 : Indexation des données ====== | ||
| + | |||
| + | |||
| + | ==== Exercice 1 : Tableau de données ==== | ||
| + | |||
| + | On considère un tableau de données statique T de taille n x m. Le tableau contient des informations sur une liste de N clients (avec N < n), où chaque ligne du tableau T[i] (i < N) correspond à la description d'un client différent (sur une trame de taille m). | ||
| + | |||
| + | {{ public: | ||
| + | |||
| + | - Donnez la complexité des opérations suivantes: | ||
| + | - insertion d’un nouveau client | ||
| + | - recherche d’un client | ||
| + | - suppression d’un client | ||
| + | - Donnez un algorithme permettant d’éviter l’insertion de doublons (On veut assurer que si i ≠ j, T[i] ≠ T[j]). Quelle est sa complexité? | ||
| + | - Que faire pour accélérer les temps de recherche? | ||
| + | - Que faire lorsque la page est pleine (n = N)? | ||
| + | |||
| + | ==== Exercice 2 : recherche par clé ==== | ||
| + | |||
| + | On suppose maintenant que chaque tuple est désigné par sa « clé » k (entier). Un client est alors décrit par un tuple (clé, information< | ||
| + | |||
| + | On suppose ici que plusieurs tuples peuvent être enregistrés dans une même " | ||
| + | |||
| + | En pratique, 2 grandes familles de méthodes d’accès sélectives (recherche par clé): | ||
| + | * méthodes d’accès par index : utilisation d'une table pour mémoriser l’association clé / adresse tuple : l' | ||
| + | * méthodes d’accès par hachage : déterminent l’emplacement du tuple à partir d’une fonction de la clé, | ||
| + | |||
| + | - **Recherche par index** | ||
| + | - Ecrire une fonction '' | ||
| + | - Quel est le temps nécessaire pour trier l' | ||
| + | - Une fois l' | ||
| + | - Quel problème se pose lors de l' | ||
| + | - **Table de hachage**. Une table de hachage est une méthode d’indexation “automatique” dans laquelle l’index est remplacé par une fonction qui “décide” dans quelle page chaque tuple doit être rangé : si k est la clé du tuple, la fonction H(k) donne le numéro de la page où est stocké le tuple. Remarque : la taille du tableau est fixée à l’avance (p pages pouvant stocker n tuples) | ||
| + | - Quelle fonction H choisir pour répartir uniformément les tuples dans les cases? | ||
| + | - Donner l’algorithme qui remplit la table de hachage à partir d’un ensemble de N tuples et de p pages de taille n. Une fois la table créée, quel est le temps nécessaire pour savoir si le tuple de clé k est dans le tableau? | ||
| + | - Quel serait le nombre “idéal” de pages p pour stocker N tuples? En pratique, si on connaît N à l’avance, comment choisir au mieux p pour éviter que les cases “débordent”. | ||
| + | - Quels sont les avantages et les inconvénients de la table de hachage? | ||
| + | - Quelle structure de données Python, correspond à ce mode de stockage à base de clé ? | ||
| + | - **Index hiérarchique** | ||
| + | * Considérons un index composé de couples (clé, numero de page). On suppose que l’index est également découpé en pages, chaque page d' | ||
| + | * chaque noeud de l’arbre contient une liste croissante de couples (clé, numéro d’une sous-page) | ||
| + | * chaque clé est dupliquée dans sa sous-page : | ||
| + | * les clés contenues dans la sous-page sont inférieures ou égales à elle, | ||
| + | * les clés contenues dans la sous-page sont strictement supérieures à celles de la sous-page précédente. | ||
| + | * les feuilles contiennent des couples (clé, numéro de la page du tableau de données) | ||
| + | * On considère un ensemble de tuples stockés dans un tableau de données. | ||
| + | * Le tableau de données est constitué de 10 pages numérotées de 201 à 210. | ||
| + | * On considère également le tableau d’index permettant d’accéder plus rapidement aux données. Le tableau d’index est constitué de 4 pages numérotées de 101 à 104. | ||
| + | * L’index est organisé de manière hiérarchique avec deux niveaux, comme indiqué sur le schéma suivant : | ||
| + | {{ restricted: | ||
| + | * a - Donnez l’algorithme qui, à partir d’une clé k, trouve le numéro de la page où est stocké le tuple correspondant. | ||
| + | * b - Sous quelle condition l’accès aux tuples sera-t-il efficace? Donnez dans ce cas le temps d’accès en fonction de b et du nombre de tuples N. | ||
| + | |||