93 NodeId initialAggregator) {
95 bn.cpt(initialAggregator).content());
96 auto newAgg = bn.variable(initialAggregator).clone();
100 std::list< NodeId > orderedParents = {};
102 for (
const auto& elt: parents) {
103 orderedParents.push_back(elt);
106 orderedParents.sort();
121 = std::string(bn.variable(initialAggregator).name()) +
"_" + std::to_string(j);
122 const std::string aggType = p->aggregatorName();
124 for (
auto parent: parents) {
125 bn.eraseArc(parent, initialAggregator);
131 newAgg->setName(newName);
132 newAgg->setDescription(aggType);
136 for (
const auto& parent: orderedParents) {
137 if (q < parents.
size() - parents.
size() % arity) {
156 for (
NodeId node: newAggParents) {
157 bn.addArc(node, bn.idFromName(newName));
163 newAggs.insert(bn.idFromName(newName));
165 newAggParents.clear();
170 newName = std::string(bn.variable(initialAggregator).name()) +
"_" + std::to_string(j);
173 newAgg = bn.variable(initialAggregator).clone();
174 newAgg->setName(newName);
175 newAgg->setDescription(aggType);
182 newAggParents.push_back(parent);
194 newAggs.insert(parent);
209 newAggs.insert(bn.idFromName(newName));
211 for (
NodeId node: newAggParents) {
212 bn.addArc(node, bn.idFromName(newName));
215 for (
auto agg:
addDepthLayer_(bn, newAggs, initialAggregator, j)) {
216 bn.addArc(agg, initialAggregator);
229 bn.cpt(initialAggregator).content());
232 std::string aggType = p->aggregatorName();
234 if (nodes.
size() <= arity) {
237 auto newAgg = bn.variable(initialAggregator).clone();
243 std::list< NodeId > orderedParents = {};
245 for (
const auto& elt: nodes) {
246 orderedParents.push_back(elt);
249 orderedParents.sort();
259 = std::string(bn.variable(initialAggregator).name()) +
"_" + std::to_string(j);
261 newAgg->setName(newName);
262 newAgg->setDescription(aggType);
266 for (
const auto parent: orderedParents) {
267 if (q < nodes.size() - nodes.size() % arity) {
282 for (
NodeId node: newAggParents) {
283 bn.addArc(node, bn.idFromName(newName));
286 newAggs.insert(bn.idFromName(newName));
288 newAggParents.clear();
293 newName = std::string(bn.variable(initialAggregator).name()) +
"_" + std::to_string(j);
296 newAgg = bn.variable(initialAggregator).clone();
297 newAgg->setName(newName);
298 newAgg->setDescription(aggType);
305 newAggParents.push_back(parent);
317 newAggs.insert(parent);
332 newAggs.insert(bn.idFromName(newName));
334 for (
NodeId node: newAggParents) {
335 bn.addArc(node, bn.idFromName(newName));