Questions / réponses

Affichage Des Arbres

Affichage Des Arbres

Bởi Athman Mekhzoumi -
Số lượng các câu trả lời: 3
Bonjour,
   j'ai écrit ce code :
   let t = bst ();;
   let _ = view_mult t;;
   let _ = view_mult (bst_insert t 2);;
   pour visualiser l'arbre avant et apres l'exécution mais ça m'affiche le même arbre a chaque fois !
Merci.


Để phản hồi tới Athman Mekhzoumi

Re: Affichage Des Arbres

Bởi Marc Zeitoun -

Je pense que c'est parce que l'arbre contient déjà la clé 2. Sa multiplicité est donc juste augmentée, et il est facile de manquer la différence entre les 2 arbres.

La fonction bst génère comme clés 1, 2, 3... jusqu'à la taille de l'arbre.

Pour tester l'insertion, il serait plus adapté d'avoir des clés 10, 20, 30, ... qui permettent d'insérer des éléments situés entre ceux déjà présents dans l'arbre. Par ailleurs, il est utile de générer des clés avec la multiplicité seulement 1 pour tester des cas intéressants.

Pour cela, on peut par exemple utiliser les fonctions suivantes :

(* Multiplie toutes les clés de t par n *)
let rec multiply_bst_keys n t = match t with
    Empty -> Empty
  | Bin((x,v),l,r) -> Bin((n*x,v), multiply_bst_keys n l, multiply_bst_keys n r)

(* Génère un ABR de taille 15 par défaut, dont les clés sont multiples de 10  et de multiplicité égale à 1 *)
let my_bst ?(size=15) () = multiply_bst_keys 10 (bst ~size ~max_multiplicity:1 ())

let t = my_bst ()
let _ = view_mult t
let _ = view_mult (bst_insert t 2)
let _ = view_mult (bst_insert t 55)

On peut préciser une autre taille par my_bst ~size:25 () par exemple.

Để phản hồi tới Marc Zeitoun

Re: Affichage Des Arbres

Bởi Athman Mekhzoumi -

Bonjour,

   J'ai bien détaillé le 2 arbres obtenu mais n'y avait pas de différence, même pas une augmentation dans la multiplicité de l'étiquette '2' entre l'arbre initiale et l'arbre obtenu .


Để phản hồi tới Athman Mekhzoumi

Re: Affichage Des Arbres

Bởi Marc Zeitoun -

Je viens de tester au CREMI et ça fonctionne sans aucun problème. 

Pour info, le fichier généré s'appelle tmp.png, et il est écrasé à chaque visualisation. Au CREMI, le visualiseur conserve en cache l'ancien fichier, on voit donc l'ancien et le nouveau. Sur d'autres systèmes, le visualiseur va mettre à jour la fenêtre contenant l'ancien fichier. Pour comparer l'ancien (arbre avant insertion) et le nouveau, il faut donc sauvegarder sous un autre nom de fichier le premier schéma d'arbre.