public KdForestBbfSearch(int numberOfTrees, int maxNodesSearched, KdTreeDistance<P> distance , AxisSplitter<P> splitter) { this.forest = new KdTree[ numberOfTrees ]; this.splitter = splitter; this.search1 = new KdTreeSearch1Bbf<>(distance,maxNodesSearched); this.searchN = new KdTreeSearchNBbf<>(distance,maxNodesSearched); this.constructor = new KdTreeConstructor<P>(memory,splitter); }
public KdForestBbfSearch(int numberOfTrees, int maxNodesSearched, KdTreeDistance<P> distance , AxisSplitter<P> splitter) { this.forest = new KdTree[ numberOfTrees ]; this.splitter = splitter; this.search1 = new KdTreeSearch1Bbf<>(distance,maxNodesSearched); this.searchN = new KdTreeSearchNBbf<>(distance,maxNodesSearched); this.constructor = new KdTreeConstructor<P>(memory,splitter); }
/** * Performs an approximate {@link NearestNeighbor} search using K-D tree. Node are searched in Best-Bin-First * order. Distance measure is Euclidean squared. * * @see KdTreeNearestNeighbor * @see KdTreeSearch1Bbf * @see AxisSplitterMedian * * @param maxNodesSearched Maximum number of nodes it will search. Controls speed and accuracy. * @param <P> Point type. * @param distance Specifies how distance is computed between two points. * @return {@link NearestNeighbor} implementation */ public static <P> NearestNeighbor<P> kdtree( KdTreeDistance<P> distance , int maxNodesSearched ) { return new KdTreeNearestNeighbor<P>(new KdTreeSearch1Bbf<>(distance,maxNodesSearched), new KdTreeSearchNBbf<>(distance,maxNodesSearched),new AxisSplitterMedian<>(distance)); }
/** * Performs an approximate {@link NearestNeighbor} search using K-D tree. Node are searched in Best-Bin-First * order. Distance measure is Euclidean squared. * * @see KdTreeNearestNeighbor * @see KdTreeSearch1Bbf * @see AxisSplitterMedian * * @param maxNodesSearched Maximum number of nodes it will search. Controls speed and accuracy. * @param <P> Point type. * @param distance Specifies how distance is computed between two points. * @return {@link NearestNeighbor} implementation */ public static <P> NearestNeighbor<P> kdtree( KdTreeDistance<P> distance , int maxNodesSearched ) { return new KdTreeNearestNeighbor<P>(new KdTreeSearch1Bbf<>(distance,maxNodesSearched), new KdTreeSearchNBbf<>(distance,maxNodesSearched),new AxisSplitterMedian<>(distance)); }
@Override public KdTreeSearchN<double[]> createAlg() { // specify so many max nodes that it will be optimal return new KdTreeSearchNBbf<>(new KdTreeEuclideanSq_F64(2),10000); }