La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Université Abou Bakr Belkaid Faculté des Sciences Département d’informatique Algorithmique Avancée et Complexité Chap4: Structures de données élémentaires.

Présentations similaires


Présentation au sujet: "Université Abou Bakr Belkaid Faculté des Sciences Département d’informatique Algorithmique Avancée et Complexité Chap4: Structures de données élémentaires."— Transcription de la présentation:

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 j1 i(h(e)+j) mod N Tanque((i occupé)et (j<N-1))faire jj+1 Fin tanque Fsi

31 Résolution des collisions Hachage linéaire
Algorithme de recherche d’un élément e dans T ih(e) J1 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 ih(e) Si i occupé alors j1 i(h(e)+h’(e)*j) mod N Tant que ((i occupée)et (j<T-1)) faire jj+1 Fin tantque Fsi


Télécharger ppt "Université Abou Bakr Belkaid Faculté des Sciences Département d’informatique Algorithmique Avancée et Complexité Chap4: Structures de données élémentaires."

Présentations similaires


Annonces Google