/** * Construct the ByteNearestNeighboursKDTree with the given options. * * @param pnts the data * @param ntrees the number of trees * @param nchecks the number of checks during search */ public ByteNearestNeighboursKDTree(final byte [][] pnts, int ntrees, int nchecks) { kdt = new ByteKDTreeEnsemble(pnts, ntrees); this.nchecks = nchecks; }
@Override public void searchNN(byte[][] qus, int[] argmins, float[] mins) { final int N = qus.length; IntFloatPair [] nn = new IntFloatPair[1]; for (int n=0; n < N; ++n) { kdt.search(qus[n], 1, nn, nchecks); argmins[n] = nn[0].first; mins[n] = nn[0].second; } }
@Override public void searchNN(byte[][] qus, int[] argmins, float[] mins) { final int N = qus.length; IntFloatPair [] nn = new IntFloatPair[1]; for (int n=0; n < N; ++n) { kdt.search(qus[n], 1, nn, nchecks); argmins[n] = nn[0].first; mins[n] = nn[0].second; } }
/** * Construct the ByteNearestNeighboursKDTree with the given options. * * @param pnts the data * @param ntrees the number of trees * @param nchecks the number of checks during search */ public ByteNearestNeighboursKDTree(final byte [][] pnts, int ntrees, int nchecks) { kdt = new ByteKDTreeEnsemble(pnts, ntrees); this.nchecks = nchecks; }
@Override public IntFloatPair searchNN(byte[] query) { final IntFloatPair[] nn = new IntFloatPair[1]; kdt.search(query, 1, nn, nchecks); return nn[0]; } }
@Override public IntFloatPair searchNN(byte[] query) { final IntFloatPair[] nn = new IntFloatPair[1]; kdt.search(query, 1, nn, nchecks); return nn[0]; } }
@Override public void searchKNN(byte[][] qus, int K, int[][] argmins, float[][] mins) { // Fix for when the user asks for too many points. K = Math.min(K, kdt.pnts.length); IntFloatPair[] nns = new IntFloatPair[K]; final int N = qus.length; for (int n=0; n < N; ++n) { kdt.search(qus[n], K, nns, nchecks); for (int k=0; k < K; ++k) { argmins[n][k] = nns[k].first; mins[n][k] = nns[k].second; } } }
@Override public void searchKNN(byte[][] qus, int K, int[][] argmins, float[][] mins) { // Fix for when the user asks for too many points. K = Math.min(K, kdt.pnts.length); IntFloatPair[] nns = new IntFloatPair[K]; final int N = qus.length; for (int n=0; n < N; ++n) { kdt.search(qus[n], K, nns, nchecks); for (int k=0; k < K; ++k) { argmins[n][k] = nns[k].first; mins[n][k] = nns[k].second; } } }
@Override public void searchNN(List<byte[]> qus, int[] argmins, float[] mins) { final int N = qus.size(); IntFloatPair [] nn = new IntFloatPair[1]; for (int n=0; n < N; ++n) { kdt.search(qus.get(n), 1, nn, nchecks); argmins[n] = nn[0].first; mins[n] = nn[0].second; } }
@Override public void searchNN(List<byte[]> qus, int[] argmins, float[] mins) { final int N = qus.size(); IntFloatPair [] nn = new IntFloatPair[1]; for (int n=0; n < N; ++n) { kdt.search(qus.get(n), 1, nn, nchecks); argmins[n] = nn[0].first; mins[n] = nn[0].second; } }
@Override public List<IntFloatPair> searchKNN(byte[] query, int K) { // Fix for when the user asks for too many points. K = Math.min(K, kdt.pnts.length); final IntFloatPair[] nns = new IntFloatPair[K]; kdt.search(query, K, nns, nchecks); return Arrays.asList(nns); }
@Override public List<IntFloatPair> searchKNN(byte[] query, int K) { // Fix for when the user asks for too many points. K = Math.min(K, kdt.pnts.length); final IntFloatPair[] nns = new IntFloatPair[K]; kdt.search(query, K, nns, nchecks); return Arrays.asList(nns); }
@Override public void searchKNN(List<byte[]> qus, int K, int[][] argmins, float[][] mins) { // Fix for when the user asks for too many points. K = Math.min(K, kdt.pnts.length); IntFloatPair[] nns = new IntFloatPair[K]; final int N = qus.size(); for (int n=0; n < N; ++n) { kdt.search(qus.get(n), K, nns, nchecks); for (int k=0; k < K; ++k) { argmins[n][k] = nns[k].first; mins[n][k] = nns[k].second; } } }
@Override public void searchKNN(List<byte[]> qus, int K, int[][] argmins, float[][] mins) { // Fix for when the user asks for too many points. K = Math.min(K, kdt.pnts.length); IntFloatPair[] nns = new IntFloatPair[K]; final int N = qus.size(); for (int n=0; n < N; ++n) { kdt.search(qus.get(n), K, nns, nchecks); for (int k=0; k < K; ++k) { argmins[n][k] = nns[k].first; mins[n][k] = nns[k].second; } } }