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

Boost C++ Discussion :

etiquette des noeuds - boost graph


Sujet :

Boost C++

  1. #1
    Membre régulier

    Inscrit en
    Août 2007
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 308
    Points : 100
    Points
    100
    Billets dans le blog
    1
    Par défaut etiquette des noeuds - boost graph
    Bonjour à tous,
    je débute avec boostGraph, je commence par effectuer un petit test. cependant,
    j'ai une petite question:
    voilà, le bout de code: je crée deux noeuds dans un graphe avec un arc qui relie ces deux noeuds
    je voudrai lors du parcours des arcs du graphe (ici un seul arc), afficher les etiquettes des noeuds (ici 12 et 20)

    le problème est que là, il m'affiche 0 et 1 (comme des index ou des identifiants des noeuds lors de leurs construction

    si vous avez une idée merci de m'aider




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    typedef adjacency_list<vecS, vecS, undirectedS, int, int> Graph;
    Graph _Bgraphe;
     typedef boost::graph_traits<Graph>::vertex_descriptor Vertex;
     
    Vertex v1 = add_vertex(_Bgraphe);
    Vertex v2 = add_vertex(_Bgraphe);
     
    _Bgraphe[v1] = 12;
    _Bgraphe[v2] = 20;
     
    graph_traits<Graph>::vertex_iterator v_it, v_end, debut;
    boost::tie(debut,v_end) = vertices(_Bgraphe);
     
    //parcours des neouds
    for (v_it=debut;v_it!=v_end;v_it++)
    {std::cout<<_Bgraphe[*v_it];
     
     
    }
      boost::add_edge(v1, v2, _Bgraphe); 
     
    std::cout << "edges(g) = ";
        graph_traits<Graph>::edge_iterator ei, ei_end;
     
      for (tie(ei, ei_end) = edges(_Bgraphe); ei != ei_end; ++ei)
          {
    std::cout<<"source ";
     std::cout << boost::source(*ei, _Bgraphe);std::cout << "\n cible ";
     std::cout << boost::target(*ei, _Bgraphe);

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Bonjour,
    Si ça peut t'aider, il y a un tutoriel Boost.Graph : Implémentation des graphes en C++ par Matthieu Brucher disponible dans la page tutoriel.

  3. #3
    Membre régulier

    Inscrit en
    Août 2007
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 308
    Points : 100
    Points
    100
    Billets dans le blog
    1
    Par défaut
    oui...J'ai vu ce lien Merci
    mais boost graph c'est tellement compliquée
    j'arrive pas à comprendre trés bien son principe

  4. #4
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Points : 588
    Points
    588
    Par défaut
    Citation Envoyé par nina2007 Voir le message
    oui...J'ai vu ce lien Merci
    mais boost graph c'est tellement compliquée
    j'arrive pas à comprendre trés bien son principe
    Ben Boost::Graph, c'est l'arsenal lourd pour effectuer des opérations sur des graph.

    Il est assez complet mais c'est vrai qu'il est très lourd pour une utilisation simple. Il serait préférable d'implémenter ta propre structure de graph si tu travailles pas avec des centaines de milliers de noeuds...

  5. #5
    Membre régulier

    Inscrit en
    Août 2007
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 308
    Points : 100
    Points
    100
    Billets dans le blog
    1
    Par défaut
    oui tu as raison...sauf que là, je dois manipuler des graphes avec des cycles
    et je voudrai utiliser des algos prêts et efficace tel que le tri topologique
    (qui existe en boost graph)
    par contre, j'aurai aussi besoin d'un algo de détection de cycle...est ce que ça existe d'aprés toi?

    merci

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    301
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 301
    Points : 345
    Points
    345
    Par défaut
    Tu mets des poids négatifs sur tes arcs (-1) en ajoutant un super noeud source (connecté à tout tes noeuds du graphe) et un super noeud puits (connecté à tout tes noeuds du graphe) et tu cherches le plus court chemin de la source au puits avec Bellman

  7. #7
    Membre régulier

    Inscrit en
    Août 2007
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 308
    Points : 100
    Points
    100
    Billets dans le blog
    1
    Par défaut
    au fait je suis encore loin de cette tache là...Je suis encore dans la phase construction du graphe
    mais merci pour ta réponse. Je m'en servirai à temps

Discussions similaires

  1. boost graph : design des exceptions approprié?
    Par victor_gasgas dans le forum Langage
    Réponses: 0
    Dernier message: 23/11/2012, 18h45
  2. Gestion automatique des positions des noeuds dans un graph
    Par maissaab dans le forum Général Python
    Réponses: 7
    Dernier message: 30/04/2011, 22h32
  3. recherche d'un noeud [Boost Graph]
    Par nina2007 dans le forum Boost
    Réponses: 2
    Dernier message: 14/10/2009, 22h57
  4. Positionnement automatique des noeuds dans un graphe
    Par Zoook dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 11/12/2008, 14h25
  5. Etiquettes des abscisses dans graph CR2008
    Par FRALEC dans le forum Débuter
    Réponses: 0
    Dernier message: 08/12/2008, 14h35

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