def get_dpa_graph(number_total_nodes, number_init_nodes): """ extract a dpa graph :param number_total_nodes: total n nodes :param number_init_nodes: a initial graph with m nodes :return: a dictionary of a dpa graph """ graph_pool = dpat(number_init_nodes) output_graph = pj1.make_complete_graph(number_init_nodes) for new_node in range(number_init_nodes, number_total_nodes): neighbor_nodes = graph_pool.run_trial(number_init_nodes) output_graph[new_node] = neighbor_nodes return output_graph
def dpa(n, m): """ :param n: :param m: :return: """ assert 1 <= m <= n graph = make_complete_graph(m) in_degrees = compute_in_degrees(graph) for i in range(m, n): nodes = set() vertices = set(copy.copy(graph.keys())) for _ in range(m): new_vert = random.choice(list(vertices)) vertices.remove(new_vert) nodes.add(new_vert) graph.update({i: nodes}) print "done with node %s" % i return graph