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 :

Matrice Graphe C++


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre tr�s actif
    Inscrit en
    F�vrier 2011
    Messages
    188
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2011
    Messages : 188
    Par d�faut Matrice Graphe C++
    salut

    j'ai besoin d�impl�menter une matrice qui repr�sente un graphe. j'utilise la notion du vector : vector<vector<type> > matriceGraphe. Mais, je me trouve devant le probl�me suivant :

    Mon graphe est compos� d'un ensemble des n�uds de diff�rents type ainsi qu'un ensemble des arcs de diff�rents types (en fait chaque type n�ud ou arc est une classe ) donc le probl�me comment d�clarer �a ?
    Images attach�es Images attach�es  

  2. #2
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    �tudiant
    Inscrit en
    F�vrier 2012
    Messages
    788
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 35
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : F�vrier 2012
    Messages : 788
    Par d�faut
    Si tes classes (n�ud et arc) fournissent respectivement les m�mes services (c'est-�-dire qu'elles ont respectivement la m�me interface), tu peux utiliser le polymorphisme (d'inclusion).
    (Attention avec la classe std::vector et l'h�ritage, le plus "simple" et de stocker des std::vector<std::shared_ptr<T>> ou des std::vector<std::unique_ptr<T>> selon l'usage)
    FAQ C++ - H�ritage

    Si ce n'est pas le cas, tu peux cr�er un type qui contient tous les types possibles et faire les tests qui vont bien pour savoir lequel utiliser (?) (On peut peut �tre utiliser une union (?)). Mais cette solution est � �viter.

  3. #3
    Membre tr�s actif
    Inscrit en
    F�vrier 2011
    Messages
    188
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2011
    Messages : 188
    Par d�faut
    Merci pour la r�ponse mais je ne parle d'h�ritage ici. La difficult� pour moi est le type des n�uds et des arcs : les n�uds du graphe ont un type complexe(classe) diff�rent du type des arcs (aussi classe). En fait, le graphe est compos� des instances de la classe N�ud (N�ud.h) et les arc sont des instances de la classe Arc (Arc.h). Aidez moi comment je peux impl�menter �a?

    Si j'utilise l'imbrication des vecteurs pour impl�menter la matrice (i.e vector<vector> ), est ce je peux donner pour chaque vecteur un type diff�rent?

  4. #4
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    �tudiant
    Inscrit en
    F�vrier 2012
    Messages
    788
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 35
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : F�vrier 2012
    Messages : 788
    Par d�faut
    Citation Envoy� par kochfet Voir le message
    Si j'utilise l'imbrication des vecteurs pour impl�menter la matrice (i.e vector<vector> ), est ce je peux donner pour chaque vecteur un type diff�rent?
    Non, c'est std::vector<std::vector<T>>.
    Il existe les tuple qui permettrait de faire std::tuple<std::vector<T>, std::vector<U>, std::vector<V>, ...> mais je ne pense pas que ce soit que tu veux faire.

    J'ai du mal � comprendre ton probl�me, qu'est-ce qui ne va pas avec un truc du genre :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    class noeud
    {
        T value;
        std::pair<noeud, int> arcs; // Les arcs mènent à un noeud et ont un poids
    };
     
    std::vector<noeud> graphe;

  5. #5
    Membre tr�s actif
    Inscrit en
    F�vrier 2011
    Messages
    188
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2011
    Messages : 188
    Par d�faut
    la classe N�ud et la classe Arc sont ind�pendantes. Le graphe � construire a pour sommets des instances de la classe N�ud et pour arcs des instances de la classe Arc. La matrice correspondante est donn�e dans la figure ci-joint.
    (N1,N2, N3 sont de type Noeud et Arc1, Arc2 et Arc3 sont de type Arc)
    Images attach�es Images attach�es  

  6. #6
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    �tudiant
    Inscrit en
    F�vrier 2012
    Messages
    788
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 35
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : F�vrier 2012
    Messages : 788
    Par d�faut
    Citation Envoy� par kochfet Voir le message
    (N1,N2, N3 sont de type Noeud et Arc1, Arc2 et Arc3 sont de type Arc)
    C'est plus le m�me probl�me que dans le premier message (?!)

    Citation Envoy� par kochfet Voir le message
    Mon graphe est compos� d'un ensemble des n�uds de diff�rents type ainsi qu'un ensemble des arcs de diff�rents types (en fait chaque type n�ud ou arc est une classe)
    Tu peux donc utiliser std::map<Noeud, std::map<Noeud, Arc>>

  7. #7
    Membre tr�s actif
    Inscrit en
    F�vrier 2011
    Messages
    188
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2011
    Messages : 188
    Par d�faut
    Merci pour votre r�ponse, je vais essayer �a

  8. #8
    Expert �minent

    Femme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (�le de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par d�faut
    M�me si tu ne l'utilise pas, va jeter un �il du c�t� de boost.graph, les explications peuvent te donner des id�es sur les possibilit�s d'impl�mentation.

  9. #9
    Membre tr�s actif
    Inscrit en
    F�vrier 2011
    Messages
    188
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2011
    Messages : 188
    Par d�faut
    svp
    j'ai rencontr� une erreur dans la compilation de mon code :
    En fait, j'ai une classe classe A avec les deux constructeurs suivant:
    un constructeur par d�faut : A(cout<<"par d�faut")
    un constructeur param�tr� : A(int a);
    aussi j'ai une classe B d�riv�e de A ( class B : public A). Cette classe possede aussi deux constructeurs :
    un constructeur par d�faut : B()
    un constructeur param�tr� : B(int b); Dans le fichier B.cpp
    j��cris B(int b) {A(a)} c�d j'ai fait appel au constructeur param�tr� de A puisqu'elle est sa classe m�re.

    Dans le main j'instancie un objet de type B comme suit :
    B obj(4);
    j'essaye d'afficher le 4 mais il s'affiche par d�faut c-a-d
    un appel du constructeur par d�faut de A est appel� et pas le constructeur param�tr�. Je veux savoir qu'elle est ma faute?

  10. #10
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par d�faut
    Salut

    Il faut �crire

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    B::B(int b) : A(b) 
    {
    }
    Et pas

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    B::B(int b)
    {
      A(b);
    }
    Ta faute est que la ligne A(b); cr�e un objet temporaire de classe A qui est d�truit imm�diatement. Ca ne sert donc � rien. Tu viendrais pas du Java par hasard ?

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Graphe -> matrice
    Par etplus dans le forum 2D
    R�ponses: 5
    Dernier message: 25/03/2009, 10h56
  2. Boucle parcourant une matrice [graphe]
    Par Linu6 dans le forum Algorithmes et structures de donn�es
    R�ponses: 10
    Dernier message: 15/08/2008, 01h24
  3. Construction d'un graphe �toil� � partir d'une matrice
    Par jyboo dans le forum Interfaces Graphiques en Java
    R�ponses: 10
    Dernier message: 15/02/2008, 17h38
  4. Matrice d'adjacence et graphe
    Par xavhawk dans le forum Images
    R�ponses: 4
    Dernier message: 19/10/2007, 09h11
  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