Aleph-w  1.5a.2
Biblioteca general de algoritmos y estructuras de datos
 Todo Clases Archivos Funciones Variables 'typedefs' Enumeraciones Amigas Grupos Páginas
Referencia de la plantilla de la Clase Aleph::Random_Graph_Base< GT, Init_Node, Init_Arc >abstract
+ Diagrama de herencias de Aleph::Random_Graph_Base< GT, Init_Node, Init_Arc >
+ Diagrama de colaboración para Aleph::Random_Graph_Base< GT, Init_Node, Init_Arc >:

Métodos públicos

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)
 

Tipos protegidos

typedef GT::Node GT_Node
 
typedef GT::Arc GT_Arc
 

Métodos protegidos

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
 

Atributos protegidos

gsl_rng * r
 
Init_Node & init_node
 
Init_Arcinit_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
 

Documentación de las funciones miembro

template<class GT , class Init_Node , class Init_Arc >
GT Aleph::Random_Graph_Base< GT, Init_Node, Init_Arc >::eulerian ( const size_t &  __num_nodes,
const size_t &  __num_arcs 
)
inline

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_nodescantidad de nodos que debe tener el grafo.
[in]__num_arcscantidad de arcos que debe tener el grafo.
Devuelve
puntero al grafo aleatorio creado.
Excepciones
bad_allocsi no hay suficiente memoria.
template<class GT , class Init_Node , class Init_Arc >
GT Aleph::Random_Graph_Base< GT, Init_Node, Init_Arc >::eulerian ( const size_t &  __num_nodes,
const double &  p 
)
inline

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_nodescantidad de nodos que debe tener el grafo.
[in]pprobabilidad de existencia de arco entre cualquier par de nodos.
Devuelve
puntero al grafo aleatorio creado.
Excepciones
bad_allocsi no hay suficiente memoria.
domain_errorsi el valor de p no está entre 0 y 1.

La documentación para esta clase fue generada a partir del siguiente fichero:

Leandro Rabindranath León