Re: [jgrapht-users] Label Edge Example
Brought to you by:
barak_naveh,
perfecthash
From: Patricia_Sim <pt...@gm...> - 2014-03-26 06:18:43
|
Thank you very much Patricia On Thu, Mar 20, 2014 at 4:29 AM, Szabolcs Besenyei [via jgrapht-users] < ml-...@n3...> wrote: > Hi! > > The problem here is that DirectedMultigraph doest not allow loops and in > your first loop you are trying to do > >> graph.addEdge(people.get(0), person, new >> RelationshipEdge<String>(people.get(0), person, friend)); >> > which translates to > >> graph.addEdge("John", "John", new RelationshipEdge<String>("John", >> "John", friend)); on the first iteration. >> > > Your option here is to either use a DefaultDirectedGraph (a non-simple > directed graph in which multiple edges between any two vertices are *not*permitted, but loops are) or rewrite your code so that it does not try to > friend John with "himself". > > > > 2014-03-15 16:18 GMT+01:00 Patricia_Sim <[hidden email]<http://user/SendEmail.jtp?type=node&node=4024901&i=0> > >: > > 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. >> >> >> ------------------------------------------------------------------------------ >> Learn Graph Databases - Download FREE O'Reilly Book >> "Graph Databases" is the definitive new guide to graph databases and their >> applications. Written by three acclaimed leaders in the field, >> this first edition is now available. Download your free book today! >> http://p.sf.net/sfu/13534_NeoTech >> _______________________________________________ >> jgrapht-users mailing list >> [hidden email] <http://user/SendEmail.jtp?type=node&node=4024901&i=1> >> https://lists.sourceforge.net/lists/listinfo/jgrapht-users >> > > > ------------------------------------------------------------------------------ > > Learn Graph Databases - Download FREE O'Reilly Book > "Graph Databases" is the definitive new guide to graph databases and their > applications. Written by three acclaimed leaders in the field, > this first edition is now available. Download your free book today! > http://p.sf.net/sfu/13534_NeoTech > _______________________________________________ > jgrapht-users mailing list > [hidden email] <http://user/SendEmail.jtp?type=node&node=4024901&i=2> > https://lists.sourceforge.net/lists/listinfo/jgrapht-users > > > ------------------------------ > If you reply to this email, your message will be added to the discussion > below: > > http://jgrapht-users.107614.n3.nabble.com/Label-Edge-Example-tp4024899p4024901.html > To unsubscribe from Label Edge Example, click here<http://jgrapht-users.107614.n3.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=4024899&code=cHRyY3NpbUBnbWFpbC5jb218NDAyNDg5OXw1MDUxMDM2NTc=> > . > NAML<http://jgrapht-users.107614.n3.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml> > -- View this message in context: http://jgrapht-users.107614.n3.nabble.com/Label-Edge-Example-tp4024899p4024908.html Sent from the jgrapht-users mailing list archive at Nabble.com. |