TeDDy 4.1.0
Decision diagram library.
Loading...
Searching...
No Matches
core.hpp
1#ifndef LIBTEDDY_CORE_HPP
2#define LIBTEDDY_CORE_HPP
3
4#include <libteddy/details/diagram_manager.hpp>
5#include <libteddy/details/pla_file.hpp>
6
7namespace teddy
8{
9using default_oder = std::vector<int32>;
10
16 public diagram_manager<void, degrees::fixed<2>, domains::fixed<2>>
17{
27 int32 varCount,
28 int64 nodePoolSize,
29 std::vector<int32> order = default_oder()
30 );
31
42 int32 varCount,
43 int64 nodePoolSize,
44 int64 overflowNodePoolSize,
45 std::vector<int32> order = default_oder()
46 );
47};
48
54template<int32 M>
56 public diagram_manager<void, degrees::fixed<M>, domains::fixed<M>>
57{
66 int32 varCount,
67 int64 nodePoolSize,
68 std::vector<int32> order = default_oder()
69 );
70
80 int32 varCount,
81 int64 nodePoolSize,
82 int64 overflowNodePoolSize,
83 std::vector<int32> order = default_oder()
84 );
85};
86
97 public diagram_manager<void, degrees::mixed, domains::mixed>
98{
109 int32 varCount,
110 int64 nodePoolSize,
111 std::vector<int32> domains,
112 std::vector<int32> order = default_oder()
113 );
114
126 int32 varCount,
127 int64 nodePoolSize,
128 int64 overflowNodePoolSize,
129 std::vector<int32> domains,
130 std::vector<int32> order = default_oder()
131 );
132};
133
146template<int32 M>
148 public diagram_manager<void, degrees::fixed<M>, domains::mixed>
149{
160 int32 varCount,
161 int64 nodePoolSize,
162 std::vector<int32> domains,
163 std::vector<int32> order = default_oder()
164 );
165
177 int32 varCount,
178 int64 nodePoolSize,
179 int64 overflowNodePoolSize,
180 std::vector<int32> domains,
181 std::vector<int32> order = default_oder()
182 );
183};
184
186 int32 const varCount,
187 int64 const nodePoolSize,
188 std::vector<int32> order
189) :
191 varCount,
192 nodePoolSize,
193 nodePoolSize / 2,
194 static_cast<std::vector<int32>&&>(order)
195 )
196{
197}
198
200 int32 const varCount,
201 int64 const nodePoolSize,
202 int64 const overflowNodePoolSize,
203 std::vector<int32> order
204) :
205 diagram_manager<void, degrees::fixed<2>, domains::fixed<2>>(
206 varCount,
207 nodePoolSize,
208 overflowNodePoolSize,
209 static_cast<std::vector<int32>&&>(order)
210 )
211{
212}
213
214template<int32 M>
216 int32 const varCount,
217 int64 const nodePoolSize,
218 std::vector<int32> order
219) :
221 varCount,
222 nodePoolSize,
223 nodePoolSize / 2,
224 static_cast<std::vector<int32>&&>(order)
225 )
226{
227}
228
229template<int32 M>
231 int32 const varCount,
232 int64 const nodePoolSize,
233 int64 const overflowNodePoolSize,
234 std::vector<int32> order
235) :
236 diagram_manager<void, degrees::fixed<M>, domains::fixed<M>>(
237 varCount,
238 nodePoolSize,
239 overflowNodePoolSize,
240 static_cast<std::vector<int32>&&>(order)
241 )
242{
243}
244
246 int32 const varCount,
247 int64 const nodePoolSize,
248 std::vector<int32> domains,
249 std::vector<int32> order
250) :
252 varCount,
253 nodePoolSize,
254 nodePoolSize / 2,
255 static_cast<std::vector<int32>&&>(domains),
256 static_cast<std::vector<int32>&&>(order)
257 )
258{
259}
260
262 int32 const varCount,
263 int64 const nodePoolSize,
264 int64 const overflowNodePoolSize,
265 std::vector<int32> domains,
266 std::vector<int32> order
267) :
268 diagram_manager<void, degrees::mixed, domains::mixed>(
269 varCount,
270 nodePoolSize,
271 overflowNodePoolSize,
272 static_cast<std::vector<int32>&&>(domains),
273 static_cast<std::vector<int32>&&>(order)
274 )
275{
276}
277
278template<int32 M>
280 int32 const varCount,
281 int64 const nodePoolSize,
282 std::vector<int32> domains,
283 std::vector<int32> order
284) :
286 varCount,
287 nodePoolSize,
288 nodePoolSize / 2,
289 static_cast<std::vector<int32>&&>(domains),
290 static_cast<std::vector<int32>&&>(order)
291 )
292{
293}
294
295template<int32 PMax>
297 int32 const varCount,
298 int64 const nodePoolSize,
299 int64 const overflowNodePoolSize,
300 std::vector<int32> domains,
301 std::vector<int32> order
302) :
303 diagram_manager<void, degrees::fixed<PMax>, domains::mixed>(
304 varCount,
305 nodePoolSize,
306 overflowNodePoolSize,
307 static_cast<std::vector<int32>&&>(domains),
308 static_cast<std::vector<int32>&&>(order)
309 )
310{
311}
312} // namespace teddy
313
314#endif
Base class for all diagram managers that generically implements all of the algorithms.
Definition diagram_manager.hpp:91
Diagram manager for Binary Decision Diagrams.
Definition core.hpp:17
bdd_manager(int32 varCount, int64 nodePoolSize, std::vector< int32 > order=default_oder())
Initializes BDD manager.
Definition core.hpp:185
Diagram manager (integer) Multi-valued Decision Diagrams (iMDDs)
Definition core.hpp:149
ifmdd_manager(int32 varCount, int64 nodePoolSize, std::vector< int32 > domains, std::vector< int32 > order=default_oder())
Initializes ifMDD manager.
Definition core.hpp:279
Diagram manager for (integer) Multi-valued Decision Diagrams (iMDDs)
Definition core.hpp:98
imdd_manager(int32 varCount, int64 nodePoolSize, std::vector< int32 > domains, std::vector< int32 > order=default_oder())
Initializes iMDD manager.
Definition core.hpp:245
Diagram manager for Multi-valued Decision Diagrams.
Definition core.hpp:57
mdd_manager(int32 varCount, int64 nodePoolSize, std::vector< int32 > order=default_oder())
Initializes MDD manager.
Definition core.hpp:215