Tại sao lại gọi là bảng băm của Google, hay hàm băm của Google Hash không có ý nghĩa gì với tôi ở đây [đóng]


26

Bây giờ là khoảng 4 năm phát triển mà tôi đang sử dụng, nghe, nói và thực hiện các bảng băm và hàm băm. Nhưng tôi thực sự không bao giờ hiểu tại sao nó được gọi là băm?

Tôi nhớ những ngày đầu tiên tôi bắt đầu lập trình, thuật ngữ này là loại thuật ngữ cồng kềnh đối với tôi. Tôi không bao giờ tìm ra nó là gì, dựa trên tên của nó . Tôi chỉ thực nghiệm hiểu những gì nó làmtại sao và khi nào chúng ta nên sử dụng nó .

Tuy nhiên, đôi khi tôi vẫn cố gắng tìm hiểu tại sao nó được gọi là hàm băm . Tôi không có vấn đề với bảng hoặc chức năng và thành thật mà nói, chúng là những thuật ngữ khá suy diễn, hợp lý. Tuy nhiên, tôi nghĩ những từ tốt hơn có thể được sử dụng thay vì băm, như khóa hoặc tính duy nhất . Đừng để bàn chính hoặc bảng duy nhất .

Theo từ điển của tôi, hàm băm có nghĩa là:

  1. Món chiên khoai tây và thịt (rất không liên quan)
  2. ký hiệu # (ký hiệu số AKA, ký hiệu bảng Anh, v.v.) (vẫn không liên quan, có thể chỉ là một danh pháp sai)
  3. Áp dụng thuật toán cho chuỗi ký tự (vẫn không liên quan gì đến tính duy nhất , đây là tính năng quan trọng nhất của bảng băm)
  4. Cắt thức ăn
  5. Một thuật ngữ khác cho hashish

Có ai biết tại sao nó được gọi là băm không?


32
Bạn dường như hơi hiểu sai về băm là gì. Tính duy nhất rõ ràng không phải là một tính năng của hàm băm (tức là chúng không bao giờ được tiêm).
Peter Taylor

1
@Peter Taylor: bảng băm xác định ánh xạ tiêm.
Revierpost

2
@Peter Taylor: để trở thành một người khó chịu, họ không cần phải tiêm chích , nhưng đôi khi họ thậm chí còn là người khó tính. Hãy nghĩ về việc triển khai điển hình của hàm băm cho một số nguyên :)
keppla

4
Hàm băm có thể là duy nhất, miễn là không gian khóa không lớn hơn không gian giá trị băm (đối với băm bảng) hoặc không gian giá trị băm lớn đến mức không thể va chạm về mặt toán học (đối với băm mật mã).
Bảo mật

1
Ngoài ra, một "bảng khóa" nghe giống như bất kỳ cơ sở hạ tầng "khóa / giá trị" nào (còn được gọi là "từ điển"). Không phải tất cả các cơ sở dữ liệu khóa / giá trị là bảng băm.
barjak

Câu trả lời:


46

Theo wikipedia, nó đề cập đến hàm băm . Nếu bạn muốn tiến thêm một bước, trang wiki cho hàm băm nói rằng việc sử dụng từ "băm" trong hàm băm có nguồn gốc như vậy:

Thuật ngữ "băm" xuất phát từ cách tương tự với ý nghĩa phi kỹ thuật của nó, để "chặt và trộn". Thật vậy, các hàm băm điển hình, như thao tác mod, "cắt" miền đầu vào thành nhiều miền phụ được "trộn" vào phạm vi đầu ra để cải thiện tính đồng nhất của phân phối khóa.


2
Không chắc chắn những 'tên miền phụ' đang làm gì ở đó. Chỉ là hàm băm triệt để 'trộn lẫn' các giá trị của miền.
Revierpost

15

Trong tiếng Pháp, một bảng băm được gọi là "bảng de hachage", động từ liên quan "hacher" có nghĩa là chặt / băm (chủ yếu là thực phẩm). Động từ to hashcó cùng ý nghĩa trong tiếng Anh.

Vì vậy, như những người khác đã chỉ ra nó được gọi là băm, bởi vì bạn cắt đầu vào của bạn mà bạn đặt thành từng mảnh ở những nơi khác nhau (các mục trong bảng của bạn).


2
Nó thực sự được viết là "hachage" và "hacher" mà không có dấu.
Ptival

10

Số 3 có mọi thứ để làm với nó. Từ Wikipedia :

Trọng tâm của thuật toán bảng băm là một mảng đơn giản của các mục; cái này thường được gọi đơn giản là bảng băm . Các thuật toán bảng băm tính toán một chỉ mục từ khóa của mục dữ liệu và sử dụng chỉ mục này để đặt dữ liệu vào mảng. Việc thực hiện tính toán này là hàm băm , f:

index = f(key, arrayLength)

Hàm băm tính toán một indexmảng trong dữ liệu key. arrayLengthlà kích thước của mảng. Đối với ngôn ngữ lắp ráp hoặc các chương trình cấp thấp khác, hàm băm tầm thường thường có thể tạo một chỉ mục chỉ bằng một hoặc hai lệnh máy nội tuyến .

Vì vậy, bảng băm không thực sự lưu trữ các giá trị dựa trên khóa; nó lưu trữ các giá trị dựa trên phiên bản băm của khóa đó.


1
nó phụ thuộc vào những gì bạn có nghĩa là bảng băm. Cấu trúc dữ liệu như được cung cấp trong các ngôn ngữ như Perl, Java và C # sẽ cung cấp cho bạn ánh xạ khóa-giá trị, sử dụng loại bảng băm mà bạn đề cập đến trong nội bộ.
Revierpost

10

bảng băm được gọi theo cách đó vì sử dụng mã băm và nó liên quan đến "cắt thực phẩm".

Hãy nghĩ về nó như thế này - bạn lấy vật thể xinh xắn của mình, như một quả, sau đó băm nó để nó bắt đầu trông giống như mọi thứ khác - chỉ là một con số - không còn cấu trúc trong đó nữa. Đó là "thức ăn cắt" được sử dụng trong bảng băm để tìm ra vật thể xinh xắn xinh xắn của bạn.

  • Nó trông xấu hơn đối tượng xinh đẹp của bạn? có thể - nhưng nó giúp tìm thấy nó nhanh - đó là điểm chính. oh và nó không phải là duy nhất đó là chắc chắn.
     
    Mã băm tìm thấy một cái xô trong bảng nơi đối tượng xinh đẹp của bạn ngồi trong một công ty nhỏ của những người khác có cùng mã băm. Trong công ty nhỏ này , đối tượng được tra cứu bằng cách sử dụng kiểm tra đẳng thức - dự kiến ​​sẽ chậm hơn nhiều so với tra cứu băm nhưng đó không phải là vấn đề lớn vì chỉ có một vài trong số họ (hầu hết các đối tượng khác đã bị bỏ qua nhờ băm nhanh) .

3

Băm (như cắt thành từng miếng nhỏ, băm nhỏ, v.v.) lấy một đầu vào (thực phẩm hoặc đôi khi là chất giám sát) và biến nó thành một đầu ra tương đối đồng nhất. Tức là không có vấn đề gì với bạn lúc ban đầu, cuối cùng bạn chỉ cần băm. Và một thìa băm cũng hữu ích như tất cả các hàm băm trong việc xác định, đầu vào là gì (giả sử máy băm của bạn băm tốt).
Vì vậy, băm có thể làm giảm bất kỳ đối tượng ăn được hoặc xấu nào thành một thìa băm, trong đó hai đối tượng khác nhau tạo ra các giá trị băm khác nhau, trong khi hai đối tượng bằng nhau tạo ra các giá trị băm bằng nhau. Điều đó có nghĩa là nếu hai giám sát viên rơi vào máy băm của bạn, điều đó đủ để so sánh các hàm băm của chúng để xác định xem cái này có phải là bản sao của cái kia không.

Theo một cách nào đó, các hàm băm trong khoa học máy tính có một chút giống nhau. Họ lấy toàn bộ đầu vào có kích thước và ngữ nghĩa khác nhau, và - rất đơn giản - họ chỉ cần cắt nó thành từng mảnh và trộn chúng xung quanh và cắt chuỗi kết quả trở lại thành từng mảnh và trộn nó xung quanh. Cuối cùng, bạn có một thìa (n byte) của đầu vào bạn đã băm.


Tuy nhiên, với sự cảnh báo, siêu ác nhân cũng có thể trả lại hàm băm giống như một siêu anh hùng với một bộ thông số nhất định vì việc băm dường như không cho thấy sự độc đáo. Có những va chạm băm sau tất cả ... đó là những gì bạn làm sau vụ va chạm ...
Rig
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.