Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parJean-Baptiste Pagé Modifié depuis plus de 6 années
1
Université Abou Bakr Belkaid Faculté des Sciences Département d’informatique
Algorithmique Avancée et Complexité Chap4: Structures de données élémentaires RSD –GL 1
2
Pile Définition(pile):
Une pile est une structure de données mettant en œuvre le principe «dernier entré premier sorti» LIFO:Last In First Out
3
Pile Une pile P peut être implémentée par un tableau, et elle est caractérisée par: Un sommet noté sommet(P) indiquant l’indice de l’élément le plus récemment inséré dans la pile. Un caractère spécial, comme $, initialisant la pile Une procédure EMPILER(P,x) Une fonction DEPILER(P) Une fonction booléenne PILE-VIDE(P) retournant VRAI si et seulement si P est vide PILE-VIDE(P){ Empiler Dépiler Si sommet(P)=$ Alors retourner VRAI Sommet Sinon retourner FAUX } 10 14 12
4
Pile Procedure EMPILER(P,x){ Si sommet(P)=longueur(P) Alors écrire (« Pile pleine ») sinon { Sommet(P)=sommet(P)+1 P[sommet(P)]=x } Fonction DEPILER(P) { Si PILE-VIDE(P) Alors écrire (« Pile Vide ») Sommet(P)=sommet(P)-1 Retourner P[sommet(P)+1]
5
File Définition(file):
Une file est une structure de données mettant en œuvre le principe«premier entré premier sorti» FIFO:First In First Out
6
File Une file F peut être implémentée par un tableau, et elle est caractérisée par: Un pointeur début(F) qui pointe vers la tête de la file(l’élément le plus anciennement inséré) Un pointeur fin(F) qui pointe vers la première place libre, où se fera la prochaine insertion d’un élément Initialement:debut(F)=fin(F)
7
Listes chaînées Définition:Une liste chaînée : une structure de données représentant une collection ordonnée , de taille arbitraire d'éléments de même type et L'accès aux éléments se fait de manière séquentielle. Permet une grande souplesse pour modifier la liste: Modification de l’ordre d’un élément; Ajout d’un élément ou d’une liste à une position quelconque; Suppression d’un élément ou plusieurs éléments consécutifs dans une liste
8
Recherche d'un élément complexité =θ(n)
Table de Hachage Liste Chainée Recherche d'un élément complexité =θ(n)
9
Table de Hachage un tableau Utilisation des indices numérotés.
Tableau["Luc Doncieux"] c’est pas possible
10
Table de Hachage Pour Trouver la position d’un élément e dans la table de hachage de n élément: Calcul de la position de e. Accès direct à e Recherche en θ(1) n La place d’un élément dans la table est calculée à partir de sa propre valeur. calcul réalisé par une fonction de hachage
11
Table de Hachage Pour Trouver la position d’un élément e dans la table de hachage de n élément: Calcul de la position de e. Accès direct à e Recherche en θ(1) n La place d’un élément dans la table est calculée à partir de sa propre valeur. calcul réalisé par une fonction de hachage
12
Fonction de Hachage Une table de hachage:
Utilisation d’une fonction de hachage L’indice d’un élément est donné par la fonction de hachage h . Pour une Table T et un élément e . T[h(e)]=e(si e T)
13
Fonction de Hachage Exemple: E =Ensemble des éléments à stocker
={ahmed, mourad, ali,selma, mohammed, said, amine, khaled, omar, yacine} T = Table de hachage de taille N=15. H fonction de hachage. = associer à chaque élément e une position h(e)[0..9]
14
Fonction de Hachage Exemple d’algorithme de fonction h:
Attribuer aux lettres a,b,…,z les valeurs de 1,2,…,26 N ( vals des lettres de e +nbre des lettres de e)mod (15) La position de l’élément ahmed est donnée par: h(ahmed)=(31+5)mod 15 =6 De mème: h(mourad)=(72+6)mod(15)=3 h(ali)=(22+3)mod(15)=10; ………..
15
Fonction de Hachage Ali? h(Ali) Nom Date Naiss Adresse N° Tel 1 2 3
1 2 3 Mourad 4 5 6 Ahmed 7 8 9 10 Ali 11 12 13 14 h(Ali) Nom Date Naiss Adresse N° Tel
16
Méthodes de hachage une méthode de hachage
Transforme la valeur d’un élément en position Doit étre deterministe (pour une valeur donnée on a une et une seule position) Doit étre facilement calculable
17
Méthodes de hachage Il existe 4 méthode: Méthode par extraction
Méthode par Compression Méthode par Division Méthode par Multiplication
18
Méthodes de hachage par extraction
Cette méthode consiste à extraire un certains nombre de bits. Si l'on extrait p bits, l'intervalle se ramène à :[0,2p − 1]. l'extraction des bits 2, 7, 12 et 17 en commençant à gauche et en complétant par des zéros. NAT 1000 8 CARO 0001 1 REDA 0000 KRIS 1010 10
19
Méthodes de hachage par extraction
Facile à mettre en œuvre Utilisation partielle de la clé Ne donne pas de bons résultats. bien adaptée que dans le cas où l'on connaît les données à l'avance ou bien lorsque certains bits de la codification sont non significatifs.
20
Méthodes de hachage par compression
L’utilisation de ET – OU, rendent systématiquement des nombres qui leur sont plus petits (ET) ou plus grand (OU). Pour cette raison—> Utilisation de OU exclusif h(NAT) 01110 xor xor 10100 11011 27 h(CARO) 00011 xor xor xor 01111 11111 31 h(REDA) 10010 xor xor xor 00001 10010 18 h(KRIS) 01011 xor xor xor 10011 00011 3
21
Méthodes de hachage par compression
Le problème de cette méthode est de "hacher" de la même manière tous les anagrammes d'une clé, par exemple : h(REDA) = xor xor xor = = 18 h(READ) = xor xor xor = = 18 Solution: Decalage circulaire des bits: Le premier caractère de 1 bit , le deuxième de 2, etc. Ce qui donne : h(REDA) = xor xor xor = = 18 h(READ) = xor xor xor = = 12
22
Méthodes de hachage par division
Supposons que m = 23 La fonction de division est : NAT = h(NAT) = mod 23 = 13 CARO = h(CARO) = mod 23 = 7 REDA = h(REDA) = mod 23 = 17 KRIS = h(KRIS) = mod 23 = 9
23
Méthodes de hachage par multiplication
il faut éviter de prendre des valeurs de θ trop près de 0 ou de 1 h(NAT) ((27 * )mod 1)*27 4 h(CARO) ((31 * )mod 1)*27 15 h(REDA) ((18 * )mod 1)*27 20 h(KRIS) ((3 * )mod 1)*27 21
24
Taux de remplissage But:
Taux de remplissage=nbr positions occupées/nbr total des positions But: Avoir un taux de remplissage proche de 1(toutes les positions de sont remplies). Avoir moins de collision(1 élément par position) .
25
Limite de la fonction de hachage
pas de fonction de hachage universelle une "bonne" fonction doit être rapide a calculer repartir uniformément les éléments dans T But de la fonction h : attribuer 1 élément a chaque position de T pas toujours possible. il peut y avoir des positions de T qui ne sont pas utilisées pb de de gaspillage de mémoire pb de taux de remplissage trop bas il y peut y avoir une place de T qui est attribuée à plusieurs Eléments pb des collisions
26
Résolution des collision
Plusieurs éléments dans la même position!! La qualité de la fonction de hachage collision 2 méthode de résolution: Par chainage Par hachage avec chainage séparé Par hachage coalescent Par calcul Par hachage linéaire Par double hachage
27
Résolution des collisions Par hachage avec chainage séparé
Chainage à l’extérieur de la table de hachage
28
Résolution des collisions Par Hachage coalescent
Le principe est de séparer le tableau de hachage (de taille m) en deux zones : une zone de hachage primaire de p éléments, une zone de réserve de r éléments permettant de gérer les collisions Exemple: m=9, p=6, r=3 éléments X1 X2 X3 X4 X5 X6 X7 X8 Valeurs hachage 1 3 2 4 6
29
Résolution des collisions Méthode directe(par calcul)
La résolution se fait à l'aide de calcul à l'intérieur du tableau. 2 types de gestion des collisions directes: Par hachage linéaire Par double hachage
30
Résolution des collisions Hachage linéaire
éléments X1 X2 X3 X4 X5 X6 X7 X8 X9 valeurs de hachage 10 3 5 11 4 1 2 Si collision à la position i on essaie i+1 mod N Algorithme d’ajout d’un élément: i h(e) SI i occupée alors j1 i(h(e)+j) mod N Tanque((i occupé)et (j<N-1))faire jj+1 Fin tanque Fsi
31
Résolution des collisions Hachage linéaire
Algorithme de recherche d’un élément e dans T ih(e) J1 Tant que (T[i]!=e)et(T[i]!=vide) et(j<N-1) faire i(h(e)+j)mod N Fin tantque Si (T[i]==e) alors retourner l’élément Sinon écrire l’élément e n’existe pas dans T Finsi
32
Résolution des collisions Double Hachage
Algorithme ih(e) Si i occupé alors j1 i(h(e)+h’(e)*j) mod N Tant que ((i occupée)et (j<T-1)) faire jj+1 Fin tantque Fsi
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.