Arbres binaires de recherche [br] Algorithmique
Un arbre binaire de recherche est une structure de donnée qui permet de représen- sont l'insertion la suppression et la recherche d'une valeur.
INF601 : Algorithme et Structure de données - Cours 2 : TDA Arbre
27 févr. 2010 INF601 : Algorithme et Structure de données ... adjonction et suppression peuvent être en O(n) ... celle de l'arbre binaire de recherche ...
Algorithmes sur les arbres binaires de recherche
Seconde implémentation : Arbre Binaire de Recherche Recherche puis suppression dans le cas où l'élément est dans une feuille. `a supprimer.
ARBRES BINAIRES DE RECHERCHE
temps de ?(logn) au pire tableau trié : insertion/suppression en ?(n) au pire cas Dans un arbre binaire de recherche chaque nœud a une clé.
Chapitre 2 Structures de données arborescentes : arbres binaires
2. Arbres binaires de recherche. 2.1 Algorithmes de recherche dans un ABR. 2.2 Insertion et suppression dans un ABR. 2.3 Équilibrage des ABR.
CONCEPTION ALGORITHMIQUE 1. Programmation Dynamique La
des arbres binaires de recherche optimaux. 1. Programmation Dynamique Nous allons décomposer l'algorithme de suppression en trois parties.
Arbres rouge et noir [rn] Algorithmique
insertion et suppression la recherche étant celles des arbres binaires de Un arbre binaire de recherche est un arbre rouge et noir s'il satisfait les ...
Révision Final
Si k est dans l'arbre l'algorithme chercher(k) se terminera sur un noeud interne v. Supprimer dans un arbre binaire de recherche (suite).
Arbres AVL AV - L
exécuter l'algorithme d'insertion d'un arbre binaire de recherche. Pour supprimer un élément de clé k dans un arbre AVL on commence par.
Rappels algorithmiques
parcours pour les arbres binaires les algorithmes de recherche et de mise à suppression de la clé à la racine dans l'arbre binaire de recherche de la.
Arbres binaires de recherche [br] Algorithmique - Unisciel
Un arbre binaire de recherche est une structure de donn ee qui permet de repr esen-ter un ensemble de valeurs si l’on dispose d’une relation d’ordre sur ces valeurs Les op erations caract eristiques sont l’insertion la suppression et la recherche d’une valeur Ces op erations sont peu cou^teuses si l’arbre n’est pas trop d es
Algorithmique avancée - Arbres binaires de recherche
Un arbre binaire de recherche (ABR) est un arbre binaire dans lequel chaque nœud possède une clé telle que • chaque nœud du sous-arbre gauche possède une clé inférieure ou égale à celle du nœud considéré • chaque nœud du sous-arbre droit possède une clé supérieure ou égale à celle-ci
ARBRES BINAIRES DE RECHERCHE - Université de Montréal
A l’aide d’un arbre de recherche on peut impl` ementer une table de symboles d’une´ maniere tr` es ef?cace ` Operations :´ recherche d’une valeur particuliere` insertion ou suppression d’une valeur recherche de min ou max et des autres Pour la discussion des arbres binaires de recherche on va considerer les pointeurs´
Algo 2 séance 6 Arbres binaires de recherche (ABR (suite
Algo 2 { s eance 6 Arbres binaires de recherche (ABR (suite) : suppression et arbres equilibr es Franck Hetroy et Denis Trystram mars 2017 1/37 ECOLE NATIONALE SUPERIEURE 1 / 37
Searches related to arbre binaire de recherche algorithme suppression PDF
mais insertion/suppression en (1) [si non-tri´e]? tableau tri´e : recherche binaire — temps de (log n) au pire mais insertion/suppression en ( n) au pire cas 13 2 Arbre binaire de recherche (ABR) (fr) 9 6 12 3 8 11 15 1 4 7 19 chaque nœud interne poss`ede une cl ´e : les cl es sont´ comparables De?nition 13 1 ´ Dans un arbre binaire
Qu'est-ce que l'arbre binaire de recherche?
Un arbre binaire de recherche (ABR) est un type de données abstrait constitué d’un couple (clé,valeur). Chaque élément a une clé unique, i.e une clé identi?e un élément de façon unique. Les clés dans un sous arbre gauche non vide doivent être inférieures à la clé de la racine de ce sous arbre.
Comment manipuler un arbre binaire?
?Un arbre binaire est : ? soit l’arbre vide ? soit un nœud qui a exactement deux fils (éventuellement vides) ?Pour manipuler les arbres binaires, on a besoin de primitives ? d’accès ? de test ? de construction Licence Lyon1 - UE LIF3 M. Lefevre - N. Guin - F. Zara
Quelle est la structure hiérarchique d'un arbre binaire?
NSI Terminale S2 : Structures hiérarchiques : Arbres 2/19 binaire. Dans un arbre binaire, on a au maximum 2 branches qui partent d'un élément (pour le système de fichiers, on a 7 branches qui partent de la racine : ce n'est donc pas un arbre binaire). Dans la suite nous allons uniquement travailler sur les arbres binaires 2. Arbre binaire
Comment supprimer un nœud d’un arbre binaire de recherche ?
Supprimez récursivement minnode du sous-arbre de droite. Retournez le pointeur vers la racine d’origine. En moyenne, la complexité temporelle de la suppression d’un nœud d’une BST est de l’ordre de la hauteur de l’arbre binaire de recherche. En moyenne, la hauteur d’une BST est de O (logn).
CONCEPTION ALGORITHMIQUE
OLIVIER BODINI
R esum´e.Nous abordons, dans cette s´eance, les algorithmes de type Programmation Dynamique. Nous illustrons ce type de programmation par un premier exemple introductif concernant le calcul dun-i`eme nombre de Fibonacci, puis par un algorithme plus cons´equent permettant de construire des arbres binaires de recherche optimaux.1.Programmation Dynamique
La programmation dynamique, comme le principe Diviser pour R´egner, est un principe algo- rithmique reposant sur une approche r´ecursive des probl`emes. Certains probl`emes, quand on lesscinde, font appel plusieurs fois aux mˆemes sous-probl`emes, ou `a des sous-probl`emes qui ne sont
pas ind´ependants les uns des autres. Dans ce cas, les m´ethodesDiviser pour R´egner ne sont pas
aussi efficaces. En voici un exemple tr`es simple. La suite de Fibonacci est d´efinie r´ecursivement par
F0= 0,F1= 1 etFn+2=Fn+1+Fnpourn≥0. Supposons que l"on cherche `a calculer lek-i`eme
terme de cette suite. Si on utilise directement le principe Diviser pourR´egner suivant : Diviser :On remarque que pour calculerFk, il suffit de savoir calculerFk-1etFk-2. Regner :On r´esout le probl`eme r´ecursivement pourFk-1etFk-2si l"indice est sup´erieur `a 2,
sinon on remplace directement.Combiner :On additionneFk-1etFk-2.
On obtient le pseudo-code ci-dessous :
Algorithme 1: FIBO
Entr´ees: Un entier positifn.
Sorties: Len-i`eme nombre de Fibonacci.
FIBO(n)1
sin <2alors2 retournern3 sinon4 retournerFIBO(n-1)+FIBO(n-2)5Analyse de l"algorithme FIBO :
Preuve de Terminaison :
Imm´ediat.
Preuve de Validit´e :
Imm´ediat.
Analyse de la Complexit´een nombre d"additions : On a clairement la relation de r´ecurrence suivante pour le nombre d"additions :T(0) = 0,T(1) = 0 etT(n) =T(n-1)+T(n-2)+1. Un calcul rapide montre queT(n) = Θ(φn) avecφ= (1+⎷ 5)/2.Cette approche se r´ev`ele trop couteuse, car on calcule plusieurs fois les mˆemes sous-probl`emes
comme le montre le d´eroulement de l"algorithme pour trouverF5:1er niveau de r´ecursion : Pour trouverF5, on calculeF4etF3
2`eme niveau : Pour trouverF4, on calculeF3etF2et pour trouverF3, on calculeF2.
3`eme niveau : Pour trouverF3, on calculeF2
12Conceptions algorithmiques
En conclusion, pour trouverF5, on a calcul´e 1 foisF4, 2 foisF3, 3 foisF2. Un algorithme Diviser pour
R´egner fait plus de travail que n´ecessaire, en r´esolvant plusieurs fois des sous-probl`emes identiques.
Alors qu"´evidement, il aurait suffit de les calculer chacun une fois! La programmation dynamique permet de pallier `a ce probl`eme. Pour ce faire, un algorithme de type Programmation Dynamiquer´esout chaque sous-probl`eme une seule fois et m´emorise sa r´eponse dans un tableau, ´evitant ainsi le
recalcul de la solution chaque fois que le sous-probl`eme est rencontr´e de nouveau. Voici le pseudo-code d"un algorithme de type Programmation Dynamique pour trouver la valeur dun-i`eme nombre de Fibonacci. Attention, il faut faire l"initialisation du tableau en dehors de la fonction r´ecursive.Algorithme 2: FIGO-PG-REC
Entr´ees: Un entier positifn.
Sorties: Len-i`eme nombre de Fibonacci.
INITIALISATION(n)1
Cr´eer un tableauTde longueurninitialis´e `a Nil;2T[0] :=0; T[1] :=1;3
FIBO-PG-REC(n)4
sin <2alors5 retournern6 siT[n-1] =Nilalors7 T[n-1] := FIBO-PG-REC(n-1)(on verra pourquoi il est inutile de testerT[n-2] =Nil)8T[n] :=T[n-1] +T[n-2];9
retournerT[n]10Analyse de l"algorithme FIBO-PG-REC :
Preuve de Terminaison :
FIBO-PG-REC(n) s"arrˆete quandnvaut 0 ou 1. Comme FIBO-PG-REC(n) appelle uniquement (de mani`ere directe) FIBO-PG-REC(n-1). On en d´eduit que si FIBO-PG-REC(n-1) s"arrˆete, alors l"algorithme FIBO-PG-REC(n) s"arrˆete aussi. Par induction, on a la preuve de terminaison.Preuve de Validit´e :
et pourj > n, on aT[j] =Nil. C"est vrai quandnvaut 1. Supposons qu"`a la sortie de FIBO-PG- REC(n)Tsoit bien rempli jusqu"`a la casenet pourj > n, on aT[j] =Nil, alors quand on lance FIBO-PG-REC(n+1), `a la ligne 8, on fait l"appel FIBO-PG-REC(n) et donc le tableauTest alors rempli jusqu"`an, enfin ligne 9, on remplit correctement la casen+ 1. Donc `a la sortie de FIBO-PG-REC(n+1) le tableau est bien rempli jusqu"`an+1 et vide apr`es. Par r´ecurrence, la validit´e de
l"algorithme s"ensuit. Analyse de la Complexit´een nombre d"additions : FIBO-PG-REC(n+1) fait une addition ligne 9 et appelle FIBO-PG-REC(n) ligne 8. Donc le nombre d"additions v´erifie :T(0) = 0,T(1) = 0 etT(n+ 1) =T(n) + 1. Ceci donneT(n) = Θ(n). On privil´egiera donc cette approche quand la solution d"un probl`eme sur une instance de taillens"exprime en fonction de solutions du mˆeme probl`eme sur des instances de taille inf´erieure `anet
qu"une impl´ementation r´ecursive du type diviser pour R´egner conduit `a rappeler de nombreuses fois
les mˆemes sous-probl`emes.Institut Galil´ee, Ann´ee 12/133
Il y a en fait deux possibilit´es pour impl´ementer un algorithme de type Programmation Dyna-mique qui d´ependent de la mani`ere o`u l"on remplit le tableau (it´erative ou r´ecursive) :
- Une version r´ecursive, appel´ee aussimemoizing, pour laquelle `a chaque appel, on regarde dans
le tableau si la valeur a d´ej`a ´et´e calcul´ee . Si c"est le cas, on r´ecup`ere la valeur m´emoris´ee. sinon,
on la calcule et on la stocke. Cette m´ethode permet de ne pas avoir `a connaitre `a l"avance les valeurs `a calculer. C"est celle utilis´ee pour le pseudo-code de FIBO-PG-REC.- Une version it´erative o`u l"on initialise les cases correspondant auxcas de base. Puis on remplit
le tableau selon un ordre permettant `a chaque nouveau calcul de n"utiliser que les solutions d´ej`a calcul´ees. Cette derni`ere donne pour le calcul dun-i`eme nombre de Fibonacci, le pseudo-code suivant :Algorithme 3: FIGO-PG-IT
Entr´ees: Un entier positifn.
Sorties: Len-i`eme nombre de Fibonacci.
FIBO-PG-IT(n)1
Cr´eer un tableauTde longueurn; T[0] :=0; T[1] :=1;2 pouriallant de2`anfaire3T[i] :=T[i-1] +T[i-2]4
retournerT[n]5 On remarque que dans ce cas tr`es simple, il est mˆeme possible de nepas cr´eer de tableau en faisant :Algorithme 4: FIGO-PG-IT2
Entr´ees: Un entier positifn.
Sorties: Len-i`eme nombre de Fibonacci.
FIBO-PG-IT2(n)1
sin <2alors2 retournern3 i:= 0;j:= 1;4 pourkallant de2`anfaire5 temp:=j;j:=j+i;i:=temp;6 retournerj7Analyse de l"algorithme FIBO-PG-IT2 :
Preuve de Terminaison :
Imm´ediat.
Preuve de Validit´e :
Consid´erons l"invariant de boucle surksuivant :ivautFk-2etjvautFk-1. Quand on entre pour la premi`ere fois dans la boucle c"est vrai. Maintenant, supposons qu"au d´ebut de lak-i`eme it´eration, on ai=Fk-2etj=Fk-1, alors, ligne 4,jdevientFketiprend la valeur detemp qui estj=Fk-1. Donc l"invariance est pr´eserv´ee. A la sortie de la bouclejvaut doncFn, ce qui est le r´esultat attendu. Analyse de la Complexit´een nombre d"additions : FIBO-PG-IT2(n) fait une addition `a chaque it´eration de la boucle surk, soitn-1 additions.Ceci donne doncT(n) = Θ(n).
1.1.Arbres, Arbres binaires, Arbres binaires de recherche optimaux.
4Conceptions algorithmiques
1.1.1.Arbres.Passons un instant sur la d´efinition d"arbres. Nous introduisons icides arbres enra-
cin´es planaires (c"est `a dire ayant un sommet distingu´e (la racine)et tel que les fils d"un noeud form´e
une liste ordonn´ee. la notion d"arbres est omnipr´esente dans les sciences (arbres phylog´en´etiques en
biologie, arbres des choix et processus `a branchement en probabilit´e, arbres des appels r´ecursifs,
arbres d"expressions et arbres de recherche en informatiques),car elle permet de mod´eliser les struc-
tures hi´erarchiques simples. Pour ˆetre pr´ecis, nous commen¸cons par introduire la notion de classe
combinatoire. D´efinition 1.Uneclasse combinatoireC= (E,t)est constitu´e d"un (multi-)ensembleEet d"une fonctiontdeEdansNtel que pour toutk >0,{a?E,t(a) =k}est fini. Les ´el´ements deEsont appel´es desobjetset pour tout objeta,t(a)est appel´e latailledea.Nous allons construire r´ecursivement des classes combinatoires,pour se faire, il nous faut d´efinir
des classes de bases et des constructeurs.La classeE= ({?},??→0) est appel´ee la classeneutre, elle contient un unique ´el´ement de taille
0. La classeZ= ({?},??→1) est appel´ee la classeatomique, elle contient un unique ´el´ement de
taille 1. SoitC1= (E1,t1) etC2= (E2,t2), on d´efinit l"union disjointe, not´eC1+C2, comme la classe (E1?E2,t) o`ut(a) vautti(a) sia?Ei. Noter que sia?E1∩E2alorsaest pr´esent dansE1?E2 avec une multiplicit´e qui est la somme de sa multiplicit´e dansE1et dansE2.SoitC1= (E1,t1) etC2= (E2,t2), on d´efinit leproduit, not´eC1×C2, comme la classe (E1×E2,t)
o`ut((a,b)) vautt1(a) +t2(b).D´efinition 2.Unarbre binaireest soit vide, soit form´e d"un noeud, sa racine, et de deux sous-
arbres binaires, l"un appel´efils gauche, l"autrefils droit.Propri´et´e 1.La classeTdes arbres binaires dont la taille est le nombre de noeuds internes v´erifie
l"´equation structurelle r´ecursiveT=E+T × Z × T. On parle parfois d"arbre binaireplanairepour mentionner que l"on distingue la gauche de la droite. Nous nous int´eressons aux arbres permettant d"acc´eder `a des informations. Pour cela, chaquenoeud contient unecl´equi est g´en´eralement un nombre. Un arbre non vide est donc enti`erement
d´ecrit par le triplet (fils gauche, cl´e de la racine, fils droit). Cetted´efinition r´ecursive se traduit
directement en une sp´ecification de programmation.La d´efinition r´ecursive des arbres binaires (comme pour les listes)conduit naturellement `a des
algorithmes de manipulations qui seront r´ecursifs (voir TDs, pourdes algorithmes calculant la taille,
la hauteur, le nombre de feuilles,... ). Nous pouvons par exemple d´efinir 3 types de parcours des noeudsd"un arbre binaire.Le parcours pr´efixe :
Algorithme 5: Pr´efixe
Entr´ees: Un arbre binaireT.
Sorties: Rien mais affiche le parcours pr´efixe deT.Pr´efixe(T)1
siNonVide(T)alors2Afficher la cl´e de la racine(T);3
Pr´efixe(ArbreGauche(T));4
Pr´efixe(ArbreDroit(T));5
Le parcours suffixe ou postfixe :
Institut Galil´ee, Ann´ee 12/135
Algorithme 6: Suffixe
Entr´ees: Un arbre binaireT.
Sorties: Rien mais affiche le parcours suffixe deT.Suffixe(T)1
siNonVide(T)alors2Suffixe(ArbreGauche(T));3
Suffixe(ArbreDroit(T));4
Afficher la cl´e de la racine(T);5
Le parcours infixe :
Algorithme 7: Infixe
Entr´ees: Un arbre binaireT.
Sorties: Rien mais affiche le parcours infixe deT.Infixe(T)1
siNonVide(T)alors2Infixe(ArbreGauche(T));3
Afficher la cl´e de la racine(T);4
Infixe(ArbreDroit(T));5
D´efinition 3.Un arbre g´en´eral (planaire) est un arbre dont chaque noeuda un nombre quelconque
de fils ordonn´e de gauche `a droite.Dans point de vue informatique, il semble donc naturel de repr´esenter les fils d"un noeud dans une
liste (chaˆın´ee). Ainsi, chaque noeud contient deux r´ef´erences, celle `a son fils aˆın´e (le plus `a gauche
des fils), et celle `a son fr`ere cadet (celui qui se trouve juste `asa droite).Mais cette repr´esentation donne explicitement une correspondance entre un arbre g´en´eral et un
arbre binaire. Il suffit de rebaptiser le fils ain´e, fils gauche et le fr`ere cadet, fils droit. Figure 1.Correspondance arbres g´en´eraux - arbres binaires D´efinition 4.Un arbre binaireTest unarbre binaire de recherchesi, pour tout noeudsdeT, les contenus des noeuds du sous-arbre gauche dessont strictement inf´erieurs au contenu des, et que les contenus des noeuds du sous-arbre droit dessont strictement sup´erieurs au contenu des.Propri´et´e 2.Dans un arbre binaire de recherche, le parcours infixe fournit les contenus des noeuds
en ordre croissant.Propri´et´e 3.Si un noeud poss`ede un fils gauche, son pr´ed´ecesseur dans le parcours infixe est le
noeud le plus `a droite dans son sous-arbre gauche. Ce noeud n"est pas n´ecessairement une feuille,
mais il n"a pas de fils droit.6Conceptions algorithmiques
Figure 2.Un arbre binaire de recherche
1.1.2.Op´erations ´el´ementaires sur les arbres binaires de recherche.Nous allons proposer des algo-
rithmes pour la recherche, l"insertion et la suppression d"une clef dans un arbre binaire de recherche.
Algorithme 8: Recherche
Entr´ees: Un arbre binaireT, un entierx.
Sorties: .
Recherche(T,x)1
siVide(T)alors2 retournerFaux;3 six=racine(T)alors4 retournerVrai;5 sixRecherche(ArbreDroit(T,x));9
Algorithme 9: Ins´erer
Entr´ees: Un arbre binaireT, un entierx.
Sorties:Tavecxins´er´e.
Ins´erer(T,x)1
siVide(T)alors2 retournerCr´eerNoeud(Null,x,Null);3 sixArbreDroit(T)=Inserer(x, ArbreDroit(T));7
La suppression d"une cl´e dans un arbre est une op´eration plus complexe. Elle s"accompagne de la suppression d"un noeud. Comme on le verra, ce n"est pas toujoursle noeud qui porte la cl´e `asupprimer qui sera enlev´e. Soitsle noeud qui porte la cl´ex`a supprimer. Trois cas sont `a consid´erer
selon le nombre de fils du noeudx: - si le noeudsest une feuille, alors on l"´elimine; - si le noeudsposs`ede un seul fils, on ´elimineset on?remonte?ce fils.- si le noeudsposs`ede deux fils, on cherche le pr´ed´ecesseurtdes. On remplace la cl´e despar
la cl´e det, et on ´eliminet. Nous allons d´ecomposer l"algorithme de suppression en trois parties. La premi`ere, Supprimer,recherche le noeud portant la cl´e `a supprimer et appel la deuxi`eme, SupprimerRacine. Elle effectue
la suppression selon les cas ´enum´er´es ci-dessus. La troisi`eme, dernierDescendant est une m´ethode
auxiliaire qui calcule le pr´ed´ecesseur d"un n?ud qui a un fils gauche.Institut Galil´ee, Ann´ee 12/137
Algorithme 10: Supprimer
quotesdbs_dbs26.pdfusesText_32[PDF] arbre binaire complet
[PDF] dénombrement cours
[PDF] arbre de probabilité pile ou face
[PDF] arbre de probabilité seconde
[PDF] arbre probabilité conditionnelle
[PDF] arbre de décision exercices corrigés
[PDF] arbre de décision data mining
[PDF] cours arbre de décision
[PDF] classification par arbre de décision
[PDF] arbre de décision exemple
[PDF] arbre de décision cart
[PDF] construire un arbre de décision
[PDF] arbre de décision définition
[PDF] dénombrement cours 1ere s