Xét câu truy vấn “Cho biết tất cả những sinh viên có tuổi khả năng trẻ”. Các bước thực hiện để trả lời câu truy vấn này như sau:
+ Bước 1: Xây dựng các khoảng tương tự mức k, k ≤4 thường thì chỉ có tối đa 4 gia tử tác động liên tiếp lên phần tử nguyên thủy c− và c+.
+ Bước 2: Xác định lân cận mức k của điều kiện mờ, chẳng hạn với câu truy vấn trên điều kiện mờ là khả năng trẻ nên lân cận mức 2 của khả năng trẻ
là F N2(khả năng trẻ), và xác định lân cận mức k của giá trị thuộc tính mờ là
F N A2(attr). Sau đó dựa vào định nghĩa 2.1 để thực hiện đối sánh hai lân cận mức k của F N A2(attr) và F N2(khả năng trẻ).
Không mất tính tổng quát, chúng ta xét trường hợp đa điều kiện mờ với các ký hiệu:
- ϑ là phép toán and hay or.
- f zvaluei là các giá trị mờ ứng với thuộc tính thứ i ở mức lân cận thứ k.
Trên cơ sở đó, thuật toánSASN(SearchAttribute in theSemanticNeighborhood) được xây dựng như sau.
1. Thuật toán SASN: Tìm kiếm dữ liệu trong trường hợp đa điều kiện cho thuộc tính với phép toán ϑ.
Vào: Một lớp C = ({A1, A2, . . . , Ap}, M); C = {o1, o2, . . . , on}.
Trong đóAi, i =1. . . p là các thuộc tính, M là tập các phương thức.
Ra: Tập các đối tượng o ∈ C thỏa điều kiện ϑp
i=1
(o.Ai =f zvaluei).
Phương pháp
//Khởi tạo các giá trị. (1) For i = 1 top do
(2) Begin
(3) GAi = {0,c−,W,c+, 1}; HAi= HA+i ∪HA−i. Trong đó HA+i= {h1, h2}, HA−i
= {h3, h4}, với h1 < h2 và h3 > h4. Chọn độ đo tính mờ cho các phần tử sinh và gia tử.
(4) DAi = [minAi,maxAi] // giá trị nhỏ nhất và lớn nhất miền giá trị Ai. (5) F DAi = HAi(c+A
i) ∪ HAi(c−A
i). (6) End
(7) Xác định khoảng tương tự mức k theo điều kiện mờ: kQ
//Dựa vào mục 1.4.2.3 để xây dựng các lớp tương tự mức k theo điều kiện mờ, //trong đó SAki(xj) là lớp tương tự mức k của thuộc tính o.Ai cho phần tử xj. (8) For i = 1 to p do
(9) For j = 1 to 25(kQ-1) do
(10) Xây dựng các khoảng tương tự mức k: SAk
i(xj); //Xác định lân cận mức k của o.Ai.
(11) For each o ∈ C do (12) For i = 1to p do (13) Begin (14) j = 0; (15) Repeat (16) j = j+1; (17) Until o.Ai ∈ SAk i(xj) or j > 25(kQ - 1); (18) F N Aki(attri) =F N Aki(attri)∪SAki(xj);
(19) End
//Xác định lân cận mức k của f zvaluei. (20) For i = 1 to p do (21) Begin (22) j = 0; (23) Repeat (24) j = j+1; (25) Until o.Ai ∈ SAk i(xj) or j > 25(kQ - 1); (26) F Nik(f zvaluei) =F Nik(f zvaluei)∪SAki(xj); (27) End (28) result = ∅; (29) For each o ∈ C do (30) if ϑp i=1 (F N Ak i(attri) =F Nk
i (f zvaluei)) then result=result ∪ {o}; (31) Return result;
Tương tự đối với phương thức, thuật toán SMSN (Search Method in the
Semantic Neighborhood) được xây dựng như sau:
2. Thuật toán SMSN: Tìm kiếm dữ liệu trong trường hợp đơn điều kiện cho một phương thức bất kỳ.
Vào: Một lớp C = ({A1, A2, . . . , Ap},{M1, M2, . . . , Mm}); C = {o1, o2, . . . , on}. - Trong đóAi, i =1. . . plà các thuộc tính,Mj, j =1. . . mlà tập các phương thức.
- Giá trị h (h∈ {1, . . . , m}) là phương thức thứ h cần tìm ở kết quả đầu ra.
Ra: Tập các đối tượng o ∈ C thỏa điều kiện (o.Mh = f zpvalue).
Phương pháp
//Khởi tạo các giá trị. (1) For i = 1 top do (2) Begin (3) GAi = {0,c−,W,c+, 1}; HAi= HA+ i ∪HA− i. Trong đó HA+ i= {h1, h2}, HA− i
và gia tử.
(4) DAi = [minAi,maxAi] // giá trị nhỏ nhất và lớn nhất miền giá trị Ai. (5) F DAi = HAi(c+A
i) ∪ HAi(c−A
i). (6) End
(7) Xác định khoảng tương tự mức k theo điều kiện mờ: kQ
//Dựa vào mục 1.4.2.3 để xây dựng các lớp tương tự mức k theo điều kiện mờ, //trong đó SAki(xj) là lớp tương tự mức k của thuộc tính o.Ai cho phần tử xj. (8) For i = 1 to p do
(9) For j = 1 to 25(kQ-1) do
(10) Xây dựng các khoảng tương tự mức k: SAki(xj); // Xác định lân cận mức k của thuộc tính o.Ai.
(11) For each o ∈ C do (12) For i = 1to p do (13) Begin (14) j = 0; (15) Repeat (16) j = j+1; (17) Until o.Ai ∈ SAki(xj) or j > 25(kQ - 1); (18) F N Aki(attri) =F N Aki(attri)∪SAki(xj); (19) End
//Xác định lân cận mức k của f zpvalue. (20) i = 1; f = 0; (21) While (i ≤p) and (f = 0) do (22) Begin (23) j = 0; (24) While (j ≤25(kQ−1)) and (f = 0) do (25) Begin (26) j = j+1; (27) if fzpvalue∈ Sk Ai(xj) then f = 1; (28) End;
(29) i = i + 1; (30) End
(31) F N Pk(f zpvalue) =SAk
i(xj) ;
// tích hợp ĐSGT với phép toán ϑ là phép toán and (32) For each o ∈ C do (33) For i =1to m do (34) Hàm tích hợp ĐSGT: F N P Aki(xi) = ϑp j=1(F N Akj(attri)) ; (35) result =∅; (36) For each o ∈ C do (37) For i = 1to m do
(38) if F N P Aki(xi)=F N Pk(f zpvalue) then result = result ∪ {o}; (39) Return result;
Chúng ta dễ dàng mở rộng thuật toán cho trường hợp đa điều kiện cho các phương thức khác với phép toán and hay or.