Arbres binaires complets

Slides:



Advertisements
Présentations similaires

Advertisements

Cours n° 7 Standard Template Library II.
Au programme du jour …. Un peu plus de structures de données
1 UMLV Optimalité des tris par comparaisons : O(n logn) Classements linéaires Tris lexicographiques Tri lexicographique.
Cours d’Algorithmique
L’ interruption de boucle
Exercice 1 1 (père) et 1 (fils) 1 (père) et 0 (fils)
Chapitre 3 (fin). Les arbres AVL
IPA – Catherine Faron Zucke et Anne Marie Deryr. suite ordonnée d'éléments de taille variable ArrayList liste; liste = new ArrayList (); Ne peuvent contenir.
Cours d’Algorithmique
Structures de données et algorithmes – C5 Maria-Iuliana Dascalu, PhD
OCaml – Les arbres L3 MI.
Les structures de données arborescentes
Arbre binaire de recherche
Les algorithmes: complexité et notation asymptotique
IFT-2000: Structures de Données
Chapitre VII. Tri Tri par tas Tri rapide.
RECURSIVITE ARBRES BINAIRES
Arbre Rouge Noir.
Les fichiers indexés (Les B-arbres)
LES ARBRES IUP 2 Génie Informatique
Arbres Rouge noir Démo : INF3105 Structures de données et algorithmes
Structures de données IFT-2000
Structures de données IFT-2000
Structures de données IFT-2000
Structures de données IFT-2000
IFT Structures de données
Présentation Structures de Données et TDA
1 PROTOTYPE PGC++ Vecteur_3D DÉFINITION. 2 class Vecteur_3D { private : float vx, vy, vz, vw; // Représentation en coordonnées homogènes. public : Vecteur_3D();
Les arbres binaires.
Les Graphes. Graphes Un graphe G = (V, E) consiste en un ensemble V de noeud, et un ensemble E darêtes, tels que chaque arête dans E relie une paire de.
Piles Premier arrivé, dernier servi: LIFO (Last In, First Out) Liste à usage restreint: Enlève et insère un élément seulement à un bout de la liste. Notation:
Les arbres et tas binomiaux
CSI2520 Un arbre binaire est une structure pouvant contenir des données. Chaque élément de l'arbre contient une donnée et a au plus un 'parent' et deux.
Exposé en structures de données
Structures de données IFT-2000
Structures de données IFT-10541
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Semaine 12 (2 ième partie) Les B-arbres Département d’informatique et de génie logiciel Édition septembre.
Structures de données IFT-2000 Abder Alikacem Semaine 11 Gestion des arbres binaires de tri et de recherche. Les arbres cousus. Les arbres n-aires Département.
Structures de données IFT-2000 Abder Alikacem Retour sur les listes ordonnées Département dinformatique et de génie logiciel Édition Septembre 2009.
201 UMLV  Type « dictionnaire » sous-ensembles finis de E (ordonné) avec les opérations : Ens_vide :  Ens Ajouter : Ens x Elément  Ens Enlever.
Transformer pour régner
Structures de données IFT-2000
Structures de données IFT-2000
Mathématiques Discrètes
Méthodes de tri.
MIGO ET COMPLEXITE1 ARBRES EQUILIBRES Définition : On dit qu’un arbre binaire est H équilibré si en tout nœud de l’arbre, les hauteurs des sous-arbres.
Arbres binaires et tables de hachage
Structures de données avancées : Arbres ‘Left Leaning Red-Black’
B.Shishedjiev - Modèle relationnel
Liste Une liste est une séquence d’éléments. Concept important: Chaque élément possède une position dans la liste. Notation: De quelles opérations a-t-on.
Let rec f n = if n = 0 then true else g (n-1) g n = if n = 0 then false else f (n-1) val f : int -> bool = val g : int -> bool =
Arbres AVL Arbres AVL.
1 UMLV  FICHIERS Mémoire de masse découpée en blocs Fichier :liste chaînée de blocs, ou arbre de blocs (répertoires - fichiers)‏ Bloc d’éléments Bloc.
Dictionnaire On veut une structure permettant d’insérer, d’enlever et de rechercher des enregistrements. Concepts importants: Clef de recherche: Décrit.
Structures de données IFT-2000
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Semaine 10 Les algorithmes de recherche Les structures arborescentes Département d’informatique et de génie.
VI. Tri par tas.
Les monceaux (Heap) Monceaux Propriétés des Monceaux
Arbres Arbres Arbres binaires Propriétés des arbres binaires
Arbres AVL - Hauteur d’un arbre AVL - Insertion et restructuration
4/25/2017 4:30 PM Arbres (2,4) CSI2510 CSI2510.
CSI25101 Tri Plus efficace. CSI25102 Tri récursif Le tri récursif divise les données de grande taille en deux presque moitiés et est appelé récursivement.
. Le B-Arbre.
Les arbres Arbres binaires
VI. Tri par tas (Heap sort)
Les arbres généraux.
Arbre binaire.
Transcription de la présentation:

Arbres binaires complets Arbre binaire plein : Chaque nœud possède 0 ou 2 enfants. Arbre binaire complet: Si la hauteur de l’arbre est d, alors les d-1 premiers niveaux sont complets. Les nœuds du dernier niveau sont tous à gauche. These terms can be hard to distinguish. Students will need to remember which is which, since this notation will be used several times during the course.

Théorème des arbres pleins (1) Theorème: Le nombre de feuilles dans un arbre binaire plein est un de plus que le nombre de nœuds internes. Preuve (par induction mathématique): Base: Avec un seul nœud interne, on a deux feuilles. Hypothèse d’induction: Supposons que tous les arbres binaires pleins avec n-1 nœuds internes possèdent n feuilles. This theorem is important, because it helps us to calculate space requirements. It tells us how many nodes are internal and how many are leaf. We need to know this if we have separate implementations for internal and leaf nodes

Théorème des arbres pleins (2) Pas d’induction: Étant donné un arbre binaire plein avec n nœuds internes, on choisit un nœud interne I avec 2 enfants. On enlève les enfants de I pour obtenir un arbre T’. Par hypothèse d’induction, T’ est un arbre binaire plein avec n feuilles. Si on replace les deux enfants de I, le nombre de nœuds internes augmente de 1 et le nombre de feuilles augmente de 1.

Arbre binaire complets (1) -- 10 8 6 4 2 Frère droite 9 7 5 3 1 Frère gauche Fils de droite 11 Fils de gauche Parent Position This is a good example of logical representation vs. physical implementation. Since the complete binary tree is so limited in its shape (there is only one possible shape for n nodes), it is reasonable to expect that space efficiency can be achieved.

Arbre binaire complets(2) Parent (r) = (r-1)/2 si r0 Leftchild(r) = 2r+1 si 2r+1 < n Rightchild(r) = 2r+2 si 2r+2 < n Leftsibling(r) = r-1 si r>0 est pair Rightsibling(r) = r+1 si rn est impair Parent(r) = (r-1)/2 if r <> 0 and r < n. Leftchild(r) = 2r + 1 if 2r + 1 < n. Rightchild(r) = 2r + 2 if 2r + 2 < n. Leftsibling(r) = r - 1 if r is even, r > 0, and r < n. Rightsibling(r) = r + 1 if r is odd and r + 1 < n.

Monceau (heap) Monceau (ou tas): Arbre binaire complet possédant la propriété suivante: Monceau-min: La valeur d’un nœud est plus petite que la valeur de ses enfants. Monceau-max: La valeur d’un nœud est plus grande que la valeur de ses enfants. Les valeurs sont partiellement ordonnées. Représentation:Tableau.

Monceau: TDA template<class Elem> class maxheap{ private: Elem* Heap; int size; int n; void siftdown(int); public: maxheap(Elem* h, int num, int max); int heapsize() const; bool isLeaf(int pos) const; int leftchild(int pos) const; int rightchild(int pos) const; int parent(int pos) const; bool insert(const Elem&); bool removemax(Elem&); bool remove(int, Elem&); void buildHeap(); };

Insérer un élémement template <class Elem> bool maxheap<Elem>::insert(const Elem& val) { if (n >= size) return false; int curr = n++; Heap[curr] = val; while ( (curr!=0) && (Heap[curr] >= Heap[parent(curr)] ) { swap(Heap, curr, parent(curr)); curr = parent(curr); } return true;

Enlever la valeur maximum template <class Elem> bool maxheap<Elem>::removemax(Elem& it) { if (n == 0) return false; swap(Heap, 0, --n); if (n != 0) siftdown(0); it = Heap[n]; return true; }

Siftdown (1) template <class Elem> void maxheap<Elem>::siftdown(int pos) { while (!isLeaf(pos)) { int j = leftchild(pos); int rc = rightchild(pos); if ((rc<n) && (Heap[j]Heap[rc])) j = rc; if (Heap[pos]Heap[j]) return; swap(Heap, pos, j); pos = j; }

Construire le monceau (a) (4-2) (4-1) (2-1) (5-2) (5-4) (6-3) (6-5) (7-5) (7-6) (b) (5-2), (7-3), (7-1), (6-1) How to get a good number of exchanges? Induction leads to the following algorithm: Heapify the root’s subtrees, then push the root to the correct level.

Siftdown (2)

Coût pour construire un monceau Pour construire le monceau rapidement: On commence au bas de l’arbre. On appelle siftdown pour chaque noeud. Inutile d’appeler siftdown pour les feuilles. log n  (i - 1) n/2i = (n). i=1 car (i-1) is number of steps down, n/2i is number of nodes at that level.

Tri par monceau (1) template <class Elem> void heapsort(Elem A[], int n) { Elem mval; maxheap<Elem> H(A, n, n); for (int i=0; i<n; i++) H.removemax(mval); }

Tri par monceau (2) template <class Elem> void sort(Elem* array, int n) { heapsort<Elem>(array, n); } Temps: (n log n)