10#include <boost/dynamic_bitset.hpp>
15 constexpr value_t inf = std::numeric_limits<value_t>::infinity();
22 using Diagram = std::vector<PersistencePair>;
25 using Edge = std::pair<id_t, id_t>;
32 using Facet = std::array<id_t, 3>;
33 using Generator1 = std::pair<std::vector<Edge>, std::pair<value_t, value_t>>;
34 using Generator2 = std::pair<std::vector<Facet>, std::pair<value_t, value_t>>;
54 std::tuple<id_t, id_t, id_t>
t;
73 std::vector<int> parent_;
74 std::vector<unsigned char> rank_;
79 void merge(
int x,
int y);
81 [[nodiscard]]
bool isRoot(
int x)
const;
88 mask_.resize(size,
false);
89 for(
id_t const &
id : ids_)
93 for(
id_t const &
id : boundary) {
95 ids_.emplace_back(
id);
97 ids_.erase(std::find(ids_.begin(), ids_.end(),
id));
103 std::vector<id_t> &ids_;
104 boost::dynamic_bitset<> mask_;
void exclusiveAddBoundary(std::vector< id_t > const &boundary)
BoundaryContainer(std::vector< id_t > &simplices, unsigned size)
int mergeRet(int x, int y)
FiltratedEdge max(const FiltratedEdge &a, const FiltratedEdge &b)
std::pair< id_t, id_t > Edge
std::array< EdgeSet, 4 > EdgeSets4
std::array< id_t, 3 > Facet
std::pair< FiltratedSimplex, FiltratedSimplex > PersistencePair
std::vector< std::vector< value_t > > PointCloud
bool operator<(const FiltratedEdge &e1, const FiltratedEdge &e2)
std::vector< Edge > EdgeSet
std::vector< Diagram > MultidimensionalDiagram
std::pair< std::vector< Edge >, std::pair< value_t, value_t > > Generator1
std::pair< Simplex, value_t > FiltratedSimplex
std::array< EdgeSet, 3 > EdgeSets3
std::pair< std::vector< Facet >, std::pair< value_t, value_t > > Generator2
std::vector< PersistencePair > Diagram
std::vector< id_t > Simplex
std::tuple< id_t, id_t, id_t > t