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 :

Idée sur un graphe


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 66
    Par défaut Idée sur un graphe
    salut
    je dois implementer un graphe (graphe : cas général). je cherche la meilleure structure possible.
    je crois que je vais utiliser celle ci :
    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
    une classe noeud
    {
        contient l'information du noeud (nom ...)
        un suivant de type poids* (en fait c'est une liste de poids* et suivant est 
        la tete de cette liste)
    }
     
    une classe poids
    {
        contient un le cout ou poids (un entier ou float ..., c'est le poids d'une 
        arete)
        un frere de type poids* (en fait c'est une liste de poids* qui partent du 
        meme noeud)
        un suivant de type noeud* (c'est le noeud d'arrivée de l'arete qui possede 
        ce poids)
    }
    que pensez vous de cette démarche?
    j'attends vos remarques, merci et à bientot

  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
    boost::graph

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 66
    Par défaut
    merci loufoque,
    mais je prefere le programmer moi meme. en plus, c'est pour un gros graphe (reseau routiers, ... c'est des graphes à l'echelle des villes). En plus, j'ai des algorithmes à appliquer et je dois jongler entre la ram et le disque pour ne pas saturer la mémoire.
    donc, utiliser boost (je crois) n'est pas une solution pour moi.
    merci, et si tu as d'autres conseils, je suis preneur. @++

  4. #4
    Membre expérimenté Avatar de Kujara
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 262
    Par défaut
    Pas d'accord pour le coup de la liste.
    Si tu a tendance a etre limité par la ram, utilise plutot un tableau de base( la liste stoque des pointeurs de plus). Par contre tu y perds grandement si tu a besoin de rajouter / enlever des noeuds.
    Mais bon, si c'est pour une carte routiere,ce n'est clairement pas le cas...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    struct Node;
    struct Link
    {
    float poids;
    Node * node;
    };
     
    struct Node
    {
    Link * links;
    unsigned int numLinks;
    //suivit des infos supplementaires par node.
    };
    Remplace les links par un std::vector si tu veux, mais tu va y perdre en mémoire, pour y gagner en facilité de code ( de peu). A toi de voir.

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Par défaut
    Citation Envoyé par Kujara Voir le message
    Remplace les links par un std::vector si tu veux, mais tu va y perdre en mémoire, pour y gagner en facilité de code ( de peu). A toi de voir.
    Serais-ce une vile tentative pour inciter aux mauvaises techniques de programmation?? Tu te rends compte du faible nombre d'informations supplémentaires que rajoute un std::vector par rapport à un tableau C-style? A priori, ça rajoute uniquement un size_t (et pas un unsigned int) pour indiquer la capacité qui est d'ailleurs bien utile pour l'optimisation vitesse.

  6. #6
    Membre expérimenté Avatar de Kujara
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 262
    Par défaut
    Citation Envoyé par zais_ethael Voir le message
    Serais-ce une vile tentative pour inciter aux mauvaises techniques de programmation?? Tu te rends compte du faible nombre d'informations supplémentaires que rajoute un std::vector par rapport à un tableau C-style? A priori, ça rajoute uniquement un size_t (et pas un unsigned int) pour indiquer la capacité qui est d'ailleurs bien utile pour l'optimisation vitesse.
    "sizeof(vector<int>)" 16, contre 8 pour un tableau de base + taille.
    Quand on est limité par la mémoire, ça compte,surtout pour des tableaux de faible taille, genre 2 ou 3 elements, comme on risque de voir ici.

    Quand au size_t, apprends que c'est soit un unsigned int, soit un unsigned __int64.

    la version 64 se justifie uniquement sur architecture 64, où justement, unsigned int vaut lui aussi unsigned __int64.

    Donc, j'utilise unsigned int.

Discussions similaires

  1. Couleurs fantaisistes sur un graphe
    Par decour dans le forum Access
    Réponses: 2
    Dernier message: 14/10/2005, 11h51
  2. afficher une ligne contante sur le graphe d'un DBChart ?
    Par bigfoot dans le forum Bases de données
    Réponses: 5
    Dernier message: 23/12/2004, 16h33
  3. [Access] Manque d'idées sur une requête
    Par portu dans le forum Langage SQL
    Réponses: 12
    Dernier message: 22/11/2004, 12h25
  4. Problème graveur ide sur mdk10
    Par Hanslip dans le forum Matériel
    Réponses: 40
    Dernier message: 26/10/2004, 13h17
  5. idees sur requete a simplifier ???
    Par DaxTaz dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/07/2004, 09h42

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