1#ifndef MERGE_AND_SHRINK_SHRINK_BUCKET_BASED_H
2#define MERGE_AND_SHRINK_SHRINK_BUCKET_BASED_H
4#include "downward/merge_and_shrink/shrink_strategy.h"
10class RandomNumberGenerator;
13namespace merge_and_shrink {
33class ShrinkBucketBased :
public ShrinkStrategy {
35 using Bucket = std::vector<int>;
36 std::shared_ptr<utils::RandomNumberGenerator> rng;
39 StateEquivalenceRelation compute_abstraction(
40 const std::vector<Bucket>& buckets,
42 utils::LogProxy& log)
const;
45 virtual std::vector<Bucket> partition_into_buckets(
46 const TransitionSystem& ts,
47 const Distances& Distances)
const = 0;
50 explicit ShrinkBucketBased(
int random_seed);
51 virtual StateEquivalenceRelation compute_equivalence_relation(
52 const TransitionSystem& ts,
53 const Distances& distances,
55 utils::LogProxy& log)
const override;