98 using StateInfo = internal::StateInfo;
99 using StackInfo = internal::StackInfo;
101 struct ExpansionInfo {
103 StackInfo& stack_info;
104 StateInfo& state_info;
111 bool exits_only_solvable : 1 =
true;
112 bool exits_scc : 1 =
false;
113 bool transitions_in_scc : 1 =
false;
116 std::vector<Action> aops;
119 typename Distribution<StateID>::const_iterator successor;
121 explicit ExpansionInfo(
123 StackInfo& stack_info,
124 StateInfo& state_info,
131 bool next_action(
MDPType& mdp);
132 bool forward_non_self_loop(
MDPType& mdp,
const State& state);
133 bool next_successor();
135 StateID get_current_successor();
138 const bool expand_goals_;
140 storage::PerStateStorage<StateInfo> state_infos_;
141 std::deque<ExpansionInfo> expansion_queue_;
142 std::deque<StackInfo> stack_;
153 std::output_iterator<StateID>
auto dead_out,
154 std::output_iterator<StateID>
auto unsolvable_out,
155 std::output_iterator<StateID>
auto solvable_out,
156 double max_time = std::numeric_limits<double>::infinity());
159 void push_state(
StateID state_id, StateInfo& state_info);
164 ExpansionInfo& exp_info);
169 utils::CountdownTimer& timer);
172 unsigned int stack_idx,
173 std::output_iterator<StateID>
auto dead_out,
174 std::output_iterator<StateID>
auto unsolvable_out,
175 std::output_iterator<StateID>
auto solvable_out,
176 utils::CountdownTimer& timer);
typename std::conditional_t< is_cheap_to_copy_v< T >, T, const T & > param_type
Alias template defining the best way to pass a parameter of a given type.
Definition type_traits.h:25