Cho quan hệ nhị phân R I x X. Cho R I & R T, xét các ánh xạ: t: I T, t(X) = {yT/xX, x R y}; i:TI, i(Y) = {xl/yY, x R y}. Một ánh xạ t(X) là tập tất cả các giao dịch chứa tập mục X, tương tự i(Y) là tập mục tất cả các giao dịch chứa tập mục Y.
Định nghĩa một kết nối Galois giữa P(I) và P(T) tương ứng là các tập khả năng của l và T. Chúng ta biểu diễn cặp (X, t(X) là X x t(X) và cặp (i(X),Y) là i(Y) x Y kết nối Galois thoả mãn các thuộc tính sau (trong đó X, X1, X2 P(I) và Y,Y1, Y2 P(T):
X X2 t(X1) t(X2). Y1 Y2 i(Y1) i(Y2). X i(t(X)) và Y i(t(Y)).
Cho s là một tập. Hàm c: P(S)P(S) là một toán tử đóng trên S nếu với X,Y S, c thoả mãn các thuộc tính sau:
Extention: X c(X)
Monotonicity: Nếu X Y, thì c(X) c(Y) Idempotency: c(c(X)) = c(X)
Một tập con X của S được gọi là đóng nếu c(X) =X
Cho X Y và Y T. Cho Cit (X) biểu diễn ánh xạ hợp i0t(X) = i(t(X)) và Cit (Y)= i0i(Y) = t(i(Y)). Thì Cit :P(I) P(I) và Cti :P(T) P(T) là hai toán tử đóng trên các tập mục và các tập giao dịch tương ứng. Một số định nghĩa :
Định nghĩa tập mục đóng: X được gọi là tập mục đóng nếu X = Cit(X) Định nghĩa tập mục đóng phổ biến: X được gọi là tập mục đóng phổ biến
nếu X là tập mục đóng và support(X) minsup.
Định nghĩa tập giao dịch đóng: Y là tập giao đóng nếu Y=Cit(Y)
Các ánh xạ Cit và Cti là các toán tử đóng, thoả mãn 3 thuộc tính Extension, monotonicity và Idempotency.
Cho f: P(I) N là ánh xạ 1-1 từ các tập mục sang số nguyên. Với bất kỳ hai tập mục X1 và X2 nào, chúng ta nói X1 X2 f(X1) f(X2). Hàm f xác định thứ tự toàn thể trên tập tất cả các tập mục.
Ví dụ: nếu f biểu diễn theo thứ tự các từ điển, thì tập mục AC < AD. Khi với mẫu khác, nếu f sắp xếp các tập mục theo thứ tự tăng dần độ hỗ trợ của chúng, thì AD < AC nếu độ hỗ trợ của AD nhỏ hơn độ hỗ trợ của AC.
Giả sử rằng chúng ta đang xử lý nhánh X1 t(X1) và chúng ta muốn kết nối với anh em của nó X2 t(X2). Điều này là X1 X2 (dưới dạng một thứ tự phù hợp f).
Việc tính toán trong CHARM dựa trên các thuộc tính dưới đây:
1. Nếu t(X1)= t(X2), thì t(X1 X2) = t(X1) t(X2) = t(X1)= t(X2). Vì thế chúng ta có sự xuất hiện của X1 bằng X1 X2 và xoá X2 được xem xét từ xa, vì bao đóng của X2 được đồng nhất với bao đóng của X1 X2. Mặt khác, chúng ta coi như X1 X2 là một tập mục hợp.
2. Nếu t(X1) t(X2) thì t(X1 X2) = t(X1) t(X2) = t(X1) t(X2). Ở đây ta có thể thay mọi sự xuất hiện của X1 bằng X1 X2, vì nếu X1 xuất hiện trong bất kỳ giao dịch nào, thì X2 cũng xuất hiện. Nhưng khi t(X1) t(X2), chúng ta không thể xóa X2. Nó phát sinh ra bao đóng khác.
3. Nếu t(X1) t(X2) thì t(X1 X2) = t(X1) t(X2) = t(X1) t(X2). Trong trường hợp này, chúng ta thay thế mọi sự xuất hiện của X2 bằng X1 X2, vì bất chỗ nào X2 xuất hiện thì X1 cũng xuất hiện. Tuy nhiên, X1 là kết quả của bao đóng khác và nó phải được giữ lại.
4. Nếu t(X1) t(X2) thì t(X1 X2) = t(X1) t(X2) t(X1) t(X2). Trong trường hợp này, không được loại bỏ cả X1 và X2 dẫn đến các bao đóng khác nhau.
2.7.2.2. Bài toán đặt ra
CHARM thực hiện trên cả không gian các tập phổ biến (itemset) và không gian các tập định danh (TIDset). CHARM không tìm tất cả các tập con có thể của tập mục mà thuật toán kết hợp tìm tập đóng hiệu quả hơn (bottom-up). Nếu CSDL cảu tập mục là lớn và tập mục phổ biến là dày thì CHARM duyệt cả không gian tập mục và tập định danh. Đồng thời sẽ bỏ qua nhiều mức để đi tìm tập phổ biến đóng thay cho việc tính toán nhiều tập con không đóng. Hơn nữa, CHARM sử dụng hai kỹ thuật cắt tỉa:
1. Tỉa các ứng cử viên nếu tập con của nó không phổ biến đồng thời tỉa các nhánh dựa trên tính chất không đóng (non-closure-property).
2. Bất kỳ tập không đóng nào cũng đều bị tỉa.
CHARM không sử dụng cấu trúc dữ liệu cây băm (hash tree), phép toán cơ sở được sử dụng là hợp 2 tập mục và giao 2 tập định danh. Thuật toán bắt đầu bằng việc khởi tạo các nút để kiểm tra các mục đơn phổ biến và các tập giao dịch của chúng trong dòng 1. Tính toán chính được thực hiện trong CHARM-EXTEND, nó trả về các tập mục đóng phổ biến C.
CHARM-EXTEND có trách nhiệm kiểm tra mỗi nhánh có khả năng. Nó rút ra mỗi cặp tập mục – tập giao dịch (itemset-tidset) trong tập nút hiện tại Node (Xi t(Xi), dòng 3), và kết nối nó với các cặp khác mà đứng sau nó (Xi t(Xi),dòng 5) theo thứ tự tuyệt đối f. Việc kết nối các cặp itemset-tidsset được tính toán trong. Thủ tục CHARM-PROPERTY kiểm tra tập kết quả với độ hỗ trợ yêu cầu và cũng áp dụng 4 thuộc tính được thảo luận ở trên. Lưu ý rằng thủ tục này có thể thay đổi tập nút hiện tại bằng việc xoá các cặp itemset-tidset mà đã được chứa trong các cặp đó. Nó cũng chèn các cặp phổ biến con mới được sinh ra trong tập các nút mới New. Nếu tập này khác rỗng chúng ta thực hiện lại quá trình theo chiều sâu (dòng 8). Sau đó, chúng ta chèn tập mục mở rộng có thể có X của Xi trong tập các tập mục đóng, vì nó không thể được thực hiện; ở giai đoạn này bất kỳ tập mục đóng đang chứa Xi, đã từng được sinh ra, sau đó chúng ta quay lại dòng 3 để xử lý nhánh tiếp theo (không được tỉa). Thủ tục CHARM-PROPERTY kiểm tra đơn giản nếu cặp mới là phổ biến. Sau khi nó kiểm tra mỗi cặp itemset-tidset với 4 thuộc tính cơ bản, việc mở rộng các tập mục hiện có, xoá một nhánh được gộp từ các nút hiện có, hoặc việc chèn các cặp mới trong tập nút cho bước tiếp theo (theo chiều sâu).