PaGMO
1.1.5
|
Erdős-Rényi graph topology. More...
#include <erdos_renyi.h>
Public Member Functions | |
erdos_renyi (const double &prob=0.01) | |
Constructor from probability. More... | |
base_ptr | clone () const |
Clone method. More... | |
std::string | get_name () const |
Get name of the topology. More... | |
Public Member Functions inherited from pagmo::topology::base | |
base () | |
Default constructor. More... | |
base (const base &) | |
Copy constructor. More... | |
base & | operator= (const base &) |
Assignment operator. More... | |
virtual | ~base () |
Trivial destructor. More... | |
vertices_size_type | get_number_of_vertices () const |
Get number of vertices. More... | |
edges_size_type | get_number_of_edges () const |
Get number of edges. More... | |
void | push_back () |
Push back vertex. More... | |
double | get_average_shortest_path_length () const |
Calculate average path length. More... | |
double | get_clustering_coefficient () const |
Calculate clustering coefficient. | |
std::vector< double > | get_degree_distribution () const |
Constructs the Degree Distribution. | |
bool | are_adjacent (const vertices_size_type &, const vertices_size_type &) const |
Return true if two vertices are adjacent. More... | |
bool | are_inv_adjacent (const vertices_size_type &, const vertices_size_type &) const |
Return true if two vertices are inversely adjacent. More... | |
std::vector< vertices_size_type > | get_v_adjacent_vertices (const vertices_size_type &) const |
Return vector of adjacent vertices. More... | |
std::vector< vertices_size_type > | get_v_inv_adjacent_vertices (const vertices_size_type &) const |
Return vector of inversely adjacent vertices. More... | |
edges_size_type | get_num_adjacent_vertices (const vertices_size_type &) const |
Return the number of adjacent vertices. More... | |
edges_size_type | get_num_inv_adjacent_vertices (const vertices_size_type &) const |
Return the number of inversely adjacent vertices. More... | |
void | set_weight (double) |
Sets the migration probability. More... | |
void | set_weight (const vertices_size_type &, double) |
Sets the migration probability. More... | |
void | set_weight (const vertices_size_type &, const vertices_size_type &, double) |
Sets the migration probability. More... | |
double | get_weight (const vertices_size_type &, const vertices_size_type &) const |
Get the migration probability. More... | |
std::string | human_readable_terse () const |
Return terse human readable representation. More... | |
std::string | human_readable () const |
Return complete human readable representation. More... | |
Protected Member Functions | |
void | connect (const vertices_size_type &) |
Establish connections between islands during a push_back() operation. More... | |
std::string | human_readable_extra () const |
Return extra information for human readable representation. More... | |
Protected Member Functions inherited from pagmo::topology::base | |
void | add_vertex () |
Add a vertex. More... | |
std::pair< a_iterator, a_iterator > | get_adjacent_vertices (const vertices_size_type &) const |
Return iterator range to adjacent vertices. More... | |
std::pair< ia_iterator, ia_iterator > | get_inv_adjacent_vertices (const vertices_size_type &) const |
Return iterator range to inversely adjacent vertices. More... | |
void | add_edge (const vertices_size_type &, const vertices_size_type &) |
Add an edge. More... | |
void | remove_edge (const vertices_size_type &, const vertices_size_type &) |
Remove an edge. More... | |
void | remove_all_edges () |
Remove all edges. More... | |
std::pair< v_iterator, v_iterator > | get_vertices () const |
Return iterator range to vertices. More... | |
Friends | |
class | boost::serialization::access |
Additional Inherited Members | |
Public Types inherited from pagmo::topology::base | |
typedef graph_type::vertices_size_type | vertices_size_type |
Vertices size type. | |
typedef graph_type::edges_size_type | edges_size_type |
Edges size type. | |
Protected Types inherited from pagmo::topology::base | |
typedef boost::adjacency_list< boost::vecS, boost::vecS, boost::bidirectionalS, boost::no_property, edge_properties, boost::no_property, boost::listS > | graph_type |
typedef boost::graph_traits< graph_type >::vertex_iterator | v_iterator |
Iterator over the vertices. | |
typedef boost::graph_traits< graph_type >::edge_iterator | e_iterator |
Iterator over the edges. | |
typedef boost::graph_traits< graph_type >::adjacency_iterator | a_iterator |
Iterator over adjacent vertices. | |
typedef graph_type::inv_adjacency_iterator | ia_iterator |
Iterator over inversely adjacent vertices. | |
typedef boost::graph_traits< graph_type >::vertex_descriptor | v_descriptor |
Vertex descriptor. | |
typedef boost::graph_traits< graph_type >::edge_descriptor | e_descriptor |
Edge descriptor. | |
Erdős-Rényi graph topology.
In the Erdős-Rényi model (ER), a graph with vertices is constructed by connecting vertices randomly, so that each possible edge is included with probability (independent from the presence or absence of any other edge in the graph). The expected number of edges in is .
In this implementation, each time an island is added to the topology each new possible bidirectional edge to and from the new island is created with probability .
Definition at line 54 of file erdos_renyi.h.
pagmo::topology::erdos_renyi::erdos_renyi | ( | const double & | prob = 0.01 | ) |
Constructor from probability.
Construct an Erdős-Rényi graph topology with given probability parameter. Allowed values for the probability are in the [0,1] range. Note that if the probability is null, the topology reduces to an unconnected topology, whereas if the probability is unitary the topology reduces to a fully_connected topology.
[in] | prob | probability parameter for the Erdős-Rényi model. |
Definition at line 43 of file erdos_renyi.cpp.
|
virtual |
Clone method.
Provided that the derived topology implements properly the copy constructor, virtually all implementations of this method will look like this:
Implements pagmo::topology::base.
Definition at line 50 of file erdos_renyi.cpp.
|
protectedvirtual |
Establish connections between islands during a push_back() operation.
This method will be called by push_back() after a vertex has been added to the graph. The purpose of this method is to connect the newly-added vertex to other vertices according to the properties of the topology.
[in] | idx | index of the newly-added vertex. |
Implements pagmo::topology::base.
Definition at line 55 of file erdos_renyi.cpp.
|
virtual |
Get name of the topology.
Default implementation will return the class' mangled C++ name.
Reimplemented from pagmo::topology::base.
Definition at line 73 of file erdos_renyi.cpp.
|
protectedvirtual |
Return extra information for human readable representation.
Return extra topology-dependent information that will be displayed when calling human_readable(). Default implementation will return an empty string.
Reimplemented from pagmo::topology::base.
Definition at line 66 of file erdos_renyi.cpp.