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 :

recursivite et profondeur


Sujet :

Algorithmes et structures de données

  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 711
    Points : 751
    Points
    751
    Par défaut recursivite et profondeur
    bonjour a tous !! j'ai un petit probleme un peu casse tete :

    e bosse sur un petit programme dont le coeur est une fonction recursive binaire qui s'arrete quand une precision donnée sur le resultat est atteint.. le probleme c'est que ca peut prendre tres longtemps, je cherche un moyen d'estimer le temps que ca va prendre.

    l'idee que j'avais eu, c'etait de regarder le nombre de fois qu'il passait par une certaine profondeur.

    par exemple, a priori il va passer en tout 4fois a la profondeur 2, donc la premiere fois j'affiche "0%", la deuxieme foi 25% .. ja 100%.

    jusque la tout va bien, sauf que mon programme fonctionne en recursif mais avec une pile que je gere moi meme ( donc en iteratif, en fait :-) ), donc je ne sais pas comment retrouver la profondeur.. voici un pseudo-pseudo-code de mon programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Pile P
    empiler(element de depart)
     
    tant que la pile n'est pas vide
       A<-- depiler(P)
       si A verifie une certaine condition, il est stocké (ou viré)
       sinon, couper A en 2 : A1 et A2
       empiler(A1), empiler(A2)
    fin tant que
    voila, en fait j'aimerais savoir s'il y a un moyen de savoir a quelle profondeur on est, en fonction de la taille de la pile et eventuellement de la situation ou on est : est ce qu'on vient de stocker ou de couper, a quelle profondeur on etait la derniere fois..

    merci d'avoir tout lu !!

  2. #2
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Passer en paramètre ces données.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  3. #3
    LLB
    LLB est déconnecté
    Membre expérimenté
    Inscrit en
    Mars 2002
    Messages
    967
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 967
    Points : 1 410
    Points
    1 410
    Par défaut
    Pile P
    empiler(element de depart, 1)

    tant que la pile n'est pas vide
    A, prof <-- depiler(P)
    si A verifie une certaine condition, il est stocké (ou viré)
    sinon, couper A en 2 : A1 et A2
    empiler(A1, prof + 1), empiler(A2, prof + 1)
    fin tant que

  4. #4
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 711
    Points : 751
    Points
    751
    Par défaut
    aaarg, je crois qu'on ne s'est pas compris :-) si c'etait si simple.. mon pseudo code vous a induit en erreur : ma fonction n'est pas "empiler"... "empiler est la fonction standard... qui empile ! le probleme vient justement du fait que j'ai du recursif derecursivé, donc tout est basé sur : tant que la pile n'est pas vide, je mouline. si l'element courant verifie une condition, je le sors, sinon je le coupe et j'empile les 2.. amoins qu'effectivement, je me debrouille pour stocker a cote de chaque element la profondeur a laquelle je l'ai mis.. ca peut se cresuer.

    en fait, je pensais plutot a une formule en fonction de la taille de la pile, de l'action effectuée... pour rettrouver la profondeur..

    merci, en tout cas !!

  5. #5
    LLB
    LLB est déconnecté
    Membre expérimenté
    Inscrit en
    Mars 2002
    Messages
    967
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 967
    Points : 1 410
    Points
    1 410
    Par défaut
    Citation Envoyé par jobherzt
    amoins qu'effectivement, je me debrouille pour stocker a cote de chaque element la profondeur a laquelle je l'ai mis.. ca peut se cresuer.
    Oui, c'est ce que je proposais.
    C'est très simple à mettre en oeuvre et relativement efficace.

    Citation Envoyé par jobherzt
    en fait, je pensais plutot a une formule en fonction de la taille de la pile, de l'action effectuée... pour rettrouver la profondeur..
    Je ne pense pas qu'on puisse le faire de façon simple. En fonction que l'on se trouve dans le fils gauche ou le fils droit, on n'aura pas la même taille de la pile. Donc, trouver une formule qui marche dans le cas général me semble bien compliqué.

  6. #6
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 711
    Points : 751
    Points
    751
    Par défaut
    Citation Envoyé par LLB
    Oui, c'est ce que je proposais.
    C'est très simple à mettre en oeuvre et relativement efficace.
    oui, du coup j'envisage d'utiliser une deuxieme pile dans laquelle je push/pop les profondeurs associées. je pourrais passer par une structure mais ca m'obligerait a changer pas mal de chose.

    Citation Envoyé par LLB
    Je ne pense pas qu'on puisse le faire de façon simple. En fonction que l'on se trouve dans le fils gauche ou le fils droit, on n'aura pas la même taille de la pile. Donc, trouver une formule qui marche dans le cas général me semble bien compliqué.
    c'est bien mon probleme !! j'avis l'intuition qu'il devait y a voir un truc, en fonction de la taille de la pile, de la profondeur calculée precedemment, etc.. mais en fait j'ai l'impression que c'est s'emm... pour rien !

    merci a tous, je considere que c'est résolu !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Iteration VS recursivité
    Par yacinechaouche dans le forum C
    Réponses: 40
    Dernier message: 16/11/2012, 11h52
  2. Bug avec le test de profondeur
    Par Tellmarch dans le forum OpenGL
    Réponses: 1
    Dernier message: 17/10/2004, 00h59
  3. [CR10] Recursivite
    Par loumanga dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 04/10/2004, 11h14
  4. [FLASH MX 2004]-probleme de recursivité.
    Par calfater dans le forum Flash
    Réponses: 3
    Dernier message: 10/05/2004, 19h48
  5. Problème de profondeur
    Par nans80 dans le forum OpenGL
    Réponses: 4
    Dernier message: 07/04/2004, 21h51

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