Thuật toán tìm câu trả lời gần đúng cho truy vấn Null

Một phần của tài liệu cơ sở dữ liệu hướng đối tượng với thông tin ngôn ngữ mờ (Trang 64)

Null

1. Trường hợp sử dụng tính chất tương tự nhau P trong đối tượng

Để xây dựng thuật toán trong trường hợp này, chúng ta dựa vào tính chất tương tự nhau về thuộc tính giữa các đối tượng, cụ thể như sau:

1. Ma trận b là ma trận độ tương tự giữa các thuộc tính, dựa trên khái niệm ái lực thuộc tính (attribute affinity) do Hoffer và Severance [42] đề xuất và độ đo cosin chúng ta có thể tính được các trọng số của ma trận này. Từ ma trận độ tương tự này chúng ta xác định thuộc tính liên quan nhất đến thuộc tính mà có giá trị thuộc tính chưa định nghĩa.

2. 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ủa c−c+ cho hai thuộc tính liên quan được xác định ở bước 1.

3. Sử dụng lý thuyết suy diễn tương tự để xác định giá trị thuộc tính chưa định nghĩa.

Từ đó, thuật toán NQAO thực hiện truy vấn Null cho thuộc tính được xây dựng như sau:

Thuật toán NQAO (Null Queries for Attributes Objects)

Vào: 1. Một lớp C với m thuộc tính vàp phương thức; O= {o1, o2, ..., on} ∈ C. Trong đó: (o1, o2, ..., on−1).[A1, A2, ..., Am] vàon.[A1, A2, ..., Am−1] được xác định (có nghĩa là giá trị dữ liệu tồn tại) vàon.Am chưa được định nghĩa (có nghĩa là giá trị dữ liệu bị thiếu).

2. Ma trận b, là ma trận độ tương tự thể hiện sự liên quan giữa các thuộc tính.

Ra: Trả về giá trị tương tự gần đúng cho on.Am.

Phương pháp:

//Dựa vào ma trận b xác định thuộc tính Ah (1≤h≤m−1) có liên quan //nhất đối với thuộc tính chưa biết Am

(1) µ = 1 - b[1, m]; (2) For i = 1 to m do

(4) Begin

(5) h = i;

(6) µ = 1 - b[i, m];

(7) End

//Chọn độ đo tính mờ và xây dựng các khoảng tương tự cho hai thuộc tính // liên quan h và m (8) t = h; (9) For d = 1 to 2 do (10) Begin (11) GAt = {0, c−, W, c+, 1}; HAt= HA+t ∪HA−t. Trong đó HA+ t= {h1, h2}, HA− t = {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ử.

(12) DAt = [minAt,maxAt] // giá trị nhỏ nhất và lớn nhất miền trị giá trị At. (13) F DAt =HAt(c+A

t) HAt(c−A

t).

//Dựa vào mục 1.4.2.3 để xây dựng các lớp tương tự mức k, trong đó SAkt(xj) là // lớp tương tự mức k của thuộc tính o.At cho phần tử xj.

(14) For k = 1 to 4 do

(15) Forj = 1 to 25(k-1) do

(16) Xây dựng các khoảng tương tự mức k: SAkt(xj);

(17) t = m;

(18) End

// Xác định lớp tương tự mức k của thuộc tính o.Ai. (19) t = h; (20) For d = 1 to 2 do (21) Begin (22) For i = 1to n do (23) Begin (24) j=0; (25) Repeat (26) j=j+1;

(27) Until oi.At SAkt(xj) or j > 25(k - 1); (28) F Nik(oi.At) =F Nik(oi.At)∪SAkt(xj);

(29) End

(30) t = m;

(31) End

//Xây dựng thuộc tính chưa định nghĩa on.Am

(32) result = ;

(33) For i = 1 to n-1 do

(34) If on.Ah =oi.Ah then result = result ∪F Nik(oi.Am); (35) Return result;

Trong trường hợp đối với truy vấn phương thức: sau khi đã xác định được giá trị thuộc tính chưa biết dựa vào thuật toán NQAO, tiếp đến chọn hàm kết nhập đại số gia tử (do mỗi thuộc tính được xem là một đại số gia tử), từ đó chúng ta sẽ tìm ra câu trả lời gần đúng cho phương thức. Thuật toán truy vấn Null cho phương thức NQMO được trình bày chi tiết như sau:

Thuật toán NQMO (Null Queries for Method Objects)

Vào: 1. Một lớp C với m thuộc tính vàp phương thức; O= {o1, o2, ..., on} ∈ C. Trong đó: (o1, o2, ..., on−1).[A1, A2, ..., Am] và on.[A1, A2, ..., Am−1] là được xác định (có nghĩa là giá trị dữ liệu tồn tại) và on.Am là chưa được định nghĩa (có nghĩa là giá trị dữ liệu bị thiếu).

2. Ma trận b, là ma trận trọng số thể hiện sự liên quan giữa các thuộc tính.

Ra: Trả về giá trị tương tự gần đúng cho phương thức.

Phương pháp:

//Dựa vào ma trận b xác định thuộc tính Ah (1≤h≤m−1) có liên quan //nhất đối với thuộc tính chưa biết Am

(1) µ = 1 - b[1, m]; (2) For i = 1 to m do

(3) if (1- b[i, m])<=µ) and (=m)then

(4) Begin

(6) µ = 1 - b[i, m];

(7) End

//Chọn độ đo tính mờ và xây dựng các khoảng tương tự cho hai thuộc tính // liên quan h và m (8) t = h; (9) For d = 1 to 2 do (10) Begin (11) GAt = {0, c−, W, c+, 1}; HAt= HA+ t ∪HA− t. Trong đó HA+ t= {h1, h2}, HA− t = {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ử.

(12) DAt = [minAt,maxAt] // giá trị nhỏ nhất và lớn nhất miền trị giá trị At. (13) F DAt =HAt(c+At) HAt(c−At).

//Dựa vào mục 1.4.2.3 để xây dựng các lớp tương tự mức k, trong đó Sk

At(xj) là // lớp tương tự mức k của thuộc tính o.At cho phần tử xj.

(14) For k = 1 to 4 do

(15) Forj = 1 to 25(k-1) do

(16) Xây dựng các khoảng tương tự mức k: SAkt(xj);

(17) t = m;

(18) End

// Xác định lớp tương tự mức k của thuộc tính o.Ai. (19) t = h; (20) For d = 1 to 2 do (21) Begin (22) For i = 1to n do (23) Begin (24) j=0; (25) Repeat (26) j=j+1; (27) Until oi.At Sk At(xj) or j > 25(k - 1); (28) F Nik(oi.At) =F Nik(oi.At)∪SAkt(xj);

(29) End

(30) t = m;

(31) End

//Xây dựng thuộc tính chưa định nghĩa on.Am

(32) result = ;

(33) For i = 1 to n-1 do

(34) If on.Ah =oi.Ah then result = result ∪F Nik(oi.Am); (35) Chọn hàm kết nhập ĐSGT FHA cho phương thức; (36) result = ; (37) For i = 1 to n do (38) result = result ∪FmHA j=1 (F Nik(oi.Aj)); (39) Return result;

Định lý 2.2. Thuật toán NQAO và NQMO luôn dừng và đúng đắn. Chứng minh.

1. Tính dừng: Tập các thuộc tính, phương thức của đối tượng là hữu hạn (n, p, m là hữu hạn) nên thuật toán sẽ dừng sau khi duyệt xong tất cả các đối tượng.

2. Tính đúng đắn: Thật vậy, giả sử on.Am là giá trị thuộc tính cần xác định, với O = {o1, o2, . . . , on} C và Aj (1 ≤j≤m) là tập thuộc tính của O C.

Dựa trên các trọng số của ma trận quan hệ tương tự giữa các thuộc tính, chúng ta dễ dàng xác định được thuộc tính nào liên quan đến thuộc tính chưa định nghĩa cần xác định giá trị on.Am, giả sử đó là thuộc tính on.Am−1. Trên thuộc tính Am−1, Sử dụng các phép toán đối sánh theo mức ≈k, với k là khoảng lân cận mức k theo ĐSGT để xác định đối tượng có giá trị bằng hoặc xấp xỉ với

on.Am−1. Dựa vào định lượng ngữ nghĩa của ĐSGT chúng ta có thể tính được lân cận mức k của một từ x là F Nk(x) = [a, b], theo các trường hợp sau:

a) Nếuon.Am−1,oi.Am−1 là giá trị kinh điển (rõ) màon.Am−1 vàoi.Am−1

cùng thuộc [a, b] thì on.Am−1 = oi.Am−1.

(tính được thông qua định lượng ngữ nghĩa) mà a x1 và y1 b, a x2 và

y2 ≤b thì on.Am−1 ≈k oi.Am−1.

Sau khi xác định được đối tượngoi có giá trị thuộc tính Am−1 bằngon.Am−1. Từ đây, chúng ta dễ dàng xác định giá trị thuộc tính chưa định nghĩa cần xác định giá trị dựa trên lý thuyết suy diễn, on.Am = oi.Am.

Hai thuật toán dựa trên đối sánh dữ liệu và lý thuyết suy diễn để xác định giá trị thuộc tính chưa định nghĩa luôn cho đúng kết quả đầu ra.

Độ phức tạp tính toán của thuật toánNQAO được đánh giá như sau: bước (1)-(7) là O(m); bước (8)-(18) là O(m); bước (19)-(31) là O(n); bước (32)-(35) là O(n). Vậy thuật toán NQAO có độ phức tạp tính toán là max(O(m),O(n)), với n là số đối tượng và m tập thuộc tính.

Độ phức tạp tính toán của thuật toánNQMOđược xác định tương tự: bước (1)-(7) là O(m); bước (8)-(18) là O(m); bước (19)-(31) là O(n); bước (32)-(35) là O(n); bước (36)-(39) là O(n). Vậy thuật toán NQMO có độ phức tạp tính toán là max(O(m), O(n)), với n là số đối tượng và m tập thuộc tính.

2. Trường hợp sử dụng phụ thuộc mờ để xác định thuộc tính chưa biết

Để xây dựng thuật toán trong trường hợp này, chúng ta dựa vào hàm đánh giá độ xấp xỉ ngữ nghĩa của giá trị thuộc tính ở phần 2.1, cụ thể như sau:

1. Chuyển các giá trị thuộc tính về giá trị khoảng, sử dụng phương pháp ở mục 1.5.7.1.

2. Xây dựng các khoảng mờ cho từng thuộc tính và xác định các giá trị khoảng thuộc khoảng mờ, sử dụng phương pháp đối sánh khoảng ở mục 2.1.1. 3. Sử dụng định nghĩa phụ thuộc thuộc tính mờ để xác định các thuộc tính

liên quan, và từ đó chúng ta sẽ xác định được giá trị thuộc tính chưa biết. Từ đó, thuật toán truy vấn thuộc tính xấp xỉ ngữ nghĩa ASAO cho truy vấn thuộc tính được xây dựng chi tiết như sau:

Thuật toán ASAO (Approximate Semantic for Attributes Object)

Trong đó: (o1, o2, ..., on−1).[A1, A2, ..., Am] vàon.[A1, A2, ..., Am−1] là được định nghĩa (có nghĩa là giá trị dữ liệu tồn tại) và on.Am là chưa được định nghĩa (có nghĩa là giá trị dữ liệu bị thiếu).

Ra: Trả về giá trị tương tự gần đúng cho thuộc tính chưa định nghĩa.

Phương pháp:

Bước 1: Áp dụng phương pháp ở mục 1.5.7.1 để chuyển các giá trị thuộc tính tham gia truy vấn về các giá trị khoảng tương ứng.

Bước 2: Xây dựng các khoảng mờ cho các thuộc tính tham gia truy vấn, sử dụng phương pháp đối sánh khoảng để xác định các giá trị khoảng thuộc khoảng mờ tương ứng.

Bước 3: Sử dụng phụ thuộc hàm mờ ở mục 2.2.1 để kiểm tra các phụ thuộc thuộc tính mờ.

Bước 4: Sử dụng phụ thuộc thuộc tính mờ ở bước 3 để xác định giá trị cho thuộc tính chưa định nghĩa on.Am.

Trong trường hợp đối với truy vấn phương thức, sau khi đã xác định được giá trị thuộc tính chưa biết dựa vào thuật toán ASAO, tiếp đến sử dụng định nghĩa phụ thuộc phương thức mờ để xác định các thuộc tính và phương thức liên quan, sau đó chọn hàm kết nhập đại số gia tử (do mỗi thuộc tính được xem là một đại số gia tử) để tìm ra câu trả lời cho phương thức. Do đó, thuật toán ASMO được xây dựng chi tiết như sau:

Thuật toán ASMO (Approximate Semantic for Method Objects)

Vào: Một lớp C với m thuộc tính và p phương thức; O ={o1, o2, ..., on} ∈ C. Trong đó: (o1, o2, ..., on−1).[A1, A2, ..., Am] và on.[A1, A2, ..., Am−1] là được định nghĩa (có nghĩa là giá trị dữ liệu tồn tại) và on.Am là chưa được định nghĩa (có nghĩa là giá trị dữ liệu bị thiếu).

Ra: Trả về giá trị tương tự gần đúng cho phương thức.

Phương pháp:

Bước 1: Áp dụng phương pháp ở mục 1.5.7.1 để chuyển các giá trị thuộc tính tham gia truy vấn về các giá trị khoảng tương ứng.

Bước 2: Xây dựng các khoảng mờ cho các thuộc tính tham gia truy vấn, sử dụng phương pháp đối sánh khoảng để xác định các giá trị khoảng thuộc khoảng mờ tương ứng.

Bước 3: Sử dụng phụ thuộc hàm mờ ở mục 2.2.1 để kiểm tra các phụ thuộc thuộc tính mờ.

Bước 4: Sử dụng phụ thuộc thuộc tính mờ ở bước 3 để xác định giá trị cho thuộc tính chưa định nghĩa on.Am.

Bước 5: Sử dụng phụ thuộc phương thức mờ ở mục 2.2.2 để kiểm tra các FM-phụ thuộc.

Bước 6: Dựa vào FM-phụ thuộc chọn hàm kết nhập đại số gia tử cho các thuộc tính.

Bước 7: Xác định giá trị gần đúng cho phương thức bằng cách sử dụng phụ thuộc phương thức mờ ở bước 5 và hàm kết nhập ĐSGT ở bước 6.

Định lý 2.3. Thuật toán ASAO ASMO luôn dừng và đúng đắn. Chứng minh.

1. Tính dừng: Tập các thuộc tính, phương thức của đối tượng là hữu hạn (n, p, m là hữu hạn) nên thuật toán sẽ dừng sau khi duyệt xong tất cả các đối tượng.

2. Tính đúng đắn: Thuật toán ASAOASMO sử dụng Định nghĩa 2.3 phụ thuộc thuộc tính mờ và Định nghĩa 2.4 phụ thuộc phương thức mờ. Khái niệm phụ thuộc thuộc tính mờ và phụ thuộc phương thức mờ là sự mở rộng của khái niệm phụ thuộc hàm mờ trong CSDL quan hệ mờ. Sự suy dẫn logic này dựa vào sự suy dẫn của phụ thuộc mờ trong CSDL quan hệ mờ. Tính đúng đắn của phép suy dẫn bởi phụ thuộc hàm mờ trong CSDL quan hệ mờ đã được chứng minh (Hồ Cẩm Hà 2002 [4], Nguyễn Công Hào 2008 [5]).

Độ phức tạp tính toán của thuật toán ASAO được đánh giá như sau: bước (1) có độ phức tạp O(n); bước (2) là O(n*m*m); bước (3) là O(n). Vậy thuật toán ASAOcó độ phức tạp tính toán làO(n*m*m), với n là số đối tượng vàm

Độ phức tạp tính toán của thuật toánASMO được xác định tương tự: bước (1) có độ phức tạp O(n); bước (2) là O(n*m*m); bước (3) là O(n); bước (4)-(5) là O(n*p); bước (6) là O(n). Vậy thuật toán ASMO có độ phức tạp tính toán là O(n*m*m), với n là số đối tượng, m tập thuộc tính và p là tập phương thức.

Một phần của tài liệu cơ sở dữ liệu hướng đối tượng với thông tin ngôn ngữ mờ (Trang 64)