IWS từ bit-vector trong ví dụ 2.1

Một phần của tài liệu (LUẬN án TIẾN sĩ) phát triển một số thuật toán hiệu quả khai thác tập mục trên cơ sở dữ liệu có sự phân cấp các mục (Trang 49 - 54)

Chỉ số word 3 5 6 7 12 13 14

Giá trị các byte 6 9 0 1 5 1 4 6 0 1 5 4 6 0 Giá trị các word 1545 1 1281 1030 1 1284 1536

IWS {3(1545), 5(1, 1281, 1030), 12(1, 1284, 1536)} IWS đƣợc biểu diễn nhƣ trong Bảng 2.3 có ba đoạn, đoạn thứ nhất từ word có chỉ số là 3, giá trị là 1545. Đoạn thứ hai bắt đầu từ word chỉ số là 5 với ba phần tử là 1, 1281 và 1030, v.v… Nhƣ vậy, cấu trúc IWS đã loại bỏ hoàn toàn các word bằng 0, chỉ lƣu giữ các đoạn word liên tiếp có giá trị khác 0.

Mệnh đề 2.1. Đoạn Sx =  ( ) đƣợc gọi là đoạn con của đoạn Sy =  ( ) nếu thỏa mãn ba điều kiện sau:

1. 2.

3.

Chứng minh: Từ = , = , …, = , Sx

thay bằng Sx =  ( ) Sy. Do đó, Sx đƣợc gọi là đoạn con của Sy.

Ví dụ 2.2: Sx = 6(1281, 1030) với sx = 6 là một đoạn con của Sy = 5(1,

1281, 1030) với sy =5. Bởi vì, với t = 1 ta có: 1.

2. 7 7 ⟹

3. = = 1281, = = 1030

Mệnh đề 2.2.   IWS(X) nếu và chỉ nếu

  là đoạn con của một đoạn thuộc IWS(X).

Ví dụ 2.3: Cho IWS(X) = {3(1545), 5(1, 1281, 1030), 12(1, 1284, 1536)}. Đoạn 6(1281, 1030) IWS(X) bởi vì 6(1281, 1030) là đoạn con của đoạn 5(1, 1281, 1030) thuộc IWS(X) theo ví dụ 2.2.

Định nghĩa 2.2. Giao giữa hai đoạn Sx =   và Sy =

  là đoạn Sz, kí hiệu là Sz = Sx Sy, Với:

sz = max(sx, sy) m = min(k+sx, l+sy)

Sz =  ( ), với: = & ; = & ; …; =

.

Trong đó “&” là phép AND trên bit.

Ví dụ 2.4: Cho hai đoạn =5(1, 1281, 1030), k = 2 và = 6(3220, 8726, 3104), l = 2. Ta có: = max(5, 6) = 6; m = min((5+2), (6+2)) = 7; ⟹ = 6  với: = & = 1281 & 3220 = 1024 = & = 1030 & 8726= 6 Do đó, giao của và là =6(1024, 6).

Định nghĩa 2.3. Giao của IWS(X) và IWS(Y) đƣợc định nghĩa là IWS(X Y) = IWS(X) IWS(Y). IWS(X Y) chứa các đoạn, mỗi đoạn là giao

của các đoạn trên IWS(X) và IWS(Y) theo Định nghĩa 2.2.

Ví dụ 2.5:

IWS(X) = {3(1545), 5(1, 1281, 1030), 12(1, 1284, 1536)} IWS(Y) = {6(3220, 8726, 3104), 10(1242, 8721, 6527,6)}

⟹ IWS(X Y) = {6(1024, 6), 12(1, 4)} 1281

Mệnh đề 2.1. Cho đoạn Si = si( , … ) IWS(X), l là chỉ số bit 1 của (từ trái sang phải) với si sj ei. l đƣợc ánh xạ lên bit-vector theo công thức 2.1:

k = (sj - 1) 16 + l (2.1)

Với, k chỉ số bit 1 trên bit-vector của bit có chỉ số l của asj.

Chứng minh: sj là chỉ số của trên word-vector. Nhƣ vậy có (sj - 1) word trƣớc . Điều này có nghĩa là có [(sj - 1) 16] bit trƣớc trên bit- vector (mỗi word có 16 bit). Do đó, bit có vị trí l trong word thứ sj đƣợc ánh xạ lên bit-vector với vị trí k theo cơng thức:

k = (sj - 1) 16 + l.

Ví dụ 2.6: Cho IWS(X) = {3(1545)}, chỉ số các bit 1 của X đƣợc xác định nhƣ trong Bảng 2.4:

Bảng 2.4. Chỉ số các bit 1 của IWS(X)

Chỉ số bit 1 trên word 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Giá trị các bit 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1

Giá trị word 1545

Chỉ số bit 1 trong word {6,7,13,16}

Ta thấy IWS(X) chỉ có một đoạn với một phần tử, do vậy start của IWS(X) = 3, nên có (3 - 1) ×16 = 32 bit trƣớc IWS(X). Dựa trên cơng thức 2.1

32 + 6 = 38; 32 + 7 = 39; 32 + 13 = 45; 32 + 16 = 48;

Do đó, tidset(X) = {38, 39, 45, 48}

Định nghĩa 2.4. Cho tập mục X của CSDL DB, các chỉ số bit 1 trong

IWS(X) là các giao dịch trong CSDL DB, công thức 1.2 đƣợc định nghĩa lại

nhƣ công thức 2.2:

ws(X) ∑ (2.2) Với, Sum_tw = ∑ với m là số lƣợng các giao dịch trong

CSDL DB.

2.1.2. Thuật tốn tính giao của hai IWS

Khai thác FWI với định dạng dữ liệu dọc theo tiếp cận Eclat [5] địi hỏi phải tính giao các tidset để xác định tập mục mới đƣợc tạo thành từ hai tập mục cũ. Điều này đồng nghĩa với việc tính giao của hai IWS của hai tập mục tƣơng ứng theo Định nghĩa 2.3.

Thuật toán xác định giao của hai IWS đƣợc trình bày nhƣ Hình 2.1 Thuật tốn 2.1: INTERSECTION_IWS

Input:

- IWS(X) gồmn1 đoạn, đoạn thứ I có start là IWS(X) [i].start

- IWS(Y) gồmm1đoạn, đoạn thứjcóstart là IWS(Y) [j].start Output: Z = IWS(X) IWS(Y)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

INTERSECTION_IWS (IWS(X), IWS(Y)) i = 1; j = 1; Z = ;

while (i n1 and j m1)

Đoạn i1 của IWS(X và đoạn j1 của IWS(Y là các đoạn giao đầu tiên của IWS(X) và IWS(Y) tính từ đoạn i (IWS(X và đoạn j (IWS(Y))

S = ;

Start = max(IWS(X) [i1].start, IWS(Y) [j1].start); End = min(IWS(X) [i1].end, IWS(Y) [j1].end); for all k [Start, End] do

S = S IWS(X) [k] IWS(Y) [k]};

Loại bỏ các Word = 0 trong S và thêm S vào Z if (End = IWS(X) [i1].end) then

i = i1 1; j = j1;

if (End = IWS(Y) [i1].end) then

j = j1 1; i = i1;

Return Z

Hình 2.1. Thuật tốn xác định giao hai IWS

Đầu vào của thuật toán là IWS(X) và IWS(Y). Trong đó, IWS(X) có n1

đoạn. IWS(Y) có m1 đoạn. Đầu ra là Z là một IWS. Dòng 4, xác định đoạn giao tiếp theo của IWS(X) và IWS(Y). Dịng 5 và 6, tính đầu và cuối đoạn giao kết quả. Dịng 7 đến 9, tính S là đoạn giao kết quả. Dịng 10, loại các word có giá trị bằng 0 khỏi S (có thể tạo ra nhiều đoạn mới). Dòng 10 đến dòng 15, xác định đoạn giao tiếp theo trên IWS(X) và IWS(Y).

Dễ nhận thấy độ phức tạp thuật toán là O(n1 + m1), với n1 và m1 lần lƣợt là số lƣợng các đoạn của IWS(X) và IWS(Y). Do đó, thời gian thực hiện thuật toán INTERSECTION_IWS phụ thuộc vào số đoạn của mỗi IWS.

2.1.3. Thuật toán khai thác FWI a. Cấu trúc IWS-tree a. Cấu trúc IWS-tree

Từ cấu trúc IWS luận án đề xuất cấu trúc IWS-tree để khai thác FWI theo dữ liệu dọc. Mỗi nút của IWS-tree gồm ba thành phần:

- X là một tập mục,

- IWS(X) là IWS của X, - ws(X) là giá trị ws của X.

Các nút của IWS-tree ở mức thứ nhất là các 1-itemset, từ mức thứ hai,

các nút ở mức dƣới đƣợc tạo thành từ sự kết hợp của hai nút ở mức trên với các điều kiện sau:

- Hai nút cùng số lƣợng phần tử và chỉ khác nhau phần tử cuối cùng.

- wus của tập mục tạo thành thỏa mãn ngƣỡng minwus do ngƣời sử

dụng đƣa vào.

b. Thuật tốn tính nhanh wus dựa trên IWS

Khai thác FWI trên CSDL trọng số là phải xác định ws của các tập mục theo công thức 2.2. Do đó cần xác định vị trí các bit 1 của IWS của các tập mục, điều này đồng nghĩa với việc xác định tidset của các tập mục. Để giải quyết hiệu quả vấn đề này, luận án đề xuất sử dụng một mảng MAP gồm 65.535 phần tử nhƣ trong Bảng 2.5. Phần tử thứ i của mảng MAP chứa một danh sách các bit 1 trong biểu diễn nhị phân của i. Dựa trên mảng MAP ta có thể tính đƣợc vị trí các bit 1 của IWS trên bit-vector.

Một phần của tài liệu (LUẬN án TIẾN sĩ) phát triển một số thuật toán hiệu quả khai thác tập mục trên cơ sở dữ liệu có sự phân cấp các mục (Trang 49 - 54)

Tải bản đầy đủ (PDF)

(120 trang)