A fingerprint identification algorithm by clustering similarity