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 :

[graph] comment faire un AStar?


Sujet :

Boost C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 290
    Billets dans le blog
    2
    Par défaut [graph] comment faire un AStar?
    Bonsoir,

    je ne parviens pas à achever mon A* avec boost.
    Je me suis insipiré de la doc officielle sur boost:a_star, de celle sur boost::graph et du tuto de Matthieu, mais je bloque sur le remplissage du graphe

    Voici où j'en suis:

    J'ai un type Sommet et un vecteur qui contient tous mes sommets:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vector<Sommet*> sommets; // ce sont des pointeurs car en plus il y a une histoire de polymorphisme
    Ensuite j'ai un vecteur d'arcs (Edge) qui représente tous les arcs de mon graphes (un arc relie deux sommets):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    typedef std::pair<Sommet*, Sommet*> Edge;
    vector<Edge> edges;
    Ensuite j'ai un vecteur de coûts (le coût qu'il faut dépenser pour aller d'un sommet à un autre). Un coût est représenté par un entier:
    Ensuite, je créé un graphe ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // déclaration du type de mon graphe
    typedef adjacency_list<listS, vecS, undirectedS, no_property, property<edge_weight_t, int> > mygraph_t;
     
    // construction du graphe:
    mygraph_t g( edges.size() );
    Ca semble fonctionner. Ca compile et ça ne plante pas.
    Mais maintenant, je ne parviens pas à le remplir. J'ai tenté plusieurs choses du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // déclaration de edge_descriptor
    typedef mygraph_t::edge_descriptor edge_descriptor;
     
    // remplissage du graphe
    for( size_t j = 0; j < edges.size(); ++j ) 
    {
    	edge_descriptor e; 
    	bool inserted;
    	tie( e, inserted ) = add_edge( edges[j].first, edges[j].second, g );
    }
    Mais ça ne fonctionne pas et je ne comprends pas les erreurs affichées
    Par exemple je ne comprends pas à quel endroit je dois lui dire que les sommets du graphe sont de type Sommet*.
    Je ne comprends pas non plus ce que c'est que ce edge_descriptor. Et cette fonction tie() ?

    Si quelqu'un a une idée, une piste, une explication ou un lien à me fournir, toute aide sera la bienvenue

    merci.

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    faut peut-être mettre les sommets avant de mettre les arêtes

Discussions similaires

  1. [XL-2010] [ FILTRE & GRAPHE ] Comment faire ?
    Par efoulart dans le forum Excel
    Réponses: 4
    Dernier message: 16/10/2013, 15h11
  2. comment faire un graphe d' un radar
    Par abdellatif gasmi dans le forum LabVIEW
    Réponses: 0
    Dernier message: 27/02/2010, 22h55
  3. Graph Excel ? Comment faire ?
    Par moutavril dans le forum Excel
    Réponses: 3
    Dernier message: 25/03/2008, 16h48
  4. [JpGraph] Comment faire pour que la courbe remplisse bien le graph ?
    Par [ZiP] dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 28/12/2007, 22h33
  5. Comment faire pour enregister un graphe
    Par morrison29 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 07/11/2006, 13h58

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