Parcours d un arbre Arbres de recherche CHAPITRE 6. Arbres binaires. Karelle JULLIAN. MPSI, Option Info 2014/2015. Karelle JULLIAN

Dimension: px
Commencer à balayer dès la page:

Download "Parcours d un arbre Arbres de recherche CHAPITRE 6. Arbres binaires. Karelle JULLIAN. MPSI, Option Info 2014/2015. Karelle JULLIAN"

Transcription

1 CHAPITRE 6 Arbres binaires Lycée Kléber MPSI, Option Info 2014/2015

2 1 Définitions 2 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution 3 Recherche Complexité Insertion d un élément Suppression d un élément

3 1 Définitions 2 3

4 1 Définitions 2 3

5 Définition Soient deux ensembles de valeurs F (valeurs des feuilles) et N (valeurs des nœuds). Un arbre binaire sur ces ensembles est défini récursivement par : Toute feuille, élément de F, est un arbre. Si n est une valeur de nœud (n N), et g et d deux arbres, (n, g, d) est un nouvel arbre, de racine n, de fils gauche g, de fils droit d.

6 La définition que nous avons donnée ici permet de distinguer le type des informations portées respectivement par les nœuds et les feuilles d un arbre. On peut décrire un arbre avec f pour une simple feuille, ou encore avec (n1, (n2, f 21, f 22), (n3, f 31, (n4, f 41, f 42))), mais la représentation graphique qu on trouvera dans la figure suivante est sans doute plus claire.

7 n 1 n 2 n 3 f 21 f 22 f 31 n 4 f 41 f 42 Les feuilles sont dessinées à l aide de carrés, les nœuds par des cercles. On parle aussi de nœuds externes pour les feuilles et de nœuds internes pour les nœuds.

8 La racine de l arbre précédent est le nœud n 1, qui a deux fils, les arbres de racines n 2 et n 3. Le sous-arbre gauche de racine n 2 a pour fils gauche et droit deux feuilles, tandis que le sous-arbre droit de racine n 3 a respectivement pour fils gauche et droit une feuille et un nouveau sous-arbre de racine n 4, etc... On pourra par abus de langage citer un nœud, en pensant à l arbre ou au sous-arbre dont il est racine. Ainsi n 2 désignera-t-il tout aussi bien le nœud précis qui porte ce nom que tout le sous-arbre qui l admet pour racine.

9 La racine de l arbre précédent est le nœud n 1, qui a deux fils, les arbres de racines n 2 et n 3. Le sous-arbre gauche de racine n 2 a pour fils gauche et droit deux feuilles, tandis que le sous-arbre droit de racine n 3 a respectivement pour fils gauche et droit une feuille et un nouveau sous-arbre de racine n 4, etc... On pourra par abus de langage citer un nœud, en pensant à l arbre ou au sous-arbre dont il est racine. Ainsi n 2 désignera-t-il tout aussi bien le nœud précis qui porte ce nom que tout le sous-arbre qui l admet pour racine.

10 La racine de l arbre précédent est le nœud n 1, qui a deux fils, les arbres de racines n 2 et n 3. Le sous-arbre gauche de racine n 2 a pour fils gauche et droit deux feuilles, tandis que le sous-arbre droit de racine n 3 a respectivement pour fils gauche et droit une feuille et un nouveau sous-arbre de racine n 4, etc... On pourra par abus de langage citer un nœud, en pensant à l arbre ou au sous-arbre dont il est racine. Ainsi n 2 désignera-t-il tout aussi bien le nœud précis qui porte ce nom que tout le sous-arbre qui l admet pour racine.

11 1 Définitions 2 3

12 En Caml, on définit un type à deux paramètres qui sont les types respectifs des feuilles et des nœuds, à l aide de l instruction suivante : Défintion du type arbre binaire type ( f, n) arbre_binaire = Feuille of f Noeud of n * ( f, n) arbre_binaire * ( f, n) arbre_binaire ;; f et n sont des variables de type, Feuille et Noeud sont des constructeurs de type, le second étant binaire.

13 Un exemple d arbre binaire du type (int,string) arbre_binaire est : Noeud(1,Feuille a, Noeud(6,Noeud(4,Feuille c, Feuille d ) Feuille b ))

14 Exercice Définir alors les deux arbres f et (n1, (n2, f 21, f 22), (n3, f 31, (n4, f 41, f 42))) en caml.

15 Exercice Définir alors les deux arbres f et (n1, (n2, f 21, f 22), (n3, f 31, (n4, f 41, f 42))) en caml. let f = Feuille("f")and a = Noeud("n1", Noeud("n2",Feuille("f21"),Feuille("f22")), Noeud("n3",Feuille("f31"),Noeud("n4",Feuille("f41"), Feuille("f42")))) ;;

16 1 Définitions 2 3

17 Définition d un mot binaire Un mot binaire est ou bien le mot vide, noté ɛ, ou bien le résultat de la concaténation d un mot binaire et d un 0 ou d un 1. A tout mot binaire est donc naturellement associé un entier naturel, dont le mot choisi est une écriture en base 2. Par exemple, le mot binaire est associé à l entier 18. Par convention, le mot vide ɛ sera associé à.

18 On peut alors numéroter les éléments d un arbre en leur associant un mot binaire. Indexation des éléments On considère un arbre binaire. S il s agit d une feuille, on l indexe par le mot vide ɛ. Si en revanche il s agit d un nœud (n, g, d), on commence par indexer sa racine n par le mot vide, et par effectuer l indexation de tous les éléments de l arbre g et de l arbre d. On ajoute devant l index de chaque élément de l arbre g (resp. d) un 0 (resp. un 1).

19 Exercice Donner l indexation des éléments dans les deux arbres précédents

20 n 1 ɛ n 2 0 n 3 1 f f f n 4 11 f f

21 Exercice 1 Montrer que, dans l indexation précédente, si f 1 et f 2 sont deux feuilles distinctes d un même arbre et m 1, m 2 les mots binaires associés, on a m 1 m 2. 2 Peut-on avoir deux feuilles distinctes de mots m 1 et m 2 associés qui représenteraient le même entier en base 2?

22 Exercice 1 Montrer que, dans l indexation précédente, si f 1 et f 2 sont deux feuilles distinctes d un même arbre et m 1, m 2 les mots binaires associés, on a m 1 m 2. 2 Peut-on avoir deux feuilles distinctes de mots m 1 et m 2 associés qui représenteraient le même entier en base 2?

23 Correction 1 Pour un arbre réduit à une feuille, le résultat est clair. Soit a = (n, g, d) un arbre et soient f 1 et f 2 deux feuilles de cet arbre. Ou bien f 1 et f 2 sont des feuilles du même sous-arbre g de a. Dans ce cas leurs index m 1 et m 2 sont obtenus à partir des index m 1 et m 2 qu elles portent dans l arbre g grâce aux relations m 1 = 0m 1 et m 2 = 0m 2. Comme par hypothèse de récurrence m 1 m 2, on a bien m 1 m 2. Ou bien f 1 et f 2 sont des feuilles du même sous-arbre d de a. Dans ce cas on obtient de même m 1 = 1m 1 et m 2 = 1m 2, et on conclut de la même façon. Ou bien f 1 est une feuille de g et f 2 une feuille de d. Mais alors m 1 commence par un 0 et m 2 par un 1, et donc m 1 m 2. 2 oui on peut imaginer un arbre avec une feuille d index 010 et l autre d index 10. C est une notation un peu ambiguë. Voir la figure ci-après.

24 Correction 1 Pour un arbre réduit à une feuille, le résultat est clair. Soit a = (n, g, d) un arbre et soient f 1 et f 2 deux feuilles de cet arbre. Ou bien f 1 et f 2 sont des feuilles du même sous-arbre g de a. Dans ce cas leurs index m 1 et m 2 sont obtenus à partir des index m 1 et m 2 qu elles portent dans l arbre g grâce aux relations m 1 = 0m 1 et m 2 = 0m 2. Comme par hypothèse de récurrence m 1 m 2, on a bien m 1 m 2. Ou bien f 1 et f 2 sont des feuilles du même sous-arbre d de a. Dans ce cas on obtient de même m 1 = 1m 1 et m 2 = 1m 2, et on conclut de la même façon. Ou bien f 1 est une feuille de g et f 2 une feuille de d. Mais alors m 1 commence par un 0 et m 2 par un 1, et donc m 1 m 2. 2 oui on peut imaginer un arbre avec une feuille d index 010 et l autre d index 10. C est une notation un peu ambiguë. Voir la figure ci-après.

25 n 1 ɛ n 2 0 n 3 1 f n 4 01 f f f f Dans cet exemple, les feuilles f 41 et f 31 ont pour index respectifs 010 et 10 qui sont bien différents, certes, mais qui représentent le même nombre en écriture binaire, à savoir 2.

26 1 Définitions 2 3

27 Définition : profondeur d un nœud, d un arbre. On appelle profondeur d un nœud ou d une feuille d un arbre le nombre d arêtes qu il faut traverser pour descendre de la racine de l arbre au nœud ou la feuille visé(e). C est donc aussi la longueur du mot binaire qui l indexe dans l indexation décrite précédemment. La profondeur de l arbre est définie comme étant le maximum des profondeurs de ses éléments, ou encore, puisque les feuilles sont sous les nœuds, comme le maximum des profondeurs de ses feuilles.

28 Implémentation Ecrire un programme Caml qui prend en argument un arbre et renvoie sa profondeur.

29 Implémentation Ecrire un programme Caml qui prend en argument un arbre et renvoie sa profondeur. let rec profondeur = function Feuille(_) -> 0 Noeud(_,g,d) -> 1+ max (profondeur g) (profondeur d);;

30 Définition : taille d un arbre. La notion de taille n est pas uniformisée. On compte parfois les nœuds et les feuilles, ou bien seulement les nœuds, ou bien seulement les feuilles. Nous retiendrons la définition suivante : la taille d un arbre binaire est le nombre de ses nœuds. On la notera a si a désigne l arbre binaire.

31 Implémentation Ecrire deux programmes récursifs en Caml qui prennent chacun en argument un arbre et renvoient respectivement son nombre de feuilles et son nombre de nœuds.

32 Implémentation Ecrire deux programmes récursifs en Caml qui prennent chacun en argument un arbre et renvoient respectivement son nombre de feuilles et son nombre de nœuds. let rec nb_feuilles = function Feuille(_) -> 1 Noeud(_,g,d) -> (nb_feuilles g) + (nb_feuilles d);; let rec nb_noeuds = function Feuille(_) -> 0 Noeud(_,g,d) -> 1+ (nb_noeuds g) + (nb_noeuds d);;

33 1 Définitions 2 3

34 Définition : squelette binaire. Un squelette d arbre binaire est défini récursivement comme étant : soit le mot vide ; Si g et d sont deux squelettes, alors (g, d) est encore un squelette, de fils gauche g et de fils droit d.

35 On peut commencer par effacer toute l information portée par les nœuds et les feuilles. On obtient ainsi un arbre dessiné à l aide de cercles et de carrés. Si on supprime purement et simplement les feuilles, on obtient un squelette où seuls figurent les nœuds.

36 Dans la première étape, on a simplement effacé de l information, mais la seconde étape, elle, est irréversible, puisqu on peut, en retour, ajouter des feuilles à tous les endroits possibles.

37 Exemple Représentez le squelette ((, ), (, (, ))). Le mot ((,, )) est-il un squelette? en Caml type squelette = Vide Jointure of squelette * squelette ;

38 Exemple Représentez le squelette ((, ), (, (, ))). C est le squelette précédent Le mot ((,, )) est-il un squelette? en Caml type squelette = Vide Jointure of squelette * squelette ;

39 Exemple Représentez le squelette ((, ), (, (, ))). C est le squelette précédent Le mot ((,, )) est-il un squelette? Non en Caml type squelette = Vide Jointure of squelette * squelette ;

40 1 Définitions 2 3

41 Théorème Le nombre de feuilles d un arbre binaire de taille n est égal à n + 1. Un arbre et son squelette ont même taille.

42 Théorème Le nombre de feuilles d un arbre binaire de taille n est égal à n + 1. Un arbre et son squelette ont même taille. Preuve Soit respectivement n, p, n le nombre de nœuds de l arbre, son nombre de feuilles, et le nombre de nœuds de son squelette. Oublions l information portée par les nœuds et les feuilles. Par définition même d un arbre binaire, tout nœud de l arbre a exactement 2 fils qui sont soit une feuille soit un nouveau nœud. Inversement, toute feuille et tout nœud sauf la racine admet un nœud-père. Ainsi 2n est le nombre de nœuds et feuilles qui ne sont pas à la racine de l arbre, ou encore 2n = n + p 1, ce qui fournit l égalité souhaitée.

43 On se rappelle que la profondeur d un arbre est la profondeur maximale de ses nœuds et feuilles. Proposition Si k est la profondeur d un arbre binaire, son squelette est de profondeur k 1.

44 Un arbre binaire peut être très profond et il est plus intéressant de minorer sa profondeur, à une taille fixée. Dessinez deux squelettes de même taille et de profondeurs respectives minimale et maximale.

45 Deux squelettes de même taille, à gauche de profondeur maximale, à droite de profondeur minimale. Définitions

46 Théorème Soit s un squelette binaire non vide, de taille n et de profondeur k. Alors log n k n 1, où le log désigne le logarithme en base 2.

47 Preuve par induction structurelle : Soit s = (g, d) un squelette de taille n, de profondeur k. On notera n g et k g (resp. n d et k d ) la taille et la profondeur de g (resp. de d). Si g et d sont vides, n = 1 et k = 0 : l encadrement est correct. Si g est vide, mais pas d, n = 1 + n d et k = 1 + k d. L hypothèse de récurrence fournit : log(n d ) k d n d 1 D où k n d = n 1. La majoration est bien prouvée. Par ailleurs puisque n d 1, on a 1+ log n d = 1+log n d = log(2n d ) log(n d +1) = log n, ce qui fournit l encadrement souhaité.

48 Si d est vide, mais pas g, le raisonnement est analogue. Si ni d ni g ne sont vides, on a n = 1 + n d + n g et k = 1 + max(k d, k g ). Par hypothèse de récurrence : k 1 + max(n d 1, n g 1) 1 + max(n 2; n 2) = n 1. Pour la minoration, on a déjà k d log n d et k g log n g. Or l égalité n = 1 + n d + n g montre que n d ou n g est plus grand que n 1 2. Et d après l hypothèse de récurrence, max(k d ; k g ) log n 1 1, donc k log n 2 2. Dans le cas où n est pair, n = 2p + 2, cela donne k 1 + log(p + 1) = log(2(p + 1)) = log n.

49 Dans le cas où n est impair, n = 2p + 1, cela donne k 1 + log p = log(2p) = log(2p + 1) = log n. Cette dernière égalité provient de l encadrement : log(2p + 1) log(2p) Si on pose k = log p, on a 2 k p 2 k+1 1, d où 2p k+2 1 < 2 k+2. Ainsi log(2p + 1) < k + 2, et log(2p + 1) k + 1 = log(2p), ce qui conclut.

50 Théorème Soit a un arbre binaire non vide, de taille n et de profondeur k. Alors 1 + log n k n, où le log désigne le logarithme en base 2.

51 Définition : arbre complet On appelle arbre complet un arbre de profondeur k et de taille n = 2 k 1. Caractérisation Un arbre binaire est complet si et seulement si toutes ses feuilles sont à la même profondeur.

52 Preuve : Définitions Soit a un arbre complet, de taille n = 2 k 1 et de profondeur k. On sait qu il y a au moins une feuille à la profondeur k. Supposons qu une autre feuille soit à une profondeur strictement plus petite que k. On pourrait la remplacer par un nœud d où pendraient deux feuilles, de profondeur au plus égale à k. L arbre ainsi étendu serait de taille n + 1 (on ajoute un seul nœud, on retranche une feuille et en ajoute deux nouvelles), et toujours de profondeur k. Mais on a vu que k 1 + log(n + 1) = 1 + k, ce qui fournit la contradiction souhaitée. Montrons maintenant la réciproque : il suffit pour cela de compter le nombre de nœuds d un arbre dont toutes les feuilles sont de profondeur k. Ceci ne pose pas de problème particulier, il suffit de remarquer que chaque nœud interne a deux fils, et on trouve effectivement 2 k 1 = k 1 nœuds.

53 Un squelette d arbre complet.

54 Définition : arbre équilibré Un arbre est dit équilibré quand ses feuilles se répartissent sur au plus deux niveaux seulement. L équilibrage d un arbre est le critère essentiel d efficacité des algorithmes de recherche à l aide de structures d arbres.

55 Caractérisation des arbres équilibrés Un arbre binaire a de taille n et de profondeur k est équilibré si l une ou l autre des conditions équivalentes suivantes est vérifiée : 1 toute feuille de a est de profondeur k ou k 1 ; 2 l arbre obtenu à partir de a en supprimant toutes ses feuilles de profondeur k (i.e en remplaçant les nœuds-pères par des feuilles) est complet. Un arbre équilibré vérifie la condition k = 1 + logn.

56 Preuve : L équivalence entre (1) et (2) est claire. Montrons qu on a bien, pour un arbre équilibré a, la relation k = 1 + log n. Soit pour cela a l arbre complet obtenu par suppression dans a des feuilles de profondeur k. La taille de a est n, il possède n + 1 feuilles, et donc 1 n n n + 1. La profondeur de a est k 1, donc n = 2 k 1 1. Alors 1 n (2 k 1 1) 2 k 1, soit 2 k 1 n 2 k 1. On a bien log n = k 1.

57 Pour établir une formule permettant de compter les squelettes de taille n par récurrence, on s appuie sur le fait qu un tel squelette est constitué d une racine et de deux sous-arbres dont la somme des tailles vaut n - 1, l un de taille i, l autre de taille n i 1, ce qui conduit à la relation : n 1 S n = S i S n 1 i i=0 où S k désigne le nombre de squelettes de taille k. On convient que S 0 = 1.

58 Exercice Ecrire une fonction Caml récursive, prenant en argument l entier n et renvoyant la valeur de S n.

59 Exercice Ecrire une fonction Caml récursive, prenant en argument l entier n et renvoyant la valeur de S n. let rec S = function 0 -> 1 n -> let sum = ref 0 in for i= 0 to n-1 do sum :=!sum + S(i)*S(n-1-i) done;!sum;;

60 Voici quelques valeurs de S n : n S n Mais il y a une formule plus simple pour S n (on parle aussi de closed form ou de formule close) : on peut démontrer que S n = 1 ( 2n 2n + 1 n ). C est le n-ième nombre de Catalan. Soit par récurrence, soit en utilisant le formalisme des séries génératrices.

61 Posons S(x) = n 0 S n x n. sans se soucier de problèmes de convergence. D après la relation de récurrence vérifiée par S n, on a xs 2 (x) = x 2 S n x n = x ( n ) S k x k S n k x n k n 0 n 0 k=0 = x ( n ) S k S n k x n n 0 k=0 soit xs 2 (x) = x S n+1 x n = S n+1 x n+1 = S(x) 1. n 0 n 0

62 équation qui a pour seule solution continue en 0 la fonction S(x) = 1 1 4x. 2x Si l on admet la formule (1 x) α = + n=0 n α(α 1)...(α n + 1) ( 1) n! valable pour x < 1 et α réel, on obtient avec a 0 = 1 et pour n 1, a n = ( 4)n n 1 ( 1 n! 2 k k= x = a n x n n=0 ) = 2n n 1 n! k=0 x n (2k 1) = 2n n 1 n! k=0 (2n 2)! 2 n 1 (n 1)!

63 soit On en déduit que S(x) = + n=1 a n = 2 n ( 1 2n 2 n n 1 ( 2n 2 n 1 ). ) + ( x n 1 1 2n = n + 1 n n=0 ) x n ce qui donne le résultat si on admet que l on peut identifier les coefficients.

64 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution 1 Définitions 2 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution 3

65 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution Parcourir un arbre consiste à visiter successivement tous ses nœuds et ses feuilles, en effectuant éventuellement au passage un travail (compter les nœuds, modifier les étiquettes, chercher un nœud d une étiquette donnée...). On distingue deux types de parcours : parcours en largeur, parcours en profondeur.

66 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution Un exemple d arbre qui nous servira pour tous les parcours : a b c d e 6 4 5

67 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution 1 Définitions 2 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution 3

68 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution Définition Dans ce parcours, on visite la racine, puis ses fils (i.e les nœuds et feuilles de profondeur 1), puis les nœuds et feuilles de profondeur 2, et ainsi de suite, en convenant en général de visiter les nœuds et feuilles de gauche à droite. On parle aussi de parcours en ordre militaire.

69 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution Programmation On définit le type qui correspond à la description de notre arbre :une liste d éléments qui seront ou des feuilles ou des nœuds. type ( f, n) listing_d arbre = F of f N of n ;;

70 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution Programmation Puis le programme proprement dit de parcours : let parcours_militaire a = let rec parcours_rec noeuds_pendants = fun [] -> [] Feuille(f) :: reste -> (F f) :: (parcours_rec reste) noeud(n,g,d) :: reste -> (N n) :: (parcours_rec [ g ; d ])) in parcours_rec [a] ;; En revanche, il est difficile de reconstruire l arbre à partir de ce parcours.

71 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution 1 Définitions 2 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution 3

72 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution Définition Dans ce parcours, on visite d abord le sous-arbre gauche entièrement avant de visiter le sous-arbre droit. On parle aussi de parcours en profondeur d abord ou depth first.

73 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution Programmation let rec visite = fun Feuille(f) -> () Noeud(_,g,d) -> visite g ; visite d;;

74 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution 1 Définitions 2 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution 3

75 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution Lors d un parcours en profondeur, un nœud est visité trois fois (sauf la racine) : une première fois quand on arrive sur lui depuis son père, une deuxième fois lorsqu on a fini de parcourir le sous-arbre gauche, une troisième fois lorsqu on s apprête à visiter le sous-arbre droit. Dans la fonction de visite en profondeur écrite précédemment, on peut noter que l on n effectue aucun travail intéressant. Si l on décide d enrichir ce programme, on peut appliquer un traitement à chaque nœud lors de la première rencontre : on parle de traitement préfixe ; lors de la deuxième rencontre : on parle de traitement infixe ; lors de la troisième rencontre : on parle de traitement postfixe.

76 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution Lors d un parcours en profondeur, un nœud est visité trois fois (sauf la racine) : une première fois quand on arrive sur lui depuis son père, une deuxième fois lorsqu on a fini de parcourir le sous-arbre gauche, une troisième fois lorsqu on s apprête à visiter le sous-arbre droit. Dans la fonction de visite en profondeur écrite précédemment, on peut noter que l on n effectue aucun travail intéressant. Si l on décide d enrichir ce programme, on peut appliquer un traitement à chaque nœud lors de la première rencontre : on parle de traitement préfixe ; lors de la deuxième rencontre : on parle de traitement infixe ; lors de la troisième rencontre : on parle de traitement postfixe.

77 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution Lors d un parcours en profondeur, un nœud est visité trois fois (sauf la racine) : une première fois quand on arrive sur lui depuis son père, une deuxième fois lorsqu on a fini de parcourir le sous-arbre gauche, une troisième fois lorsqu on s apprête à visiter le sous-arbre droit. Dans la fonction de visite en profondeur écrite précédemment, on peut noter que l on n effectue aucun travail intéressant. Si l on décide d enrichir ce programme, on peut appliquer un traitement à chaque nœud lors de la première rencontre : on parle de traitement préfixe ; lors de la deuxième rencontre : on parle de traitement infixe ; lors de la troisième rencontre : on parle de traitement postfixe.

78 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution Lors d un parcours en profondeur, un nœud est visité trois fois (sauf la racine) : une première fois quand on arrive sur lui depuis son père, une deuxième fois lorsqu on a fini de parcourir le sous-arbre gauche, une troisième fois lorsqu on s apprête à visiter le sous-arbre droit. Dans la fonction de visite en profondeur écrite précédemment, on peut noter que l on n effectue aucun travail intéressant. Si l on décide d enrichir ce programme, on peut appliquer un traitement à chaque nœud lors de la première rencontre : on parle de traitement préfixe ; lors de la deuxième rencontre : on parle de traitement infixe ; lors de la troisième rencontre : on parle de traitement postfixe.

79 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution Programmation On peut se dire que dans le parcours préfixe d un nœud (n, g, d), on commence par lister n, puis on parcourt le sous-arbre g et enfin le sous-arbre d. let rec parcours_prefixe = function Feuille(f) -> [F f] Noeud(n,g,d) -> [N (parcours_prefixe (parcours_prefixe d) ;;

80 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution Programmation On peut se dire que dans le parcours infixe d un nœud (n, g, d), on commence par parcourir le sous-arbre gauche, puis on liste n, et on termine par le sous-arbre d. let rec parcours_infixe = function Feuille(f) -> [F f] Noeud(n,g,d) -> (parcours_infixe [N (parcours_infixe d) ;;

81 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution Programmation On peut se dire que dans le parcours postfixe (ou suffixe) d un nœud (n, g, d), on commence par parcourir les deux sous-arbres g et d et on termine en listant n. let rec parcours_suffixe = function Feuille(f) -> [F f] Noeud(n,g,d) -> (parcours_suffixe (parcours_suffixe [N n] ;;

82 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution Exemple Pour l arbre [N a ; N b ; N c ; F 1; F 2; F 3; N d ; N e ; F 6; F 4; F 5] obtenu par parcours en largeur, qu obtient-on dans les différents parcours en profondeur?

83 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution Exemple 1 Pour le parcours préfixe : 2 Pour le parcours infixe : 3 Pour le parcours postfixe :

84 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution Exemple 1 Pour le parcours préfixe : [ N a ; N b ; F 1; F 2; N c ; F 3; N d ; N e ; F 4; F 5; F 6] 2 Pour le parcours infixe : 3 Pour le parcours postfixe :

85 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution Exemple 1 Pour le parcours préfixe : [ N a ; N b ; F 1; F 2; N c ; F 3; N d ; N e ; F 4; F 5; F 6] 2 Pour le parcours infixe : [ F 1; N b ; F 2; N a ; F 3; N c ; F 4; N e ; F 5; N d ; F 6] 3 Pour le parcours postfixe :

86 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution Exemple 1 Pour le parcours préfixe : [ N a ; N b ; F 1; F 2; N c ; F 3; N d ; N e ; F 4; F 5; F 6] 2 Pour le parcours infixe : [ F 1; N b ; F 2; N a ; F 3; N c ; F 4; N e ; F 5; N d ; F 6] 3 Pour le parcours postfixe : [ F 1; F 2; N b ; F 3; F 4; F 5; N e ; F 6; N d ; N c ; N a ]

87 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution 1 Définitions 2 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution 3

88 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution Reconstitution à partir de la description préfixe let recompose_prefixe l = let rec recompose = function (F f) :: reste -> Feuille(f), reste (N n) :: reste -> let g, reste = recompose reste in let d, reste = recompose reste in Noeud(n,g,d),reste [] -> failwith "Description prefixe incorrecte" in match recompose l with a,[] -> a _ -> failwith "Description prefixe incorrecte" ;;

89 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution Reconstitution à partir de la description postfixe Attention, il ne suffit pas d appliquer ce qui précède à l image miroir de la liste. let recompose_suffixe l = let rec recompose ss_arbres liste = match ss_arbres,liste with a,(f f) :: reste -> recompose (Feuille(f) :: a) reste d :: g :: a,(n n) :: reste -> recompose (Noeud(n,g,d) :: a) reste [ arbre ],[] -> arbre _ -> failwith "Description suffixe incorrecte" in recompose [] l ;;

90 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution Pour la reconstitution d un arbre binaire à partir de sa description en ordre infixe, c est impossible car la description est ambiguë. En effet, on peut trouver deux arbres difféérents ayant le même parcours infixe/ Exercice : donner un arbre ayant le même parcours infixe que celui donné précédemment 1b2a3c4e5d6.

91 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution Un exemple d arbre ayant pour parcours infixe 1b2a3c4e5d6. c a d b 3 e

92 Recherche Complexité Insertion d un élément Suppression d un élément 1 Définitions 2 3 Recherche Complexité Insertion d un élément Suppression d un élément

93 Recherche Complexité Insertion d un élément Suppression d un élément Cette notion est officiellement au programme de deuxième année. Définition Soit un ensemble ordonné (F, ) de feuilles et une application φ : F N strictement croissante. Un arbre de recherche pour F est un arbre binaire sur les ensembles de feuilles et de nœuds qui est ou bien une feuille ou bien un arbre (n, g, d) tel que pour toute feuille f du sous-arbre gauche g on a φ(f ) < n et pour toute feuille f du sous-arbre droit d on a n < φ(f ). On peut démontrer par induction structurelle que les feuilles d un arbre sont listées dans l ordre croissant dans chacun des parcours infixe, préfixe, suffixe. Le plus souvent on aura F = N avec et φ = id, et tous nos exemples seront construits sur ce modèle.

94 Recherche Complexité Insertion d un élément Suppression d un élément Voici un exemple d arbre de recherche :

95 Recherche Complexité Insertion d un élément Suppression d un élément 1 Définitions 2 3 Recherche Complexité Insertion d un élément Suppression d un élément

96 Recherche Complexité Insertion d un élément Suppression d un élément Comme leur nom l indique, les arbres binaires de recherche servent à la recherche d un élément d une famille : plus précisément, on se donne un ensemble de valeurs et on veut écrire une fonction d appartenance à cet ensemble. Pour ce faire, on pourrait utiliser une liste simple des éléments de l ensemble considéré, et faire une recherche dans cette liste, ce qui donne un algorithme en O(n), où n est la taille de l ensemble de valeurs-cibles.

97 Recherche Complexité Insertion d un élément Suppression d un élément Exercice Ecrire le programme de recherche décrit précédemment :

98 Recherche Complexité Insertion d un élément Suppression d un élément Exercice Ecrire le programme de recherche décrit précédemment : let rec recherche l x = match l with [] -> failwith "élément absent de la liste" t :: q -> t = x recherche q x ;;

99 Recherche Complexité Insertion d un élément Suppression d un élément Principe Les arbres binaires de recherche conduisent à une solution très simple du même probleme, pourvu que l on sache construire un arbre dont l ensemble des feuilles est l ensemble de nos valeurs-cibles. La recherche d un nœud d étiquette x donnée dans un arbre binaire de recherche va consister à descendre dans l arbre, en comparant x à l étiquette y de chaque nœud rencontré. Si y = x c est fini, si y x, on continue dans le sous-arbre gauche, si y x, on continue dans le sous-arbre droit. Si on arrive sur une feuille, c est que l on a échoué.

100 Recherche Complexité Insertion d un élément Suppression d un élément Lorsque l on a un arbre de recherche sur N cela donne : let rec recherche arbre x = match arbre with Feuille(f) -> x = f failwith "élément absent" Noeud(n,g,d) -> if x > n then recherche d x else recherche g x ;;

101 Recherche Complexité Insertion d un élément Suppression d un élément Compléter le programme suivant, dans le cas général : let rec recherche phi arbre x = match arbre with Feuille(f) -> x = f failwith "element absent" ;;

102 Recherche Complexité Insertion d un élément Suppression d un élément Compléter le programme suivant, dans le cas général : let rec recherche phi arbre x = match arbre with Feuille(f) -> x = f failwith "element absent" Noeud(n,g,d) -> if phi x > n then recherche phi d x else recherche phi g x ;;

103 Recherche Complexité Insertion d un élément Suppression d un élément 1 Définitions 2 3 Recherche Complexité Insertion d un élément Suppression d un élément

104 Recherche Complexité Insertion d un élément Suppression d un élément Théorème : coût de la recherche La recherche dans un arbre binaire de recherche se réalise en un nombre de comparaisons au plus égal à k + 1, où k est la profondeur de l arbre. Théorème La recherche d un élément dans un ensemble de n valeurs organisées en arbre binaire de recherche se réalise dans le cas le pire en un nombre c(n) de comparaisons qui vérifie : 2 + log(n 1) c(n) n.

105 Recherche Complexité Insertion d un élément Suppression d un élément Théorème (suite) Dans le cas particulier où l arbre de recherche utilisé est équilibré, on a l égalité c(n) = 2 + log(n 1), ce qui garantit un coût logarithmique pour notre recherche. Toute la difficulté est donc de construire un arbre équilibré de recherche.

106 Recherche Complexité Insertion d un élément Suppression d un élément 1 Définitions 2 3 Recherche Complexité Insertion d un élément Suppression d un élément

107 Recherche Complexité Insertion d un élément Suppression d un élément En pratique on veut maintenir une structure dynamique de l ensemble des valeurs-cibles. C est-à-dire qu on veut pouvoir ajouter ou retrancher une valeur à cet ensemble. Il s agit donc pour nous d ajouter ou retrancher une feuille à un arbre binaire de recherche.

108 Recherche Complexité Insertion d un élément Suppression d un élément Principe Pour insérer un nouvel élément x dans un arbre binaire de recherche, on procède comme pour la recherche : si l on tombe sur un nœud portant cette étiquette, on ne fait rien (on pourrait tout de même ajouter l élément, mais c est un choix). Sinon on descend dans l arbre jusqu à arriver à une feuille ; ou bien c est un élément y différent de x, ce qui signifie que x n est pas encore dans l arbre : on remplace alors la feuille y par un arbre (φ(x), x, y) si φ(x) < φ(y) ou (φ(y), y;, x) sinon.

109 Recherche Complexité Insertion d un élément Suppression d un élément Programmation Compléter le programme : let rec ajout phi arbre x = match arbre with Feuille(y) -> if x = y then else if phi x < phi y then else Noeud(n,g,d) -> if phi x > n then else ;; La fonction écrite renvoie le nouvel arbre et a une complexité en O(k) où k est la profondeur de l arbre.

110 Recherche Complexité Insertion d un élément Suppression d un élément Programmation Compléter le programme : let rec ajout phi arbre x = match arbre with Feuille(y) -> if x = y then Feuille(y) else if phi x < phi y then Noeud(phi x,feuille(x),feuille( else Noeud(phi y,feuille(y),feuille(x)) Noeud(n,g,d) -> if phi x > n then Noeud(n,g,ajout phi d x) else Noeud(n,ajout phi g x,d) ;; La fonction écrite renvoie le nouvel arbre et a une complexité en O(k) où k est la profondeur de l arbre.

111 Recherche Complexité Insertion d un élément Suppression d un élément 1 Définitions 2 3 Recherche Complexité Insertion d un élément Suppression d un élément

112 Recherche Complexité Insertion d un élément Suppression d un élément Pour la suppression d un élément (on suppose qu il figure bien dans l arbre), il suffit a priori de rechercher l élément considéré, et de couper la feuille correspondante de l arbre. Puis on remplace le nœud-père par le frère gauche ou droit qui subsiste.

113 Recherche Complexité Insertion d un élément Suppression d un élément deux exemples :

114 Recherche Complexité Insertion d un élément Suppression d un élément Pour supprimer l élément 7, on remplace le père de la feuille 7 par son fils droit, et on obtient bien un arbre de recherche qui répond au problème qu on s était posé. Supprimons maintenant de ce nouvel arbre l élément 5.

115 Recherche Complexité Insertion d un élément Suppression d un élément Pour supprimer l élément 5, on remplace son père par son frère gauche, et on obtient l arbre ci-dessus.

116 Recherche Complexité Insertion d un élément Suppression d un élément Programmation Compléter le programme suivant : let rec suppression phi arbre x = match arbre with Feuille(y) -> if x = y then failwith "Arbre vide" else Noeud(n,g,d)-> if phi x > n then if d = Feuille(x) then else if g = Feuille(x) then ;;

117 Recherche Complexité Insertion d un élément Suppression d un élément Programmation Compléter le programme suivant : let rec suppression phi arbre x = match arbre with Feuille(y) -> if x = y then failwith "Arbre vide" else Feuille(y) Noeud(n,g,d)-> if phi x > n then if d = Feuille(x) then g else Noeud(n,g,suppression phi d x) else if g = Feuille(x) then d else Noeud(n,suppression phi g x,d) ;;

I Arbres binaires. Lycée Faidherbe 2014-2015. 1 Rappels 2 1.1 Définition... 2 1.2 Dénombrements... 2 1.3 Parcours... 3

I Arbres binaires. Lycée Faidherbe 2014-2015. 1 Rappels 2 1.1 Définition... 2 1.2 Dénombrements... 2 1.3 Parcours... 3 I Arbres binaires 2014-2015 Table des matières 1 Rappels 2 1.1 Définition................................................ 2 1.2 Dénombrements............................................ 2 1.3 Parcours.................................................

Plus en détail

Travaux dirigés n o 6

Travaux dirigés n o 6 Travaux dirigés n o 6 Lycée Kléber MPSI, Option Info 2014/2015 Exercice 1 (Indexation d un arbre binaire) Ecrire une fonction Caml indexation : ( f, n) arbre_binaire -> (string,string) arbre_binaire qui

Plus en détail

Option Informatique Arbres binaires équilibrés

Option Informatique Arbres binaires équilibrés Option Informatique Arbres binaires équilibrés Sujet novembre 2 Partie II : Algorithmique et programmation en CaML Cette partie doit être traitée par les étudiants qui ont utilisé le langage CaML dans

Plus en détail

Cours numéro 9 : arbres binaires et de recherche

Cours numéro 9 : arbres binaires et de recherche Cours numéro 9 : arbres binaires et de recherche LI213 Types et Structures de données Licence d Informatique Université Paris 6 Arbre Arbre Un arbre est un ensemble fini A d éléments, liés entre eux par

Plus en détail

Arbres binaires de recherche (ABR) Binary Search Trees (BST)

Arbres binaires de recherche (ABR) Binary Search Trees (BST) LSVIII-BIM Algorithmie, 2015 Arbres binaires de recherche (ABR) Binary Search Trees (BST) I. Arbres binaires 1. Structure 2. Parcours II. Arbres binaires de recherche 1. Définition 2. Opérations sur les

Plus en détail

Partie I : Automates et langages

Partie I : Automates et langages 2 Les calculatrices sont interdites. N.B. : Le candidat attachera la plus grande importance à la clarté, à la précision et à la concision de la rédaction. Si un candidat est amené à repérer ce qui peut

Plus en détail

Arbres binaires de recherche et arbres rouge noir

Arbres binaires de recherche et arbres rouge noir Institut Galilée lgo, rbres, Graphes I nnée 006-007 License rbres binaires de recherche et arbres rouge noir Rappels de cours et correction du TD rbres binaires de recherche : définitions Un arbre binaire

Plus en détail

Les arbres Florent Hivert

Les arbres Florent Hivert 1 de 1 Algorithmique Les arbres Florent Hivert Mél : Florent.Hivert@lri.fr Page personnelle : http://www.lri.fr/ hivert 2 de 1 Algorithmes et structures de données La plupart des bons algorithmes fonctionnent

Plus en détail

Points fixes de fonctions à domaine fini

Points fixes de fonctions à domaine fini ÉCOLE POLYTECHNIQUE ÉCOLE NORMALE SUPÉRIEURE DE CACHAN ÉCOLE SUPÉRIEURE DE PHYSIQUE ET DE CHIMIE INDUSTRIELLES CONCOURS D ADMISSION 2013 FILIÈRE MP HORS SPÉCIALITÉ INFO FILIÈRE PC COMPOSITION D INFORMATIQUE

Plus en détail

Arbres Binaires de Recherche : Introduction

Arbres Binaires de Recherche : Introduction Arbres Binaires de Recherche : Introduction I. Guessarian cours ISN 11 janvier 2012 LIAFA, CNRS and University Paris Diderot 1/13 Arbre Binaire de Recherche Un Arbre Binaire de Recherche (ABR) est un arbre

Plus en détail

10' - LES ARBRES BINAIRES

10' - LES ARBRES BINAIRES Ch 10' - LES ARBRES BINAIRES On va restreindre les capacités des arbres en obligeant les nœuds à posséder au maximum deux sous-arbres. Ces nouveaux arbres seront plus faciles à maîtriser que les arbres

Plus en détail

x n = x x n 1 Exercice 3 Le but de cet exercice est de modéliser les suites définies par récurrence de la façon suivante :

x n = x x n 1 Exercice 3 Le but de cet exercice est de modéliser les suites définies par récurrence de la façon suivante : Ocaml - Exercices Exercice Définir en Ocaml les fonctions suivantes:. f : x sin x + cos x. g : x x 3x+ x x 5 3. Fonction h calculant la moyenne géométrique de deux float positifs ( xy) Exercice Ecrire

Plus en détail

Corrigé des exercices

Corrigé des exercices hapitre 1 option informatique orrigé des eercices Arbres binaires Eercice 1 La première solution qui vient à l esprit est sans doute celle-ci : let rec profondeur p = function Nil > [] a when p = 0 > [a]

Plus en détail

Structures de données non linéaires

Structures de données non linéaires Structures de données non linéaires I. Graphes Définition Un graphe (simple) orienté G est un couple (S, A), où : S est un ensemble dont les éléments sont appelés les sommets. A est un ensemble de couples

Plus en détail

Les arbres binaires de recherche

Les arbres binaires de recherche Institut Galilée Année 2010-2011 Algorithmique et arbres L2 TD 6 Les arbres binaires de recherche Type en C des arbres binaires (également utilisé pour les ABR) : typedef struct noeud_s { struct noeud_s

Plus en détail

Chap. VII : arbres binaires

Chap. VII : arbres binaires Chap. VII : arbres binaires 1. Introduction Arbre : collection d objets avec une structure hiérarchique Structure intrinsèque descendants d une personne (elle incluse) A ascendant connus d une personne

Plus en détail

Marches, permutations et arbres binaires aléatoires

Marches, permutations et arbres binaires aléatoires Marches, permutations et arbres binaires aléatoires Épreuve pratique d algorithmique et de programmation Concours commun des Écoles Normales Supérieures Durée de l épreuve: 4 heures Cœfficient: 4 Juillet

Plus en détail

Arbres bien équilibrés

Arbres bien équilibrés Arbres bien équilibrés ENSIIE : Programmation avancée 1/24 Recherche par dichotomie on aimerait avoir des opérations de recherche, d insertion et de suppression efficaces en moyenne et dans le pire des

Plus en détail

Arbres binaires. Chapitre 1. 1. Introduction. option informatique. 1.1 Définition formelle d un arbre binaire

Arbres binaires. Chapitre 1. 1. Introduction. option informatique. 1.1 Définition formelle d un arbre binaire Chapitre option informatique Arbres binaires. Introduction Dans son acceptation la plus générale, un arbre est un graphe acyclique orienté enraciné : tous les sommets, à l exception de la racine, ont un

Plus en détail

ALGORITHMIQUE II. Récurrence et Récursivité. SMI AlgoII

ALGORITHMIQUE II. Récurrence et Récursivité. SMI AlgoII ALGORITHMIQUE II Récurrence et Récursivité Récurrence Suite récurrente: la déition d une suite est la donnée d un terme général déi en fonction du (ou des) terme(s) précédant(s) D un terme initial qui

Plus en détail

Concours 2015 Épreuve d Informatique Filière : MP Durée de l épreuve : 3 heures. L utilisation d une calculatrice est autorisée.

Concours 2015 Épreuve d Informatique Filière : MP Durée de l épreuve : 3 heures. L utilisation d une calculatrice est autorisée. A 2015 INFO. MP École des Ponts ParisTech, SUPAERO (ISAE), ENSTA ParisTech, Télécom ParisTech, Mines ParisTech, Mines de Saint-étienne, Mines Nancy, Télécom Bretagne, ENSAE ParisTech (filière MP), École

Plus en détail

Algorithmique et Programmation Impérative 2 Les arbres binaires de recherche

Algorithmique et Programmation Impérative 2 Les arbres binaires de recherche Algorithmique et Programmation Impérative 2 Les arbres binaires de recherche N.E. Oussous oussous@lifl.fr FIL USTL SDC - Licence p.1/16 Arbres binaires de recherche Un arbre binaire T est un arbre binaire

Plus en détail

Partie 3. Gilles Lebrun (gilles.lebrun@unicaen.fr)

Partie 3. Gilles Lebrun (gilles.lebrun@unicaen.fr) Partie 3 Gilles Lebrun (gilles.lebrun@unicaen.fr) Les arbres binaires Définition : C est une structure arborescente ou hiérarchique ou récursive Chaque élément (nœud) constituant la structure de l arbre

Plus en détail

Arbres Binaire. PSI DAKHLA Prof Youssef El marzak. 1 Prof Youssef Elmarzak

Arbres Binaire. PSI DAKHLA Prof Youssef El marzak. 1 Prof Youssef Elmarzak Arbres Binaire PSI DAKHLA Prof Youssef El marzak 1 Prof Youssef Elmarzak 1.introduction: Les arbre sont très utilisées en informatique, d une part parce que les informations sont souvent hiérarchisées,

Plus en détail

Arbres binaires de recherche

Arbres binaires de recherche Chapitre 1 Arbres binaires de recherche 1 Les arbre sont très utilisés en informatique, d une part parce que les informations sont souvent hiérarchisées, et peuvent être représentées naturellement sous

Plus en détail

Polytechnique. Épreuve d Informatique 1998

Polytechnique. Épreuve d Informatique 1998 Polytechnique Épreuve d Informatique 1998 Corrigé rédigé par Martine Lannaud, Lycée Chaptal, Paris Pour toute remarque ou correction martine.lannaud@prepas.org Motifs et automates Question 1. Quelques

Plus en détail

Université Paris Diderot Paris 7. TD n 2. Arbres Binaire de Recherche

Université Paris Diderot Paris 7. TD n 2. Arbres Binaire de Recherche Université Paris Diderot Paris L Informatique Algorithmique Année 00-0, er semestre TD n Arbres Binaire de Recherche Le type de donné arbre" sera utilisé pour indiquer l ensemble de toutes les Arbres Binaires

Plus en détail

Cours d Algorithmique et Complexité

Cours d Algorithmique et Complexité Cours d Algorithmique et Complexité Structures de données (2e suite) Catalin Dima Arbres binaires de recherche Propriété de base des arbres binaires de recherche Soit x un noeud de l arbre. Alors : 1.

Plus en détail

Exercice sur les arbres binaires de recherche

Exercice sur les arbres binaires de recherche Exercice sur les arbres binaires de recherche Voici une liste aléatoire de 1 éléments. Notez que vous pouvez faire cet exercice en prenant une autre liste aléatoire ; évidemment, il y a peu de chances

Plus en détail

Initiation aux algorithmes des arbres binaires

Initiation aux algorithmes des arbres binaires Initiation aux algorithmes des arbres binaires Plan I. Les arbres biniaires I. Définition II. Représentation graphique d un arbre III. Terminologie IV. Représentation en mémoire des arbres binaires V.

Plus en détail

Définitions. Numéro à préciser. (Durée : )

Définitions. Numéro à préciser. (Durée : ) Numéro à préciser (Durée : ) On étudie dans ce problème l ordre lexicographique pour les mots sur un alphabet fini et plusieurs constructions des cycles de De Bruijn. Les trois parties sont largement indépendantes.

Plus en détail

L2 - Algorithmique et structures de données (Année 2010/2011) Examen (2 heures)

L2 - Algorithmique et structures de données (Année 2010/2011) Examen (2 heures) L2 - lgorithmique et structures de données (nnée 2010/2011) Delacourt, Phan Luong, Poupet xamen (2 heures) Les documents (cours, TD, TP) sont autorisés. Les quatre exercices sont indépendants. À la fin

Plus en détail

Induction sur les arbres

Induction sur les arbres Induction sur les arbres Planning Motivations Comment définir les arbres? Équations récursives sur les arbres Complexité de fonctions sur les arbres Recherche dans un arbre binaire de recherche Recherche

Plus en détail

1 Généralités sur les arbres

1 Généralités sur les arbres 1 Généralités sur les arbres 1.1 Graphes et arbres Définition 1.1. On appelle graphe un couple G = (V, E) d un ensemble fini V (les sommets ou noeuds) et d une partie E de V V (les arêtes). Si x, y V,

Plus en détail

TP 4 -Arbres Binaires -

TP 4 -Arbres Binaires - L3 Informatique Programmation fonctionnelle OCaml Année 2013/2014 TP 4 -Arbres Binaires - Un arbre binaire est une structure de données qui peut se représenter sous la forme d une hiérarchie dont chaque

Plus en détail

Licence informatique - L3 Année 2012/2013. Conception d algorithmes et applications (LI325) COURS 2

Licence informatique - L3 Année 2012/2013. Conception d algorithmes et applications (LI325) COURS 2 Licence informatique - L Année 0/0 Conception d algorithmes et applications (LI) COURS Résumé. Cette deuxième séance est entièrement consacrée aux applications du principe Diviser pour Régner. Nous regarderons

Plus en détail

Structures de données, IMA S6

Structures de données, IMA S6 Structures de données, IMA S6 Arbres Binaires d après un cours de N. Devésa, Polytech Lille. Laure Gonnord http://laure.gonnord.org/pro/teaching/ Laure.Gonnord@polytech-lille.fr Université Lille 1 - Polytech

Plus en détail

Arbres ordonnés, binaires, tassés, FAP, tri par FAP, tas, tri par tas

Arbres ordonnés, binaires, tassés, FAP, tri par FAP, tas, tri par tas Arbres ordonnés, binaires, tassés, FAP, tri par FAP, tas, tri par tas 1. Arbres ordonnés 1.1. Arbres ordonnés (Arbres O) On considère des arbres dont les nœuds sont étiquetés sur un ensemble muni d'un

Plus en détail

Série d exercices N 9 Arbres

Série d exercices N 9 Arbres Série d exercices N 9 Arbres Exercice 1 a) Ecrire une fonction ARBIN creerarbreentiers() qui permet de créer et de renvoyer l arbre d entiers suivant : b) Ecrire une fonction int feuilles(arbin a) qui

Plus en détail

Séance de TD 05 TD05. 1 Exercice 1. 1.1 Question 1 : dessins des ABR avec hauteurs différentes AG51

Séance de TD 05 TD05. 1 Exercice 1. 1.1 Question 1 : dessins des ABR avec hauteurs différentes AG51 Séance de TD 05 1 Exercice 1 1. Dessinez les arbres binaires de recherche de hauteur 2,3,4,5 et 6 pour le même ensemble de clés S = 1,4,5,10,16,17,21. 2. Donnez l algorithme de l opération ArbreRechercher(x,k)

Plus en détail

Le corps R des nombres réels

Le corps R des nombres réels Le corps R des nombres réels. Construction de R à l aide des suites de Cauchy de nombres rationnels On explique brièvement dans ce paragraphe comment construire le corps R des nombres réels à partir du

Plus en détail

4.2 Les arbres binaires de recherche

4.2 Les arbres binaires de recherche 4.2 Les arbres binaires de recherche 4.2.1 Définition Les arbres binaires de recherche sont utilisés pour accélérer la recherche dans les arbres m-aires. Un arbre binaire de recherche est un arbre binaire

Plus en détail

Épreuve d informatique 2011

Épreuve d informatique 2011 A 2011 INFO. MP ÉCOLE NATIONALE DES PONTS ET CHAUSSÉES, ÉCOLES NATIONALES SUPÉRIEURES DE L AÉRONAUTIQUE ET DE L ESPACE, DE TECHNIQUES AVANCÉES, DES TÉLÉCOMMUNICATIONS, DES MINES DE PARIS, DES MINES DE

Plus en détail

Arbres binaires et codage de Huffman

Arbres binaires et codage de Huffman MP Option Informatique Premier TP Caml Jeudi 8 octobre 2009 Arbres baires et codage de Huffman 1 Arbres baires Soit E un ensemble non vide. On défit la notion d arbre baire étiqueté (aux feuilles) par

Plus en détail

À propos des matrices échelonnées

À propos des matrices échelonnées À propos des matrices échelonnées Antoine Ducros appendice au cours de Géométrie affine et euclidienne dispensé à l Université Paris 6 Année universitaire 2011-2012 Introduction Soit k un corps, soit E

Plus en détail

Image d un intervalle par une fonction continue

Image d un intervalle par une fonction continue DOCUMENT 27 Image d un intervalle par une fonction continue La continuité d une fonction en un point est une propriété locale : une fonction est continue en un point x 0 si et seulement si sa restriction

Plus en détail

Cours de Mathématiques Seconde. Généralités sur les fonctions

Cours de Mathématiques Seconde. Généralités sur les fonctions Cours de Mathématiques Seconde Frédéric Demoulin 1 Dernière révision : 16 avril 007 Document diffusé via le site www.bacamaths.net de Gilles Costantini 1 frederic.demoulin (chez) voila.fr gilles.costantini

Plus en détail

Arbres binaires de recherche

Arbres binaires de recherche Chapitre 6 Arbres binaires de recherche 6.1 Introduction On a étudié le problème de la recherche dans une collection d éléments ordonnés entre eux : on a montré que Pour une liste contiguë, la recherche

Plus en détail

Programmation fonctionnelle

Programmation fonctionnelle 1/30 Programmation fonctionnelle Notes de cours Cours 9 23 novembre 2011 Sylvain Conchon sylvain.conchon@lri.fr 2/30 Les notions abordées cette semaine Les foncteurs Set.Make et Map.Make d Ocaml Arbres

Plus en détail

Cours de terminale S Suites numériques

Cours de terminale S Suites numériques Cours de terminale S Suites numériques V. B. et S. B. Lycée des EK 13 septembre 2014 Introduction Principe de récurrence Exemple En Mathématiques, un certain nombre de propriétés dépendent d un entier

Plus en détail

Algorithmique IN102 TD 3

Algorithmique IN102 TD 3 Algorithmique IN10 TD 16 décembre 005 Exercice 1 Clairement, il existe des arbres de hauteur h à h + 1 éléments : il sut pour cela que leurs n uds internes aient au plus un ls non vide. On a alors un arbre

Plus en détail

II arbres binaires de recherche

II arbres binaires de recherche I arbres binaires On définit un arbre binaire par : type arbin=^noeud; noeud=record filsg,filsd:arbin; cle:longint Un arbre binaire a peut être vide (si a=nil). Sinon il est formé d un noeud (a^) contenant

Plus en détail

Recherche dans un tableau

Recherche dans un tableau Chapitre 3 Recherche dans un tableau 3.1 Introduction 3.1.1 Tranche On appelle tranche de tableau, la donnée d'un tableau t et de deux indices a et b. On note cette tranche t.(a..b). Exemple 3.1 : 3 6

Plus en détail

Exercices théoriques

Exercices théoriques École normale supérieure 2008-2009 Département d informatique Algorithmique et Programmation TD n 9 : Programmation Linéaire Avec Solutions Exercices théoriques Rappel : Dual d un programme linéaire cf.

Plus en détail

Les structures de données. Rajae El Ouazzani

Les structures de données. Rajae El Ouazzani Les structures de données Rajae El Ouazzani Les arbres 2 1- Définition de l arborescence Une arborescence est une collection de nœuds reliés entre eux par des arcs. La collection peut être vide, cad l

Plus en détail

Leçon 6. Savoir compter

Leçon 6. Savoir compter Leçon 6. Savoir compter Cette leçon est une introduction aux questions de dénombrements. Il s agit, d une part, de compter certains objets mathématiques (éléments, parties, applications,...) et, d autre

Plus en détail

BASES DU RAISONNEMENT

BASES DU RAISONNEMENT BASES DU RAISONNEMENT P. Pansu 10 septembre 2006 Rappel du programme officiel Logique, différents types de raisonnement. Ensembles, éléments. Fonctions et applications. Produit, puissances. Union, intersection,

Plus en détail

+ 1. Qu est ce que cela donne pour notre calcul de 1,01? On pose x = 1,01 donc f (x) 1 + 1 0,01

+ 1. Qu est ce que cela donne pour notre calcul de 1,01? On pose x = 1,01 donc f (x) 1 + 1 0,01 Eo7 Dérivée d une fonction Vidéo partie. Définition Vidéo partie. Calculs Vidéo partie 3. Etremum local, théorème de Rolle Vidéo partie 4. Théorème des accroissements finis Eercices Fonctions dérivables

Plus en détail

Langage C/C++ TD 3-4 : Création dynamique d objets. Hubert Godfroy. 27 novembre 2014

Langage C/C++ TD 3-4 : Création dynamique d objets. Hubert Godfroy. 27 novembre 2014 Langage C/C++ TD 3-4 : Création dynamique d objets Hubert Godfroy 7 novembre 014 1 Tableaux Question 1 : Écrire une fonction prenant un paramètre n et créant un tableau de taille n (contenant des entiers).

Plus en détail

TD: Ensembles, applications, dénombrement

TD: Ensembles, applications, dénombrement Université de Provence Année 011/1 Licence Math Info ème année S3 Fondements de l Informatique 1 Ensembles et fonctions TD: Ensembles, applications, dénombrement 1. On suppose que l ensemble de tous les

Plus en détail

C12. Les structures arborescentes. Août 2006

C12. Les structures arborescentes. Août 2006 Les structures arborescentes Août 2006 Objectifs du C12 Connaître le principe de la structure d arbre binaire Connaître les détails d implémentation de la structure d arbre binaire de recherche Les structures

Plus en détail

Fonctions de plusieurs variables

Fonctions de plusieurs variables Module : Analyse 03 Chapitre 00 : Fonctions de plusieurs variables Généralités et Rappels des notions topologiques dans : Qu est- ce que?: Mathématiquement, n étant un entier non nul, on définit comme

Plus en détail

Programmation avancée

Programmation avancée Programmation avancée Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) 1 1 IFSIC Université de Rennes-1 M2Crypto, octobre 2011 Plan du cours 1 2 3 4 5 6 7 8 9 10 Algorithmes Définition

Plus en détail

alg - Arbres binaires de recherche [br] Algorithmique

alg - Arbres binaires de recherche [br] Algorithmique alg - Arbres binaires de recherche [br] Algorithmique Karine Zampieri, Stéphane Rivière, Béatrice Amerein-Soltner Unisciel algoprog Version 25 avril 2015 Table des matières 1 Définition, Parcours, Représentation

Plus en détail

Devoir surveillé n 1 : correction

Devoir surveillé n 1 : correction E1A-E1B 013-01 Devoir surveillé n 1 : correction Samedi 8 septembre Durée : 3 heures. La calculatrice est interdite. On attachera une grande importance à la qualité de la rédaction. Les questions du début

Plus en détail

Leçon 1: les entiers

Leçon 1: les entiers Leçon 1: les entiers L ensemble N des entiers naturels Compter, dresser des listes, classer et comparer des objets interviennent dans de multiples activités humaines. Les nombres entiers naturels sont

Plus en détail

Fonctions homographiques

Fonctions homographiques Fonctions homographiques On donne ci-dessous deux définitions des fonctions homographiques, et on montre que ces deux définitions sont équivalentes. On décrit la courbe représentative d une fonction homographique.

Plus en détail

Applications linéaires

Applications linéaires Bibliothèque d exercices Énoncés L1 Feuille n 18 Applications linéaires 1 Définition Exercice 1 Déterminer si les applications f i suivantes (de E i dans F i ) sont linéaires : f 1 : (x, y) R (x + y, x

Plus en détail

Introduction à l étude des Corps Finis

Introduction à l étude des Corps Finis Introduction à l étude des Corps Finis Robert Rolland (Résumé) 1 Introduction La structure de corps fini intervient dans divers domaines des mathématiques, en particulier dans la théorie de Galois sur

Plus en détail

L enseignement de l algorithmique au Lycée

L enseignement de l algorithmique au Lycée L enseignement de l algorithmique au Lycée Sisteron 12 novembre 2009 Fernand Didier didier@irem.univ-mrs.fr Approche naïve C est une méthode, une façon systématique de procéder, pour faire quelque chose

Plus en détail

Vidéo partie 1. Logique Vidéo partie 2. Raisonnements Exercices Logique, ensembles, raisonnements

Vidéo partie 1. Logique Vidéo partie 2. Raisonnements Exercices Logique, ensembles, raisonnements Exo7 Logique et raisonnements Vidéo partie 1. Logique Vidéo partie 2. Raisonnements Exercices Logique, ensembles, raisonnements Quelques motivations Il est important d avoir un langage rigoureux. La langue

Plus en détail

Cours 1: Introduction à l algorithmique

Cours 1: Introduction à l algorithmique 1 Cours 1: Introduction à l algorithmique Olivier Bournez bournez@lix.polytechnique.fr LIX, Ecole Polytechnique 2011-12 Algorithmique 2 Aujourd hui Calcul de x n Maximum Complexité d un problème Problème

Plus en détail

Algorithmique et Programmation Projets 2012/2013

Algorithmique et Programmation Projets 2012/2013 3 Dames 3. Objectif Il s agit d écrire un programme jouant aux Dames selon les règles. Le programme doit être le meilleur possible. Vous utiliserez pour cela l algorithme α β de recherche du meilleur coup

Plus en détail

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours Exo7 Continuité (étude globale). Diverses fonctions Exercices de Jean-Louis Rouget. Retrouver aussi cette fiche sur www.maths-france.fr * très facile ** facile *** difficulté moyenne **** difficile *****

Plus en détail

TOPOLOGIE DE LA DROITE REELLE

TOPOLOGIE DE LA DROITE REELLE TOPOLOGIE DE LA DROITE REELLE P. Pansu 16 mai 2005 1 Qu est-ce que la topologie? C est l étude des propriétés des objets qui sont conservées par déformation continue. Belle phrase, mais qui nécessite d

Plus en détail

Logique informatique 2013-2014. Examen

Logique informatique 2013-2014. Examen Logique informatique 2013-2014. Examen 30 mai 2013. Durée 3h. Tous les documents sont autorisés. Seuls les résultats du cours peuvent être utilisés sans démonstration. Le barême et la longueur des solutions

Plus en détail

1 Les arbres binaires en Java

1 Les arbres binaires en Java Université de Nice-Sophia Antipolis Deug MIAS-MI 1 Algorithmique & Programmation 2002 2003 TP N 10 Arbres binaires Buts : structuration des arbres binaires en Java. classes internes. objets de parcours.

Plus en détail

TS. 2012/2013. Lycée Prévert. Corrigé du contrôle n 3. Durée : 3 heures. Mardi 20/11/12

TS. 2012/2013. Lycée Prévert. Corrigé du contrôle n 3. Durée : 3 heures. Mardi 20/11/12 TS. 01/013. Lycée Prévert. Corrigé du contrôle n 3. Durée : 3 heures. Mardi 0/11/1 Exercice 1 : ( 6,5 pts) Première partie : Démonstration à rédiger { Démontrer que si ( ) et (v n ) sont deux suites telles

Plus en détail

UNIVERSITÉ DE CERGY Année 2012-2013 U.F.R. Économie & Gestion Licence d Économie et Mathématiques MATH104 : Mathématiques

UNIVERSITÉ DE CERGY Année 2012-2013 U.F.R. Économie & Gestion Licence d Économie et Mathématiques MATH104 : Mathématiques 1 UNIVERSITÉ DE CERGY Année 2012-201 U.F.R. Économie & Gestion Licence d Économie et Mathématiques MATH104 : Mathématiques Chapitre III : Polynômes 1 Fonctions polynômes & polynômes Définition 1. Soit

Plus en détail

Suites numériques 3. 1 Convergence et limite d une suite

Suites numériques 3. 1 Convergence et limite d une suite Suites numériques 3 1 Convergence et limite d une suite Nous savons que les termes de certaines suites s approchent de plus en plus d une certaine valeur quand n augmente : par exemple, les nombres u n

Plus en détail

Introduction: Arbres de recherche + Rappel: Arbres binaires de recherche

Introduction: Arbres de recherche + Rappel: Arbres binaires de recherche Introduction: Arbres de recherche + Rappel: Arbres binaires de recherche Dictionnaires ordonnés: Opérations principales: trouver(k): find(k): Si le dictionnaire a une entrée de clé k, retourne la valeur

Plus en détail

Problèmes de Mathématiques Filtres et ultrafiltres

Problèmes de Mathématiques Filtres et ultrafiltres Énoncé Soit E un ensemble non vide. On dit qu un sous-ensemble F de P(E) est un filtre sur E si (P 0 ) F. (P 1 ) (X, Y ) F 2, X Y F. (P 2 ) X F, Y P(E) : X Y Y F. (P 3 ) / F. Première Partie 1. Que dire

Plus en détail

Chapitre 1 : Évolution COURS

Chapitre 1 : Évolution COURS Chapitre 1 : Évolution COURS OBJECTIFS DU CHAPITRE Savoir déterminer le taux d évolution, le coefficient multiplicateur et l indice en base d une évolution. Connaître les liens entre ces notions et savoir

Plus en détail

Langages de spécification cours 4

Langages de spécification cours 4 Langages de spécification cours 4 Diagrammes de décision binaire(bdd) Catalin Dima Arbres de décision binaire Étant donnée une formule logique, on peut lui associer un arbre qui permet d évaluer la valeur

Plus en détail

Limites finies en un point

Limites finies en un point 8 Limites finies en un point Pour ce chapitre, sauf précision contraire, I désigne une partie non vide de R et f une fonction définie sur I et à valeurs réelles ou complees. Là encore, les fonctions usuelles,

Plus en détail

Tri en Python. # on cherche k tel que a k = min(a j ) ji

Tri en Python. # on cherche k tel que a k = min(a j ) ji Tri en Python On considère ici des tableaux ou listes d entiers ou de ottants. En Python, on peut trier une liste à l aide de la méthode sort : si a est une liste d entiers ou de ottants, a.sort() modi

Plus en détail

Arbres. Chapitre Introduction. option informatique. 1.1 Terminologie

Arbres. Chapitre Introduction. option informatique. 1.1 Terminologie Chapitre 3 option informatique Arbres 1. Introduction Nous avons déjà rencontré des arbres à la fin du module précédent, pour représenter une expression algébrique ou une liste. Nous avons pu nous contenter

Plus en détail

Théorie des Langages Formels Chapitre 5 : Automates minimaux

Théorie des Langages Formels Chapitre 5 : Automates minimaux Théorie des Langages Formels Chapitre 5 : Automates minimaux Florence Levé Florence.Leve@u-picardie.fr Année 2015-2016 1/29 Introduction Les algorithmes vus précédemment peuvent mener à des automates relativement

Plus en détail

INF601 : Algorithme et Structure de données

INF601 : Algorithme et Structure de données Cours 2 : TDA Arbre Binaire B. Jacob IC2/LIUM 27 février 2010 Plan 1 Introuction 2 Primitives u TDA Arbin 3 Réalisations u TDA Arbin par cellules chaînées par cellules contiguës par curseurs (faux pointeurs)

Plus en détail

Algorithmique et Structures de données Feuille 5 : Arbres binaires

Algorithmique et Structures de données Feuille 5 : Arbres binaires Université Bordeaux Algorithmique et Structures de données Feuille : Arbres binaires On considère le type abstrait arbrebinaire d objet défini en cours. Pour rappel voir annexe A. LicenceInformatique0-0

Plus en détail

Groupe symétrique. Chapitre II. 1 Définitions et généralités

Groupe symétrique. Chapitre II. 1 Définitions et généralités Chapitre II Groupe symétrique 1 Définitions et généralités Définition. Soient n et X l ensemble 1,..., n. On appelle permutation de X toute application bijective f : X X. On note S n l ensemble des permutations

Plus en détail

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des

Plus en détail

TP 8 : Arbres binaires de recherche

TP 8 : Arbres binaires de recherche TP 8 : Arbres binaires de recherche Semaine du 17 Mars 2008 Exercice 1 Dénir une structure struct noeud_s permettant de coder un n ud d'un arbre binaire contenant une valeur entière. Ajouter des typedef

Plus en détail

Licence de Sciences et Technologies. Fiche de cours 1 - Nombres réels.

Licence de Sciences et Technologies. Fiche de cours 1 - Nombres réels. Licence de Sciences et Technologies EM21 - Analyse Fiche de cours 1 - Nombres réels. On connaît les ensembles suivants, tous munis d une addition, d une multiplication, et d une relation d ordre compatibles

Plus en détail

Université Paris-Dauphine DUMI2E 1ère année, 2009-2010. Applications

Université Paris-Dauphine DUMI2E 1ère année, 2009-2010. Applications Université Paris-Dauphine DUMI2E 1ère année, 2009-2010 Applications 1 Introduction Une fonction f (plus précisément, une fonction réelle d une variable réelle) est une règle qui associe à tout réel x au

Plus en détail

chapitre 4 Nombres de Catalan

chapitre 4 Nombres de Catalan chapitre 4 Nombres de Catalan I Dénitions Dénition 1 La suite de Catalan (C n ) n est la suite dénie par C 0 = 1 et, pour tout n N, C n+1 = C k C n k. Exemple 2 On trouve rapidement C 0 = 1, C 1 = 1, C

Plus en détail

IN 101 - Cours 05. 7 octobre 2011. Un problème concret Recherche de collisions

IN 101 - Cours 05. 7 octobre 2011. Un problème concret Recherche de collisions Un problème concret Recherche de collisions IN 101 - Cours 05 7 octobre 2011 Le paradoxe des anniversaires dit que 365 élèves sont suffisants (en moyenne) pour avoir une collision d anniversaire, deux

Plus en détail

Introduction à l Algorithmique

Introduction à l Algorithmique Introduction à l Algorithmique N. Jacon 1 Définition et exemples Un algorithme est une procédure de calcul qui prend en entier une valeur ou un ensemble de valeurs et qui donne en sortie une valeur ou

Plus en détail

Intégration et probabilités TD1 Espaces mesurés Corrigé

Intégration et probabilités TD1 Espaces mesurés Corrigé Intégration et probabilités TD1 Espaces mesurés Corrigé 2012-2013 1 Petites questions 1 Est-ce que l ensemble des ouverts de R est une tribu? Réponse : Non, car le complémentaire de ], 0[ n est pas ouvert.

Plus en détail

Chapitre 2 Le problème de l unicité des solutions

Chapitre 2 Le problème de l unicité des solutions Université Joseph Fourier UE MAT 127 Mathématiques année 2011-2012 Chapitre 2 Le problème de l unicité des solutions Ce que nous verrons dans ce chapitre : un exemple d équation différentielle y = f(y)

Plus en détail