27 bool distanceMatrix =
false,
28 bool parallelSort =
false);
33 bool parallelSort =
false);
37 void getGenerators(std::vector<Generator1> &generators)
const;
44 double threshold =
inf,
45 bool distanceMatrix =
false);
49 std::vector<double> compressedDM_{};
50 const bool parallelSort_;
55 std::unordered_map<Edge, id_t, boost::hash<Edge>> edgeToIndex_;
56 std::vector<std::set<id_t, std::greater<>>>
59 std::vector<FiltratedEdge> edges_{};
60 std::vector<FiltratedTriangle> triangles_{};
61 std::vector<id_t> edgesIndices_{};
62 std::vector<id_t> edgesOrder_{};
64 std::vector<id_t> edgesPartner_{};
65 std::vector<id_t> trianglesPartner_{};
66 std::vector<std::vector<id_t>> boundaries_{};
69 std::vector<std::vector<id_t>> cascadeEdges_{};
74 double &DM(
unsigned i,
unsigned j) {
75 return compressedDM_[std::max(i, j) * (std::max(i, j) - 1) / 2
79 void initializeWithBound();
80 void pairCellsWithOracle();
81 void eliminateBoundaryWithOracle(
id_t t_id,
id_t e_id);
83 template <
typename EdgeSets>
84 void fillRNG(EdgeSets &critical)
const {
85 for(
auto const &[birth, death] : oracle_[0]) {
86 if(death.second <
inf)
87 critical[0].emplace_back(death.first[0], death.first[1]);
89 for(
auto const &[birth, death] : oracle_[1])
90 critical[1].emplace_back(birth.first[0], birth.first[1]);