2.2 Các bước chính của thuật tốn
Bước 1:
Các Item phổ biến của danh sách L được sắp tăng dần theo độ phổ biến. với minsup = 30%, L ={“A”,“C”,“M”, “D”,“P”,“N”,“L”}. Bảng 2.3 trình bày DBV và DSBV của các Item phổ biến. DBV được xây dựng trực tiếp từ tidset và DSBV rỗng ở giai đoạn ban đầu.
Bước 2:
Cho mỗi Item phổ biến xi, danh sách non-subsuming nSLxi được khởi tạo với các hạng mục xj, sao cho (xi, xj) ∈ L, sup (xj) ≥ sup (xi) và xj khơng bị Subsume bởi xi (thơng qua việc áp dụng bổ đề 1). Nếu xi và xj subsume lẫn nhau theo bổ đề 2 (ii), xj sẽ được bỏ qua trong danh sách L. Ví dụ: Danh sách subsuming và non-subsuming của “A” là SL“A" = {“P”, “N”, “L”} và nSL“A" = {“CM”, “D”}. Tiếp theo, "A" được kết hợp với các mục của SL"A" xuất phát từ tập đĩng thứ nhất "APNL". Các danh sách subsuming và non - subsuming được xây dựng cho tất cả các hạng mục phổ biến theo cách tương tự. Trong quá trình này danh sách hạng mục phổ biến là: L= {“A”, “CM”, “D”, “P”, “N”, “L”}.
A: SL = {P, N, L}; nSL = {CM, D} CM: SL = {L}; nSL = {D, P, N}
32 D: SL = {N, L}; nSL = {P} P: SL = {L}; nSL = {N} N: SL = {L}; nSL = {} L: SL = {}; nSL = {} Bước 3:
Để tiếp tục khai thác depth first các FCIs, các tập đĩng mới phát hiện được mở rộng. Quá trình bắt đầu bằng cách khởi tạo danh sách nSLCk của Ck. Nếu nSLCk rỗng, chúng ta cần phải nhảy đến bước 5. Ở đây tập đĩng đại diện “APNL” được mở rộng với các hạng mục của nSL“APNL" để bắt đầu đệ quy đến các FCIs trong 1 nhánh nơi mà nSL“APNL" thu
được trực tiếp từ nSL"A".
Bước 4.1:
Một tập mới Ck+1 được hình thành từ việc kết hợp Ck với một hạng mục của nSLCk. Độ phổ biến của nĩ được kiểm tra so với ngưỡng minSup sau khi xác định DBVCk+1. Nếu sup (Ck+1) < minSup, Ck+1 được loại bỏ và Ck được kết hợp với hạng mục kế tiếp của nSLCk. Sau đĩ độ phổ biến được kiểm tra theo cách tương tự. Nếu khơng cịn hạng mục trong nSLCk, thì nhảy đến bước 5. Trong database của ví dụ này, “APNL” kết hợp với
“CM ” ∈ nSL“APNL " để xây dựng Ck+1 = “APNL” “CM ”= “APNLCM”. Tiếp theo,
dynamic bit vector của “APNLCM” được xác định là DBV“APNLCM" = DBV“APNL" ∩
DBV“CM" = DBV“APNL" ∩ DBV“C" = {0, {29}} ∩ {0, {58}} = {0, {24}}.
Bước 4.2:
DSBV của Ck+1 được khai thác từ việc Giao các DSBVs của Ck và kết hợp với hạng mục y từ nSLCk theo cách trong phần 5.2.3. Tuy nhiên, nếu Ck+1 được xác nhận là một phát sinh của tập khơng đĩng hoặc các tập trùng lắp sử dụng bổ đề 5 thơng qua cấu trúc DSBV, loại bỏ nĩ và quay trở lại bước 4.1. Do đĩ DSBV “APNLCM " được khai thác bởi: DSBV“APNLCM " = DSBV“APNL " ∩ DSBV“CM " = {} ∩ {} = {}.
33
Quá trình subsuming được thực hiện cho Ck+1 với các hạng mục cịn lại của nSLCk. Kết quả là các danh sách subsuming và non - subsuming của Ck +1 được biểu diễn (SLCk
+1) và (nSLCk +1) được xây dựng. DSBV của Ck +1 được khởi tạo và sau đĩ nĩ được cập
nhật thơng qua giao DSBV của các hạng mục từ SLCk +1. Trong suốt quá trình subsuming, trong database của ví dụ này. Tập hạng mục “APNLCM” khơng bị subsumed bởi các item cịn lại của nSL“APNL" = {“D”}. Do đĩ, "APNLCM" được coi là FCI thứ hai và nSL"APNLCM" được khởi tạo là {"D"}.
Bước 4.4:
Nếu nSLCk +1 khác rỗng, cĩ thể mở rộng Ck+1. Để phát hiện các FCIs con cháu của cây khai thác FCI, chuyển sang bước 3 và lặp lại các bước trên. Ở đây, nSL“APNLCM " ≠ và
chúng ta thu được 1 tập mới “APNLCMD”. Tuy nhiên, quan sát thấy rằng sup ("APNLCMD") (tính từ DBV"APNLCMD") nằm dưới ngưỡng minSup, trong đĩ DBV"APNLCMD" = DBV"APNLCM" ∩ DBV"D" = {0, {24}} ∩ {0, {53}} = {0, {16}}. "APNLCMD" bị loại bỏ như một tập khơng phổ biến như trong hình 3.2.