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
Example #2
0
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