Exemple #1
0
def question4():
    NETWORK_URL = "http://storage.googleapis.com/codeskulptor-alg/alg_rf7.txt"
    network_graph = app2.load_graph(NETWORK_URL)
    network_idd = prj1.in_degree_distribution(network_graph)
    network_nodes = sum(network_idd.values())
    network_edges = sum([x * y for (x, y) in network_idd.iteritems()]) / 2
    network_prob = float(network_edges) / network_nodes / (network_nodes - 1)
    print "Network_nodes", network_nodes
    print "Network_edges", network_edges
    print "Network_prob", network_prob
    print "Network_m", network_edges / float(network_nodes)

    er_graph = er_makegraph(1347, 0.00172)
    er_idd = prj1.in_degree_distribution(er_graph)
    er_nodes = sum(er_idd.values())
    er_edges = sum([x * y for (x, y) in er_idd.iteritems()]) / 2
    print "ER_nodes", er_nodes
    print "ER_edges", er_edges

    upa_graph = upa_makegraph(1347, 2)
    upa_idd = prj1.in_degree_distribution(upa_graph)
    upa_nodes = sum(upa_idd.values())
    upa_edges = sum([x * y for (x, y) in upa_idd.iteritems()]) / 2
    print "UPA_nodes", upa_nodes
    print "UPA_edges", upa_edges

    network_resilience = prj2.compute_resilience(
        network_graph, fast_targeted_order(network_graph))
    er_resilience = prj2.compute_resilience(er_graph,
                                            fast_targeted_order(er_graph))
    upa_resilience = prj2.compute_resilience(upa_graph,
                                             fast_targeted_order(upa_graph))

    plt.plot(range(len(network_resilience)),
             network_resilience,
             '-r',
             label='Network graph')
    plt.plot(range(len(er_resilience)),
             er_resilience,
             '-b',
             label='ER-generated (p = 0.00172)')
    plt.plot(range(len(upa_resilience)),
             upa_resilience,
             '-g',
             label='UPA-generated (m = 2)')
    plt.title('Comparison of Networks Resilience')
    plt.ylabel('Size of the largest connected component')
    plt.xlabel('Number of nodes removed')
    plt.legend()
    plt.show()


#question4()
Exemple #2
0
def question4():
    NETWORK_URL = "http://storage.googleapis.com/codeskulptor-alg/alg_rf7.txt"
    network_graph = app2.load_graph(NETWORK_URL)
    network_idd = prj1.in_degree_distribution(network_graph)
    network_nodes = sum(network_idd.values())
    network_edges = sum([x * y for (x, y) in network_idd.iteritems()]) / 2
    network_prob = float(network_edges) / network_nodes / (network_nodes - 1)
    print "Network_nodes", network_nodes
    print "Network_edges", network_edges
    print "Network_prob", network_prob
    print "Network_m", network_edges  /float(network_nodes)

    er_graph = er_makegraph(1347, 0.00172)
    er_idd = prj1.in_degree_distribution(er_graph)
    er_nodes = sum(er_idd.values())
    er_edges = sum([x * y for (x, y) in er_idd.iteritems()]) / 2
    print "ER_nodes", er_nodes
    print "ER_edges", er_edges

    upa_graph = upa_makegraph(1347, 2)
    upa_idd = prj1.in_degree_distribution(upa_graph)
    upa_nodes = sum(upa_idd.values())
    upa_edges = sum([x * y for (x, y) in upa_idd.iteritems()]) / 2
    print "UPA_nodes", upa_nodes
    print "UPA_edges", upa_edges

    network_resilience = prj2.compute_resilience(network_graph, fast_targeted_order(network_graph))
    er_resilience = prj2.compute_resilience(er_graph, fast_targeted_order(er_graph))
    upa_resilience = prj2.compute_resilience(upa_graph, fast_targeted_order(upa_graph))

    plt.plot(range(len(network_resilience)), network_resilience, '-r', label='Network graph')
    plt.plot(range(len(er_resilience)), er_resilience, '-b', label='ER-generated (p = 0.00172)')
    plt.plot(range(len(upa_resilience)), upa_resilience, '-g', label='UPA-generated (m = 2)')
    plt.title('Comparison of Networks Resilience')
    plt.ylabel('Size of the largest connected component')
    plt.xlabel('Number of nodes removed')
    plt.legend()
    plt.show()

#question4()
Exemple #3
0
def upa_makegraph(num_nodes, iter_nodes):
    """
    Generates graph by UPA algorithm where num_nodes is a total number of nodes
    and iter_nodes is a number of edges added on each iteration
    """
    result = prj1.make_complete_graph(iter_nodes)
    upa = UPATrial(iter_nodes)
    if num_nodes <= iter_nodes:
        return result
    for step in range(iter_nodes, num_nodes):
        nodes_to_be_added = upa.run_trial(iter_nodes)
        result[step] = nodes_to_be_added
        for node in nodes_to_be_added:
            result[node].add(step)
    return result
Exemple #4
0
def upa_makegraph(num_nodes, iter_nodes):
    """
    Generates graph by UPA algorithm where num_nodes is a total number of nodes
    and iter_nodes is a number of edges added on each iteration
    """
    result = prj1.make_complete_graph(iter_nodes)
    upa = UPATrial(iter_nodes)
    if num_nodes <= iter_nodes:
        return result
    for step in range(iter_nodes, num_nodes):
        nodes_to_be_added = upa.run_trial(iter_nodes)
        result[step] = nodes_to_be_added
        for node in nodes_to_be_added:
            result[node].add(step)
    return result