AI 24/25 Project Software
Documentation for the AI 24/25 course programming project software
Loading...
Searching...
No Matches
probabilistic_transition.h
1#ifndef PROBFD_CARTESIAN_PROBABILISTIC_TRANSITION_H
2#define PROBFD_CARTESIAN_PROBABILISTIC_TRANSITION_H
3
4#include <cassert>
5#include <compare>
6#include <iostream>
7#include <vector>
8
9namespace probfd::cartesian_abstractions {
10
11struct ProbabilisticTransition {
12 int source_id;
13 int op_id;
14 std::vector<int> target_ids; // One target for each operator effect
15
16 ProbabilisticTransition(
17 int source_id,
18 int op_id,
19 std::vector<int> target_ids)
20 : source_id(source_id)
21 , op_id(op_id)
22 , target_ids(std::move(target_ids))
23 {
24 assert(!this->target_ids.empty());
25 }
26
27 friend std::ostream&
28 operator<<(std::ostream& os, const ProbabilisticTransition& t)
29 {
30 os << "[" << t.source_id << "," << t.op_id << ",["
31 << t.target_ids.front();
32
33 for (size_t i = 1; i != t.target_ids.size(); ++i) {
34 os << "," << t.target_ids[i];
35 }
36
37 return os << "]]";
38 }
39};
40
41} // namespace probfd::cartesian_abstractions
42
43#endif // PROBFD_CARTESIAN_PROBABILISTIC_TRANSITION_H
STL namespace.