|
GT | eulerian (const size_t &__num_nodes, const size_t &__num_arcs) |
|
GT | eulerian (const size_t &__num_nodes, const double &p) |
|
GT | sufficient_hamiltonian (const size_t &__num_nodes, const double &p=0.5) |
|
|
typedef GT::Node | GT_Node |
|
typedef GT::Arc | GT_Arc |
|
|
virtual void | update_parity_after_arc_insertion (GT_Node *src, GT_Node *tgt)=0 |
|
GT_Arc * | insert_arc (GT_Node *src, GT_Node *tgt) |
|
GT_Node * | select_random_node (GT_Node *excluded=NULL) |
|
GT_Node * | select_random_node (DynList< GT_Node * > &list) |
|
virtual void | create_nodes_and_initialize_arc_index ()=0 |
|
virtual void | connect ()=0 |
|
void | initialize_and_create_nodes (const size_t &__num_nodes, const size_t &__num_arcs) |
|
| Random_Graph_Base (unsigned long seed, const Init_Node &__init_node, const Init_Arc &__init_arc) |
|
GT | create (const size_t &__num_nodes, const size_t &__num_arcs, bool connected) |
|
virtual GT | create_p (const size_t &__num_nodes, const double &p, bool connected)=0 |
|
virtual void | make_eulerian ()=0 |
|
virtual void | make_hamiltonian ()=0 |
|
|
gsl_rng * | r |
|
Init_Node & | init_node |
|
Init_Arc & | init_arc |
|
unique_ptr< DynArray< GT_Node * > > | nodes |
|
unique_ptr< IndexArc< GT > > | idx_arc |
|
size_t | num_nodes |
|
size_t | num_arcs |
|
unsigned long | rand_max |
|
GT | g |
|
bool | save_parity |
|
template<class GT , class Init_Node , class Init_Arc >
Crea un grafo aleatorio que es euleriano.
Esta versión construye un grafo aleatorio esparcido que se garantiza es euleriano; es decir, que contiene ciclos eulerianos.
El proceso primero genera un grafo esparcido aleatorio, luego examina el grafo resultante y crea nuevos arcos de modo que el resultado contenga un ciclo euleriano.
- Parámetros
-
[in] | __num_nodes | cantidad de nodos que debe tener el grafo. |
[in] | __num_arcs | cantidad de arcos que debe tener el grafo. |
- Devuelve
- puntero al grafo aleatorio creado.
- Excepciones
-
bad_alloc | si no hay suficiente memoria. |
template<class GT , class Init_Node , class Init_Arc >
Crea un grafo aleatorio euleriano.
Esta versión construye un grafo aleatorio euleriano con probabilidad p de existencia de arco entre cualquier par de nodos.
Úsese esta rutina para generar grafos densos. En este caso, empléese un valor de p mayor o igual a 0.5.
- Atención
- El procedimiento puede ser extremadamente lento y goloso en memoria conforme aumento el valor de __num_nodes.
- Parámetros
-
[in] | __num_nodes | cantidad de nodos que debe tener el grafo. |
[in] | p | probabilidad de existencia de arco entre cualquier par de nodos. |
- Devuelve
- puntero al grafo aleatorio creado.
- Excepciones
-
bad_alloc | si no hay suficiente memoria. |
domain_error | si el valor de p no está entre 0 y 1. |
La documentación para esta clase fue generada a partir del siguiente fichero: