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

Arbres binaires et tables de hachage

Présentations similaires


Présentation au sujet: "Arbres binaires et tables de hachage"— Transcription de la présentation:

1 Arbres binaires et tables de hachage

2 Introduction Les arborescences sont utilisées :
Dans la vie de tous les jours : pour représenter des hiérarchies, des classifications, des partitions Dans le domaine de l'informatique : pour représenter les informations ci-dessus, et aussi : L'organisation interne des fichiers en mémoire Les mode de calcul d'une expression L'organisation de données triées

3 Introduction Exemple

4 Introduction Utilisations Système de fichier
Parsing de texte (compilation, XML, …) Base de données (indexation) Intelligence artificielle (arbres de décision)

5 Définition Un arbre est une collection (finie) de noeuds de même type
Un arbre est défini (récursivement) par : un premier noeud (racine de l’arbre) 0, 1, 2 ou plusieurs sous-arbres (appelés descendants de la racine)

6 Vocabulaire

7 Définition L’arité d’un nœud est le nombre de fils de ce nœud
Binaire: 2 fils Ternaire: 3 fils N-aire … Un arbre binaire est un arbre dans lequel chaque noeud possède 0, 1 ou 2 fils Chaque noeud a un descendant gauche et un descendant droit (éventuellement vides)

8 Définition

9 Les arbres binaires 1 élément = 3 parties (agrégat) Le champ donnée
Le fils gauche (sous-arbre) Le fils droit (sous-arbre) Donnée Gauche Droite

10 Les arbres binaires Déclaration de la structure d’un arbre binaire
typedef struct s_btree { void *donnee; struct s_btree *gauche; struct s_btree *droite; } t_btree;

11 Les opérations de base Création d’un nouvel arbre
t_btree *btree_new_root(void *donnee, t_btree *gauche, t_btree *droite) { t_btree *nouvel_arbre; nouvel_arbre = malloc(sizeof (t_btree)); nouvel_arbre->droite = droite; nouvel_arbre->gauche = gauche; nouvel_arbre->donnee = donnee; return (nouvel_arbre); }

12 Les opérations de base Les parcours en profondeur

13 Les opérations de base Affichage ordre Préfixe
void btree_prefixe(t_btree *arbre, void (*f)(void *)) { if (arbre == NULL) return ; else f(arbre->donne); btree_apply(arbre->gauche, f); btree_apply(arbre->droite, f); }

14 Les opérations de base Affichage ordre Infixe (symétrique)
void btree_infixe(t_btree *arbre, void (*f)(void *)) { if (arbre == NULL) return ; else btree_apply(arbre->gauche, f); f(arbre->donne); btree_apply(arbre->droite, f); }

15 Les opérations de base Affichage ordre suffixe (postfixe)
void btree_suffixe(t_btree *arbre, void (*f)(void *)) { if (arbre == NULL) return ; else btree_apply(arbre->gauche, f); btree_apply(arbre->droite, f); f(arbre->donne); }

16 Les opérations de base Parcours en largeur (hiérarchique)

17 Exercice

18 Exercice Parcours préfixe: A B C E I F J D G H K L Parcours Infixe:
E I C F J B G D K H L A Parcours suffixe: I E J F C G K L H D B A Parcours en largeur: A B C D E F G H I J K L

19 Les arbres binaires de recherche (ABR)
Un arbre binaire de recherche est un arbre binaire dans lequel la valeur de chaque sommet est supérieure [ou égale] à toutes les valeurs étiquetant les sommets du sous-arbre gauche de ce sommet, et inférieure à toutes les valeurs étiquetant les sommets du sous-arbre droit de ce sommet.

20 Les arbres binaires de recherche (ABR)

21 Algorithme de construction
Soit val la valeur à placer dans l’ABR (l’ajout se fera toujours sur une «feuille» : arbre binaire dont le Fils G et le Fils D sont vides) Si l’arbre est vide, en créer un, réduit à sa racine, étiquetée avec val Sinon si val ≤ valeur portée par la racine, alors l’ajouter au sous-arbre gauche : si cet arbre n’est pas vide, reprendre l’algorithme sur ce sous-arbre Sinon l’ajouter au sous-arbre droit : si cet arbre n’est pas vide, reprendre l’algorithme sur ce sous-arbre

22 Avantages des ABR Faible complexité pour la recherche
O(n) pour trouver une valeur où n représente la profondeur de l’arbre

23 Tables de hachages

24 Définition Ensemble de données de la forme (k, v)
K est appelé la clé V est une valeur associée à k L’objectif est de retrouver v en fournissant k: On peut voir une table T comme une fonction d’un ensemble de clés k vers un ensemble de valeur v Exemple: K = ensemble des départements V = ensemble des préfectures

25 La fonction de hachage

26 Les collisions L’inconvénient de cette idée est que deux clés peuvent être hachées dans la même case de la table : collision. Exemple : si les clés sont des valeurs numériques, on peut considérer la fonction de hachage simple suivante : H(k) = k mod m Pour m = on a : H( ) = h(35678) = 5678

27 Résolution des collisions

28 Choix de la fonction de hachage
L’hypothèse «hachage uniforme simple» est difficile à garantir, mais il existe des techniques qui fonctionnent bien en pratique. Une bonne fonction de hachage doit distribuer les clés uniformément dans les cases de la table.

29 La fonction modulo On suppose que toutes les clés sont des entiers naturels. A chaque clé k, on associe une case en prenant le reste de la division de k par m H(k) = k mod m Cette méthode est simple, mais peut donner de mauvaises répartitions si m est mal choisi.

30 La fonction modulo On choisit m premier assez éloigné des puissances de 2 et des puissances de 10 Exemple : On veut une table de hachage pour conserver environs n = 2000 chaînes de caractères. L’examen de 3 éléments en moyenne en cas de recherche infructueuse n’est pas catastrophique On alloue une table de taille m = 701 701 est premier 701 est proche de 2000/3 701 n’est pas proche d’une puissance de 2 (512 = 29 < 701 < 210 = 1024)

31 La fonction modulo Pour des chaînes de caractères, on applique le même principe en prenant pour k le nombre formé en concaténant les caractères. En additionnant les codes ascii des caractères En représentant chaque caractère en base 256

32 Conclusion Les tables de hachage ont de gros avantages …
… mais aussi des inconvénients, si le nombre de données est important la fonction de hachage devient critique.


Télécharger ppt "Arbres binaires et tables de hachage"

Présentations similaires


Annonces Google