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 Estructura Aleph::Ant_Graph
+ Diagrama de herencias de Aleph::Ant_Graph
+ Diagrama de colaboración para Aleph::Ant_Graph:

Clases

struct  Load_Arc
 
struct  Load_Node
 
struct  Save_Arc
 
struct  Save_Node
 

Tipos públicos

typedef Ant_Graph::Node Node
 
typedef Ant_Graph::Arc Arc
 
- Tipos públicos heredados desde Aleph::Agent_Graph< List_Graph, Ant_Node, Ant_Arc, Ant >
typedef GT::Node Node
 El tipo de nodo.
 
typedef GT::Arc Arc
 El tipo de arco.
 
typedef Ant Agent
 
typedef Concurrent_Graph
< List_Graph, Ant_Node,
Ant_Arc
Base_Graph
 
typedef Node::Node_Type Node_Type
 El tipo de información que contiene el nodo.
 
typedef Arc::Arc_Type Arc_Type
 El tipo de información que contiene el arco.
 
typedef Agent::Agent_Type Agent_Type
 El tipo de información que contiene el agente.
 
- Tipos públicos heredados desde Aleph::Concurrent_Graph< List_Graph, Ant_Node, Ant_Arc >
typedef __GT< Lock_Object
< Ant_Node >, Lock_Object
< Ant_Arc > > 
GT
 
typedef List_Graph::Node Node
 
typedef List_Graph::Arc Arc
 
typedef List_Graph::Node_Type Node_Type
 El tipo de nodo concurrente.
 
typedef List_Graph::Arc_Type Arc_Type
 El tipo de arco concurrente.
 

Métodos públicos

 Ant_Graph (const size_t &num_threads=1)
 
Antinsert_ant (Ant *p)
 
- Métodos públicos heredados desde Aleph::Agent_Graph< List_Graph, Ant_Node, Ant_Arc, Ant >
size_t get_num_agents () const
 Retorna el número total de agentes del grafo.
 
size_t get_num_threads () const
 Retorna el número de threads que ejecutan a los agentes.
 
Agentget_first_agent ()
 
void remove_agent (Agent *agent)
 
void start_graph (const bool block_caller=true)
 
void stop_graph ()
 
void suspend_graph ()
 
void resume_graph ()
 
void clear_agent_list ()
 
const long & get_num_agents_ready () const
 
const long & get_num_agents_suspended () const
 
void suspend_agent (Agent *agent)
 
void resume_agent (Agent *agent)
 
 Agent_Graph (const size_t &__num_threads=3, const size_t &num_mutexes=4)
 
 Agent_Graph (const Agent_Graph &g)
 
void set_num_threads (const size_t &__num_threads)
 
Agentinsert_agent_in_node (Agent *agent, Node *p, const bool suspended=false)
 
Agentinsert_agent_in_arc (Agent *agent, Arc *a, const bool suspended=false)
 
Agentcreate_agent_in_node (const Agent_Type &agent_data, Node *node, long(*process_node)(void *agent, void *graph, void *src, void *&arc)=NULL, long(*process_arc)(void *agent, void *graph, void *arc)=NULL, const bool suspended=false)
 
Agentcreate_agent_in_arc (const Agent_Type &agent_data, Arc *arc, long(*process_node)(void *agent, void *graph, void *src, void *&arc)=NULL, long(*process_arc)(void *agent, void *graph, void *arc)=NULL, const bool &suspended=false)
 
Agentsearch_agent (const Agent_Type &agent_data)
 
Agentsearch_agent (const Agent_Type &agent)
 
int get_status ()
 
void set_time_callback (Time_Callback __time_callback, const int &sec=10, const long &nanosec=0)
 
void cancel_time_callback ()
 
- Métodos públicos heredados desde Aleph::Concurrent_Graph< List_Graph, Ant_Node, Ant_Arc >
pthread_mutex_t * get_mutex (int i)
 
pthread_mutex_t * allocate_mutex ()
 
 Concurrent_Graph (const size_t &n_mut=1)
 Instancia un grafo concurrente vacío.
 
 Concurrent_Graph (const Concurrent_Graph &g)
 Instancia un grafo concurrente copia de otro grafo concurrente.
 
void set_num_mutexes (const size_t &n)
 
void distribute_mutexes_randomly ()
 
void distribute_mutexes_uniformly ()
 
size_t get_num_nodes ()
 Retorna el número de nodos que tiene el grafo concurrente.
 
size_t get_num_arcs ()
 Retorna el número de arcos que tiene el grafo concurrente.
 
size_t get_num_mutexes ()
 
Node * search_node (const Node_Type &node_info)
 Busca un nodo según su información contenida.
 
Node * insert_node (Node *node)
 Inserta un nodo ya creado en un grafo.
 
Node * insert_node (const Node_Type &node_info)
 Crea e inserta un nuevo nodo con información node_info.
 
Node * get_first_node ()
 Retorna el primer nodo de un grafo; no hay un orden determinado.
 
Arc * get_first_arc ()
 Retorna el primer arco de un grafo.
 
void verify_graphs (Concurrent_Graph &g)
 
void remove_node (Node *node)
 Elimina un nodo de un grafo (junto con todos sus arcos adyacentes).
 
void sort_arcs ()
 ordena los arcos de un grafo concurrente según criterio Compare.
 
Arc * insert_arc (Node *src_node, Node *tgt_node, const Arc_Type &arc_info)
 Crea un arco en un grafo concurrente.
 
Arc * insert_arc (Node *src_node, Node *tgt_node)
 Crea un arco en un grafo concurrente.
 
void remove_arc (Arc *arc)
 Elimina un arco en un grafo concurrente.
 
Arc * search_arc (Node *src_node, Node *tgt_node)
 Busca un arco que conecte a dos nodos.
 
Arc * search_arc (const Arc_Type &arc_info)
 Busca un arco con información arc_info.
 
bool arc_belong_to_graph (Arc *arc)
 Retorna true si el arco arc pertenece al grafo.
 

Atributos públicos

pthread_mutex_t bit_mutex
 
BitArray nodes
 

Otros miembros heredados

- Métodos protegidos heredados desde Aleph::Concurrent_Graph< List_Graph, Ant_Node, Ant_Arc >
void init_mutexes ()
 
void uninit_mutexes ()
 
- Atributos protegidos heredados desde Aleph::Concurrent_Graph< List_Graph, Ant_Node, Ant_Arc >
pthread_mutex_t mutex
 
size_t num_mutexes
 
DynArray< pthread_mutex_t > mutexes
 

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

Leandro Rabindranath León