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()
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()
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