[jgrapht-users] Label Edge Example
Brought to you by:
barak_naveh,
perfecthash
From: Patricia_Sim <pt...@gm...> - 2014-03-15 15:18:51
|
Hi Everybody I'm trying to create directed graph with label edge by jgrapht. I learn how to create by "LabeledEdges" example which source code shown below public class LabeledEdges { private static final String friend = "friend"; private static final String enemy = "enemy"; public static void main(String[] args) { DirectedGraph<String, RelationshipEdge> graph = new DirectedMultigraph<String, RelationshipEdge>( new ClassBasedEdgeFactory<String, RelationshipEdge>(RelationshipEdge.class)); ArrayList<String> people = new ArrayList<String>(); people.add("John"); people.add("James"); people.add("Sarah"); people.add("Jessica"); // John is everyone's friend for (String person : people) { graph.addVertex(person); graph.addEdge(people.get(0), person, new RelationshipEdge<String>(people.get(0), person, friend)); } // Apparently James doesn't really like John graph.addEdge("James", "John", new RelationshipEdge<String>("James", "John", enemy)); // Jessica is Sarah and James's friend graph.addEdge("Jessica", "Sarah", new RelationshipEdge<String>("Jessica", "Sarah", friend)); graph.addEdge("Jessica", "James", new RelationshipEdge<String>("Jessica", "James", friend)); // But Sarah doesn't really like James graph.addEdge("Sarah", "James", new RelationshipEdge<String>("Sarah", "James", enemy)); for (RelationshipEdge edge : graph.edgeSet()) { if (edge.toString().equals("enemy")) { System.out.printf(edge.getV1()+"is an enemy of "+ edge.getV2()+"\n"); } else if (edge.toString().equals("friend")) { System.out.printf( edge.getV1()+" is a friend of "+ edge.getV2()+"\n"); } } } public static class RelationshipEdge<V> extends DefaultEdge { private V v1; private V v2; private String label; public RelationshipEdge(V v1, V v2, String label) { this.v1 = v1; this.v2 = v2; this.label = label; } public V getV1() { return v1; } public V getV2() { return v2; } public String toString() { return label; } } However, when I run this example, it show the error message "Exception in thread "main" java.lang.IllegalArgumentException: loops not allowed at org.jgrapht.graph.AbstractBaseGraph.addEdge(AbstractBaseGraph.java:243)" How can I do to run this example -- View this message in context: http://jgrapht-users.107614.n3.nabble.com/Label-Edge-Example-tp4024899.html Sent from the jgrapht-users mailing list archive at Nabble.com. |