Example #1
0
 public void ExpandCluster(
     ArrayList<Node> points,
     Node p,
     ArrayList<Node> neighborhood,
     ArrayList<Node> C,
     int eps,
     int MinPts) {
   ArrayList<Node> Cprime = null;
   Cprime.add(p);
   ArrayList<Node> ClusterSupreme = null;
   ClusterSupreme.addAll(Cprime);
   ClusterSupreme.addAll(neighborhood);
   for (int i = 0; i < neighborhood.size(); i++) {
     Node Pprime = neighborhood.get(i);
     if (Pprime.checkVisited() == false) {
       Pprime.markVisited();
       ArrayList<Node> NeighborPtsPrime = null;
       NeighborPtsPrime = RegionQuery(Pprime, points, eps);
       if (NeighborPtsPrime.size() >= MinPts) {
         neighborhood.addAll(NeighborPtsPrime);
       }
     }
     if (checkCluster(Pprime, ClusterSupreme)) {
       Cprime.add(Pprime);
     }
   }
 }
Example #2
0
 public void DBSCAN(ArrayList<Node> SetOfPoints, int eps, int MinPts) {
   ArrayList<Node> C = new ArrayList();
   for (int i = 0; i < SetOfPoints.size(); i++) {
     Node P = SetOfPoints.get(i);
     if (P.checkVisited() == false) {
       P.markVisited();
     }
     ArrayList<Node> NeighborPts = null;
     NeighborPts = RegionQuery(P, SetOfPoints, eps);
     if (NeighborPts.size() < MinPts) {
       P.markNoise();
     } else {
       // C.add(e); // C = next cluster
       C.addAll(new ArrayList<Node>());
       ExpandCluster(SetOfPoints, P, NeighborPts, C, eps, MinPts);
     }
   }
 }