Aleph-w  1.5a.2
Biblioteca general de algoritmos y estructuras de datos
 Todo Clases Archivos Funciones Variables 'typedefs' Enumeraciones Amigas Grupos Páginas
warshall.H
1 
2 # ifndef WARSHALL_H
3 # define WARSHALL_H
4 
5 # include <tpl_graph.H>
6 # include <tpl_matgraph.H>
7 
8 namespace Aleph {
9 
33  template <class GT, class SA = Dft_Show_Arc<GT> >
36 {
37  Bit_Mat_Graph<GT, SA> mat_prev(g);
38  if (mat.get_list_graph() != &g)
39  mat.set_list_graph(g);
40  const size_t & n = mat.get_num_nodes();
41  for (int k = 0; k < n; k++)
42  {
43  for (int i = 0; i < n; i++)
44  for (int j = 0; j < n; j++)
45  mat(i, j) = mat_prev(i, j) or
46  (mat_prev(i, k) and mat_prev(k, j));
47 
48  mat_prev = mat;
49  }
50 }
51 
67  template <class GT, class SA = Dft_Show_Arc<GT> >
69 {
70 public:
71 
83  void operator () (GT & g, Bit_Mat_Graph<GT> & mat) const
84  {
85  warshall_compute_transitive_clausure <GT, SA> (g, mat);
86  }
87 };
88 
89 } // end namespace Aleph
90 # endif // WARSHALL_H
91 
GT * get_list_graph()
Definition: tpl_matgraph.H:1193
const size_t & get_num_nodes() const
Retorna el número de nodos del grafo (dimensión de la matriz).
Definition: tpl_matgraph.H:1153
Definition: tpl_matgraph.H:1072
void warshall_compute_transitive_clausure(GT &g, Bit_Mat_Graph< GT, SA > &mat)
Definition: warshall.H:34
void operator()(GT &g, Bit_Mat_Graph< GT > &mat) const
Definition: warshall.H:83
void set_list_graph(GT &g)
Definition: tpl_matgraph.H:1183

Leandro Rabindranath León