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:
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
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 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 HITS ranker = new HITS(g); ranker.evaluate(); ranker.printRankings(true,false);
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 .
Partager