Convertir un SingleGraph à un Graph
Résolu
Aaa_dh
Messages postés
14
Statut
Membre
-
Aaa_dh Messages postés 14 Statut Membre -
Aaa_dh Messages postés 14 Statut Membre -
Bonjour,
J'ai construit un graphe avec la bibliothèque GraphStream( SingleGraph) et je voudrais utiliser ce meme graphe comme input pour l'algorithme HITS, cependant cet algo prend en paramètre un "Graph" et non pas un "SingleGraph". Est -il possible de faire une conversion d'un SingleGraph à un Graph?
c'est tres urgent SVP. Est ce que qlq peut m'aider.
Merci d'avance.
J'ai construit un graphe avec la bibliothèque GraphStream( SingleGraph) et je voudrais utiliser ce meme graphe comme input pour l'algorithme HITS, cependant cet algo prend en paramètre un "Graph" et non pas un "SingleGraph". Est -il possible de faire une conversion d'un SingleGraph à un Graph?
c'est tres urgent SVP. Est ce que qlq peut m'aider.
Merci d'avance.
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 kindle en epub - Guide
- Convertir audio en texte word - Guide
- Convertir hevc en jpg - 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:
Graph<String,Integer> g=FileHelper.createGraph1("MyGraph", adjacencyMatrixboolean);
GraphMLWriter<String,Integer> graphWriter =new GraphMLWriter<String,Integer> ();
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("D:\\my graph.xml")));
graphWriter.save(g, out);
Voila.