1#ifndef INFRARED_CLUSTER_HPP
2#define INFRARED_CLUSTER_HPP
24#include "functions.hpp"
39 template<
class FunValue=
double>
70 const std::vector<var_idx_t> &
71 vars()
const {
return vars_;}
104 constrs_.push_back(c);
127 auto sepvars = std::vector<var_idx_t>();
128 const auto &pvars = parent.
vars();
129 for (
auto &var : vars_ ) {
130 if (std::find(pvars.begin(), pvars.end(),var)
132 sepvars.push_back(var);
149 auto diffvars = std::vector<var_idx_t>();
150 const auto &pvars = parent.
vars();
151 for (
auto &var : vars_ ) {
152 if (std::find(pvars.begin(), pvars.end(),var)
154 diffvars.push_back(var);
161 std::vector<var_idx_t> vars_;
162 std::vector<const constraint_t *> constrs_;
163 std::vector<const function_t *> funs_;
A (partial) assignment of variables to values.
Definition assignment.hpp:76
Cluster (or bag) in the cluster tree.
Definition cluster.hpp:40
void add_constraint(const constraint_t *c)
Assign constraint to this cluster.
Definition cluster.hpp:103
Cluster(const std::vector< var_idx_t > &vars)
constructor with variables
Definition cluster.hpp:59
void add_function(const function_t *f)
Assign function to this cluster.
Definition cluster.hpp:111
const auto & constraints() const
Get constraints.
Definition cluster.hpp:87
auto sep_vars(const Cluster &parent) const
Calculate separator variables.
Definition cluster.hpp:126
int var_idx_t
Definition cluster.hpp:42
const auto & functions() const
Get functions.
Definition cluster.hpp:97
const std::vector< var_idx_t > & vars() const
Get variables.
Definition cluster.hpp:71
~Cluster()
Definition cluster.hpp:63
bool empty() const
Check whether cluster is empty.
Definition cluster.hpp:77
auto diff_vars(const Cluster &parent) const
Calculate difference variables.
Definition cluster.hpp:148
Cluster()
empty constructor
Definition cluster.hpp:50
Definition assignment.hpp:29
Function< bool > Constraint
A constraint is simply a boolean-valued function.
Definition functions.hpp:406