• Aucun résultat trouvé

Expansion de table (Cormen et al. page. 366-375)

N/A
N/A
Protected

Academic year: 2022

Partager "Expansion de table (Cormen et al. page. 366-375)"

Copied!
2
0
0

Texte intégral

(1)

Expansion de table (Cormen et al. page. 366-375)

Soit une table de stockage `a qui est allou´ee une zone tableau en m´emoire centrale. Cette table est dite pleine si toutes ces ceulles m´emoire sont utilis´ees or quand sont facteur de remplissage est 1. On suppose que, quand un ´el´ement est ins´er´e dans une table pleine, le syst`eme peut agrandir cette table en allouant une nouvelle table avec plus d’espace et copie les ´el´ements de l’ancienne table vers la nouvelle table.

Une heuristique est d’allouer une nouvelle ayant un espace deux fois plus grand que l’ancienne table.

Si seulemnt on ne faisait que des insertions, le facteur de remplissage sera toujours ≥1/2, et donc,la quanti´e d,espce perdu ne d´epasse pas la moiti´ee de l’espace dtotale de la table.

Dans le pseudo-code donnn´e ci-dessous, on suppose que num(T) repr´esente le nombre d’´el´ements effectif qu’il y a dans la table T, et size(T) est la dimension totale de la table T. Le pseudo-code pour effectuer une insertion est donc comme suit:

void Inserer(T,x) 1. if (size(T) = =0)

2. allouer un espace pour T;

3. size(T) = 1;

4. if (num(T)== sieze(T))

5. allouer une nouvelle table N avec 2×size(T) d’espace 6. inserer les ´el´ements de T dans la nouvelle tableN; 7. lib´erer(T);

8. T = N;

9. size(T) = 2×size(T);

10. inserer x dans T;

11. num(T) = num(T) + 1;

Nous pouvons entreprendre l’analyse de la complexit´e de la fonction inserer en affectant un coˆut d’une unit´e de temps `a chaque op´eration ´el´ementaire, en supossant que les fonction librer(T) et allouer une nouvelle table se font en un temps constant, c’est-`a-dire en O(1).

On se propose d’´evaluer le temps d’ex´ecution amorti de n op´erations d’insertion aur une table initialement vide. Quel sera alors le coˆut dune op´eration d’insertion.

Pour se faire, proc´edons au calcul du coˆut, ci, de lai`eme op´eration d’insertion comme suit:

(2)

S’il y a de la place dans la table courante, cette op´eration n’engendre qu’un coˆut d’une unit´e, c’est-

`

a-direci = 1: c’est le coˆut de l’insertion `a la ligne 10. Dans le cas contraire, ce coˆut est dei−1 (recopier les i−1 ´el´ements de la table dans la nouvelle table) + 1 (l’insertion `a la ligne 10). Par ailleurs, lai`eme op´eration d’insertion n’engendre une expansion de la table que dans le cas o`u i−1 est une puissance de 2. En r´esum´e, nous avons:

ci=

i si i−1 est une puissance de 2 1 sinon.

Le coˆut total des ninsertions est comme suit:

ci ≤ n+

blognc

X

j=0

2j

< n+ 2n

< 3n.

Par cons´equent, le coˆut amorti d’une op´eration est 3nn = 3.

2

Références

Documents relatifs

Avec Likes(drinker, beer) et Frequents(drinker, bar), trouver les beers que Likes au moins un des clients du Joe’s Bar?.

Le travail présenté dans ce manuscrit a permis de mettre en évidence l'utilité du Doppler continu pour la détection des sténoses carotidiennes, et comment les

Les potentialités des zones sahéliennes et soudaniennes permettent des mouvements du bétail qui constituent un élément important de l’économie sous-régionale. A partir

Dans cette étude nous avons testé deux voies d’injection des CSM dans le rein : la voie intraparenchymateuse transcapsulaire après dissection et la voie intra artérielle directement

À la lecture du variogramme des teneurs en Zn/C (figure. 16 a), il ressort que l'effet de pépite (Co) est plus élevé pour le TM que celui du TT. Cette valeur peut représenter une

Quand la table est dans la position de stockage, ou dans la position de jouer, rappelez-vous s’il vous plaît de toujours fermer les roulettes pour la sécurité

Ex : [.* sont spéciaux SAUF lorsqu’ils figurent dans la liste des caractères définissant un ensemble de caractères ([~~~]). - Le caractère [ est l’indicateur de début de

On suppose que, quand un élément est inséré dans une table pleine, le système peut agrandir cette table en allouant une nouvelle table avec plus d'espace et copie les éléments