Một bộ lọc Bloom có một Hash

tsudev· 22/10/2026

Giới thiệu về bộ lọc Bloom

Bộ lọc Bloom là một cấu trúc dữ liệu xác suất được sử dụng rộng rãi trong nhiều lĩnh vực, bao gồm cả công nghệ thông tin và khoa học máy tính. Nó được thiết kế để xác định xem một phần tử có thuộc một tập hợp hay không, với một tỷ lệ sai sót nhất định. Bộ lọc Bloom sử dụng một hoặc nhiều hàm hash để ánh xạ phần tử vào một mảng bit, từ đó giúp giảm thiểu không gian lưu trữ và tăng tốc độ truy vấn.

Cấu trúc của bộ lọc Bloom

Một bộ lọc Bloom cơ bản bao gồm một mảng bit và một hoặc nhiều hàm hash. Mảng bit được sử dụng để lưu trữ kết quả của các hàm hash, trong khi các hàm hash được sử dụng để ánh xạ phần tử vào mảng bit. Khi một phần tử được thêm vào bộ lọc Bloom, nó sẽ được hash bằng một hoặc nhiều hàm hash và kết quả sẽ được lưu trữ trong mảng bit.

Ví dụ về triển khai bộ lọc Bloom

Giả sử chúng ta muốn triển khai một bộ lọc Bloom để lưu trữ một tập hợp các từ khóa. Chúng ta có thể sử dụng một hàm hash đơn giản như sau:
python
import mmh3

def hash_function(word):
    return mmh3.hash(word, 0) % 1000
Trong ví dụ trên, chúng ta sử dụng thư viện mmh3 để tạo một hàm hash đơn giản. Hàm hash này sẽ ánh xạ mỗi từ khóa vào một giá trị số nguyên trong phạm vi từ 0 đến 999.

Ưu điểm và nhược điểm của bộ lọc Bloom

Bộ lọc Bloom có một số ưu điểm, bao gồm cả việc giảm thiểu không gian lưu trữ và tăng tốc độ truy vấn. Tuy nhiên, nó cũng có một số nhược điểm, bao gồm cả việc có thể xảy ra sai sót khi xác định xem một phần tử có thuộc một tập hợp hay không.

Kết luận

Bộ lọc Bloom là một cấu trúc dữ liệu xác suất hữu ích trong nhiều lĩnh vực. Để triển khai một bộ lọc Bloom hiệu quả, chúng ta cần phải chọn một hàm hash phù hợp và điều chỉnh kích thước của mảng bit để đạt được tỷ lệ sai sót mong muốn. Để tìm hiểu thêm về bộ lọc Bloom và cách triển khai nó, bạn có thể tham khảo nguồn https://calabro.io/ohbf.