Fingerprint Identification Using Hierarchical Matching and Topological Structures