package bst

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type

Parameters

module P : Point
module C : Config

Signature

type t

A Bisector Tree (BST).

val create : P.t array -> t

create points create the BST containing all points.

val sample_distances : int -> P.t array -> float array

sample_distances n points sample distances between points in a random sample of size n.

val nearest_neighbor : P.t -> t -> P.t * float

nearest_neighbor q bst return the distance along with the nearest neighbor to query point q in bst. Warning: there may be several points at this distance from q in bst, but a single (arbitrary) one is returned. If you are not happy with this, use a point type that is deduplicated (i.e. a point that holds the info for all points with the same coordinates).

val neighbors : P.t -> float -> t -> P.t list

neighbors q tol bst return all points in bst within tol distance from query point q. I.e. all points returned are within (d <= tol) distance from q.

val to_list : t -> P.t list

to_list bst return the list of points inside bst, in an unspecified order.

val is_empty : t -> bool

is_empty bst test if bst is empty.

val find : P.t -> t -> P.t

find q bst return the first point with distance to q = 0.0.

  • raises Not_found

    if no such element exists. Warning: there may be several points at this distance from q in bst, but a single (arbitrary) one is returned.

val mem : P.t -> t -> bool

mem q bst return true if q can be found in bst, false otherwise.

val root : t -> P.t

root bst return the first point found in bst (either a bucket's vantage point or a node's left vantage point).

val check : t -> bool

check bst test the invariant of bst. Should always be true. If invariant doesn't hold, then this library has a bug or your P.dist function is not a proper metric.

val inspect : t -> P.t list

inspect bst extract the vantage points of bst in an unspecified order.

val dump : int -> t -> (direction list * P.t list) list

dump max_depth bst list points and paths to reach them in the vpt, going down up to max_depth.

OCaml

Innovation. Community. Security.