# comps: Find Connected Components in a NN Graph In dbscan: Density-Based Spatial Clustering of Applications with Noise (DBSCAN) and Related Algorithms

## Description

Generic function and methods to find connected components in nearest neighbor graphs.

## Usage

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13``` ```comps(x, ...) ## S3 method for class 'dist' comps(x, eps, ...) ## S3 method for class 'kNN' comps(x, mutual = FALSE, ...) ## S3 method for class 'sNN' comps(x, ...) ## S3 method for class 'frNN' comps(x, ...) ```

## Arguments

 `x` the NN object representing the graph or a dist object `...` further arguments are currently unused. `eps` threshold on the distance `mutual` for a pair of points, do both have to be in each other's neighborhood?

## Details

Note that for kNN graphs, one point may be in the kNN of the other but nor vice versa. `mutual = TRUE` requires that both points are in each other's kNN.

## Value

a integer vector with component assignments.

## Author(s)

Michael Hahsler

Other NN functions: `NN`, `frNN()`, `kNNdist()`, `kNN()`, `sNN()`
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32``` ```set.seed(665544) n <- 100 x <- cbind( x=runif(10, 0, 5) + rnorm(n, sd = 0.4), y=runif(10, 0, 5) + rnorm(n, sd = 0.4) ) plot(x, pch = 16) # Connected components on a graph where each pair of points # with a distance less or equal to eps are connected d <- dist(x) components <- comps(d, eps = .8) plot(x, col = components, pch = 16) # Connected components in a fixed radius nearest neighbor graph # Gives the same result as the threshold on the distances above frnn <- frNN(x, eps = .8) components <- comps(frnn) plot(frnn, data = x, col = components) # Connected components on a k nearest neighbors graph knn <- kNN(x, 3) components <- comps(knn, mutual = FALSE) plot(knn, data = x, col = components) components <- comps(knn, mutual = TRUE) plot(knn, data = x, col = components) # Connected components in a shared nearest neighbor graph snn <- sNN(x, k = 10, kt = 5) components <- comps(snn) plot(snn, data = x, col = components) ```