19 for (PartSet::iterator p = parts.begin(); p != parts.end(); ++p)
delete *p;
20 for (PartSet::iterator p = artificial_parts.begin(); p != artificial_parts.end(); ++p)
delete *p;
21 for (PartVector::iterator p = sorted.begin(); p != sorted.end(); ++p)
delete *p;
32 if (retrieved<sorted.size()) {
52 PartSet::iterator found = parts.find(part);
54 if (found != parts.end()) {
55 (*found)->addWeightAndLength(part);
69 PartSet::iterator found = artificial_parts.find(part);
70 if (found != artificial_parts.end()) {
71 (*found)->addWeightAndLength(part);
75 artificial_parts.insert(part);
124 double part_prob = double(edges_in_invs)/edges_in_part;
128 double all_in_part_prob = pow(part_prob, unknownCount);
149 merge_artificial_parts();
151 copy(parts.begin(), parts.end(), std::back_insert_iterator<PartVector>(sorted));
156 for (PartVector::iterator pi = sorted.begin(); pi != sorted.end(); ++pi) {
157 (*pi)->takeMean(overall_weight);
163 void PartRegistry::merge_artificial_parts() {
175 for (PartSet::iterator arti = artificial_parts.begin(); arti != artificial_parts.end(); ++arti) {
176 if (parts.find(*arti) == parts.end()) {
178 (*arti)->set_faked_weight(0.0);
185 artificial_parts.clear();
void put_part_from_partial_tree(PART *&part, const PART *partialTree, const TreeNode *node)
void invertInSuperset(const PART *superset)
void set_origin(const TreeNode *node_)
static int diff(int v1, int v2, int v3, int v4, int st, int en)
int get_nonmembers() const
const PART * peek_part(int idx) const
void build_sorted_list(double overall_weight)
CONSTEXPR_INLINE int leafs_2_edges(int leafs, TreeModel model)
CONSTEXPR_INLINE_Cxx14 void swap(unsigned char &c1, unsigned char &c2)
bool insertionOrder_less(const PART *p1, const PART *p2)
void set_faked_weight(double w)
void put_artificial_part(PART *&part)
static void copy(double **i, double **j)
int insertionOrder_cmp(const PART *other) const
void put_part_from_complete_tree(PART *&part, const TreeNode *node)