114 NodeId initialAggregator) {
116 bn.cpt(initialAggregator).content());
117 auto newAgg = bn.variable(initialAggregator).clone();
121 std::list< NodeId > orderedParents = {};
123 for (
const auto& elt: parents) {
124 orderedParents.push_back(elt);
127 orderedParents.sort();
142 = std::string(bn.variable(initialAggregator).name()) +
"_" + std::to_string(j);
143 const std::string aggType = p->aggregatorName();
145 for (
auto parent: parents) {
146 bn.eraseArc(parent, initialAggregator);
152 newAgg->setName(newName);
153 newAgg->setDescription(aggType);
157 for (
const auto& parent: orderedParents) {
158 if (q < parents.
size() - parents.
size() % arity) {
177 for (
NodeId node: newAggParents) {
178 bn.addArc(node, bn.idFromName(newName));
184 newAggs.insert(bn.idFromName(newName));
186 newAggParents.clear();
191 newName = std::string(bn.variable(initialAggregator).name()) +
"_" + std::to_string(j);
194 newAgg = bn.variable(initialAggregator).clone();
195 newAgg->setName(newName);
196 newAgg->setDescription(aggType);
203 newAggParents.push_back(parent);
215 newAggs.insert(parent);
230 newAggs.insert(bn.idFromName(newName));
232 for (
NodeId node: newAggParents) {
233 bn.addArc(node, bn.idFromName(newName));
236 for (
auto agg:
addDepthLayer_(bn, newAggs, initialAggregator, j)) {
237 bn.addArc(agg, initialAggregator);
250 bn.cpt(initialAggregator).content());
253 std::string aggType = p->aggregatorName();
255 if (nodes.
size() <= arity) {
258 auto newAgg = bn.variable(initialAggregator).clone();
264 std::list< NodeId > orderedParents = {};
266 for (
const auto& elt: nodes) {
267 orderedParents.push_back(elt);
270 orderedParents.sort();
280 = std::string(bn.variable(initialAggregator).name()) +
"_" + std::to_string(j);
282 newAgg->setName(newName);
283 newAgg->setDescription(aggType);
287 for (
const auto parent: orderedParents) {
288 if (q < nodes.size() - nodes.size() % arity) {
303 for (
NodeId node: newAggParents) {
304 bn.addArc(node, bn.idFromName(newName));
307 newAggs.insert(bn.idFromName(newName));
309 newAggParents.clear();
314 newName = std::string(bn.variable(initialAggregator).name()) +
"_" + std::to_string(j);
317 newAgg = bn.variable(initialAggregator).clone();
318 newAgg->setName(newName);
319 newAgg->setDescription(aggType);
326 newAggParents.push_back(parent);
338 newAggs.insert(parent);
353 newAggs.insert(bn.idFromName(newName));
355 for (
NodeId node: newAggParents) {
356 bn.addArc(node, bn.idFromName(newName));