3.3. Thuật toán kiểm định và tìm kiếm phụ thuộc
3.3.2. Thuật toán kiểm định phụ thuộc xấp xỉ
Trong phần này, chúng ta sẽ đánh giá xem với hai tập thuộc tính đã cho
X, Y ⊆A, phụ thuộc X →→Y có chấp nhận được với một sai số hay không. Từ Định lý 3.2 và Định lý 3.3, chúng ta thấy rằng, phụ thuộc X →→Y là chấp nhận được nếu s(D1, D2,· · · , Dm)≥1−. Tức là m X i=1 k(Di)≥(1−) Card(U).
Thuật tốn được xây dựng như sau
Input: Hệ thống thơng tin A= (U, A), Các tập X, Y ⊆A; Giá trị ngưỡng ≥0. Output: g3(X →→Y)≤? Method: 1. s:= 0; 2. OK:= TRUE; 3. For i∈ {1..m} do 4. Begin 5. Xây dựngDi; 6. s:=s+k(Di);
7. Ifs≥(1−)×Card(U) then Exit; 8. End;
9. OK:= FALSE;
Trong thuật tốn trên, m chính là số lớp tương đương của IN D(X). Giả sử
Card(U) = n và mỗi ma trận Di có kích thước pi ×qi. Khi đó việc xây dựng các ma trận Di có thể thực hiện bằng cách sắp xếp các đối tượng trong U, vì vậy độ
phức tạp của thuật tốn xây dựng dãy các ma trận Di làO(nlogn) và độ phức tạp của thuật toán kiểm chứng phụ thuộc xấp xỉ được xác định bởi vòng lặp For ở 3. Thực chất ở đây chúng ta thực hiện hai vòng lặp, một vòng lặp xây dựng cácDi và một vịng lặp tính sai số phụ thuộc. Vịng lặp tính sai số phụ thuộc có độ phức tạp trong trường hợp xấu nhất là O(
m
X
i=1
p3iqi3). Vìpiqi ≤ x2
i, nên độ phức tạp tính tốn
của Thuật tốn 3.2 khơng vượt quá O(nlogn+
m
X
i=1