Ví dụ 3.6: Với số K trong ví dụ 3.5, ta có tập vị trí các bit 1 của K đƣợc xác định nhƣ sau:
Word thứ 4: 7.126 có tập chỉ số {4, 5, 7, 8, 9, 10, 11, 12} {52, 53, 55, 56, 57, 58, 59, 60} do mỗi số đƣợc cộng thêm với (4 - 1) 16 = 48 theo công thức 3.1.
Word thứ ba: 3.834 có tập chỉ số {5, 6, 7, 9, 10, 11, 12, 13, 15} {37, 38, 39, 41, 42, 43, 44, 45, 47}, do mỗi vị trí đƣợc cộng thêm (3 - 1) 16 = 32 theo công thức 3.1.
Word thứ hai: 20 có tập chỉ số {12, 14} {20, 22} do mỗi vị trí đƣợc cộng thêm (2 - 1) 16 = 16 theo công thức 3.1.
Word thứ nhất: 634 có tập chỉ số {7, 10, 11, 12, 13, 15} tập này giữ nguyên do đây là word số một nên (j - 1) = 0 với j = 1
Do đó, tập hợp các index bit 1 của K là {7, 10, 11, 12, 13, 15, 20, 22, 37, 38, 39, 41, 42, 43, 44, 45, 47, 52, 53, 55, 56, 57, 58, 59, 60}.
3.3.1.2. Thuật tốn tính nhanh wus của tập mục dựa trên mảng MAP
Tính wus theo cơng thức 1.4 là thao tác thƣờng xuyên trong các bài toán khai thác FWUI. Do đó, địi hỏi phải xác định đƣợc tidset của các tập mục tƣơng ứng. Dựa trên mảng MAP và Mệnh đề 3.1, luận án đề xuất thuật toán xác định nhanh wus của tập mục dựa trên mảng MAP đƣợc trình bày nhƣ
trong hình 3.7.
Thuật tốn 3.4: FAST_ CALCULATION_WUS
Input: EDBV(X)
Output: wus của tập mục X
Methode name: FAST_CALCULATION_WUS()
1 2 3 4
FAST_CALCULATION_WUS(EDBV(X))
for all i EDBV(X) do //xét các word trong EDBV(X)
k = EDBV(X) [i];// lấy word thứ i
t = 3 // dùng để xác định vị trí các đoạn trong k
5 6 7 8 9 10 11 12 13 14 15
m = k &65535;// lấy đoạn thứ t trong k
pos = i × 64 +(t×16);
for all j MAP [m] do// xét danh sách với chỉ số m tidset(X)pos + j;// ánh xạ ra vị trí trên bit-vector
k = k >> 16;// k dịch phải 16 bít
t- - ;// chuyển sang đoạn tiếp theo trên k y = 0;
for all i tidset(X) do
y + = twu [i]; wus = y/sum_twu;
return wus