PaVa: a novel Path-based Valley-seeking clustering algorithm