Thuật toán CFI-STREAM

Một phần của tài liệu Khai phá tập mục thường xuyên đóng trên dòng dữ liệu (Trang 45 - 47)

- Mô hình trượt cửa sổ (Sliding Window):

2.4.4.2.Thuật toán CFI-STREAM

Các xử lý khi có một giao tá ct xuất hiện dựa trên các bổ đề sau:

2.4.4.2.Thuật toán CFI-STREAM

Thuật toán CFI-Stream thực hiện một phép toán cộng khi có giao tác mới xuất hiện và phép toán trừ khi có giao tác cũ rời khỏi cửa sổ trƣợt hiện thời. Bằng cách thực hiện các phép toán cộng và trừ, thuật toán CFI-Stream sẽ kiểm tra từng tập trong tập hợp giao tác một các tức thời và cập nhật hỗ trợ cho các tập đóng kèm theo. Những tập đóng hiện hành sẽ đƣợc duy trì và cập nhật theo thời gian thực trên cây DIU. Các tập phổ biến đóng có thể bỏ đi bất kỳ lúc nào theo yêu cầu của ngƣời dùng bằng cách cắt ngang cây DIU.

Thuật toán 1 minh họa thủ tục cộng vào khi một tập X xuất hiện. Đầu tiên, nó kiểm tra xem X có thuộc tập hợp các tập đóng hiện hành C hay không. Nếu X có trong C, nó sẽ cập nhật hỗ trợ X, và với tất cả các tập con Y của X thuộc về C, nó sẽ cập nhật hỗ trợ cho Y (dòng 3 đến 8). Mặt khác, nếu X không có trong C và X đã đƣợc bao gồm vào bằng ít nhất một giao tác trong tập hợp giao tác gốc, thuật toán sẽ kiểm tra xem nó có là tập đóng ngay từ đầu hay không cũng nhƣ mọi tập con của nó (dòng 9 đến 36); đồng thời cập nhật các hỗ trợ kèm theo cho tất cả tập đóng (dòng 37 đến 40). Nếu X là một tập đóng mới xuất hiện và không tồn tại trên cây DIU, thuật toán sẽ cộng nó nhƣ một điểm giao mới vào cây DIU (dòng 27 đến 31). Mặt khác, nếu X tự nó đã là giao tác cộng vào, thuật toán sẽ cộng X vào tập đóng (dòng 10 đến 15); nếu X là tập con của tập hợp giao tác đã cộng, một quá trình kiểm tra tính đóng sẽ đƣợc thực hiện (dòng 16 đến 24). Trong bản mô tả thuật toán bên dƣới, X và Y thể hiện các tập, XS và YS thể hiện hỗ trợ X và hỗ trợ Y, Len(X) thể hiện độ dài của tập X, chính là số lƣợng phần tử trong một tập X, C thể hiện các tập đóng gốc trên cây DIU và Cnew thể hiện các tập đóng mới trên cây DIU sau khi tập X xuất hiện.

Thuật toán 1 CFI-Stream – Thêm vào

1: X_close = true; Cnew = Φ; 2: procedure Add(X, C, Cnew)

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

3: if (X C)

4: for all (Y X and Y C) 5: Yssupport(Y, C) + 1;

6: end for

7: if (X_close = true) return;

8: else 9: if (support(X, C) > 0 ) 10: if(Cnew = Φ) 11: X0X; 12: CnewX; 13: X_close = false; 14: Yssupport(Y, C) + 1; 15: else 16: Xc = Φ;

17: for all ( K X and K C) 18: if (len(K)<len(M) then M=K; 19: end for 20: XcM; 21: if ((Xc/X) ∩ X0 = Φ and Xc ≠ Φ ) 22: CnewCnew X; 23: Xssupport(X, C) + 1; 24: end if 25: end if 26: else 27: if (Cnew = Φ ) then 28: X0X; 29: CnewX; 30: Xs = 1; 31: end if

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

32: end if

33: end if

34: for all (m X and Len(m) = Len(X)-1 35: call Add(m, C, Cnew); 36: end for 37: if (X = X0) 38: CC Cnew; 39: support(X, C) = Xs; 40: end if 41: end procedure

Thuật toán 2 minh họa thủ tục thực hiện phép toán trừ bớt khi một tập X rời khỏi cửa sổ trƣợt hiện hành. CFI-Stream trƣớc hết sẽ kiểm tra xem X có mặt trong tập hợp các tập đóng hiện hành C hay không, đồng thời tổng số của nó lớn hơn hay bằng hai; nếu đúng, thuật toán sẽ cập nhật hỗ trợ X và hỗ trợ của các tập con X thuộc về C (dòng 3 đến 6). Mặt khác, thuật toán kiểm tra tập X và tất cả tập con của nó hiện thuộc tập đóng hiện thời C để xem chúng vẫn là những tập đóng hay không (dòng 8 đến 26) và cập nhật hỗ trợ cho tất cả tập con của nó thuộc các tập đóng hiện hành (dòng 28 đến 29). Nếu tập con Y tồn tại trong tập hợp giao tác, Y sẽ đóng (dòng 11 đến 13). Mặt khác, một quá trình kiểm tra tính đóng của tập con Y sẽ đƣợc thực hiện (dòng 14 đến 22). Ở phần minh họa bên dƣới, Cobsolete đại diện cho các tập không còn đóng nữa sau khi giao tác {X} rời khỏi

Một phần của tài liệu Khai phá tập mục thường xuyên đóng trên dòng dữ liệu (Trang 45 - 47)