IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Hauteur d'un tas binaire


Sujet :

Algorithmes et structures de données

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    En recherche d’emploi
    Inscrit en
    Février 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : En recherche d’emploi

    Informations forums :
    Inscription : Février 2014
    Messages : 62
    Points : 36
    Points
    36
    Par défaut Hauteur d'un tas binaire
    Bonjour,

    J'ai un problème qui est de montrer qu'un tas binaire de n éléments a une hauteur de log(n).

    Voici ce que j'ai fait mais je suis pas sûr que c'est correct.

    On sait que le nombre d'éléments n dans un tas binaire est : 2^h+1 -1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    2^h+1 -1 = n
    log(2^h+1 -1) = log(n)
    (h+1) * log(2) - 1 = log(n)
    h+1 * 1 - 1 = log(n)
    h=log(n)
    Merci d'avance.

  2. #2
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 695
    Points
    10 695
    Billets dans le blog
    21
    Par défaut
    Bonsoir,

    Avec les parenthèses, cela serait mieux [CODEILINE]n = 2^(h+1)-1[/CODEINLINE].

    Maintenant, si j'ai bien compris, ce que tu souhaites, c'est ayant n, comment trouver h ?

    Simple :
    n = 2^(h+1) - 1
    n + 1 = 2^(h+1)
    log(n + 1) = log(2^(h+1))
    log(n + 1) = (h+1) log(2)
    log(n + 1) / log(2) = h + 1
    d'où h = log(n + 1) / log(2) - 1
    
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    En recherche d’emploi
    Inscrit en
    Février 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : En recherche d’emploi

    Informations forums :
    Inscription : Février 2014
    Messages : 62
    Points : 36
    Points
    36
    Par défaut
    Merci pour la réponse rapide.

    Pour résoudre le problème, je me suis dis que peut-être si l'on part de n on pourrait arriver au résultat.
    Pour cela, j'ai donc supposé que l'on connait n qui vaut : n = 2^(h+1) - 1
    J'ignore si c'est de cette façon qu'on doit le faire. Mais on dirait qu'on arrive à quelque chose.

    Pour le calcul
    Est ce que : h = log(n + 1) / log(2) - 1
    signifie que le tas a une hauteur de log(n) ?

    Désolé, si c'est une question bête.

  4. #4
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 695
    Points
    10 695
    Billets dans le blog
    21
    Par défaut
    Citation Envoyé par Revaroa Voir le message
    Pour le calcul
    Est ce que : h = log(n + 1) / log(2) - 1
    signifie que le tas a une hauteur de log(n) ?
    Non, cela signifie que la hauteur vaut log(n + 1) / log(2) - 1
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  5. #5
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 049
    Points : 9 384
    Points
    9 384
    Par défaut
    Tu peux le vérifier sur un exemple numérique :
    h = 10, tu peux construire un arbre de 511 éléments. Est-ce que log(511) = 10 ? non.
    En fait, je crois que tu as mal recopié l'énoncé de l'exercice :
    Tu as écrit :
    J'ai un problème qui est de montrer qu'un tas binaire de n éléments a une hauteur de log(n).
    Je crois que l'énoncé correct est plutôt :
    J'ai un problème qui est de montrer qu'un tas binaire de n éléments a une hauteur en log(n).
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  6. #6
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 416
    Points : 5 814
    Points
    5 814
    Par défaut
    Salut

    comment tu trouve 512 éléments pour une hauteur de 10 ?
    reprenons ça formule pour le calcul

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    n = 2^(h+1) - 1 =>( 2^(8+1)) -1 = 512 -1  => 511
    je vois pas bien ou intervient la valeur 10
    pour trouver ta hauteur avec le n

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =(LOG(n+1)/LOG(2)) - 1  =>  (LOG(511+1)/LOG(2))-1 =>  9 -1 => 8
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

Discussions similaires

  1. hauteur arbre non binaire, ou placer le return
    Par Acidmaster dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 31/01/2009, 20h10
  2. Fonction taille et hauteur arbre binaire de façon itérative
    Par kalthoum dans le forum Autres langages
    Réponses: 1
    Dernier message: 04/12/2006, 19h55
  3. communication fichier binaire fichier txt
    Par micdie dans le forum C
    Réponses: 3
    Dernier message: 05/12/2002, 00h19
  4. [JMF][MediaPlayer] hauteur et largeur de la video
    Par mbp566 dans le forum Multimédia
    Réponses: 3
    Dernier message: 07/08/2002, 15h19
  5. fichier binaire ou texte
    Par soussou dans le forum C++Builder
    Réponses: 4
    Dernier message: 14/06/2002, 13h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo