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

Java Discussion :

ErdosRenyiGenerator de Jung


Sujet :

Java

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Août 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Août 2011
    Messages : 19
    Points : 16
    Points
    16
    Par défaut ErdosRenyiGenerator de Jung
    Bonjour à toutes et à tous,
    j'espère que je ne me suis pas trompée de forum. Si c'est le cas, je vous prie de bien vouloir m'indiquer le bon endroit où poster ma question.

    Je cherche à dessiner un graphe aléatoire, celui de Erdos. Pour cela, j'ai installé le framework JUNG (Java Universal Network/Graph Framework) qui possède une fonction prédéfinie : ErdosRenyiGenerator.

    Mon problème est que dans l'appel de cette fonction, il faut charger les paramètres suivants :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public ErdosRenyiGenerator(org.apache.commons.collections15.Factory<UndirectedGraph<V,E>> graphFactory,
                               org.apache.commons.collections15.Factory<V> vertexFactory,
                               org.apache.commons.collections15.Factory<E> edgeFactory,
                               int numVertices,
                               double p)
    Pour ce faire, en cherchant sur le net, j'ai écrit ce code :
    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
     public Erdos() {
            // Graph<V, E> where V is the type of the vertices and E is the type of the edges
            nodeCount = 0;
            edgeCount = 0;
            sg = new UndirectedSparseGraph();
            vertexFactory = new Factory<Integer>() { // My vertex factory
                public Integer create() {
                    return nodeCount++;
                }
            };
            edgeFactory = new Factory<String>() { // My edge factory
                public String create() {
                    return "E" + edgeCount++;
                }
            };
        }
    pour l'appeler par la suite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     public static void createNetwork() {
            Erdos Er = new Erdos();
            ErdosRenyiGenerator g = new ErdosRenyiGenerator(SparseGraph.getFactory(), Er.vertexFactory, Er.edgeFactory, 100, .2);
            sg = (UndirectedSparseGraph) g.create();
        }
    Mais j'ai un bug, au niveau de cette ligne sg = (UndirectedSparseGraph) g.create();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Exception in thread "main" java.lang.ClassCastException: edu.uci.ics.jung.graph.SparseGraph cannot be cast to edu.uci.ics.jung.graph.UndirectedGraph
    	at edu.uci.ics.jung.algorithms.generators.random.ErdosRenyiGenerator.create(ErdosRenyiGenerator.java:64)
    	at edu.uci.ics.jung.samples.Erdos.createNetwork(Erdos.java:64)
    Quelqu'un pourrait m'aider la dessus, s'il vous plait ?

  2. #2
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut

    De plus, ton code semble incomplet (donc c'est difficile à suivre quand on a uniquement de petits bouts).
    Je ne connais pas du tout cette api, et je ne comprends pas non plus grand chose à ce que tu veux faire.
    Cependant, dans ton code on trouve
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ErdosRenyiGenerator g = new ErdosRenyiGenerator(SparseGraph.getFactory(), Er.vertexFactory, Er.edgeFactory, 100, .2);
    Donc tu lui donnes une factory de SparseGraph. Logiquement, quand tu vas appeler le create, ça va donc te donner un SparseGraph.
    Si tu veux obtenir un UndirectedSparseGraph pourquoi ne pas passer UndirectedSparseGraph.getFactory() ?

  3. #3
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Août 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Août 2011
    Messages : 19
    Points : 16
    Points
    16
    Par défaut
    Oh merci Chtig, vous aviez raison. C'était aussi simple que ça
    Comme je commence tout juste avec ce framework, j'avoue qu'il me trouble + qu'autre chose, et je zappe les éléments les plus basiques.
    Merci encore une fois.

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

Discussions similaires

  1. Librairie Jung comment on utilise?
    Par Vman dans le forum 2D
    Réponses: 5
    Dernier message: 14/12/2010, 11h03
  2. Problème avec la librairie JUNG
    Par mattoux dans le forum Langage
    Réponses: 9
    Dernier message: 04/06/2007, 22h38
  3. Etablir des diagrammes graphiques avec l'API JUNG
    Par zizoux5 dans le forum Multimédia
    Réponses: 2
    Dernier message: 15/03/2007, 16h36
  4. [JUNG] premiers pas
    Par dideux dans le forum 2D
    Réponses: 4
    Dernier message: 17/10/2006, 11h28

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