1#ifndef MERGE_AND_SHRINK_SHRINK_FH_H
2#define MERGE_AND_SHRINK_SHRINK_FH_H
4#include "downward/merge_and_shrink/shrink_bucket_based.h"
8namespace merge_and_shrink {
20class ShrinkFH :
public ShrinkBucketBased {
22 enum class HighLow { HIGH, LOW };
25 const HighLow f_start;
26 const HighLow h_start;
28 std::vector<Bucket> ordered_buckets_use_vector(
29 const TransitionSystem& ts,
30 const Distances& distances,
33 std::vector<Bucket> ordered_buckets_use_map(
34 const TransitionSystem& ts,
35 const Distances& distances)
const;
38 virtual std::string name()
const override;
40 dump_strategy_specific_options(utils::LogProxy& log)
const override;
42 virtual std::vector<Bucket> partition_into_buckets(
43 const TransitionSystem& ts,
44 const Distances& distances)
const override;
47 ShrinkFH(HighLow shrink_f, HighLow shrink_h,
int random_seed);
49 virtual bool requires_init_distances()
const override {
return true; }
51 virtual bool requires_goal_distances()
const override {
return true; }