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

Slides:



Advertisements
Présentations similaires
Introduction à la notion de fonction 1. Organisation et gestion de données, fonctions 1.1. Notion de fonction ● Déterminer l'image d'un nombre par une.
Advertisements

Université de Nantes CHORD Vincent Trève. Introduction ● Problématique – Comment accéder efficacement aux données réparties sur un système pair à pair?
Guide de l'enseignant SolidWorks, leçon 1 Nom de l'établissement Nom de l'enseignant Date.
Volée 1316 S3 Cours No 2_3 : Le nombre en 1-2H. Les fonctions du nombre  Dénombrer, énumérer, décrire une collection. Aspect cardinal  Dater, classer,
ARCHITECTURE MULTITENANT CONTAINER DATABASE ET PLUGGABLE DATABASES Pr. A. MESRAR
Programmation en C++ Standard Library
temporelle – fréquentielle –Stabilité diagrammes de Bode / Nyquist
CHAPITRE 2 : LES DISTANCES DANS L’UNIVERS
LES TABLEAUX EN JAVA.
Algorithme et programmation
Les Tableaux Mme DJEBOURI. D.
Algorithmique Avancée et Complexité Chap2:Complexité et Optimalité
Métrologie Document de reference : “Incertitude en Science de la Nature” Cours : 360-ESZ-03 “Logiciels appliqués en sciences” La métrologie est la « science.
Les Bases de données Définition Architecture d’un SGBD
Algorithmique demander jeu du pendu.
Université Abou Bakr Belkaid Faculté des Sciences Département d’informatique Algorithmique Avancée et Complexité Chap5: Les méthodes de résolution exactes.
Initiation aux bases de données et à la programmation événementielle
Complément sur les pointeurs
Références.
Algorithmique Avancée et Complexité Chap3:Diviser pour Régner
Section 1.1 : Unités du système international (SI)
L’Instruction de Test Alternatif
Javadoc et débogueur Semaine 03 Version A16.
Bddictionnairique Phase 1
Fonctions.
Bases de programmation en Python
Principes de programmation (suite)
Fonctions logiques et algèbre booléenne
Algorithmique & Langage C
Présentation Structure données abstraite (TDA) Rappel : File
Plan Introduction Parcours de Graphe Optimisation et Graphes
VI. Tri par tas (Heap sort)
Exercice 1 : On donne le tableau de valeurs suivant :
MFI : Melt Flow Index M.F.I Héloïse GAY – Gabriel MOREAU
Université Abou Bakr Belkaid Faculté des Sciences Département d’informatique Algorithmique Avancée et Complexité Chap7: Les méthodes de résolution exactes.
Codification et Représentation de l’information
Science du traitement rationnel de l'information
D3 – Produire, traiter, exploiter et diffuser des documents numériques
Démarche de conception. Démarche didactique.
Stabilité des porteurs horizontaux (Poutres)
Création Et Modification De La Structure De La Base De Données
PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II
1.2 dénombrement cours 2.
Cours N°10: Algorithmiques Tableaux - Matrices
Chapter 12: Structures de données
Type Concret – Type Abstrait
Réseaux de neurones appliqués à la reconnaissance de caractères
Calcul Scientifique Initiation à SCILB
Rapport de laboratoire
Gilles BADUFLE À partir d’un PPT modifié du C.A.H.M.
Algorithmique Avancée et Complexité
B.Shishedjiev - Informatique
Mesures simples & Objet en chute libre
03- Evaluation Access 2003 Cette évaluation comporte des QCM (1 seule réponse) et des Zones à déterminer dans des copies d’écran.
Le code de Huffman: est une méthode de compression statistique de données qui permet de réduire la longueur du codage d'un alphabet. Le code de Huffman.
MATHÉMATIQUES FINANCIÈRES I
Jean-Sébastien Provençal
Reconnaissance de formes: lettres/chiffres
Opérateurs et fonctions arithmétiques Opérateurs de relation Opérateurs logiques Cours 02.
Tris Simples/Rapides.
Exercices récapitulatifs
Piles et files.
Smart Graphic Layout SUJET déclaration
LE TORSEUR STATIQUE 1) Définition 2) Notation 3) Deux cas particuliers
Arbre binaire.
INTELLIGENCE ARTIFICIELLE
Type Tableau Partie 1 : Vecteurs
Les données structurées et leur traitement
Séquence 1:Analyse du système d’information comptable
Transcription de la présentation:

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 2015-2016

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

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

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]

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

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)

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

Recherche d'un élément  complexité =θ(n) Table de Hachage Liste Chainée Recherche d'un élément  complexité =θ(n)

Table de Hachage un tableau Utilisation des indices numérotés. Tableau["Luc Doncieux"] c’est pas possible

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

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

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)

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]

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; ………..

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

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

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

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 011100000110100 1000 8 CARO 00011000011001001111 0001 1 REDA 10010001010010000001 0000 KRIS 01011100100100110011 1010 10

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.

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 00001 xor 10100 11011 27 h(CARO) 00011 xor 00001 xor 10010 xor 01111 11111 31 h(REDA) 10010 xor 00101 xor 00100 xor 00001 10010 18 h(KRIS) 01011 xor 10010 xor 01001 xor 10011 00011 3

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) = 10010 xor 00101 xor 00100 xor 00001 = 10010 = 18 h(READ) = 10010 xor 00101 xor 00001 xor 00100 = 10010 = 18 Solution: Decalage circulaire des bits: Le premier caractère de 1 bit , le deuxième de 2, etc. Ce qui donne : h(REDA) = 01001 xor 01001 xor 10000 xor 00010 = 10010 = 18 h(READ) = 01001 xor 01001 xor 00100 xor 01000 = 01100 = 12

Méthodes de hachage par division Supposons que m = 23 La fonction de division est : NAT = 011100000110100 h(NAT) = 14388 mod 23 = 13 CARO = 00011000011001001111 h(CARO) = 99919 mod 23 = 7 REDA = 10010001010010000001 h(REDA) = 595073 mod 23 = 17 KRIS = 01011100100100110011 h(KRIS) = 379187 mod 23 = 9

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 *0.5987526325)mod 1)*27 4 h(CARO) ((31 *0.5987526325)mod 1)*27 15 h(REDA) ((18 *0.5987526325)mod 1)*27 20 h(KRIS) ((3 *0.5987526325)mod 1)*27 21

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) .

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

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

Résolution des collisions Par hachage avec chainage séparé Chainage à l’extérieur de la table de hachage

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

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

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

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

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