Aleph-w  1.9
General library for algorithms and data structures
Aleph::Bellman_Ford_Negative_Cycle< GT, Distance, Ait, NAit, SA > Struct Template Reference

#include <Bellman_Ford.H>

Public Member Functions

bool operator() (const GT &g, Path< GT > &path, Distance &d, SA &sa) const
 
bool operator() (const GT &g, Path< GT > &path, Distance &&d=Distance(), SA &&sa=SA()) const
 
bool operator() (const GT &g, typename GT::Node *s, Path< GT > &path, Distance &d, SA &sa) const
 
bool operator() (const GT &g, typename GT::Node *s, Path< GT > &path, Distance &&d=Distance(), SA &&sa=SA()) const
 
Path< GT > operator() (const GT &g, typename GT::Node *s, Distance &d, SA &sa, double it_factor=0.7) const
 
Path< GT > operator() (const GT &g, typename GT::Node *s, Distance &&d=Distance(), SA &&sa=SA(), double it_factor=0.7) const
 
Path< GT > operator() (const GT &g, Distance &d, SA &sa, double it_factor=0.7) const
 
Path< GT > operator() (const GT &g, Distance &&d=Distance(), SA &&sa=SA(), double it_factor=0.7) const
 

Detailed Description

template<class GT, class Distance = Dft_Dist<GT>, template< class, class > class Ait = Arc_Iterator, template< class, class > class NAit = Node_Arc_Iterator, class SA = Dft_Show_Arc<GT>>
struct Aleph::Bellman_Ford_Negative_Cycle< GT, Distance, Ait, NAit, SA >

Detecta si existe un ciclo negativo y eventualmente lo calcula.

Esta clase toma un digrafo y un nodo destino, ejecuta el algoritmo de Bellman-Ford y si se detecta un ciclo negativo entonces lo almacena en un camino.

El procedimiento es parametrizado con las siguientes especificaciones:

  1. GT: el tipo de grafo basado en List_Graph.
  2. Distance<GT>: La clase de lectura del peso del arco que debe exportar los siguientes atributos:
    1. typedef Distance<GT>::Distance_Type: el tipo de dato que representa un peso en un arco.
    2. Distance<GT>::Distance_Type operator()(typename GT::Arc *a): que retorna el valor del peso en el arco a.
  3. SA: filtro de arcos.

Member Function Documentation

◆ operator()() [1/2]

template<class GT , class Distance = Dft_Dist<GT>, template< class, class > class Ait = Arc_Iterator, template< class, class > class NAit = Node_Arc_Iterator, class SA = Dft_Show_Arc<GT>>
bool Aleph::Bellman_Ford_Negative_Cycle< GT, Distance, Ait, NAit, SA >::operator() ( const GT &  g,
Path< GT > &  path,
Distance &  d,
SA &  sa 
) const
inline

Invoca a la detección y cálculo de ciclo negativo.

Parameters
[in]gel grafo.
[out]pathel camino donde se guarda el ciclo en caso de que se detecte ciclo negativo.
Returns
true si existe un ciclo negativo; false de lo contrario.
Exceptions
bad_allocsi no hay suficiente memoria.

◆ operator()() [2/2]

template<class GT , class Distance = Dft_Dist<GT>, template< class, class > class Ait = Arc_Iterator, template< class, class > class NAit = Node_Arc_Iterator, class SA = Dft_Show_Arc<GT>>
bool Aleph::Bellman_Ford_Negative_Cycle< GT, Distance, Ait, NAit, SA >::operator() ( const GT &  g,
typename GT::Node *  s,
Path< GT > &  path,
Distance &  d,
SA &  sa 
) const
inline

Invoca a la detección y cálculo de ciclo negativo.

Parameters
[in]gel grafo.
[in]sel nodo inicio.
[out]pathel camino donde se guarda el ciclo en caso de que se detecte ciclo negativo.
Returns
true si existe un ciclo negativo; false de lo contrario.
Exceptions
bad_allocsi no hay suficiente memoria.

The documentation for this struct was generated from the following file:

Leandro Rabindranath León