From 587e51d546673bdffc47325c156462e9800c0a97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Radek=20Hu=C5=A1ek?= <PitelVonSacek@gmail.com> Date: Thu, 10 Dec 2015 22:53:50 +0100 Subject: [PATCH] Add guidedSubdivisionIterator() --- groupConnectivity.pyx | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/groupConnectivity.pyx b/groupConnectivity.pyx index 28c4cc8..69b87ef 100644 --- a/groupConnectivity.pyx +++ b/groupConnectivity.pyx @@ -163,6 +163,40 @@ def subdivisionIterator(G, edges = None): yield L +def guidedSubdivisionIterator(G, edges = None, guide = lambda H: (True, None)): + class DeadEnd(Exception): + pass + + if edges is None: + edges = G.edges() + + def impl(G, edges): + if len(edges) == 0: + cont, val = guide(G) + if not cont: + raise DeadEnd() + yield val + return + + for i in range(0, 3): + H = G.copy() + H.subdivide_edge(edges[0], i) + try: + for L in impl(H, edges[1:]): + yield L + except DeadEnd: + if i == 0: + raise + else: + break + + try: + for L in impl(G, edges): + yield L + except DeadEnd: + pass + + def generateSubdivisions(file, G, edges = None, function = lambda H: H.graph6_string(), parallel = 0, chunksize = 1, in_flight = None): -- GitLab