| 657 | } |
| 658 | |
| 659 | private void orderedSeedsUpdate(List<? extends VecPaired<VecPaired<Vec, Integer>, Double>> neighbors, int centerObjectIndex) |
| 660 | { |
| 661 | double c_dist = core_distance[centerObjectIndex]; |
| 662 | for(int i = 1; i < neighbors.size(); i++)//'0' index is a self reference, skip it |
| 663 | { |
| 664 | VecPaired<VecPaired<Vec, Integer>, Double> neighbor = neighbors.get(i); |
| 665 | int objIndex = neighbor.getVector().getPair(); |
| 666 | if(processed[objIndex]) |
| 667 | continue; |
| 668 | double new_r_dist = Math.max(c_dist, neighbor.getPair()); |
| 669 | if(Double.isInfinite(reach_d[objIndex])) |
| 670 | { |
| 671 | reach_d[objIndex] = new_r_dist; |
| 672 | // r_dists[objIndex] = new_r_dist; |
| 673 | orderdSeeds.add(objIndex); |
| 674 | } |
| 675 | else if(new_r_dist < reach_d[objIndex])// Object already in OrderSeeds, but we can do better |
| 676 | { |
| 677 | reach_d[objIndex] = new_r_dist; |
| 678 | // r_dists[objIndex] = new_r_dist; |
| 679 | orderdSeeds.remove(objIndex); |
| 680 | orderdSeeds.add(objIndex); |
| 681 | } |
| 682 | |
| 683 | } |
| 684 | |
| 685 | } |
| 686 | @SuppressWarnings("unused") |
| 687 | private void extractClusteringDBSCAN(List<Integer> orderedFile, double e, int[] designations) |
| 688 | { |