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

C++ Discussion :

Représentation optimale d'un graphe en C++


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de betsprite
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    472
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 472
    Par défaut Représentation optimale d'un graphe en C++
    Bonjour tout le monde,

    Afin de pouvoir tester des algorithmes de théorie des graphes pour la recherche d'une coupe minimale (et à plus long terme la segmentation d'une image), j'ai besoin de construire tout d'abord un graphe.

    Or d'après vous, quelle est la meilleur représentation possible d'un graphe en C++ ? Une simple matrice avec en (i,j) la valeur de l'arc (i,j) ? Ou a-t-on besoin d'autres données ? Doit-on en faire une classe ou une structure ?

    Je vous remercie !

    Edit : Pour répondre à l'une de mes questions déjà, j'ai besoin d'autres données que seulement la valeur de l'arc. Voulant utiliser des algorithmes de théorie des graphes sur les flots (Ford-Fulkerson et Push-Relabel), j'ai besoin de connaître aussi par exemple l'excès de flot en un noeud du graphe. Mais comment représenter l'ensemble de mon graphe d'après vous ?

  2. #2
    Membre Expert
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Par défaut
    ca depend de l'algo.

    je préconise boost.graph

  3. #3
    Membre éclairé
    Avatar de betsprite
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    472
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 472
    Par défaut
    Merci Joel F pour ta réponse.

    En fait, ca me dérange pas de recoder mes propres classes pour la création d'un graphe. Après, si je créé les classes graphe, arête et sommet, qu'est ce que m'apporterais boost en plus pour la création des graphes ?

    Merci !

  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    boost.graph apporte avant tout des algorithmes, adaptables à des classes de graphes existantes. Elle fournit aussi plusieurs classes de graphe, avec des choix différents en terme de compromis.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  5. #5
    Membre éclairé
    Avatar de betsprite
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    472
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 472
    Par défaut
    Merci JolyLoic pour l'explication.

    Etant donné que je veux développer l'algorithme de Ford-Fulkerson moi-même, je ne vais donc pas utiliser Boost.

    Par contre, connaitriez-vous la représentation optimale d'un graphe en C++?
    Une classe pour le graphe, une autre pour les sommets, et une troisième pour les arêtes avec en attributs la capacité et le flot de l'arête ?

    Merci !

  6. #6
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Ce que j'ai essayé de dire, c'est qu'il n'y a pas de représentation de graphe optimale, ni en C++, ni dans aucun langage. Certaines représentations sont plus adaptées à certains algorithmes, d'autres à d'autres, et on doit souvent choisir la moins mauvaise en fonction des algorithmes que l'on pense utiliser, ainsi que d'autres contraintes (nombre de nœuds, topologie du graphe, compatibilité avec du code existant, dynamicité du graphe,flexibilité de modifications du code...).

    Même la phrase "Une classe pour le graphe, une autre pour les sommets, et une troisième pour les arêtes avec en attributs la capacité et le flot de l'arête ?" est extrêmement imprécise. Par exemple, dans ces classes, qui connait qui (lien direct entre sommets ? Un sommet connaît-il les arrêtes suivantes, précédentes, les deux ?...) ? Comment est géré cette connaissance (vector, list, map... d'objet, de pointeurs (intelligents ?)...).
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

Discussions similaires

  1. Représentation graphique d'un graphe
    Par garheb dans le forum 2D
    Réponses: 1
    Dernier message: 14/11/2012, 00h08
  2. Réponses: 6
    Dernier message: 06/12/2007, 09h33
  3. Réponses: 2
    Dernier message: 15/10/2007, 11h28
  4. Représentation de graphes et réseaux
    Par Bardack dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 02/03/2007, 11h34
  5. Théorie des graphes : Représentation GRAPHIQUE d'une matrice d'adjacence
    Par jm_gouy dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 03/05/2006, 16h53

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