Title: Algorithmique et structures de donnes en C
1Algorithmique et structures de données en C
Cours 7
Les arbres généraux La recherche associative (1)
É. Delozanne, L2-S4-prog4, Paris 5,
2004-05 Elisabeth.Delozanne_at_math-info.univ-paris5.
fr http//www.math-info.univ-paris5.fr/delozanne/
2Cours n 7-1 Arbres généraux
- Le TDA ARBRE GÉNÉRAL
- définition
- représentation graphique
- représentation linéaire
- Mises en uvre des arbres (généraux)
- par tableau (étiquette père)
- par tableau et liste chaînée des fils
- par faux-pointeurs et liste chaînée des fils
- par pointeurs (nombre maxi de fils)
- par arbre binaire (Premier Fils, FrèreDroit)
- Équivalence avec les arbres binaires
-
3Cours 7-2 Recherche associative (1)
- Recherche associative
- Le TDA dictionnaire
- Mise en uvre par vecteur caractéristique et par
liste - Cours n 8 Recherche associative (2)
- Mises en uvre arborescentes
- arbres binaires de recherche
- arbres équilibrés
- arbres lexicographiques
- Cours n 9 Recherche associative (3)
- Mise en uvre par table de hachage
- Conclusion sur la recherche associative
-
4Définition
- Définition récursive (et constructive)un arbre
est la donnée - d'une racine r
- et d'une liste (éventuellement vide) d'arbres
disjoints appelés sous-arbres - A lt r gt ou lt r, (A1, An) gt , Ai arbres
disjoints - Un arbre n'est théoriquement jamais vide il a
au moins une racine(différence avec les arbres
binaires) - Arbre n-aire chaque nud a au plus n fils
- Représentation graphique et linéaire dun arbre
5Le TDA ARBRE GÉNÉRAL
- utilise le TDA ELEMENT
- primitives de construction
- dépendent de la représentation
- primitive de destruction
- primitives de consultation
- retournent l'étiquette, le premier fils, le
frèreDroit - primitives de test
- Est-une-feuille, est-fils-dernier-né
- Etc.
6Mise en uvre des arbres par tableau
- un arbre est un tableau qui contient l'étiquette
d'un nud et l'étiquette de son père - représentation économique en mémoire, utilisée
si l'arbre n'est jamais modifié
7Arbres par liste des fils
- un arbre est la donnée
- de l'étiquette de sa racine
- de la liste de ses fils représentée
- par tableau,
- par pointeurs
- par curseurs
8Arbres par listes des fils tableau
- un arbre est un pointeur sur une structure
composée de 2 champs - un tableau de nuds
- indice de la racine dans le tableau
- un nud est une structure à deux champs
- l'étiquette de la racine
- la liste de ses fils
- la liste des fils est une liste simplement
chaînée sans en-tête des indices dans le tableau
des fils - la liste des fils est un pointeur sur une cellule
à deux champs - un entier (l indice du noeud) dans le tableau
- un pointeur sur la cellule suivante
9Tableau de pointeurs sur liste des fils
10Arbres par liste des fils (pointeurs)
- un arbre est un pointeur sur une structure formée
- de l'étiquette de la racine
- et de la liste de ses fils
- une listes d'arbres est un pointeur sur une
cellule composée - d'un arbre
- et d'un pointeur sur la cellule suivante.
11Arbre par liste des fils
12TDA arbre par liste des fils (pointeurs)
- typedef struct cell
- struct arb cell
- struct cell suivant
- LISTEDARBRES
- typedef struct arb
- ELEMENT etiquette
- LISTEDARBRES listeDesFils
- ARBRE
13Arbres par tableau de pointeurs
- quand on connaît le nombre maximum de fils (n)
- un arbre est un pointeur sur une structure à n
1 champs - l' étiquette de la racine
- le premier sous-arbre, le deuxième... le nième
14Arbres généraux par arbre binaire
- représentation par premier fils et frère droit
- un arbre est représenté par une structure à trois
champs - l'étiquette de la racine
- le premier fils de la racine
- le frère droit de la racine
- tous les arbres n-aires peuvent être représentés
par des arbres binaires
15Équivalence arbre général/arbre binaire
1
2
3
5
4
6
9
7
8
10
13
11
14
12
16Un autre exemple
17Un autre
18Parcours des arbres généraux
- Équivalence entre les parcours selon la
représentation
19Plan
- Arbres généraux
- Recherche associative dictionnaire (1)
20Recherche associative TDA dictionnaire (1)
- Recherche associative
- Le TDA dictionnaire
- Mise en uvre par vecteur caractéristique
- Mise en uvre par liste
- Cours n 8
- Mises en uvre arborescentes
- arbres binaires de recherche
- arbres équilibrés
- arbres lexicographiques
- Cours n 9
- Mise en uvre par table de hachage
- Conclusion sur la recherche associative
-
21Recherche associative introduction
- problème
- dans une collection d'éléments rechercher un
élément de clé donnée - exemples
- annuaire téléphonique
- dictionnaire
- vérificateur d'orthographe
- table des utilisateurs connectés
- table des identificateurs d'un programme
- contre-exemple
- base de données où la recherche est relationnelle
22Recherche associative opérations
- opération importante dans une recherche
associative la comparaison des clés - la recherche peut être
- positive la clé cherchée est présente
- (en combien d'exemplaires ?)
- négative la clé est absente
- la recherche peut retourner
- l'élément de clé recherchée / élément vide
- vrai / faux
- le nombre d'éléments de clé donnée
- la place où l'on a trouvé l'élément (ou celle où
on s'attendait à le trouver) - la collection peut être ordonnée ou non
- la collection peut être un ensemble
(dictionnaire) ou non
23Le TDA dictionnaire (1)
- un ensemble d'éléments (sans répétition) où
chaque élément est caractérisé par une clé - utilise TDA ELEMENT et CLE
- primitives
- créer un dictionnaire vide et détruire un
dictionnaire - rechercher une clé dans un dictionnaire
- ajouter une clé dans un dictionnaire
- supprimer une clé du dictionnaire
- tester si le dictionnaire est vide
- opérations fréquentes
- énumérer les éléments du dictionnaire
- si l'ensemble est ordonné, trier le dictionnaire
(Cf. cours n 8) - fusionner des dictionnaires
24Recherche associative coûts
- quand le nombre d'éléments de la collection est
élevé - objectif complexité minimale pour les
opérations - de recherche,
- d'insertion
- et de suppression
25Recherche associative mises en uvre
- les coûts dépendent de la mise en uvre
- pas de mise en uvre miracle
- peu de données mises en uvre simples
- vecteur caractéristique
- Listes (Cf. TP2), listes triées
- collection est ordonnée mises en oeuvre
arborescentes - arbres binaires de recherche
- et variantes
- chaque clé est unique (dictionnaire)
- table de hachage
26Vecteur caractéristique (1)
- quand tous les éléments d'une collection C
appartiennent à un même univers borné ? de N
éléments - on peut représenter C
- par un vecteur de booléens x ? C ltgt VB(x)
vrai , B bijection de ? sur 1, N - variante le vecteur contient le nombre
d'occurrences de l'élément de la collection
27Vecteur caractéristique (2)
- opérations de type abstrait
- initialiser en o(N) for (i 0 i ltN Vi
0, i) - tester si vide en o(N) for (i 0 i ltN
(! Vi ) i) - ajouter (x, C) en o(1) VB(x) 1
- supprimer (x, C) en o(1) VB(x) 0
- rechercher(x, C) en o(1) return VB(x)
- on suppose que la bijection est en o(1)
28Vecteur caractéristique (3)
- Conclusion
- Très efficace
- insérer, rechercher, supprimer en o(1)
- si N (cardinal de l'ensemble des possibles) n'est
pas trop grand par rapport à n ( cardinal de
l'ensemble à représenter) - s'il existe une bijection facile à calculer entre
? et 1, N - Pas efficace
- si n ltlt Nle cardinal de l'ensemble à représenter
est beaucoup plus petit que celui des possibles - Inutilisable
- si ? est infini ou très grand
29Mise en uvre par des listes (1)
- Une collection est représentée par une liste de
ses éléments - Remarques on peut avoir plusieurs listes
possibles puisque l'ordre n'a pas d'importance - Représentations (Cf. les listes)
- tableaux
- cellules chaînées
- faux pointeurs
30Mise en uvre par des listes (2)
- opérations abstraites
- recherche(x, C)
- parcours séquentiel de la liste en comparant
chaque élément à x arrêt dès que la comparaison
est un succès ou épuisement de la liste - en o(n) comparaisons
- ajouter(x, C) deux manières
- paresseuse
- on ne vérifie pas que x appartient à C
- en o(1) si
- prudente
- vérifier que x est absent
- en o(n)
31Mise en uvre par des listes (3)
- opérations abstraites (suite)
- supprimer(x, C) dépend
- si C est un ensemble
- si ajouter a été opération paresseuse
- de la représentation
- énumération
- parcours séquentiel de la liste(en o(n) mais on
ne pourra jamais faire mieux) - conclusion au moins une des trois opérations
fondamentales est dans le pire des cas et en
moyenne en o(n) ce qui est trop coûteux si n est
grand
32Mise en uvre par des listes (4)
- cas particuliers
- recherche autoadaptative
- idée mettre les éléments les plus recherchés
plutôt en début de liste (quand on connaît leur
probabilité) - représentation par cellules chaînées
- recherche dichotomique (liste triée)
- représentation par tableau et complexité en
moyenne et dans le pire des cas en o(log n) - mais représentation par tableau ne facilite pas
les adjonctions et suppressions (en o(n))
33Mise en uvre par des listes (5)
- conclusion
- recherche en o(n) (pire des cas et moyenne)
- sauf recherche dichotomique (liste triée et
représentation par tableau) en o(log n) - insertion et/ou suppression en o(n)
- pour faire mieuxil faut des représentations plus
sophistiquées - arbres binaires de recherche
- table de hachage
34Auto-évaluation cours 7
- Quest-ce quun arbre général ?
- Quelles sont les différentes représentations dun
arbre général ? - Quelles sont les opérations de base du TDA
dictionnaire ? - Quels sont les avantages et les inconvénients des
représentations par - Vecteur caractéristique ?
- Liste ?