Dưới đây ta sẽ tìm hiểu một thuật toán mẫu dùng để tìm các tập phần tử lớn. Cho một tập các phần tử I, một tập X+Y của các phần tử trong I được gọi là mở rộng của tập phần tử X nếu X ∩ Y = φ. Thông số dbsize là tổng số tuple (bản ghi) trong cơ sở dữ liệu.
Thuật toán thực hiện việc quét trên toàn cơ sở dữ liệu. Tập biên cho phép kiểm tra sự phù hợp của các tập phần tử được mở rộng. Trong mỗi phép kiểm tra đều có tính giá trị chỉ số support của mỗi tập phần tử . Các tập phần tử này, được gọi là các tập ứng cử, thu được từ các tuple trong cơ sở dữ liệu và các tập phần tử có trong tập biên.
Tương ứng với mỗi tập phần tử là một biến đếm (count) lưu giữ số giao dịch có các tập phù hợp. Biến đếm này được khởi đầu bằng 0 khi mỗi một tập phần tử được tạo ra.
{ ---Thuật toán mẫu ---}
procedure Các tập phần tử lớn
begin
let tập lớn L = φ ;
let tập biên F = { φ } ;
while F ≠φ do begin
--- kiểm tra trên toàn cơ sở dữ liệu ---
let tập ứng cử C = φ ;
forall CSDL tuple t do
forall Các tập phần tử f trong F do if t chứa f then begin
let Cf = các tập ứng cử là mở rộng của f và nằm trong t
forall các tập phần tử cf trong Cf do if cf∈ C then
cf.count = cf.count + 1 ;
Nguyễn Tiến Thành – Công nghệ phần mềm K44 40
Kỹ thuật khai phá dữ liệu và ứng dụng xây dựng cơ sở tri thức else begin cf.count = 0 ; C = C + cf ; End End --- Hợp nhất lại let F = φ ;
forall các tập phần tử c trong C do begin if count( c )/dbsize > minsupport then
L = L+ c ;
if c có thể dùng như một tập biên trong kiểm tra tiếp theo then
F = F + c ;
End End End
Ban đầu tập biên gồm có duy nhất một phần tử, đó là một tập rỗng.Ở cuối mỗi phép kiểm tra, support của tập ứng cử được đối chiếu với giá trị ngưỡng minsupport để xem nó có phải là một tập phần tử lớn hay không. Cùng lúc, nó được xác định nếu tập phần tử này có thể được thêm vào tập biên cho bước tiếp theo. Thuật toán kết thúc khi tập biên trở thành rỗng. Giá trị support của tập phần tử này được duy trì khi nó được thêm vào một tập phần tử lớn hay một tập biên.