AI 24/25 Project Software
Documentation for the AI 24/25 course programming project software
Loading...
Searching...
No Matches
shrink_bisimulation.h
1#ifndef MERGE_AND_SHRINK_SHRINK_BISIMULATION_H
2#define MERGE_AND_SHRINK_SHRINK_BISIMULATION_H
3
4#include "downward/merge_and_shrink/shrink_strategy.h"
5
6namespace merge_and_shrink {
7struct Signature;
8
9enum class AtLimit { RETURN, USE_UP };
10
11class ShrinkBisimulation : public ShrinkStrategy {
12 const bool greedy;
13 const AtLimit at_limit;
14
15 void compute_abstraction(
16 const TransitionSystem& ts,
17 const Distances& distances,
18 int target_size,
19 StateEquivalenceRelation& equivalence_relation) const;
20
21 int initialize_groups(
22 const TransitionSystem& ts,
23 const Distances& distances,
24 std::vector<int>& state_to_group) const;
25
26 void compute_signatures(
27 const TransitionSystem& ts,
28 const Distances& distances,
29 std::vector<Signature>& signatures,
30 const std::vector<int>& state_to_group) const;
31
32protected:
33 virtual void
34 dump_strategy_specific_options(utils::LogProxy& log) const override;
35 virtual std::string name() const override;
36
37public:
38 explicit ShrinkBisimulation(bool greedy, AtLimit at_limit);
39 virtual StateEquivalenceRelation compute_equivalence_relation(
40 const TransitionSystem& ts,
41 const Distances& distances,
42 int target_size,
43 utils::LogProxy& log) const override;
44
45 virtual bool requires_init_distances() const override { return false; }
46
47 virtual bool requires_goal_distances() const override { return true; }
48};
49} // namespace merge_and_shrink
50
51#endif