-
Notifications
You must be signed in to change notification settings - Fork 0
/
Pruner.cpp
37 lines (28 loc) · 1.19 KB
/
Pruner.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include "Pruner.h"
#include "utils.h"
std::vector<Subset> DefaultCandidateGenerator::generateCandidates() const {
std::set<Subset> labels;
for (std::vector<Subset>::const_iterator it = getOldReps().begin(); it != getOldReps().end(); ++it) {
Subset Y = xMinus(getNumPoints(), *it);
// Iterate only through elements in Y greater than the last element in *it
Subset::const_iterator iterStart = Y.upper_bound(*(it->rbegin()));
for (Subset::const_iterator jt = iterStart; jt != Y.end(); jt++) {
Subset label(it->begin(), it->end()); // *it ...
label.insert(*jt); // ... union {*jt}
labels.insert(label);
}
}
return std::vector<Subset>(labels.begin(), labels.end());
}
std::vector<Subset> FullCandidateGenerator::generateCandidates() const {
std::set<Subset> labels;
for (std::vector<Subset>::const_iterator it = getOldReps().begin(); it != getOldReps().end(); ++it) {
Subset Y = xMinus(getNumPoints(), *it);
for (Subset::const_iterator jt = Y.begin(); jt != Y.end(); ++jt) {
Subset label(it->begin(), it->end()); // *it ...
label.insert(*jt); // ... union {*jt}
labels.insert(label);
}
}
return std::vector<Subset>(labels.begin(), labels.end());
}