  Clustering is a fundamental analysis tool aiming at classifying data points
into groups based on their similarity or distance. It has found successful
applications in all natural and social sciences, including biology, physics,
economics, chemistry, astronomy, psychology, and so on. Among numerous existent
algorithms, hierarchical clustering algorithms are of a particular advantage as
they can provide results under different resolutions without any predetermined
number of clusters and unfold the organization of resulted clusters. At the
same time, they suffer a variety of drawbacks and thus are either
time-consuming or inaccurate. We propose a novel hierarchical clustering
approach on the basis of a simple hypothesis that two reciprocal nearest data
points should be grouped in one cluster. Extensive tests on data sets across
multiple domains show that our method is much faster and more accurate than the
state-of-the-art benchmarks. We further extend our method to deal with the
community detection problem in real networks, achieving remarkably better
results in comparison with the well-known Girvan-Newman algorithm.
