Algorithmique et structures de donnes en C - PowerPoint PPT Presentation

1 / 34
About This Presentation
Title:

Algorithmique et structures de donnes en C

Description:

Delozanne, L2-S4-prog4, Paris 5, 2004-05. Elisabeth.Delozanne_at_math ... op rations de type abstrait. initialiser en o(N) for (i = 0 ; i N ; V[i] = 0, i ) ... – PowerPoint PPT presentation

Number of Views:151
Avg rating:3.0/5.0
Slides: 35
Provided by: deloz
Category:

less

Transcript and Presenter's Notes

Title: Algorithmique et structures de donnes en C


1
Algorithmique 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/
2
Cours 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


3
Cours 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

4
Dé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

5
Le 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.

6
Mise 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é

7
Arbres 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

8
Arbres 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

9
Tableau de pointeurs sur liste des fils
10
Arbres 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.

11
Arbre par liste des fils
12
TDA arbre par liste des fils (pointeurs)
  • typedef struct cell
  • struct arb cell
  • struct cell suivant
  • LISTEDARBRES
  • typedef struct arb
  • ELEMENT etiquette
  • LISTEDARBRES listeDesFils
  • ARBRE

13
Arbres 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

14
Arbres 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
16
Un autre exemple
17
Un autre
18
Parcours des arbres généraux
  • Équivalence entre les parcours selon la
    représentation

19
Plan
  • Arbres généraux
  • Recherche associative dictionnaire (1)

20
Recherche 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

21
Recherche 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

22
Recherche 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

23
Le 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

24
Recherche 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

25
Recherche 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

26
Vecteur 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

27
Vecteur 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)

28
Vecteur 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

29
Mise 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

30
Mise 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)

31
Mise 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

32
Mise 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))

33
Mise 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

34
Auto-é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 ?
Write a Comment
User Comments (0)
About PowerShow.com