Inscription / Connexion Nouveau Sujet
Niveau calculatrices
Partager :

Etude de complexité en Caml

Posté par rust (invité) 01-10-06 à 15:52

bonjour,

je sais que c'est un forum de maths, mais je n'ai trouvé aucun forum réservé a Caml, et je sais que cet un programme très utilisé en prépa.

On définit le type: type int_arbre=Nil | Noeud of int*int_arbre*int_arbre ;;

Et j'ai la fonction:

let rec couper c=fun
Nil->(Nil,Nil)
|(Noeud(i,A,B))->let(Ga,Da)=(couper c A)
in let(Gb,Db)=(couper c B)
in if c<=1 then (Ga,(Noeud(i,Da,B)))
else ((Noeud(i,A,Gb)),Db);;


C'est un devoir maison sur les arbres bianire de recherche.

Je dois montrer que si n désigne la hauteur de l'arbre pris en argument, alors la complexité de la fonction couper est inférieure ou égale a n, en nombre d'appels récursifs.

J'avoue que je n'ai pas compris grand chose a l'etude de la complexité, donc si quelqu'un pouvait m'aider, merci beaucoup

Posté par rust (invité)re : Etude de complexité en Caml 01-10-06 à 15:53

oups désolé j'ai fait une erreur de frappe, c'est  in if c<=i then (Ga,(Noeud(i,Da,B))) a la troisième ligne

Posté par rust (invité)re : Etude de complexité en Caml 01-10-06 à 19:31

Personne ne connait Caml ?

Posté par
stokastik
re : Etude de complexité en Caml 01-10-06 à 20:01


J'en ai fait un peu à la fac mais on captait rien, sûrement à cause du prof parce que je vois pas pour quelle raison je ne pourrais pas comprendre un langage informatique.

Mais bon la complexité dépend de l'algorithme et non du langage non ? Alors si tu nous donnais l'algorithme "en clair" peut-être qu'on pourrait t'aider.

Posté par rust (invité)re : Etude de complexité en Caml 01-10-06 à 20:29

Ok je vais essayer d'expliquer clairement :

C'est a propos des arbres bianires de recherche(ABR).
C'est a dire qu'il y a une racine r, et deux sous arbres tel que tous les elements du sous arbres de gauche soient inférieur a la racine, et que tous les éléments du sous arbres de droite soient supérieur a la racine.

On appelle coupure d'un ABR A selon une valeur c, une partition de A en un couple de sous-arbres Ga et Da tel que:
-Ga et Ga sont des ABR
-l'ensemble des valeurs de A soit l'union des valeurs de Ga et Da
-Pour tous elements j de Ga, j<=c
-Pour tous elements j de Da, j>c

En gros l'algorithme permet de couper un arbre selon une valeur.C'est une fonction recursive.

Un arbre est noté Noeud(r,A,B) avec r la racine, A le sous arbre gauche et B le sous arbre droit.

-Si on prend l'arbre vide en argument, le programme rend deux arbres vides.
Si on prend Noeud(i,A,B) un arbre, on appelle Ga et Da les deux sous arbres de A qui proviennent de la fonction couper (qui est recursive). Pareil pour Gb et Db.
Si c (la valeur de coupure) est inférieur a i, alors on rend les deux sous arbre: Ga et Noeud(i,Da,B) (c'est a dire l'arbre de racine i, de sous arbre gauche Da, et de sous arbre droit B)
Sinon on rend les deux sous arbres Noeud(i,A,Gb) et Db.

Voilà, j'espère que j'ai été clair.

Posté par
stokastik
re : Etude de complexité en Caml 01-10-06 à 20:38


Ah désolé moi je ne pourrai pas t'aider je ne sais pas ce que c'est un arbre

Posté par rust (invité)re : Etude de complexité en Caml 01-10-06 à 20:49

ben en gros un arbre c'est un truc du genre



Y'a pas grand chose de plus a expliquer, ici A est la racine, tout ce qui part a gauche est la sous arbre gauche, et ce qui part a droite est le sous arbre droit.
Et la hauteur, c'est le plus grand nombre de branches( représenter pas des traits) entre la racine et une feuille (c'est adire une extrmité)

Enfin bon, si tu connais pas, ca m'etonnerait que ca te suffise. Tant pis.
Merci quand meme

Posté par
stokastik
re : Etude de complexité en Caml 01-10-06 à 20:53


Oui ok mais tu compares les éléments de l'arbre à une valeur c, ça je ne suis pas sûr de comprendre.

Posté par
stokastik
re : Etude de complexité en Caml 01-10-06 à 20:55


Regarde si je ne sais pas ce que c'est un arbre : variables aléatoires discrètes

Posté par rust (invité)re : Etude de complexité en Caml 01-10-06 à 21:11

Oui en effet, c'est un très joli arbre.

En fait, c'est parce que dans le lien que je t'ai donnée, ce sont des lettres, mais dans mons devoir, ce sont des chiffres.
Par exemple tu remplace:
A=13,B=11,C=15,D=8,E=12,F=14,G=16

Posté par
stokastik
re : Etude de complexité en Caml 01-10-06 à 21:19


Ok donc il y a un chiffre à chaque connection et ce que tu appelles les éléments d'un arbre ce sont les chiffres sur ses connections c'est bien ça ?

Posté par rust (invité)re : Etude de complexité en Caml 01-10-06 à 21:19

oui c'est ca

Posté par
stokastik
re : Etude de complexité en Caml 01-10-06 à 22:00


En fait je comprends pas comment on fait une partition d'un arbre en deux sous-arbres...

Posté par rust (invité)re : Etude de complexité en Caml 01-10-06 à 22:02

tant pis, si tu comprend pas faudrait que je t'explique tout vraiment point par point, et j'ai deja essaye de la plus clair possible donc ca va etre dur.
Merci quand meme



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !