13.07.2015 Views

Arbres binaires de recherche

Arbres binaires de recherche

Arbres binaires de recherche

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Introduction<strong>Arbres</strong> <strong>binaires</strong> <strong>de</strong> <strong>recherche</strong>Algorithmes sur les ABRPour aller plus loin<strong>Arbres</strong> <strong>binaires</strong> <strong>de</strong> <strong>recherche</strong>Thomas BlancTerminale <strong>de</strong> l’école Alsacienne22 novembre 2012ThomasCours d’informatique


Introduction<strong>Arbres</strong> <strong>binaires</strong> <strong>de</strong> <strong>recherche</strong>Algorithmes sur les ABRPour aller plus loin1 IntroductionStructures <strong>de</strong> rangementsLes arbres2 <strong>Arbres</strong> <strong>binaires</strong> <strong>de</strong> <strong>recherche</strong>Idée générale3 Algorithmes sur les ABRMaximum, minimum, successeur et prédécesseurFusionSuppression4 Pour aller plus loinDéfauts <strong>de</strong> la structure d’ABRAutres structures <strong>de</strong> donnéesThomasCours d’informatique


Introduction<strong>Arbres</strong> <strong>binaires</strong> <strong>de</strong> <strong>recherche</strong>Algorithmes sur les ABRPour aller plus loinStructures <strong>de</strong> rangementsLes arbres1 IntroductionStructures <strong>de</strong> rangementsLes arbres2 <strong>Arbres</strong> <strong>binaires</strong> <strong>de</strong> <strong>recherche</strong>Idée générale3 Algorithmes sur les ABRMaximum, minimum, successeur et prédécesseurFusionSuppression4 Pour aller plus loinDéfauts <strong>de</strong> la structure d’ABRAutres structures <strong>de</strong> donnéesThomasCours d’informatique


Introduction<strong>Arbres</strong> <strong>binaires</strong> <strong>de</strong> <strong>recherche</strong>Algorithmes sur les ABRPour aller plus loinComment ranger les donnéesStructures <strong>de</strong> rangementsLes arbresStructures conteneursLes listesLes tableauxLes tasComment faire une structure souple tout en gardant un accèsrapi<strong>de</strong> ?ThomasCours d’informatique


DéfinitionsIntroduction<strong>Arbres</strong> <strong>binaires</strong> <strong>de</strong> <strong>recherche</strong>Algorithmes sur les ABRPour aller plus loinStructures <strong>de</strong> rangementsLes arbresArbreUn arbre est une structure composée <strong>de</strong> nœuds. Tout nœud a uncertain nombre <strong>de</strong> fils qui sont eux aussi <strong>de</strong>s nœuds. Tout nœud aun seul parent sauf un qui n’en a pas et que l’on nomme racine.Notions utilesArité : L’arité d’un nœud et le nombre <strong>de</strong> fils qu’il a. L’aritéd’un arbre est l’arité maximale <strong>de</strong> ses nœuds.Feuille : Une feuille est un nœud d’arité 0.Hauteur : La hauteur d’un nœud est sa distance à la racine (quia donc une hauteur 0). La hauteur d’un arbre est lahauteur maximale <strong>de</strong> l’arbre.Forêt : Une forêt est un ensemble d’arbres.ThomasCours d’informatique


Introduction<strong>Arbres</strong> <strong>binaires</strong> <strong>de</strong> <strong>recherche</strong>Algorithmes sur les ABRPour aller plus loinReprésetation en mémoireStructures <strong>de</strong> rangementsLes arbresStructure effective <strong>de</strong> l’arbreOn prend chaque nœud comme un couple comprenant d’un coté lavaleur contenu dans le nœud, <strong>de</strong> l’autre une liste ou un tableaucontenant les adresses mémoires <strong>de</strong>s fils.Cette structure peut aisément être étendue puisque, tout comme laliste, le nombre d’éléments <strong>de</strong> l’arbre n’est pas déterminé àl’avance, même si l’arité est fixée.Dans certaines représentation, les nœuds ont aussi un pointeur versleur père.ThomasCours d’informatique


Introduction<strong>Arbres</strong> <strong>binaires</strong> <strong>de</strong> <strong>recherche</strong>Algorithmes sur les ABRPour aller plus loinIdée générale1 IntroductionStructures <strong>de</strong> rangementsLes arbres2 <strong>Arbres</strong> <strong>binaires</strong> <strong>de</strong> <strong>recherche</strong>Idée générale3 Algorithmes sur les ABRMaximum, minimum, successeur et prédécesseurFusionSuppression4 Pour aller plus loinDéfauts <strong>de</strong> la structure d’ABRAutres structures <strong>de</strong> donnéesThomasCours d’informatique


Introduction<strong>Arbres</strong> <strong>binaires</strong> <strong>de</strong> <strong>recherche</strong>Algorithmes sur les ABRPour aller plus loinRecherche dichotomiqueIdée généralePrincipe <strong>de</strong> <strong>recherche</strong>Comment trouver rapi<strong>de</strong>ment un mot dans le dictionnaire avec unminimum <strong>de</strong> questions dont les réponses sont oui ou non ?Prendre le mot au milieu du dictionnaire, <strong>de</strong>man<strong>de</strong>r si le motrecherché est avant ou après, et recommencer sur la partie dudictionnaire non-encore éliminée.La découverte du mot est alors en O(log n) où n est la taille dudictionnaire.ThomasCours d’informatique


Introduction<strong>Arbres</strong> <strong>binaires</strong> <strong>de</strong> <strong>recherche</strong>Algorithmes sur les ABRPour aller plus loinArbre Binaire <strong>de</strong> RechercheIdée généraleDéfinitionUn arbre binaire <strong>de</strong> <strong>recherche</strong> (ABR) est un arbre d’arité 2 où pourtout nœud s étiqueté par le nombre n on a :Tous les nœuds dans le sous-arbre du fils gauche <strong>de</strong> s ont <strong>de</strong>sétiquettes plus petites que n.Tous les nœuds dans le sous-arbre du fils droit <strong>de</strong> s ont <strong>de</strong>sétiquettes plus gran<strong>de</strong>s que n.ThomasCours d’informatique


Introduction<strong>Arbres</strong> <strong>binaires</strong> <strong>de</strong> <strong>recherche</strong>Algorithmes sur les ABRPour aller plus loinRecherche dans un ABRIdée généraleRechercheSi l’on cherche le nœud s étiqueté x. Le temps <strong>de</strong> <strong>recherche</strong> seraproportionnel à la hauteur du nœud s.En effet, il suffit pour chaque nœud analysé <strong>de</strong> comparer l’étiquetteà x, et <strong>de</strong> choisir en fonction si l’on <strong>de</strong>scend à gauche ou à droite.Cette métho<strong>de</strong> permet aussi <strong>de</strong> mettre rapi<strong>de</strong>ment un nœud dansl’arbre, en ajoutant le nœud en <strong>de</strong>ssous d’une feuille.ThomasCours d’informatique


Introduction<strong>Arbres</strong> <strong>binaires</strong> <strong>de</strong> <strong>recherche</strong>Algorithmes sur les ABRPour aller plus loinMaximum, minimum, successeur et prédécesseurFusionSuppression1 IntroductionStructures <strong>de</strong> rangementsLes arbres2 <strong>Arbres</strong> <strong>binaires</strong> <strong>de</strong> <strong>recherche</strong>Idée générale3 Algorithmes sur les ABRMaximum, minimum, successeur et prédécesseurFusionSuppression4 Pour aller plus loinDéfauts <strong>de</strong> la structure d’ABRAutres structures <strong>de</strong> donnéesThomasCours d’informatique


Introduction<strong>Arbres</strong> <strong>binaires</strong> <strong>de</strong> <strong>recherche</strong>Algorithmes sur les ABRPour aller plus loinTrouver les éléments particuliers...Maximum, minimum, successeur et prédécesseurFusionSuppressionMaximum et minimumPour trouver le maximum (resp. minimum), il suffit <strong>de</strong> toujours<strong>de</strong>scendre vers la droite (resp. la gauche).Prédécesseur et successeurPour trouver le successeur (resp. prédécesseur) d’un élément x, ilfaut prendre le minimum (resp. le maximum) du sous-arbrecontenant les éléments plus grands (resp. plus petits) que x.ThomasCours d’informatique


Fusion d’ABRIntroduction<strong>Arbres</strong> <strong>binaires</strong> <strong>de</strong> <strong>recherche</strong>Algorithmes sur les ABRPour aller plus loinMaximum, minimum, successeur et prédécesseurFusionSuppressionFusion <strong>de</strong> <strong>de</strong>ux arbresOn aimerait fabriquer un ABR contenant l’union <strong>de</strong>s élémentscontenu dans <strong>de</strong>ux ABR. Peut-on faire cela en un minimumd’étapes ?Et si l’on sait que tous les éléments <strong>de</strong> l’arbre A sont plus petitsque tous les éléments <strong>de</strong> l’arbre B ?ThomasCours d’informatique


Introduction<strong>Arbres</strong> <strong>binaires</strong> <strong>de</strong> <strong>recherche</strong>Algorithmes sur les ABRPour aller plus loinSuppression d’un élémentMaximum, minimum, successeur et prédécesseurFusionSuppressionComment supprimer un nœud ?Supprimer une feuille est facile, mais si le nœud est au milieu <strong>de</strong>l’arbre ?La réponse...ThomasCours d’informatique


Introduction<strong>Arbres</strong> <strong>binaires</strong> <strong>de</strong> <strong>recherche</strong>Algorithmes sur les ABRPour aller plus loinDéfauts <strong>de</strong> la structure d’ABRAutres structures <strong>de</strong> données1 IntroductionStructures <strong>de</strong> rangementsLes arbres2 <strong>Arbres</strong> <strong>binaires</strong> <strong>de</strong> <strong>recherche</strong>Idée générale3 Algorithmes sur les ABRMaximum, minimum, successeur et prédécesseurFusionSuppression4 Pour aller plus loinDéfauts <strong>de</strong> la structure d’ABRAutres structures <strong>de</strong> donnéesThomasCours d’informatique


Introduction<strong>Arbres</strong> <strong>binaires</strong> <strong>de</strong> <strong>recherche</strong>Algorithmes sur les ABRPour aller plus loinDéfauts <strong>de</strong> la structure d’ABRAutres structures <strong>de</strong> donnéesUn ABR peut avoir une gran<strong>de</strong> hauteurProblème <strong>de</strong> l’arbre filaireSi les nœuds sont entrés dans l’arbre dans l’ordre, on aura un arbreen forme <strong>de</strong> liste. La <strong>recherche</strong> sera alors beaucoup moins efficaceque prévu !Notons que si les nœuds sont entrés au hasard, l’ABR seraéquilibré avec une bonne probabilité.SolutionsIl existe diverses métho<strong>de</strong>s pour s’assurer d’avoir un ABR équilibré.Elles consistent en général à retenir en plus <strong>de</strong> l’étiquette du nœudla hauteur <strong>de</strong> ses sous-arbre et <strong>de</strong> prendre cela en compte lorsquela hauteur est modifiée.ThomasCours d’informatique


Faciliter la fusionIntroduction<strong>Arbres</strong> <strong>binaires</strong> <strong>de</strong> <strong>recherche</strong>Algorithmes sur les ABRPour aller plus loinDéfauts <strong>de</strong> la structure d’ABRAutres structures <strong>de</strong> donnéesStructures <strong>de</strong> données avancéesOn a vu que la fusion sur un ABR n’était pas évi<strong>de</strong>nte. Il existe <strong>de</strong>sstructures plus complexes encore qui permettent à la fois lesmêmes performances en <strong>recherche</strong> et insertion, tout ayant unebonne vitesse <strong>de</strong> fusion.On verra peut-être certaines <strong>de</strong> ces structures à la fin <strong>de</strong> l’année...ThomasCours d’informatique

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!