3.3.2. Tính tidset nút cha từ tidset nút con
Việc thêm các mục cha vào CSDL khi khai thác tập mục trên CSDL phân cấp theo các phƣơng pháp trƣớc đây làm cho bộ nhớ tăng lên và tốn thời gian quét và chèn dữ liệu. Trong phần này, luận án đề xuất giải pháp tính tidset mục cha thơng qua các mục con của nó trên cây phân cấp - là các mục có trong CSDL gốc.
Mệnh đề 3.2. Tidset của mục cha trên cây phân cấp đƣợc xác định bằng
hợp tidset các mục con của nó ở nút lá.
Nhƣ vậy, tidset(X) = tidset(X1) tidset(X2) ... tidset(Xk). Trong đó X1, X2,..., Xk là các mục con ở nút lá của mục X.
Ví dụ 3.7: Xét CSDL HD, do H là cha của A và D trên cây phân cấp nên
tidset(H) = tidset(A) tidset(D) = {1, 3, 4, 5} {1, 3, 5, 6} = {1, 3, 4, 5, 6}
Chứng minh: Các mục cha thuộc các giao dịch có chứa mục con của nó
ở nút lá, do đó tidset của mục cha sẽ chính là hợp tidset của tất cả tidset các mục con của nó ở nút lá.
Thuật toán xác định tidset mục cha dựa vào tidset mục con của nó đồng thời tính twu của các giao dịch đƣợc trình bày nhƣ trong Hình 3.8.
Thuật toán 3.5: CREAT_TIDSET
Input: HQDB HD, minsup
Output: tập L chứa các 1-itemset
- Method name: CREAT_TIDSET()
1 2 3 4 5 6 7 8 9 10 11 12 13 CREAT_TIDSET(Tr) for all t T do twu [t] = 0; L = ; for all i t do
tidset(i) t;// cập nhật tidset cho mục i twu [t] = twu [t] + quantity [i] weight [i];
for all h parent(i) of Tr do
tidset(h) t; //cập nhật tidset cho mục cha của i weight(h) = Fun_weight(weight(h), weight(i)); quantity (h) = Fun_quantity(quantity(h), quantity(i); L h;
for all l L do
twu [t] = twu [t] + quantity(l) weight(l);