예제 #1
0
void CDLib::init_empty_graph(graph& g, size_t size) {
    g.clear();
    if (g.is_directed()) g.convert_to_undirected();
    if (g.is_weighted()) g.convert_to_unweighted(0);
    for (id_type i = 0; i < size; i++) g.add_node();

}
예제 #2
0
int st_number::check (graph& G)
{
    if (G.is_directed()) return GTL_ERROR;
    
    pf = new pathfinder (G, st, s);
	
    return pf->is_valid() ? GTL_OK : GTL_ERROR;
}
예제 #3
0
void CDLib::generate_erdos_renyi_graph(graph& g, id_type num_nodes, double p) {
    if (p >= 0 && p <= 1) {
        init_empty_graph(g, num_nodes);
        RandomGenerator<double> p_gen(0, 1, 1);
        for (id_type i = 0; i < num_nodes; i++)
            for (id_type j = 0; j < num_nodes; j++)
                if ((!g.is_directed() && i < j) && p_gen.next() <= p) g.add_edge(i, j, 1);
        g.set_graph_name("er_" + T2str<id_type > (num_nodes) + "_" + T2str<double>(p));
    }
}
예제 #4
0
파일: mincut.cpp 프로젝트: rdmpage/bioguid
int mincut::check (graph& G) 
{
	if (!set_vars_executed)
    {
		return(GTL_ERROR);
    }
    if ((G.number_of_nodes() <= 1) || (!G.is_connected()) || (G.is_directed()))
    {
		return(GTL_ERROR);
    }
    return GTL_OK;
}
예제 #5
0
int topsort::check (graph& G) 
{
    return G.is_directed() ? GTL_OK : GTL_ERROR;
}