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

Langage Java Discussion :

Génération aléatoire de graphe


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Par défaut Génération aléatoire de graphe
    Bonjour à tous!
    Voilà, j'ai une petite question à propos de la génération aléatoire d'arêtes formant un graphe.
    L'objet Arete a les attributs suivants :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private int sommet1;
    private int sommet2;
    private int poids;
    Je génère une liste d'arêtes avec l'objet Random qu'on utilise pour chaque attribut d'une arête (en fonction du nombre connu de sommets du graphe bien sur).
    Le problème est que je me retrouve avec des doublons (du genre {1, 2, 99}, {1, 2, 20}) : deux arêtes correspondants à deux sommets identiques avec un poids différent.
    Ma question est : doit-on parcourir la liste à chaque génération d'arête pour vérifier qu'elle n'existe pas déjà, et si oui quelle est la structure de donnée la plus performante pour un gros volume (du genre 1500 arêtes)? J'aimerai éviter les tableaux de type Vector, pas performant dans le temps quand il y a beaucoup de données.
    Si non, y a-t-il un autre méthode?
    Merci d'avance

  2. #2
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Bonjour,

    tu peux utiliser simplement une matrice d'int:
    Ainsi, le poids entre le sommet x et le sommet y sera:
    Cette structure te permet de travailler avec un graphe orienté et avoir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    poids[x][y] != poids[y][x]
    Le seul "inconvénient" de cette structure, c'est que tu as 'n' valeurs inutiles (ou 'n' est le nombre de sommets) : la diagonale.
    Cela me semble quand même négligeable à côté de la taille de la matrice.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Par défaut
    Merci beaucoup, effectivement, il n'y a pas plus rapide que les tableaux. Et ça m'évite les doublons dans les arêtes!
    Problème résolu

  4. #4
    Membre émérite Avatar de benratti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    471
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 471
    Par défaut
    Une autre possibilité est de passer par une implémentation d'ensemble basé sur le hashCode (HashSet ou HashMap par exemple).

    Il te faut alors redéfinir la méthode hashcode en fonction de tes sommets et ne pas tenir compte du poid de l'arrête.

    L'implémentation avec un tableau n'est pas forcement la meilleur car l'initialisation du tableau (1500 * 1500) n'est pas anodine, et surtout cela est inutile si ton graphe n'est pas dense.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Par défaut
    Dommage, je viens de voir ta réponse :S
    Je ne connaissais pas l'usage du hashcode, mais j'avoue que ca change ma vision des choses.
    Je garde sous le coude pour la prochaine fois

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de génération aléatoire
    Par sebdu94 dans le forum C
    Réponses: 13
    Dernier message: 19/05/2007, 18h04
  2. [VBA-E] memmory génération aléatoire d'images
    Par jhonnybegood dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/03/2007, 21h09
  3. génération aléatoire
    Par acewb00 dans le forum MFC
    Réponses: 1
    Dernier message: 02/12/2005, 09h46
  4. Génération d'un graphe
    Par Tarrke dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 10/10/2005, 09h32
  5. génération aléatoire de couleur claire
    Par jiraiya dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 25/02/2004, 19h52

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