0
Tải bản đầy đủ (.doc) (73 trang)

Bộ đếm phân rã theo thời gian

Một phần của tài liệu ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC NGHIÊN CỨU BỘ LỌC BLOOM VÀ ỨNG DỤNG (Trang 47 -51 )

7. Thoát khỏi vòng lặp;

4.3 Bộ đếm phân rã theo thời gian

Bộ đếm phân rã theo thời gian hay còn gọi đơn giản là bộ đếm phân rã là một bộ đếm mà giá trị của nó phân rã theo từng giai đoạn. Giá trị của bộ đếm giảm theo một hàm không âm, không tăng φ(t), gọi là hàm phân rã theo thời gian (TDF). Một hàm TDF phải thoã mãn các điều kiện sau:

1. φ(0) = 1

3. 0 ≤ φ(t)≤ 1 với mọi t ≥ 0

Đặt fe là bộ đếm tần số của mỗi phần tử e trong S cho đến thời điểm

hiện tại, t. Đặt fe(i) là bộ đếm tần số của phần tử e từ ti-1 đến ti. Ta có:

= i i e e f f ( )

. Do đó, giá trị phân rã của bộ đếm của phần tử e là:

=

n i i e i e

t f

f

1 ) ( *

φ( ).

Cohen đã đưa ra các loại hàm TDF. Trong phần này chúng ta chọn hàm TDF là hàm mũ (đây là hàm phân rã được sử dụng rộng rãi trong thực tế). 0 , 1 0 , ) (t =e T ≤λ < T > φ λ

T và λ là các tham số quyết định tốc độ phân rã của bộ đếm. T là khoảng thời gian giữa 2 lần thực hiện hàm φ(t). Một khoảng thời gian T được đề cập đến như là một kỷ nguyên. Tham số λ € [0, 1], được gọi là tham số phân rã hàm mũ hay đơn giản là tham số phân rã, nó điều khiển tốc độ phân rã theo hàm mũ.

Mặc dù mục đích của chúng ta trước hết là dựa vào TDF hàm mũ, sau đó chúng ta sẽ thảo luận về khả năng áp dụng các hàm TDF khác.

Cho biết một luồng dữ liệu S và hàm TDF φ(t), mục đích của chúng ta là thiết kế một cấu trúc dữ liệu súc tích sao cho trong trường hợp nào một ước lượng fe^ của fe đối với phần tử e có thể được trả lời trong

O(1), .., chi phí truy vấn không phụ thuộc vào độ dài của S. 1. fe^fe,…, ^

e

f không bao giờ nhỏ hơn số lần xuất hiện e. 2. Sai số của ước lượng fe^ giới hạn trong mức cho phép.

3. Độ phức tạp tính toán O(1) khi thêm một phần tử hoặc trả lời một truy vấn bộ đếm tần số của một phần tử.

4.4 ESBF

ESBF là cấu trúc cải tiến và mở rộng của CBF, đã khắc phục được tính không linh hoạt trong cách sử dụng bộ nhớ khi phân phối dữ liệu có độ lệch cao và tăng tốc độ truy cập bộ nhớ.

Bộ lọc đếm CBF lưu trữ tần số của mỗi phần tử, và nó cho phép xoá hay thêm phần tử vào bộ lọc. Ta điều chỉnh một sự thay đổi với CBF, bao gồm việc phân chia m bit cho h hàm băm, do đó tạo ra h phần m’=m/h. Với biến thể này thì mỗi hàm băm hi() với 1 ≤ i ≤ h, tạo ra một chỉ số trên m’ trong phần tương ứng của nó. Do đó mỗi phần tử luôn được biểu diễn chính xác bởi h bit, điều này cho kết quả không có phần tử nào có xu hướng xảy ra sai số false positive.

CBF là một cấu trúc dữ liệu có thời gian truy cập nhanh. Tuy nhiên các bộ đếm của chúng không linh hoạt, do đó các bộ đếm có thể bị bão hoà dẫn đến kết quả lưu trữ thông tin không chính xác. Spectral BF (SBF) và DBF (Dynamic Bloom Filter) được thiết kế để khắc phục tính không thích nghi, nhưng SBF yêu cầu cấu trúc chỉ số phức tạp làm cho truy cập tới các bộ đếm rất phức tạp và đắt đỏ, DBF có thể truy cập mỗi bộ đếm rất hiệu quả nhưng các bộ đếm trong DBF có cùng kích thước, điều này là nguyên nhân gây lãng phí không gian nhớ.

Để đảm bảo vừa truy cập bộ đếm nhanh và sử dụng bộ nhớ hiệu quả, cấu trúc dữ liệu ESBF được sử dụng với cải tiến mới trong cách sử dụng bộ đếm.

ESBF được tạo thành bởi một chuỗi EBF (Extensible Bloom Filter – bộ lọc Bloom mở rộng) và số bộ lọc EBF trong ESBF có thể thay đổi.

EBF là cải tiến của bộ lọc Bloom đếm CBF mà các bộ đếm của nó có thể được mở rộng lớn hơn. EBF được chia thành 3 phần: 2 loại bộ đếm: bộ đếm cơ bản BC có độ dài x bit và bộ đếm mở rộng LC có độ dài 2x bit, và một vectơ bit (OF) chỉ ra rằng một bộ đếm BC đã tràn, độ dài của OF bằng số bộ đếm BC. Ban đầu, chỉ có các bộ đếm BC và OF trong EBF, giá trị của các bộ đếm BC và tất cả các bit của OF được thiết lập là 0. Khi một bộ đếm BC nào bị tràn, một bộ đếm LC được tạo ra và giá trị của bộ đếm tràn được chuyển thành một con trỏ trỏ tới bộ đếm LC mới được tạo ra, nó được sử dụng để đếm các phần tử tương ứng, điều này có nghĩa là bộ lọc có thể mở rộng, ta gọi nó là bộ lọc Bloom mở rộng (EBF).

Hình 4.1: bộ đếm BC3, BC5 và BCm-4 trở thành con trỏ chỉ tới LC3, LC5 LCm-4 nếu chúng bị tràn và cờ OF3, OF5 và OFm-4 báo tràn được bật lên 1.

ESBF có thể bao gồm 1 hoặc nhiều EBF. Khi EBF hiện tại trong ESBF đầy so với giới hạn khả năng của nó, một EBF mới được tạo ra và

được thêm vào trong ESBF. Kích thước của bộ lọc mới là M0si, trong đó M0

là kích thước của bộ lọc đầu tiên, i là số bộ lọc hiện tại. Trong bài này ta chọn s=2. Việc truy vấn được thực hiện bằng cách kiểm tra sự hiện diện trong mỗi bộ lọc.

Đặt S là đa tập khoá từ một không gian U. Với x € U, đặt fx = min(C[1][h1(x)], C[2][h2(x)], ..., C[h][hh(x)]) là tần số của x trong S. Để thêm một phần tử x € U vào ESBF, các bộ đếm C[1][h1(x)], C[2][h2(x)], ...,

C[h][hh(x)] tăng giá trị lên 1, nếu ta xoá một phần tử x trong S, các bộ đếm tương ứng giảm xuống 1 giá trị.

Một phần của tài liệu ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC NGHIÊN CỨU BỘ LỌC BLOOM VÀ ỨNG DỤNG (Trang 47 -51 )

×