Tính toán các giao điểm của hai DBVs
Như đã đề cập ở trên, việc tìm kiếm các giao điểm của hai bit
vector là một hoạt động quan trọng để có được sự hỗ trợ
của một tập phổ biến. Nó cũng có thể dễ dàng đạt được như sau cho
DBVs. Ban đầu, các giá trị vị trí lớn hơn trong hai DBVs
được xác định, và các hoạt động và được thực hiện trên
hai DBVs từ vị trí đó. Nếu ban đầu, dẫn tới
giá trị là 0, sau đó giá trị vị trí của các kết quả DBV được
tăng lên 1 cho đến khi khác không đầu tiên dẫn đến giá trị
đạt. Tiếp theo, từ vị trí của non-zero byte, tất cả các
byte kết quả của các hoạt động và được lưu giữ, trừ khi
liên tục zero byte cuối cùng. Một ví dụ được đưa ra dưới đây để
minh họa cho các hoạt động giao nhau trên hai DBVs. Giả sử
có hai DBVs: {10, {5, 3, 8, 0, 0, 7, 6, 3, 2, 7, 6, 5}}
và {13, {4, 3, 0, 1, 0, 4, 6, 0, 0, 5, 1, 3}} và họ
giao nhau là để được tìm thấy. Bởi vì giá trị vị trí
(13) của DBV thứ hai là lớn hơn (10) đầu tiên,
các hoạt động và sau đó bắt đầu từ vị trí 13, mà
kết quả là 0 và 4 là 0. Các vị trí kết quả sau đó
di chuyển về phía sau 14 . Một lần nữa, kết quả là 0 và 3, mà
là 0. Các vị trí sau đó di chuyển về phía sau 15. cùng
quá trình được thực hiện cho đến khi vị trí là 19, mà tại đó các
byte kết quả là 7 và 6, đó là 6 và không bằng zero.
Các byte còn lại của hai DBVs sau đó được thực hiện bởi
các toán tử AND, và kết quả là tất cả các kết quả 0. Các
DBV là sau đó {19, {6}}. Quá trình này được thể hiện trong hình 3.
Các mã giả để tính toán các giao điểm của hai
đang được dịch, vui lòng đợi..
