AI 24/25 Project Software
Documentation for the AI 24/25 course programming project software
Loading...
Searching...
No Matches
merge_strategy_factory_sccs.h
1#ifndef MERGE_AND_SHRINK_MERGE_STRATEGY_FACTORY_SCCS_H
2#define MERGE_AND_SHRINK_MERGE_STRATEGY_FACTORY_SCCS_H
3
4#include "downward/merge_and_shrink/merge_strategy_factory.h"
5
6namespace merge_and_shrink {
7class MergeTreeFactory;
8class MergeSelector;
9
10enum class OrderOfSCCs {
11 TOPOLOGICAL,
12 REVERSE_TOPOLOGICAL,
13 DECREASING,
14 INCREASING
15};
16
17class MergeStrategyFactorySCCs : public MergeStrategyFactory {
18 OrderOfSCCs order_of_sccs;
19 std::shared_ptr<MergeTreeFactory> merge_tree_factory;
20 std::shared_ptr<MergeSelector> merge_selector;
21
22protected:
23 virtual std::string name() const override;
24 virtual void dump_strategy_specific_options() const override;
25
26public:
27 MergeStrategyFactorySCCs(
28 const OrderOfSCCs& order_of_sccs,
29 const std::shared_ptr<MergeTreeFactory>& merge_tree,
30 const std::shared_ptr<MergeSelector>& merge_selector,
31 utils::Verbosity verbosity);
32 virtual std::unique_ptr<MergeStrategy> compute_merge_strategy(
33 const TaskProxy& task_proxy,
34 const FactoredTransitionSystem& fts) override;
35 virtual bool requires_init_distances() const override;
36 virtual bool requires_goal_distances() const override;
37};
38} // namespace merge_and_shrink
39
40#endif