AI 24/25 Project Software
Documentation for the AI 24/25 course programming project software
Loading...
Searching...
No Matches
max_orthogonal_finder.h
1#ifndef PROBFD_PDBS_MAX_ORTHOGONAL_FINDER_H
2#define PROBFD_PDBS_MAX_ORTHOGONAL_FINDER_H
3
4#include "probfd/pdbs/subcollection_finder.h"
5
6#include <memory>
7#include <vector>
8
9namespace probfd {
10class ProbabilisticTaskProxy;
11}
12
13namespace probfd::pdbs {
14
15class MaxOrthogonalityFinderBase : public SubCollectionFinder {
16 const std::vector<std::vector<bool>> var_orthogonality_;
17
18public:
19 explicit MaxOrthogonalityFinderBase(
20 const ProbabilisticTaskProxy& task_proxy);
21
22 std::shared_ptr<std::vector<PatternSubCollection>>
23 compute_subcollections(const PatternCollection&) override;
24
25 std::vector<PatternSubCollection> compute_subcollections_with_pattern(
26 const PatternCollection& patterns,
27 const std::vector<PatternSubCollection>& known_pattern_cliques,
28 const Pattern& new_pattern) override;
29};
30
31class AdditiveMaxOrthogonalityFinder : public MaxOrthogonalityFinderBase {
32public:
33 using MaxOrthogonalityFinderBase::MaxOrthogonalityFinderBase;
34
35 [[nodiscard]]
36 value_t evaluate_subcollection(
37 const std::vector<value_t>& pdb_estimates,
38 const std::vector<int>& subcollection) const override;
39
40 [[nodiscard]]
41 value_t combine(value_t left, value_t right) const override;
42};
43
44class MultiplicativeMaxOrthogonalityFinder : public MaxOrthogonalityFinderBase {
45public:
46 using MaxOrthogonalityFinderBase::MaxOrthogonalityFinderBase;
47
48 [[nodiscard]]
49 value_t evaluate_subcollection(
50 const std::vector<value_t>& pdb_estimates,
51 const std::vector<int>& subcollection) const override;
52
53 [[nodiscard]]
54 value_t combine(value_t left, value_t right) const override;
55};
56
57} // namespace probfd::pdbs
58
59#endif // PROBFD_PDBS_MAX_ORTHOGONAL_FINDER_H
Namespace dedicated to probabilistic pattern databases.
Definition gzocp_heuristic.h:16
The top-level namespace of probabilistic Fast Downward.
Definition command_line.h:8
double value_t
Typedef for the state value type.
Definition aliases.h:7