AI 24/25 Project Software
Documentation for the AI 24/25 course programming project software
Loading...
Searching...
No Matches
cartesian_heuristic_function.h
1#ifndef CEGAR_CARTESIAN_HEURISTIC_FUNCTION_H
2#define CEGAR_CARTESIAN_HEURISTIC_FUNCTION_H
3
4#include <memory>
5#include <vector>
6
7class State;
8
9namespace cartesian_abstractions {
10class RefinementHierarchy;
11/*
12 Store RefinementHierarchy and heuristic values for looking up abstract state
13 IDs and corresponding heuristic values efficiently.
14*/
15class CartesianHeuristicFunction {
16 // Avoid const to enable moving.
17 std::unique_ptr<RefinementHierarchy> refinement_hierarchy;
18 std::vector<int> h_values;
19
20public:
21 CartesianHeuristicFunction(
22 std::unique_ptr<RefinementHierarchy>&& hierarchy,
23 std::vector<int>&& h_values);
24
25 CartesianHeuristicFunction(const CartesianHeuristicFunction&) = delete;
26 CartesianHeuristicFunction(CartesianHeuristicFunction&&) = default;
27
28 int get_value(const State& state) const;
29};
30} // namespace cartesian_abstractions
31
32#endif