Exemplo n.º 1
0
def remove_cycle_edges_heuristic(g, edges_score, nodetype=int):
    from remove_self_loops import remove_self_loops_from_graph
    self_loops = remove_self_loops_from_graph(g)

    edges_to_be_removed = scc_based_to_remove_cycle_edges_iterately(g, edges_score)
    edges_to_be_removed = list(set(edges_to_be_removed))
    return edges_to_be_removed + self_loops
Exemplo n.º 2
0
def remove_cycle_edges_heuristic(graph_file,edges_score,nodetype = int):
	
	g = nx.read_edgelist(graph_file,create_using = nx.DiGraph(),nodetype = nodetype)

	from remove_self_loops import remove_self_loops_from_graph
	self_loops = remove_self_loops_from_graph(g)

	edges_to_be_removed = scc_based_to_remove_cycle_edges_iterately(g,edges_score)
	edges_to_be_removed = list(set(edges_to_be_removed))
	return edges_to_be_removed+self_loops
def remove_cycle_edges_BF_iterately(g,
                                    players,
                                    is_Forward=True,
                                    score_name="socialagony"):
    from remove_self_loops import remove_self_loops_from_graph
    self_loops = remove_self_loops_from_graph(g)
    edges_to_be_removed = scc_based_to_remove_cycle_edges_iterately(
        g, players, is_Forward)
    edges_to_be_removed = list(set(edges_to_be_removed))
    return edges_to_be_removed + self_loops
Exemplo n.º 4
0
def scc_based_to_remove_cycle_edges_iterately(g, nodes_score):
    from remove_self_loops import remove_self_loops_from_graph
    self_loops = remove_self_loops_from_graph(g)
    big_sccs = get_big_sccs(g)
    scc_nodes_score_dict = scores_of_nodes_in_scc(big_sccs, nodes_score)
    edges_to_be_removed = []
    if len(big_sccs) == 0:
        print("After removal of self loop edgs: %s" % nx.is_directed_acyclic_graph(g))
        return self_loops

    remove_cycle_edges_by_agony_iterately(big_sccs, scc_nodes_score_dict, edges_to_be_removed)
    # print(" # edges to be removed: %d" % len(edges_to_be_removed))
    return edges_to_be_removed + self_loops
def remove_cycle_edges_by_mfas(graph_file):
	g = nx.read_edgelist(graph_file,create_using = nx.DiGraph(),nodetype = int)
	from remove_self_loops import remove_self_loops_from_graph
	self_loops = remove_self_loops_from_graph(g)

	scc_nodes,_,_,_ = scc_nodes_edges(g)
	degree_dict = get_nodes_degree_dict(g,scc_nodes)
	sccs = get_big_sccs(g)
	if len(sccs) == 0:
		print("After removal of self loop edgs: %s" % nx.is_directed_acyclic_graph(g))
		return self_loops
	edges_to_be_removed = []
	import timeit
	t1 = timeit.default_timer()
	greedy_local_heuristic(sccs,degree_dict,edges_to_be_removed)
	t2 = timeit.default_timer()
	print("mfas time usage: %0.4f s" % (t2 - t1))
	edges_to_be_removed = list(set(edges_to_be_removed))
	g.remove_edges_from(edges_to_be_removed)
	edges_to_be_removed += self_loops
	edges_to_be_removed_file = graph_file[:len(graph_file)-6] + "_removed_by_mfas.edges"
	write_pairs_to_file(edges_to_be_removed,edges_to_be_removed_file)
	return edges_to_be_removed