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
def upa_undigraph_gen(node_num, step_node): ''' generate un-digraph use UPA Algorithm Parameters ---------- node_num : int step_node : int Returns ------- graph : dict ''' UPAGraph = UPATrial(step_node) graph = make_complete_graph(step_node) for i in range(step_node, node_num): neighbors = UPAGraph.run_trial(step_node) graph[i] = neighbors for nei in neighbors: graph[nei] = graph.get(nei, set()).union({i}) return graph