1#ifndef PDBS_INCREMENTAL_CANONICAL_PDBS_H
2#define PDBS_INCREMENTAL_CANONICAL_PDBS_H
4#include "downward/pdbs/pattern_cliques.h"
5#include "downward/pdbs/pattern_collection_information.h"
6#include "downward/pdbs/types.h"
8#include "downward/task_proxy.h"
13class IncrementalCanonicalPDBs {
16 std::shared_ptr<PatternCollection> patterns;
17 std::shared_ptr<PDBCollection> pattern_databases;
18 std::shared_ptr<std::vector<PatternClique>> pattern_cliques;
21 VariableAdditivity are_additive;
27 void add_pdb_for_pattern(
const Pattern& pattern);
29 void recompute_pattern_cliques();
32 IncrementalCanonicalPDBs(
33 const TaskProxy& task_proxy,
34 const PatternCollection& intitial_patterns);
35 virtual ~IncrementalCanonicalPDBs() =
default;
38 void add_pdb(
const std::shared_ptr<PatternDatabase>& pdb);
42 std::vector<PatternClique> get_pattern_cliques(
const Pattern& new_pattern);
44 int get_value(
const State& state)
const;
52 bool is_dead_end(
const State& state)
const;
54 PatternCollectionInformation
55 get_pattern_collection_information(utils::LogProxy& log)
const;
57 std::shared_ptr<PDBCollection> get_pattern_databases()
const
59 return pattern_databases;
62 int get_size()
const {
return size; }