Excellent, that does exactly what I need! I had implemented my own version of this in Java (VF2 algorithm) which literally takes an hour to do something this does in 5 minutes, even on a virtual host with only 1 out of 4 cores. Thanks, Jelle On 3 January 2013 22:37, Tiago Peixoto [via Main discussion list for the graph-tool project] <ml-node+s982480n4024894h88@n3.nabble.com> wrote:
On 01/03/2013 02:36 PM, jcjveraa wrote:
To illustrate what I'd need: in this graph https://www.dropbox.com/s/8nlnqcvhb150utt/example_graph-tool.PNG I for instance want to get all cyclic induced subgraphs with 3 vertices. The algorithm should return [0,1,4], [0,2,4], [2,3,4] and [3,5,6]. Of course it's fine if it finds [4,1,0], [1,0,4] and [4,0,1] and suchlike as well, I can filter easily based on the vertices contained in the subgraph.
If I look for a subgraph with 4 vertices, I want 0 hits because [0,1,2,4] has a chord due to edge [0,4].
Any suggestions on a combination of functions to achieve this would be greatly appreciated :) This can be done simply as follows, if I understood correctly:
from graph_tool.all import *
g = Graph(directed=False) g.add_vertex(7) edges = [(5, 6), (5, 3), (6, 3), (3, 4), (3, 2), (4, 2), (4, 0), (4, 1), (2, 0), (1, 0)] for e in edges: g.add_edge(e[0], e[1])
def get_cycle(n): u = Graph(directed=False) u.add_vertex(n) for i in range(n - 1): u.add_edge(i, i + 1) u.add_edge(n - 1, 0) return u
S = get_cycle(3)
vmaps, emaps = subgraph_isomorphism(S, g)
for vm, em in zip(vmaps, emaps): vmask, emask = mark_subgraph(g, S, vm, em)
F = Graph(GraphView(g, vfilt=vmask), prune=True)
if isomorphism(F, S): print("found: ", vm.a)
For this I get:
found: [5 6 3] found: [5 3 6] found: [1 4 0] found: [1 0 4] found: [6 5 3] found: [6 3 5] found: [2 4 3] found: [2 4 0] found: [2 3 4] found: [2 0 4] found: [4 1 0] found: [4 2 3] found: [4 2 0] found: [4 3 2] found: [4 0 1] found: [4 0 2] found: [3 5 6] found: [3 6 5] found: [3 2 4] found: [3 4 2] found: [0 1 4] found: [0 2 4] found: [0 4 1] found: [0 4 2]
And indeed, if I make S = get_cycle(4), no induced subgraphs are found.
Does this help?
Cheers, Tiago
-- Tiago de Paula Peixoto <[hidden email]<http://user/SendEmail.jtp?type=node&node=4024894&i=0>>
_______________________________________________ graph-tool mailing list [hidden email] <http://user/SendEmail.jtp?type=node&node=4024894&i=1> http://lists.skewed.de/mailman/listinfo/graph-tool
*signature.asc* (565 bytes) Download Attachment<http://main-discussion-list-for-the-graph-tool-project.982480.n3.nabble.com/attachment/4024894/0/signature.asc> -- Tiago de Paula Peixoto <tiago@skewed.de>
------------------------------ If you reply to this email, your message will be added to the discussion below:
http://main-discussion-list-for-the-graph-tool-project.982480.n3.nabble.com/... To unsubscribe from Error installing graph-tool on windows, click here<http://main-discussion-list-for-the-graph-tool-project.982480.n3.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=4024889&code=amVsbGUudmVyYWFAa2Utd29ya3MuY29tfDQwMjQ4ODl8MTk0ODgyODA5> . NAML<http://main-discussion-list-for-the-graph-tool-project.982480.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.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://main-discussion-list-for-the-graph-tool-project.982480.n3.nabble.com/... Sent from the Main discussion list for the graph-tool project mailing list archive at Nabble.com.