AI 24/25 Project Software
Documentation for the AI 24/25 course programming project software
Loading...
Searching...
No Matches
merge_strategy_sccs.h
1#ifndef MERGE_AND_SHRINK_MERGE_STRATEGY_SCCS_H
2#define MERGE_AND_SHRINK_MERGE_STRATEGY_SCCS_H
3
4#include "downward/merge_and_shrink/merge_strategy.h"
5
6#include <memory>
7#include <vector>
8
9class TaskProxy;
10
11namespace merge_and_shrink {
12class MergeSelector;
13class MergeTreeFactory;
14class MergeTree;
15class MergeStrategySCCs : public MergeStrategy {
16 const TaskProxy& task_proxy;
17 std::shared_ptr<MergeTreeFactory> merge_tree_factory;
18 std::shared_ptr<MergeSelector> merge_selector;
19 std::vector<std::vector<int>> non_singleton_cg_sccs;
20
21 std::unique_ptr<MergeTree> current_merge_tree;
22 std::vector<int> current_ts_indices;
23
24public:
25 MergeStrategySCCs(
26 const FactoredTransitionSystem& fts,
27 const TaskProxy& task_proxy,
28 const std::shared_ptr<MergeTreeFactory>& merge_tree_factory,
29 const std::shared_ptr<MergeSelector>& merge_selector,
30 std::vector<std::vector<int>>&& non_singleton_cg_sccs);
31 virtual ~MergeStrategySCCs() override;
32 virtual std::pair<int, int> get_next() override;
33};
34} // namespace merge_and_shrink
35
36#endif