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

Algorithmes et structures de données Discussion :

Structure de donnéees pour un gros graphe orienté peu dense


Sujet :

Algorithmes et structures de données

  1. #1
    Membre très actif Avatar de guitz
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juillet 2006
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Juillet 2006
    Messages : 728
    Par défaut Structure de donnéees pour un gros graphe orienté peu dense
    Bonjour,

    J'essaie de modéliser un réseau urbain et pour se faire j'utilise un graphe orienté dont le nombre de sommets peut atteindre max 80000. Chaque sommet ne peut être connecté qu'à max 8 autres sommets.

    Hors de question d'utiliser une matrice d'adjacence car celle-ci contiendrait max 80000 x 80000 = 6400000000 éléments.

    Pensez vous que la liste d'adjacence soit la structure de données la plus adaptée à mon besoin ?

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 201
    Par défaut
    Je vais te retourner la question : tu exclues la matrice d'adjacence, ok, normal.
    Tu hésites entre une liste d'adjacence et quoi ?

  3. #3
    Membre très actif Avatar de guitz
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juillet 2006
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Juillet 2006
    Messages : 728
    Par défaut
    Citation Envoyé par tbc92 Voir le message
    Je vais te retourner la question : tu exclues la matrice d'adjacence, ok, normal.
    Tu hésites entre une liste d'adjacence et quoi ?
    J'hésitais avec la liste d’arêtes

  4. #4
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 201
    Par défaut
    Ok,
    Liste d'adjacence = pour chaque sommet, la liste des arêtes partant de ce sommet.
    Liste des arêtes = toutes les arêtes, 'en vrac'.
    Toutes les arêtes en vrac, sans outil pour trouver rapidement les arêtes partant d'un sommet ou arrivant à un sommet, c'est pas terrible.
    Peut-être 2 listes d'adjacence, une pour avoir les arêtes partant d'un sommet, et l'autre pour avoir les arêtes arrivant à un sommet.
    Cette organisation ralentit les temps de mise à jour, mais ici, il n'y a pas de mise à jour, juste une initialisation. Et ça peut être très utile d'avoir ces 2 listes.
    Dans les années 80/90, j'avais fait des choses de ce genre.
    Certes, depuis, l'informatique a bien évolué.

  5. #5
    Membre très actif Avatar de guitz
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juillet 2006
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Juillet 2006
    Messages : 728
    Par défaut
    merci beaucoup pour ta réponse détaillée

  6. #6
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 752
    Par défaut


    Une représentation qui marche encore assez bien dans ce cas (si ton graphe est statique, sans mises à jour), c'est stocker les arêtes : un vecteur pour des origines, un autre pour les destinations, avec un tri sur l'origine. Si tu as des mises à jour, tu devrais insérer des arêtes en plein milieu des vecteurs, ce n'est pas génial et, surtout, ça change les indices des arêtes (ce qui rend plus difficile le stockage de données annexes, comme des poids). Exemple d'implémentation : https://github.com/google/or-tools/b...ph.h#L394-L467.

    Autre solution possible : stocker le graphe sous la forme d'une matrice avec leurs poids, mais creuse. Problème : tu ne peux pas stocker une arête avec un poids nul. Exemple d'implémentation : https://github.com/JuliaGraphs/SimpleWeightedGraphs.jl.

    Tu indiques un très bon élément avec le fait que ton graphe est creux ; ensuite, que veux-tu en faire, de ce graphe ?
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  7. #7
    Membre très actif Avatar de guitz
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juillet 2006
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Juillet 2006
    Messages : 728
    Par défaut
    Merci pour ces autres pistes

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/10/2020, 22h26
  2. Réponses: 3
    Dernier message: 17/03/2009, 11h41
  3. Structure de données pour gros volume de données
    Par Invité dans le forum Langage
    Réponses: 9
    Dernier message: 01/02/2007, 11h58
  4. [Techno/Langage] Quel choix pour un gros développement orienté objet ?
    Par Neilos dans le forum Général Conception Web
    Réponses: 7
    Dernier message: 18/05/2006, 17h29
  5. structure de donnee et acces rapide à un element
    Par romeo9423 dans le forum C++
    Réponses: 2
    Dernier message: 01/09/2005, 08h35

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