Algorithme de creation d'un arbre balance

Algorithme de creation d'un arbre balance - Algo - Programmation

Marsh Posté le 13-10-2003 à 11:47:21    

Bonjour,
 
Je souhaite realiser un programme utilisant les arbres balances sauf que je n'arrive pas a realiser l'algorithme d'insertion d'un element dans cet arbre. Un peu d'aide serait la bienvenue (ou des liens si vous avez).
Merci


---------------
CDr
Reply

Marsh Posté le 13-10-2003 à 11:47:21   

Reply

Marsh Posté le 14-10-2003 à 10:52:39    

C'est quoi que t'appelles un arbre balancé ?

Reply

Marsh Posté le 14-10-2003 à 16:09:06    

C'est du franglais, je suppose, il veut parler d'arbres équililbrés (balanced trees en anglais).
 
cdr> Après, reste à savoir si tu parles d'arbres binaires ou de B-Trees. Mais dans tous les cas, tu dois pouvoir trouver ton bonheur sur Google.

Reply

Marsh Posté le 14-10-2003 à 18:19:28    

On nou les a montrés comme ça, il ne s'agit pas d'arbres binaires équilibrés, c'est plus que ça. J'ai fait de nombreuses recherches sur google mais à par des exemples ou des descriptions sommaires j'ai rien alors que les algorithmes ne sont pas évident (je suis pas doué c'est vrai).
 
Sur cette page on peut voir une applet réalisant un arbre balancé mais je n'ai pas trouvé les sources.

Reply

Marsh Posté le 14-10-2003 à 20:59:37    

Tu peux soit l'équilibrer à la création  
(choix d'un point médian à chaque noeud pour avoir autant d'élément à gauche qu'à droite)
soit ajouter les éléments dans n'importe quel ordre
et appliquer un algo style "swing left/swing right"
pour équilibrer branche par branche.
 
La deuxième solution s'impose si tu veux ajouter/retirer constamment des éléments dans ton tableau.
 
LeGreg

Reply

Marsh Posté le 14-10-2003 à 22:50:13    

Normalement il est équilibré après chaque insertion. C'est d'ailleurs cet algo qui est compliqué et non l'insertion.
Là je me suis tourné vers un arbre binaire équilibré, l'équilibrage est plus facile car il n'y a qu'une seule clé par noeud et non pas plusieurs comme dans un arbre balancé (je me serais orienté vers un arbre balancé d'ordre 1 donc il y aurait eu 2 clés par noeud mais l'algo n'était vraiment pas évident et je n'ai pas le temps de le faire).

Reply

Marsh Posté le 15-10-2003 à 00:55:30    

http://www.lri.fr/~filliatr/fsets/ tiens quelques implémentations en caml prouvées formellement (et débuggées ... hum).

Reply

Marsh Posté le 15-10-2003 à 01:20:06    

jcomprend rien à ces trucs [:psywalk]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 15-10-2003 à 04:44:34    

Fait une recherche google sur « red-black trees » et « AVL trees ».

Reply

Marsh Posté le 16-10-2003 à 18:31:56    

Les red-black trees et AVL trees sont des arbres binaires équilibrés, c'est différent de ce que je cherche. Mes arbres balancés possèdent plusieurs clés par noeud (ce qui réduit le nombre de noeud et regroupe les valeurs pour les lectures sur disque par exemple).

Reply

Marsh Posté le 16-10-2003 à 18:31:56   

Reply

Marsh Posté le 22-10-2003 à 19:19:43    

cdr a écrit :

Les red-black trees et AVL trees sont des arbres binaires équilibrés, c'est différent de ce que je cherche. Mes arbres balancés possèdent plusieurs clés par noeud (ce qui réduit le nombre de noeud et regroupe les valeurs pour les lectures sur disque par exemple).


 
c étonnant ton exo, quand on parle d'arbres balancés en principe c pour les arbres binaires (arbre AVL). Pour des arbres n-aires, cela commence a devenir inutile du fait de la tres faible profondeur de l'arbre :/
t sur que c pas pour un arbre binaire ?


Message édité par Giz le 22-10-2003 à 19:20:09
Reply

Marsh Posté le 23-10-2003 à 18:36:19    

Justement la très faible profondeur est un avantage car ça permet de regrouper au même endroit les données, et cet avantage est immédiat sur disque puisque la lecture d'une page permet d'avoir plusieurs valeurs.
Enfin je vais pouvoir me débrouiller avec un arbre binaire équilibré, peut-être que je tenterai mieux plus tard.
Merci pour vos réponses

Reply

Marsh Posté le 23-10-2003 à 23:53:52    

vous avez ça dans vos tirroir un algo pour rebalancer un arbre


---------------
Borland rulez: http://pages.infinit.net/borland
Reply

Marsh Posté le 24-10-2003 à 00:44:58    

<--- lisez ici !
 

os2 a écrit :

vous avez ça dans vos tirroir un algo pour rebalancer un arbre


http://brassens.upmf-grenoble.fr/I [...] resAVL.htm
merci à  
http://www.google.com/search?hl=en [...] gle+Search
pour son efficacité !
 
au passage, "to balance" veut dire "equilibrer" dans notre chère langue de Molière.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed