Trong [VIII], ý tưởng tiếp cận bài toán ẩn tập mục nhạy cảm dựa trên lý thuyết
giàn giao được hình thành qua mệnh đề khẳng định họ các tập mục phổ biến tạo thành một giàn giao như sau,
Mệnh đề 2.5
Họ các tập mục phổ biến P tạo thành một giàn giao.
*ADE/4 *ABE/4
*AB/4 *BE/8 AE/10 *AD/4 *DE/9 *CE/7
54
Chứng minh
Giả sử X, Y là các tập mục phổ biến: X, Y P, gọi Z = X Y. Ta sẽ chứng minh Z cũng thuộc P , nghĩa là Z cũng là một tập mục phổ biến. Ta có, ZX, do đó theo tính chất nghịch biến của hàm thì (Z) (X) . Vậy Z là tập mục phổ biến, hay nói cách khác thì ZP■
Với dữ liệu cho trong thí dụ 1.1, từ họ các tập mục phổ biến trong bảng 2.1, ta xây dựng được đồ thị của giàn các tập mục phổ biến như hình 2.1.
Mệnh đề 2.5 cho phép vận dụng các tính chất của giàn giao khi xử lý các tập mục phổ biến. Cụ thể là khi cần ẩn tập mục nhạy cảmH ta sẽ sửa các mục trong các tập mục lớn nhất chứa H trong giàn giao P, tức là các Coatom chứa H.
Khi xét mỗi tập mục phổ biến X trong P, ta nhận thấy là tập Poset(X) P là một giàn giao đầy đủ với tập Gen gồm các phần tử trên hàng thứ hai. Chẳng hạn, xét X=ABE thì ta được một giàn giao đầy đủ với tập Gen gồm các phần tử AB, AE,
BE theo hình 2.2 sau,
Hình 2.2.Giàn giao đầy đủ của Poset(ABE)
Ta có thể kiểm chứng lại nhận xét trên như sau, giả sử X P và Y X. Ta có ngay (Y) (X) . Từ đây suy ra Y P, nghĩa là mọi tập con của X đều là tập mục phổ biến. Do Poset(X) chứa mọi tập con của X nên Poset(X) là đầy đủ và đương nhiên đóng với phép giao. Từ định nghĩa tập sinh ở mục 2.4.1, ta nhận thấy các phần
A
E
*AB *AE *BE
ABE
55
tử thuộc về tập sinh nếu chúng chỉ thuộc về một tập cha. Do đó, theo mệnh đề 2.5 ta thấy, AX, X \{A} nằm trên hàng thứ hai của giàn giao chỉ khuyết duy nhất một phần tử, do đó chúng có duy nhất một cha. Nói cách khác, X \{A}thuộc về tập sinh của giàn. Mọi tập con còn lại trong Poset(X) đều khuyết từ hai phần tử trở lên do đó chúng có ít nhất là hai cha. Vậy Gen(X) bao gồm các phần tử đứng trên hàng thứ hai của đồ thị biểu diễn giàn giao đã cho.
Với nhận xét trên, do Gen(X) chỉ gồm các tập con khuyết một phần tử của X
nên thuật toán xác định Gen(X) khá đơn giản.
Thuật toán GenCpl sử dụng để xác định tập sinh trong giàn giao đầy đủ
Gen(X) được xây dựng như sau,
Thuật toán 2.3
AlgorithmGenCpl
Input: - Tập mục X U
Output: - Họ các tập sinh G của giàn giao đầy đủ X
Begin
G = ;
for each item A in Xdo
AddX \{A} to G; endfor;
returnG;
EndGenCpl.
Mệnh đề 2.5 và tính chất nghịch biến của hàm cho ta thấy rằng các phần tử trong Gen(X) có độ phổ biến nhỏ nhất trong Poset(X)\{X}. Nếu XP, với mỗi mục
A trong X ta xét hàm L(A, X) cho giá trị là cặp Y/ trong đó là giá trị nhỏ nhất trong số các độ phổ biến của các tập con thực sự Y chứa A của X, L(A, X) = Y/ ,
=min {(Y) | AY, Y X}.
Dựa vào nhận xét trên ta thấy có thể tính L(A,X) thông qua các tập chứa A
trong Gen(X). Đây là điểm khác biệt với thuật toán Minmax mô tả trong [28].
Ngoài ra, để xây dựng thuật toán giải quyết bài toán ẩn tập mục nhạy cảm, chúng ta có một số nhận xét như sau,
56
(i) Nếu tập phổ biến X bị ẩn thì mọi tập phổ biến Y chứa X cũng bị ẩn theo. Ta có thể dễ dàng thấy được là nếu X bị ẩn thì (X) < . Nếu X Y, do tính chất nghịch biến của hàm thì (Y) (X) < , nghĩa là Y cũng bị ẩn theo.
(ii) Nếu X P thì mọi Update(A, X, T, d), A X kéo theo Update(A, Y, T, d),
Y X, A Y. Nói cách khác là độ phổ biến của mọi tập con chứa A của X đều bị giảm d đơn vị. Do thao tác Update(A,X, T, 1) sẽ xóa một xuất hiện của mục A trong tập mục X, nghĩa là thay X bằng X \{A}. Từ đó suy ra rằng mọi tập mục con chứa A
của X cũng sẽ giảm số lần xuất hiện 1 đơn vị.
(iii) Ngoài ra, các tập mục Y như mô tả trong (i) được gọi là các tập mục chịu
hiệu ứng phụ khi cập nhật (xóa) mục A trong tập mục X. Điều này cho thấy nếu cập nhật mục A trong tập mục X thì cần chú ý đến các tập mục con đúng và chứa A của
X. Nếu độ phổ biến của chúng lớn hơn ngưỡng không nhiều thì chúng sẽ có nguy cơ bị ẩn theo.