def mao_kblock(g, k, s): o = mao(g, s) # assert is_mao(g, o) candidate = o[-(k)::] # assert len(kp1_block) == k+1 result = certify_non_kblock(g, candidate, k=k) if result: u,v,k_ = result return {'mao':o, 'u':u, 'v':v, 'k_':k_}
def single_mao_all_kp1b(g6): g = parse_graph6(g6) d = min(g.degree().viewvalues()) # d >= k+1, take maximal k k = d-1 s = g.nodes_iter().next() m = mao(g, s) for i in xrange(0, len(g)-(k+1)): result = certify_non_kblock(g, m[i:i+k+1], k+1) if not result: return # all are non-k+1-blocks result['g'] = g6 result['k'] = k result['d'] = d return result
def maotree_all_kblock(g6): g = parse_graph6(g6) d = min(g.degree().viewvalues()) # or d > 3k/2 - 1 k = int(ceil(2 * ((d+1) / 3.0)) - 1) m = mao(g,0) t = maotree(g,m) result = None for p in t.paths(): if len(p) >= k: # print p result = certify_non_kblock(g, p[-(k+1):], k) if result: break if result: result['g'] = g6 result['k'] = k result['d'] = d return result