27#ifdef CLUSTERING_DBSCAN_BRUTE_FORCE_DIM_FLOOR
33 static constexpr std::size_t
bruteForceDimFloor = CLUSTERING_DBSCAN_BRUTE_FORCE_DIM_FLOOR;
54 [[nodiscard]] std::vector<std::vector<std::int32_t>>
query(T radius,
math::Pool pool)
const {
55 return std::visit([&](
const auto &idx) {
return idx.query(radius, pool); }, m_held);
61 using Held = std::variant<Tree, Brute>;
65 return Held(std::in_place_type<Brute>, points);
67 return Held(std::in_place_type<Tree>, points);
Range-index backend that builds the full eps-neighborhood adjacency in one fused pairwise sweep.
Implements a KDTree data structure.
Represents a multidimensional array (NDArray) of a fixed number of dimensions N and element type T.
size_t dim(std::size_t index) const noexcept
Returns the size of a specific dimension of the NDArray.
std::vector< std::vector< std::int32_t > > query(T radius, math::Pool pool) const
Returns the full radius-neighborhood adjacency from the held backend.
AutoRangeIndex(const NDArray< T, 2 > &points)
Constructs the policy, picking the backend once against points.dim(1).
static constexpr std::size_t bruteForceDimFloor
Dimension threshold at or above which the brute-force backend is selected.
Thin injection wrapper around a BS::light_thread_pool.