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 :

Comment utiliser l'algorithme HITS de JUNG?


Sujet :

Langage Java

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mars 2011
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Comment utiliser l'algorithme HITS de JUNG?
    Bonjour à tous;
    Je suis entrain d'essayer d'utiliser le fameux algorithme HITS de jung. Cet algorithme prend comme input un graphe. j'ai donc construit mon graphe pour ensuite le passer comme paramètre à cet algorithme. Cependant, en l'essayant sut Eclipse, il m'affiche l'erreur suivante:

    Exception in thread "main" java.lang.ClassCastException: java.lang.String
    cannot be cast to edu.uci.ics.jung.graph.Vertex
    at com.tweets.algorithms.HITS.initialize(HITS.java:52)
    at com.tweets.algorithms.HITS.<init>(HITS.java:41)
    at com.tweets.test.Main.main(Main.java:121)


    voila comment j'ai crée le graphe:

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    private static String getId(int nodeId){
         return "Node " + nodeId;
    }
     
     
     
    private static String getId(int nodeId, int neighborId){
            return "Edge " + nodeId + " -> " + neighborId;
    }
     
     
     
    public static Graph<String, Integer> createGraph1(String graphId,
                                                  boolean[][] adjacencyMatrix){
        Graph<String,Integer> g = new DirectedSparseGraph <String,Integer>();
     
        for (int nodeId = 0; nodeId < adjacencyMatrix.length; nodeId++)
             g.addVertex(getId(nodeId));
     
     
        for (int nodeId = 0; nodeId < adjacencyMatrix.length; nodeId++)
            for (int neighborId = 0; neighborId < adjacencyMatrix[nodeId].length; neighborId++)
                if (adjacencyMatrix[nodeId][neighborId])
                     //g.addEdge(getId(nodeId, neighborId),nodeId , neighborId);
                       g.addEdge(neighborId,getId(nodeId),getId(neighborId));
     
                       return(g);
     
               }
    et avec le bloc suivant j'appelle l'algorithme HITs dans ma classe main:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    HITS ranker = new HITS(g);
                     ranker.evaluate();
                    ranker.printRankings(true,false);
    et l'IDE indique que l'erreur est dabs ce blob de code de la classe HITS:

    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
    protected void initialize(Graph g) {
     
            super.initialize(g, true, false);
     
            mPreviousAuthorityScores = new HashMap();
            mPreviousHubScores = new HashMap();
     
            for (Iterator vIt = g.getVertices().iterator(); vIt.hasNext();) {
                Vertex currentVertex = (Vertex) vIt.next();
                setRankScore(currentVertex, 1.0, AUTHORITY_KEY);
                setRankScore(currentVertex, 1.0, HUB_KEY);
     
                mPreviousAuthorityScores.put(currentVertex, new MutableDouble(0));
                mPreviousHubScores.put(currentVertex, new MutableDouble(0));
            }
        }

    Je suis sure quil s'agit d'une erreur de cast, mais je ne sais pas comment la résoudre, et comment faire pour faire correspndre les deux types "Vertex" et String"!!!!!
    Aidez moi svp c'est très urgent .

  2. #2
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 320
    Points : 3 741
    Points
    3 741
    Billets dans le blog
    12
    Par défaut
    L'erreur a l'air tellement "évident", le problème c'est que tu mets un extrait de code, du coup on ne peut pas faire correspondre les numéros de ligne indiqué dans ta stracktrace à ton code.
    Est-ce que tu compiles en ligne de commande avec javac ? Parce que j'ai l'impression qu'il s'agit d'une erreur qu'on peut trouver pré-compilation, est-ce que tu as chargé ton projet avec un IDE (Eclipse, Netbeans etc) ? Je suis sûr que ce dernier te souligneras la ligne où tu as ton problème de cast. (Ou sinon indique nous le code complet de ta classe contenant le main()).
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mars 2011
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour;

    Mon projet est compilé sous éclipse.
    L'IDE indique que l'erreur de cast se trouve à cette ligne de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vertex currentVertex = (Vertex) vIt.next();
    c'est à dire qu'il n'arrive pas à convertir le Vertex en String;
    j'arrive pas à corriger cette erreur!!!!

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    non, il n'arrive pas à convertir une String en Vertex.
    Si tu n'arrives pas à corriger cela, voici une idée : peut-être que tu ne devrais pas essayer de convertir une String en Vertex. Parce que bon, ça n'a aucun sens, en fait. Une String c'est une String et un Vextex c'est un Vertex. C'est pas la même chose. On devrait logiquement se demander pourquoi avoir songé à faire une telle chose.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/02/2009, 12h06
  2. Comment utiliser un cache ?
    Par TOM-Z dans le forum XMLRAD
    Réponses: 4
    Dernier message: 14/03/2003, 09h55
  3. comment utiliser actionscript ?
    Par webs dans le forum Flash
    Réponses: 3
    Dernier message: 09/02/2003, 23h11
  4. Comment utiliser OUT ?
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 3
    Dernier message: 20/07/2002, 09h35
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

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