35class BisimilarStateSpace :
public MDP<QuotientState, QuotientAction> {
36 struct CachedTransition {
41 std::shared_ptr<ProbabilisticTask> task_;
42 std::shared_ptr<FDRCostFunction> task_cost_function_;
44 unsigned num_cached_transitions_ = 0;
45 segmented_vector::SegmentedVector<std::vector<CachedTransition>>
49 std::vector<std::unique_ptr<int[]>> store_;
51 std::vector<bool> goal_flags_;
55 std::shared_ptr<ProbabilisticTask> task,
56 std::shared_ptr<FDRCostFunction> task_cost_function,
57 const TaskProxy& det_task_proxy,
58 const merge_and_shrink::TransitionSystem& transition_system);
60 ~BisimilarStateSpace()
override;
66 void generate_applicable_actions(
68 std::vector<QuotientAction>& result)
override;
70 void generate_action_transitions(
75 void generate_all_transitions(
77 std::vector<QuotientAction>& aops,
80 void generate_all_transitions(
82 std::vector<TransitionType>& transitions)
override;
92 unsigned num_bisimilar_states()
const;
95 unsigned num_transitions()
const;
98merge_and_shrink::Factor
99compute_bisimulation_on_determinization(
const TaskProxy& det_task_proxy);