1#ifndef MERGE_AND_SHRINK_MERGE_TREE_FACTORY_H
2#define MERGE_AND_SHRINK_MERGE_TREE_FACTORY_H
12class RandomNumberGenerator;
15namespace merge_and_shrink {
16class FactoredTransitionSystem;
18enum class UpdateOption;
20class MergeTreeFactory {
22 std::shared_ptr<utils::RandomNumberGenerator> rng;
23 UpdateOption update_option;
24 virtual std::string name()
const = 0;
25 virtual void dump_tree_specific_options(utils::LogProxy&)
const {}
28 MergeTreeFactory(
int random_seed, UpdateOption update_option);
29 virtual ~MergeTreeFactory() =
default;
30 void dump_options(utils::LogProxy& log)
const;
32 virtual std::unique_ptr<MergeTree>
33 compute_merge_tree(
const TaskProxy& task_proxy) = 0;
36 virtual std::unique_ptr<MergeTree> compute_merge_tree(
37 const TaskProxy& task_proxy,
38 const FactoredTransitionSystem& fts,
39 const std::vector<int>& indices_subset);
40 virtual bool requires_init_distances()
const = 0;
41 virtual bool requires_goal_distances()
const = 0;