Hàm băm giống như tên của một người - đó là một cách ngắn để ghi nhớ một người, mặc dù nó không phải là duy nhất. Nếu bạn cần tìm một số thông tin về một người nào đó, bạn có thể chỉ họ bằng tên của họ và bạn chỉ cần thực hiện các kiểm tra khác nếu hai hoặc nhiều người có cùng tên.
Đó là sức mạnh của băm, và cũng giống như ghi nhớ mọi người dễ dàng hơn nhiều so với số an sinh xã hội, việc tìm kiếm một đối tượng bằng mã băm của nó dễ dàng hơn nhiều so với thực sự so sánh đối tượng với mọi thứ đã có trong bộ sưu tập của bạn. Bây giờ, trong ví dụ này, nếu bạn đang tìm kiếm ai đó trong danh bạ theo tên, bạn có thể tìm thấy chúng trong thời gian O (log n), bởi vì các tên được sắp xếp theo thứ tự abc, và bởi vì bạn cần thực hiện tìm kiếm nhị phân. Tuy nhiên, nếu bạn "băm" 100 người sinh vào những năm 1900 theo năm sinh của họ, thì bạn chỉ cần tối đa 4 so sánh trong danh bạ/thẻ (mỗi chữ số) để tìm bất kỳ một năm nào bằng băm, là thời gian không đổi. Sau đó, nếu hai người được sinh ra trong cùng bạn, bạn có thể sử dụng thông tin khác để tìm người bạn cần và trung bình nếu bảng của bạn không quá đầy đủ (giả sử, nếu bạn có tối đa 50 người trong 100 năm khác nhau sinh), tra cứu của bạn sẽ không đổi.
(Nếu bảng của bạn được nhiều hơn, nói rằng, 50% đầy đủ, bạn luôn có thể tăng gấp đôi kích thước của nó, để giữ cho số lượng va chạm thấp và do đó để giữ cho tra cứu của bạn nhanh chóng.)
Thông tin thêm :
Nếu bạn đã từng nghe đến
MD5 hoặc SHA-1
băm SHA-2 cho tệp, chúng giống như "dấu vân tay" của tệp. Mặc dù có thể có hai tệp với cùng một giá trị băm, nhưng điều này được thực hiện rất khó xảy ra, vì mục đích thực tế, điều đó là không thể; do đó, nếu bạn có băm của hai tệp, bạn có thể so sánh các tệp theo dấu vân tay của chúng thay vì theo dữ liệu của chúng, nhanh hơn rất nhiều.
Cẩn thận: Có các thuật toán băm, và có các hashtables, là các cấu trúc dữ liệu sử dụng thuật toán băm (cụ thể, một cách để triển khai mảng bản đồ/liên kết). Bạn có nghĩa là sau này nhưng nói "băm" thường đề cập đến một thuật toán băm hoặc đầu ra của một thuật toán băm. – delnan