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_Digraph< GT, Init_Node, Init_Arc >
+ Diagrama de herencias de Aleph::Random_Digraph< GT, Init_Node, Init_Arc >
+ Diagrama de colaboración para Aleph::Random_Digraph< GT, Init_Node, Init_Arc >:

Métodos públicos

 Random_Digraph (unsigned long seed=time(NULL), const Init_Node &&__init_node=Init_Node(), const Init_Arc &&__init_arc=Init_Arc())
 
 Random_Digraph (unsigned long seed, const Init_Node &__init_node, const Init_Arc &__init_arc)
 
 Random_Digraph (const Init_Node &__init_node, const Init_Arc &__init_arc)
 
GT operator() (const size_t &__num_nodes, const size_t &__num_arcs, bool connected=true)
 
GT operator() (const size_t &__num_nodes, const double &p, bool connected=true)
 
- Métodos públicos heredados desde Aleph::Random_Graph_Base< GT, Init_Node, Init_Arc >
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)
 

Otros miembros heredados

- Tipos protegidos heredados desde Aleph::Random_Graph_Base< GT, Init_Node, Init_Arc >
typedef GT::Node GT_Node
 
typedef GT::Arc GT_Arc
 
- Métodos protegidos heredados desde Aleph::Random_Graph_Base< GT, Init_Node, Init_Arc >
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)
 
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)
 
- Atributos protegidos heredados desde Aleph::Random_Graph_Base< GT, Init_Node, Init_Arc >
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 del constructor y destructor

template<class GT , class Init_Node = Dft_Init_Rand_Node<GT>, class Init_Arc = Dft_Init_Rand_Arc<GT>>
Aleph::Random_Digraph< GT, Init_Node, Init_Arc >::Random_Digraph ( unsigned long  seed = time(NULL),
const Init_Node &&  __init_node = Init_Node(),
const Init_Arc &&  __init_arc = Init_Arc() 
)
inline

Constructor

Parámetros
[in]seedsemilla del generador de números aleatorios
[in]__init_nodeclase de inicialización de nodo
[in]__init_arcclase de inicialización de arco

Documentación de las funciones miembro

template<class GT , class Init_Node = Dft_Init_Rand_Node<GT>, class Init_Arc = Dft_Init_Rand_Arc<GT>>
GT Aleph::Random_Digraph< GT, Init_Node, Init_Arc >::operator() ( const size_t &  __num_nodes,
const size_t &  __num_arcs,
bool  connected = true 
)
inline

Crea un grafo aleatorio esparcido.

Esta versión construye un grafo aleatorio de aproximadamente __num_arcs. El grafo no contiene arcos paralelos.

El procedimiento de aleatorización es seleccionar al azar dos nodos e insertar un arco entre ellos en caso de que éste no exista. La rutina es lineal, proporcional a __num_arcs.

Parámetros
[in]__num_nodescantidad de nodos que debe tener el grafo.
[in]__num_arcscantidad de arcos que debe tener el grafo.
[in]connectedsi el grafo a generar debe ser conexo o no. Por omisión lo es.
Devuelve
puntero al grafo aleatorio creado.
Excepciones
bad_allocsi no hay suficiente memoria.
template<class GT , class Init_Node = Dft_Init_Rand_Node<GT>, class Init_Arc = Dft_Init_Rand_Arc<GT>>
GT Aleph::Random_Digraph< GT, Init_Node, Init_Arc >::operator() ( const size_t &  __num_nodes,
const double &  p,
bool  connected = true 
)
inline

Crea un grafo aleatorio.

Esta versión construye un grafo aleatorio 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.

El procedimiento es cuadrático. Se generan todas las combinaciones de nodos y por cada par de nodos (i,j) se sortea con probabilidad p si debe haber un arco entre i y j.

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.
[in]connectedsi el grafo a generar debe ser conexo o no. Por omisión lo es.
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