Các thuật toán

Một phần của tài liệu Luận văn tốt nghiệp tiếp cận lý thuyết tập thô do z pawlak (Trang 43 - 47)

Giả sử T là bảng nhất quán, trong mục này ta sẽ tìm cách xây dựng các thuật toán tìm rút gọn của bảng sử dụng Định nghĩa 2.7. Nếu R là một tập rút gọn thì R

chứa mọi thuộc tính lõi. Nhận xét này gợi ý cho chúng ta xây dựng hai cách tiếp cận khác nhau đến tập rút gọn. Thuật toán thứ nhất theo kiểu xấp xỉ ngoài, tức là xuất phát từ R :=C chúng ta tìm cách loại bỏ tối đa các thuộc tínhcj ∈R\Core trong khi mà k(R\ {cj}, D) vẫn còn bằng 1. Thuật toán thứ hai theo kiểu xấp xỉ trong, bằng cách khởi tạo R:= Core và bổ sung thêm tối thiểu các thuộc tínhcj ∈C\R

cho đến khi nhận được k(R, D) = 1.

Thuật toán thứ nhất thích hợp đối với những bài toán mà các thuộc tính có thể được sắp xếp theo một tiêu chuẩn ưu tiên nào đó. Trong trường hợp như vậy, các thuộc tính được xem xét để loại bỏ là các thuộc tính có độ ưu tiên thấp. Cụ thể, thuật toán được trình bày như sau

Thuật toán 2.2. Tìm tập rút gọn theo xấp xỉ ngoài.

Input: T= (C, D).

Output: Tập rút gọn R.

Method:

1. Tìm Core theo Thuật toán 2.1;

2. Sắp xếp tập C\Core theo thứ tự ưu tiên tăng dần; 3. Đặt R:=C;

4. For cj ∈C\Core do

5. If k(R\ {cj}, D) = 1 then 6. R:=R\ {cj};

Như vậy, xuất phát từ R=C, thuật toán thực hiện tối đa k vòng lặp để thực hiện loại bỏ R := R\ {cj}. Trong mỗi vòng lặp này, chúng ta phải kiểm tra điều

kiện k(R\ {cj}, D) = 1. Điều đó đòi hỏi sắp xếp lại các đối tượng trongU theo thứ tự tăng/giảm giá trị của các thuộc tính trong R\ {cj}và D. Vậy, độ phức tạp tính toán của thuật toán này sẽ là O(knlogn), với n= Card(U)và k = Card(C).

Ví dụ 2.3. Xét bảng quyết định cho trong Bảng 2.1 lưu thông tin về các xe hơi, giả sử các thuộc tính được sắp theo thứ tự chỉ số thuộc tính tương ứng ta có:

Core ={c1}. Xuất phát R:=C; Card(Q (R)) = 8. Xét c2 ∈C\Core, ta có: Card(Q (R\ {c2})) = 8 = Card(Q (R\ {c2} ∪D)). Do đó, k(R\ {c2}, D) = 1.

Như vậy có thể loại c2 khỏiR. Lúc này R ={c1, c3, c4}. Xét c3 ta có:

Card(Q

(R\ {c3})) = 5 = Card(Q

(R\ {c3} ∪D)), do đó k(R\ {c3}, D) = 1,

và c3 cũng được loại ra khỏiR. Bây giờ R={c1, c4}. Xét c4 ta có:

Card(Q

(R\ {c4})) = 3. trong khi Card(Q

(R\ {c4} ∪D)) = 4, do đó k(R\ {c3}, D) = 3

4 <1.

Vậy R ={c1, c4}là một tập rút gọn.

Thực ra bảng có hai rút gọn (trong thuật toán sau chúng ta sẽ thấy), nhưng do chúng ta sắp thứ tự ưu tiên tăng dần theo chỉ số thuộc tính nên thuộc tính c4

có độ ưu tiên xét đưa vào tập rút gọn cao hơn.

các thuộc tính nào để R thực sự là tập rút gọn? Chúng ta sẽ thảo luận về điều đó ngay dưới đây.

Cho V ⊆ U, với mỗi tập con B ⊆ C, quan hệ tương đương cảm sinh của

IND(B) lên V là IND(B|V) và các lớp tương đương của IND(B|V) là V /B = {VB

1 , VB

2 ,· · · , VB

m}. Tương tự, quan hệ tương đương cảm sinh bởiIND(D)lên V là

IND(D|V) và các lớp tương đương của quan hệ này là V /D ={V1D, V2D,· · · , VkD}. Lúc này ta cũng có các khái niệm B−xấp xỉ dưới và B−biên của V, ký hiệu lần lượt là Lower[BV]/[DV] và Boundary[BV]/[DV], xác định như sau

Lower[BV]/[DV]:= k [ j=1 Lower[BV]/[VD j ], (2.11) Boundary[BV]/[DV] :=V \Lower[BV]/[DV], (2.12) trong đó, Lower[BV]/[VD j ] := m [ i=1 {ViB |ViB ⊆VjD}.

Từ các định nghĩa trên ta có thể dễ dàng kiểm chứng được khẳng định sau

Mệnh đề 2.3. Giả sử T là nhất quán. Lúc đó,

a) R là tập rút gọn khi và chỉ khi nó là tập con tối tiểu của C thoả mãn

Boundary[R]/[D]=∅.

b) Nếu R1 ⊆R2 ⊆C, thì bằng cách đặt V = Boundary[R1]/[D] ta có:

Boundary[R2]/[D]= Boundary[RV

2]/[DV].

Bây giờ giả sử R ⊆ C và cj ∈ C \R. Đặt V = Boundary[R]/[D] và ký hiệu

QV

(B) là chiếu của V lên tập thuộc tính B. Ta gọi khả năng đóng góp của cj vào

R là tỷ số sau m(cj, R) := Card( QV ({cj})) Card(QV ({cj} ∪D)). (2.13)

Dễ thấy m(cj, R)∈(0,1]. Tỷ số này thể hiện khả năng phân lớpV theo thuộc tính D mà chỉ dựa vào thuộc tính cj. Nếu hệ số này càng lớn thì (R∪ {cj})−xấp xỉ dưới của V càng lớn và, do đó, (R∪ {cj})−biên của V càng bé. Mà theo Mệnh đề 2.3 ta có

Boundary[R∪{c

j}]/[D]= Boundary[(R∪{c

j})V]/[DV],

nên R∪ {cj}−biên của U càng bé. Trên cơ sở phân tích đó, ta sẽ ưu tiên bổ sung vào R các thuộc tính có khả năng đóng góp vào R mạnh nhất. Việc bổ sung như vậy sẽ lặp lại cho đến khi R là một tập rút gọn thực sự. Tóm lại, ta có thuật toán sau

Thuật toán 2.3. Tìm tập rút gọn theo xấp xỉ trong.

Input: T= (C, D).

Output: Tập rút gọn R.

Method:

1. Tìm Core theo Thuật toán 2.1; 2. R:= Core;

3. Chọn cr ∈C\R sao cho

m(cr, R) = max{m(cj, R)|cj ∈C\R};

4. R:=R∪ {cr};

5. Nếu Boundary[R]/[D] =∅ thì dừng. Ngược lại, quay về 3.

Như vậy, xuất phát từ R = Core, thuật toán thực hiện tối đa k vòng lặp để bổ sung R = R∪ {cr}. Trong mỗi vòng lặp này, chúng ta phải tính lại tất cả các

m(cj, R)và chọn ra thuộc tính có khả năng đóng góp cao nhất. Nhưng để tính được

m(cj, R)chúng ta cần sắp xếp các đối tượng trong V = Boundary[R]/[D] theo thứ tự tăng/giảm giá trị của các thuộc tính trong cj vàD. Tóm lại, độ phức tạp tính toán của giải thuật này sẽ là O(k2nlogn), vớin = Card(U)vàk = Card(C). Thực ra thì

cứ sau mỗi vòng lặp, tập các đối tượng làm việc là V sẽ giảm đi nhiều so với tậpU

ban đầu.

Sử dụng thuật toán này để tìm rút gọn tương ứng trong bảng ở Ví dụ 2.1 ta lần lượt nhận được: R :=Core={c1}={W eight}, V = Boundary[{c1}]/[{d}] ={t1, t2, t6, t8}, m({c2}, R) = 2 4, m({c3}, R) = 2 2 = 1, m({c4}, R) = 2 2 = 1.

Như vậy, ta có thể bổ sung c3 hoặc c4 vào R. Trong cả hai trường hợp ta đều có Boundary[R∪{cr}]/[D]=∅ và thuật toán dừng.

Cuối cùng ta có hai tập rút gọn là R={c1, c3} hay R={c1, c4}.

Một phần của tài liệu Luận văn tốt nghiệp tiếp cận lý thuyết tập thô do z pawlak (Trang 43 - 47)