src/main/include/Heuristics/CpdHeuristic.hpp
CpdHeuristic(const compressed_path_database::CpdManager<G, V>& cpdManager, const IImmutableGraph<G, V, PerturbatedCost>& perturbatedGraph): 
            cpdManager{cpdManager}, 
            hOriginalCache{cpdManager.getReorderedGraph().numberOfVertices(), cost_t::INFTY}, 
            hPerturbatedCache{cpdManager.getReorderedGraph().numberOfVertices(), cost_t::INFTY},
            lastPathActualCost{cost_t::INFTY}, lastPathOriginalCost{cost_t::INFTY}, 
            perturbatedGraph{perturbatedGraph} {

            debug("CPDHeuristic constructor start");
            if (!cpdManager.isCpdLoaded()) {
                throw cpp_utils::exceptions::InvalidStateException<compressed_path_database::CpdManager<G, V>>{cpdManager};
            }
            debug("CPDHeuristic constructor end");
        }
/**
         * @brief Construct a new Cpd Heuristic object
         * 
         * @param cpdManager 
         * @param perturbatedGraph the graph we're going to use to fetch the costs fo the edges on the perturbated graph
         */
@brief Construct a new Cpd Heuristic object

@param cpdManager
@param perturbatedGraph the graph we're going to use to fetch the costs fo the edges on the perturbated graph
@brief Construct a new Cpd Heuristic object @param cpdManager @param perturbatedGraph the graph we ' re going to use to fetch the costs fo the edges on the perturbated graph
CpdHeuristic(const compressed_path_database::CpdManager<G, V>& cpdManager, const IImmutableGraph<G, V, PerturbatedCost>& perturbatedGraph): 
            cpdManager{cpdManager}, 
            hOriginalCache{cpdManager.getReorderedGraph().numberOfVertices(), cost_t::INFTY}, 
            hPerturbatedCache{cpdManager.getReorderedGraph().numberOfVertices(), cost_t::INFTY},
            lastPathActualCost{cost_t::INFTY}, lastPathOriginalCost{cost_t::INFTY}, 
            perturbatedGraph{perturbatedGraph} {
            debug("CPDHeuristic constructor start");
            if (!cpdManager.isCpdLoaded()) {
                throw cpp_utils::exceptions::InvalidStateException<compressed_path_database::CpdManager<G, V>>{cpdManager};
            }
            debug("CPDHeuristic constructor end");
        }
CpdHeuristic ( const compressed_path_database :: CpdManager < G , V > & cpdManager , const IImmutableGraph < G , V , PerturbatedCost > & perturbatedGraph ) : cpdManager { cpdManager } , hOriginalCache { cpdManager . getReorderedGraph ( ) . numberOfVertices ( ) , cost_t :: INFTY } , hPerturbatedCache { cpdManager . getReorderedGraph ( ) . numberOfVertices ( ) , cost_t :: INFTY } , lastPathActualCost { cost_t :: INFTY } , lastPathOriginalCost { cost_t :: INFTY } , perturbatedGraph { perturbatedGraph } { debug ( " " ) ; if ( ! cpdManager . isCpdLoaded ( ) ) { throw cpp_utils :: exceptions :: InvalidStateException < compressed_path_database :: CpdManager < G , V > > { cpdManager } ; } debug ( " " ) ; }
@brief Construct a new Cpd Heuristic object
@brief Construct a new Cpd Heuristic object