58 lines
1.5 KiB
C
Executable File
58 lines
1.5 KiB
C
Executable File
#include "igraph.h"
|
|
#include "ruby.h"
|
|
#include "cIGraph.h"
|
|
|
|
/* call-seq:
|
|
* g.rewire_edges(prob) -> IGraph
|
|
*
|
|
* Rewire the edges of a graph with constant probability This function
|
|
* rewires the edges of a graph with a constant probability. More precisely
|
|
* each end point of each edge is rewired to an uniformly randomly chosen
|
|
* vertex with constant probability prob.
|
|
*
|
|
* prob: The rewiring probability a constant between zero and one (inclusive).
|
|
*/
|
|
VALUE cIGraph_rewire_edges(VALUE self, VALUE prop){
|
|
|
|
igraph_t *graph;
|
|
igraph_t *copy_graph;
|
|
VALUE new_graph;
|
|
|
|
new_graph = cIGraph_alloc(cIGraph);
|
|
Data_Get_Struct(new_graph, igraph_t, copy_graph);
|
|
Data_Get_Struct(self, igraph_t, graph);
|
|
|
|
igraph_copy(copy_graph,graph);
|
|
igraph_rewire_edges(copy_graph,NUM2DBL(prop));
|
|
|
|
return new_graph;
|
|
|
|
}
|
|
|
|
/* call-seq:
|
|
* g.rewire(n) -> IGraph
|
|
*
|
|
* Randomly rewires a graph while preserving the degree distribution.
|
|
*
|
|
* This function generates a new graph based on the original one by randomly
|
|
* rewiring edges while preserving the original graph's degree distribution.
|
|
*
|
|
* n: Number of rewiring trials to perform.
|
|
*/
|
|
VALUE cIGraph_rewire(VALUE self, VALUE n){
|
|
|
|
igraph_t *graph;
|
|
igraph_t *copy_graph;
|
|
VALUE new_graph;
|
|
|
|
new_graph = cIGraph_alloc(cIGraph);
|
|
Data_Get_Struct(new_graph, igraph_t, copy_graph);
|
|
Data_Get_Struct(self, igraph_t, graph);
|
|
|
|
igraph_copy(copy_graph,graph);
|
|
igraph_rewire(copy_graph,NUM2INT(n),0);
|
|
|
|
return new_graph;
|
|
|
|
}
|