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 :

Algorithme pour representer des arbres quelconques


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 114
    Points : 57
    Points
    57
    Par défaut Algorithme pour representer des arbres quelconques
    Bonjour,

    je dois representer des arbres quelconques ! J'ai cherche un peu des algorithmes sur le net, et je suis tombe sur des "ameliorations de l'algorithme de Walker". Seulement ca me parait complique pour l'usage que je veux en faire. Est-ce que quelqu'un aurait une description claire de cet algorithme a me recommander ou meme d'un autre ? Un cours de fac ou quelque chose qui donne pas envie de s'enfuir en le voyant...

    Merci !

  2. #2
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 369
    Points : 40 164
    Points
    40 164
    Par défaut
    Bien le bonsoir,

    un algorithme pour représenter un arbre, c'est pas clair.

    Tu cherches à créer la structure de données "arbre quelconque" ou bien tu cherches des algos sur les arbres (recherche, parcours, insertion ...) ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 114
    Points : 57
    Points
    57
    Par défaut
    Bonjour khayyam90,

    je cherche un algorithme pour l'affichage graphique d'arbres quelconques.

  4. #4
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 369
    Points : 40 164
    Points
    40 164
    Par défaut
    pour l'affichage d'un arbre, il va falloir le parcourir. Et les méthodes se divisent en 2 catégories : parcours en largeur et parcours en profondeur.
    Ces méthodes sont détaillées ici pour des arbres binaires. Pour passer à des arbres n-aires, il suffit de considérer un tableau de fils.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 114
    Points : 57
    Points
    57
    Par défaut
    Merci pour ta reponse khayyam90.

    J'ai trouve quelque chose de simple (qui a l'air simple !).

    1. parcours post-order
    a. calcul de coordonnees preliminaires et de mofifieurs (cette partie est bien detaillee)
    b. decalage des sous-arbres pour eviter le recouvrement entre cousins

    2. parcours pre-order
    calcul des coordonnees reelles (coord. prelim. + somme des modifieurs des ancetres)

    J'ai implemente cela, sauf le 1.b. je ne comprends pas exactement ce qu'il faut faire. Ce que je comprends, c'est que quand deux cousins se recouvrent, il faut decaler un sous-arbre... j'imagine que ce qu'il faut decaler c'est le sous-arbre dont le pere du cousin (l'oncle !) est la racine, sauf que l'oncle lui-meme doit etre moins decale... Me trompe-je ? Si quelqu'un s'y connait, je suis preneur de toute explication !

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 114
    Points : 57
    Points
    57
    Par défaut
    Oui je me trompe ! Je crois que l'oncle doir etre decale pareil ! C'est juste que ca modifie les modifieurs de ses ancetres. Ok j'essaie et si ca foire je reviens pleurer ici !

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 114
    Points : 57
    Points
    57
    Par défaut
    Wouhou ! J'en suis venu a bout !

    Au final, je traite le recouvrement des cousins dans un troisieme passage (post-order). C'est a dire : si deux cousins se recouvrent, decaler celui de droite et centrer ses ancetres. Je sais pas si la complexite reste lineaire, mais pour ce que je veux en faire et vu la taille de mes arbres, m'en fous !

  8. #8
    Nouveau membre du Club
    Inscrit en
    Août 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 26
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par yarf
    Wouhou ! J'en suis venu a bout !

    Au final, je traite le recouvrement des cousins dans un troisieme passage (post-order). C'est a dire : si deux cousins se recouvrent, decaler celui de droite et centrer ses ancetres. Je sais pas si la complexite reste lineaire, mais pour ce que je veux en faire et vu la taille de mes arbres, m'en fous !
    L'avantage de la première methode est justement d'eviter ce triosième passage. Tu n'a donc pas compris que le premier passage, mais en place les valeurs pour que le deuxième puisse les calculer.

    1) on remonte les décalages
    2) on descend les décalages

    avec un parcours en largeur, un seul passage sufit, seul défaut la taille de la file d'attente des noeuds.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 114
    Points : 57
    Points
    57
    Par défaut
    Bonjour buzard,

    tes explications sont un peu vagues. Aurais-tu un lien vers un cours, ou une explication plus detaillee ? Et puis je ne vois pas le probleme : si chaque passage est en O(n), on peut en faire trois ca ne change pas grand chose. Le probleme c'est que mon troisieme passage a de fortes chances d'avoir une plus grande complexite tant je ne m'en suis pas preoccupe !

    Et si j'ai bien compris que le premier passage met en place les valeurs pour que le deuxième puisse les calculer. Le probleme pour faire d'une pierre deux coups dans le premier passage, c'est qu'avant d'avoir justement fait les decalages vers le bas du deuxieme passage, on ne peut pas savoir si les cousins se recouvrent. Ou bien vraiment il faut m'expliquer comment !

    Enfin ce serait juste a titre informatif, je voulais juste afficher de petits arbres...

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

Discussions similaires

  1. Algorithme pour regrouper des nombres (combinaisons ?)
    Par Fabricer66 dans le forum Intelligence artificielle
    Réponses: 10
    Dernier message: 12/06/2009, 13h37
  2. Réponses: 20
    Dernier message: 11/09/2008, 14h20
  3. Algorithme pour générer des matrices
    Par senacle dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 13/12/2007, 14h32
  4. Outil pour comparer des arbres
    Par kenny49 dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 10/07/2007, 18h53
  5. Réponses: 3
    Dernier message: 27/07/2004, 12h01

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