Convertir un SingleGraph à un Graph
Résolu
Aaa_dh
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
Aaa_dh Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
Aaa_dh Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Convertir un SingleGraph à un Graph
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Convertir epub en kindle - Guide
- Convertir youtube en mp3 avec audacity - Guide
- Convertir kindle en epub - Guide
- Convertir audio en texte word - Guide
1 réponse
Bonjour,
La classe SingleGraph implémente l'interface Graph, donc tu peux donner n'importe quelle implémentation de graphe à cette méthode...
La classe SingleGraph implémente l'interface Graph, donc tu peux donner n'importe quelle implémentation de graphe à cette méthode...
Graph g = new SingleGraph("");
Meme en essayant votre proposition ça marche pas!!!!
moi j'ai déja construit le graphe avec la biblio GraphStream et j'ai ça:
SingleGraph graph=FileHelper.createGraph("Graphe", adjacencyMatrixboolean);
for (org.graphstream.graph.Node node : graph.getNodeSet())
node.addAttribute("ui.label", node.getId());
for (Edge edge : graph.getEdgeSet())
edge.addAttribute("ui.label", edge.getId());
graph.display();
Ce même graphe la je voudrais l'introduire comme input à l'algo HITS de JUNG.
J'utilise ça:
HITS ranker = new HITS((edu.uci.ics.jung.graph.Graph)graph);
ranker.evaluate();
ranker.printRankings(true,false);
mais eclipse m'affiche ça:
Exception in thread "main" java.lang.ClassCastException: org.graphstream.graph.implementations.SingleGraph cannot be cast to com.sun.corba.se.impl.orbutil.graph.Graph
at com.tweets.test.Main.main(Main.java:69)
je sais très bien qu'il y a une erreur de cast mais je ne sais pas comment la résoudre.
Merci d'avance pour votre aide.
PS: le code de l'algo HITS de JUNG est dispo sur ce lien:
http://logic.cse.unt.edu/tarau/teaching/GraphTheory/jung/OLD/jung/src/edu/uci/ics/jung/algorithms/importance/HITS.java
C'est tres urgent SVP est ce que vous pouvez m'aider?
Du coup je ne sais pas, mais je doute que l'on puisse facilement passer de GraphStream à JUNG directement.
GraphStream permet de lire des graphes depuis différents formats, il faudrait voir lesquels JUNG supporte et en choisir un commun.
https://graphstream-project.org/doc/Tutorials/Reading-files-using-FileSource/
J'ai essayé ça:
String filePath = "D:\\SavingGraph.DGS";
//Graph g = new DefaultGraph("g");
FileSource fs = FileSourceFactory.sourceFor(filePath);
fs.addSink(graph);
try {
fs.begin(filePath);
while (fs.nextEvents()) {
// Optionally some code here ...
}
} catch( IOException e) {
e.printStackTrace();
}
try {
fs.end();
} catch( IOException e) {
e.printStackTrace();
} finally {
fs.removeSink(graph);
}
mais cette erreur s'affiche:
Exception in thread "main" java.io.IOException: not a regular file 'D:\SavingGraph.DGS'
at org.graphstream.stream.file.FileSourceFactory.sourceFor(FileSourceFactory.java:83)
at com.tweets.test.Main.main(Main.java:77)
En cherchant sur le net, j'ai trouvé que JUNG est plutôt manipulable plutôt a travers GraphML et non pas GraphStream, cependant moi j'ai déja crée mon graphe avec GraphSTream. Je crois que je dois plutôt changer l'étape de la création de mon graphe avec GraphML. Est ce que vous avez une idée de comment créer le graphe avec GraphML en partant d'une matrice d'adjacence.
J'ai réussi à avoir le graphe compatible avec la librairie jung, mais pour le contruire j'ai pas utilisé GraphStreamn mais jung lui meme avec ce petit code:
mais il fallait aussi éliminer la biblio GraphStream et la remplacer par la biblio JUNG.
Dans mon main j'ai ajouté qlq lignes afin de créer le graphe et le sauvgarder dans un fichier:
Voila.