Beispiel #1
0
def process_graph_types(kgt):
    sp = kgt[0][0][0][0]
    n = len(sp[0][0].union(sp[0][1]))
    k = len(sp)
    print n,k
    gt = graph_types(n,k)
    gss = map(graph_to_ss, gt)
    m1 = dict(zip(gss, gt))
    m2 = {}
    for _,g in kgt:
        ss = graph_to_ss(g)
        m2[ss] = m2.get(ss,0) + 1
    return [(m1[ss], m2.get(ss,0)) for ss in gss]
Beispiel #2
0
def match_split_system(ss):
    from graph_types import graph_types, permute_ss, \
            split_edges, edge_to_split, split_len, graph_to_ss
    n = sum(map(len, ss[0]))
    k = len(ss)
    gt = graph_types(n,k)
    perms = SymmetricGroup(n)
    ss_sig = sorted(map(split_len, ss))
    for g in gt:
        gss = graph_to_ss(g)
        gss_sig = sorted(map(split_len, gss))
        if gss_sig != ss_sig:
            continue
        elif any([permute_ss(p, ss) == gss for p in perms]):
            return g