Cải tiến việc thực thi chƣơng trình Mag_P ad

Một phần của tài liệu Datalog và cơ sở dữ liệu suy diễn (Trang 79)

3.3.3.1. Hạn chế tính toán dƣ thừa trên chƣơng trình viết lại bởi phép biến đổi ma tập

Sau khi thực hiện phép biến đổi ma tập, ta nhận đƣợc một chƣơng trình mới và việc tìm kiếm lời giải của chƣơng trình viết lại này thƣờng đƣợc thực hiện bởi các thuật toán định giá dƣới lên chẳng hạn thuật toán nửa ngây thơ, thuật toán này cho phép ngăn chặn việc tính toán lại các sự kiện đã đƣợc tính ở bƣớc trƣớc. Tuy nhiên, nó không ngăn chặn đƣợc việc dẫn xuất ra các vị từ magic dƣ thừa.

Giữa các vị từ magic tô điểm, mặc dầu không có quan hệ về cú pháp nhƣng về mặt ngữ nghĩa, một vị từ magic tô điểm có thể chứa các vị từ magic tô điểm khác. Vấn đề ở đây chính là sử dụng các thông tin trong các tô điểm để xác định xem một vị từ magic có chứa vị từ magic khác hay không. Việc kiểm tra quan hệ giữa các vị từ magic có thể thu hẹp thành việc kiểm tra giữa các vị từ tƣơng ứng của chúng. Điều này đƣợc thực hiện qua thuật toán sau đây:

Thuật toán 3.4 (Kiểm tra quan hệ giữa các vị từ magic đƣợc tô điểm) [6]

Vào: Giả sử _ 1 _ a( ) mag p c và _ 2 _ ( )

mag p d là hai vị từ magic lần lƣợt có tô điểm là và .

Ra:Cho kết quả vị từ mag_ p c1a( )_ có chứa vị từ

_ 2

_ ( )

mag p d hay không.

Phƣơng pháp: Thuật toán thực hiện theo các bƣớc:

Bƣớc 1: Biến đổi các vị từ mag_p c1a( )_ thành hạng thức

_ 1( )

p x , trong đó x_ bao gồm các hằng trong c_ tƣơng ứng với ký tự 'b' và các biến phân biệt tƣơng ứng với ký tự 'f' trong

. Tƣơng tự, biến đổi các vị từ mag_ p2 ( )d_ thành hạng thức

_

2( )

p y .

Bƣớc 2: Nếu tồn tại hợp nhất tử tổng quát nhất (mgu) của

_ 1( ) p x và _ 2( ) p y sao cho p1 chính là p2 thì kết luận vị từ _ 1 _ a( ) mag p c chứa vị từ _ 2 _ ( ) mag p d , ngƣợc lại thì _ 1 _ a( )

mag p c không chứa vị từ

_ 2

_ ( )

mag p d .

Định lý 3.6 [6] Thuật toán 3.4 là đúng đắn

Chứng minh: Rõ ràng nếu tồn tại mgu của

_ 1( ) p x và _ 2( ) p y sao cho _ 1( ) p x = _ 2( ) p y thì _ 1( ) p x chứa _ 2( )

p y , điều này có nghĩa mag_ p c1a( )_ chứa

_ 2

_ ( )

Để ý rằng phép hợp nhất trở nên đơn giản hơn nhiều nếu một trong hai vị từ cần hợp nhất là nguyên tố nền. Trong trƣờng hợp này thì phép hợp nhất thu hẹp thành phép đối sánh hạng thức.[]

Ví dụ 3.10 Xét hai vị từ mag_pbff(a) và mag_pbbf(a, b). Ta có mag_pbff(a) tƣơng ứng với đích ?p(a,X,Y) và mag_pbbf(a, b) tƣơng ứng với đích ?p(a, b, Z), mặt khác hợp nhất tử tổng quát nhất của p(a, X, Y) và p(a, b, Z) là {X/b, Y/Z} và p(a, X, Y) = p(a, b, Z). Vì vậy mag_pbff(a) chứa mag_pbbf(a, b).

Ví dụ 3.11 Xét chƣơng trình Datalog P trong ví dụ 3.8:

r1: totien(X, Y) bome(X, Y)

r2: totien(X, Y) bome(X, Z) totien(Z, Y)

Trong đó: bome là vị từ EDB, totien là vị từ IDB. Giả sử quan hệ đối với vị từ EDB

bome gồm các bộ (a, b), (b, c), (c, d). Câu truy vấn ?totien(X, d).

Sử dụng chiến lƣợc truyền thông tin từ trái sang phải, sau giai đoạn 1 của phép biến đổi ma tập ta nhận đƣợc chƣơng trình tô điểm Pad

sau đây: ar1: totienfb(X, Y) bome(X, Y)

ar2: totienfb(X, Y) totienfb(Z, Y) bome(X, Z) ar3: totienbb(Z, Y) bome(X, Y)

ar4: totienbb(X, Y) totienbb(Z, Y) bome(X, Z) Đích truy vấn có tô điểm: ?totienfb(X, d)

Sau giai đoạn 2 của phép biến đổi ma tập, ta nhận đƣợc chƣơng trình: mar1: totienfb(X, Y) mag_totienfb(Y) bome(X, Y)

mar2: totienfb(X, Y) mag_totienfb(Y) totienbb(Z, Y) bome(X, Z) mar3: mag_totienbb(Z, Y) mag_totienfb(Y) bome(X, Z)

mar4: totienbb(X, Y) mag_totienbb(Z, Y) bome(X, Y)

mar5: totienbb(X, Y) mag_totienbb(X, Y) totienbb(Z, Y) bome(X, Z) mar6: mag_totienbb(Z, Y) mag_totienbb(X, Y) bome(X, Z)

mar7: mag_totienfb(d)

Áp dụng thuật toán nửa ngây thơ cho chƣơng trình MPa d

này, ta nhận đƣợc: Bƣớc 1: mag_totienfb(d) đƣợc tạo ra.

Bƣớc 2: totienfb(c, d), mag_totienbb(b, d), mag_totienbb(c, d), mag_totienbb(d, d) đƣợc thêm vào.

Bƣớc 3: totienbb(c, d) đƣợc thêm vào.

Bƣớc 4: totienbb(b, d), totienfb(b, d) đƣợc thêm vào. Bƣớc 5: totienbb(a, d) đƣợc thêm vào.

Bƣớc 6: Kết thúc, ta nhận đƣợc lời giải câu truy vấn (c, d), (b, d), (a, d).

Rõ ràng các vị từ mag_totienbb(b, d), mag_totienbb(c, d), mag_totienbb(d, d) đƣợc tạo ra ở bƣớc 2 là chứa trong vị từ magic biểu diễn câu truy vấn ban đầu

mag_totienfb(d), vì vậy chúng là dƣ thừa và không cần phải tính.

Tóm lại, tính toán dƣ thừa trong các thuật toán định giá câu truy vấn trên chƣơng trình viết lại bởi phép biến đổi ma tập sẽ tránh đƣợc bằng cách kết hợp thêm thuật toán kiểm tra vị từ magic đƣợc tạo ra ở mỗi bƣớc có chứa trong vị từ magic đã tạo ra ở bƣớc trƣớc hay không, nếu có thì ta loại bỏ nó.

3.3.3.2. Kết hợp các chiến lƣợc Sips trong quá trình định giá chƣơng trình

Mag_Pad

Chƣơng trình Mag_Pad

thƣờng đƣợc định giá bởi các thuật toán lặp kiểu dƣới lên, các thuật toán này đã không xem xét số các sự kiện đƣợc phát sinh trong quá trình định giá câu truy vấn, tức là số các sự kiện đƣợc tạo ra trong mỗi bƣớc lặp. Trong mỗi bƣớc lặp nếu ta chọn đƣợc một chiến lƣợc truyền thông tin “tốt” thì có thể giảm bớt sự phát sinh các sự kiện dƣ thừa và đạt đƣợc hiệu quả tối ƣu. Điều này thƣờng không thể nhận đƣợc trên chƣơng trình Mag_Pad

theo chiến lƣợc truyền thông tin chọn trƣớc. Vấn đề đặt ra trong việc định giá câu truy vấn là làm thế nào tránh đƣợc việc chọn một chiến lƣợc Sips kém hiệu quả trong khi lại không biết đƣợc một chiến lƣợc Sips nào tốt nhất. Tuy nhiên, ta có thể có những thông tin bổ sung về số sự kiện có liên

quan trong suốt quá trình định giá câu truy vấn. Trong việc xác định một chiến lƣợc Sips ở mỗi bƣớc lặp, ta cần xem xét một số vấn đề sau:

Các vị từ magic có thể chứa các vị từ magic khác, chẳng hạn mag_pbf(a) chứa

mag_pbb(a, k). Nghĩa là, với một tập quy tắc magic đã cho mà ở đó các truy vấn con

mag_pbf(a) và mag_pbf(a, k) đƣợc tạo ra trong suốt quá trình định giá, tất cả câu trả lời đối với truy vấn con thứ hai cũng sẽ đƣợc tạo ra bởi truy vấn con đầu tiên (tổng quát hơn). Vì vậy, các truy vấn con mag_pbf(a, _) không cần phải đƣợc định giá trong tập quy tắc này.

Các quy tắc ban đầu chỉ nên đƣợc xem xét lại sau khi một số khá lớn các sự kiện đƣợc phát sinh. Nhƣ vậy, chúng ta cần có một tiêu chuẩn chọn để xác định vào thời điểm nào thì nên thay đổi sang một chiến lƣợc Sips khác tốt hơn.

Ví dụ 3.12 Xét chƣơng trình Datalog P trong ví dụ 3.8

r1: totien(X, Y) bome(X, Y)

r2: totien(X, Y) bome(X, Z) totien(Z, Y) Câu truy vấn là ? totien(a, Y).

Hai chiến lƣợc truyền thông tin có thể đƣợc chọn để định giá các đích con trong thân quy tắc của totien là từ trái sang phải và từ phải sang trái.

Dùng chiến lƣợc trái sang phải ta nhận đƣợc tập các quy tắc sau:

totienbf(X, Y) mag_totienbf(X) bome(X, Y)

totienbf(X, Y) mag_totienbf(X) bome(X, Z) totien(Z, Y)

mag_totienbf(Z) mag_totienbf(X) bome(X, Z)

Dùng chiến lƣợc phải sang trái ta nhận đƣợc tập các quy tắc sau:

totienbf(X, Y) mag_totienbf(X) bome(X, Y)

totienbf(X, Y) mag_totienbf(X) totien(Z, Y) bome(X, Z)

mag_totienff mag_totienbf(X)

totienff(X, Y) mag_totienff totien(Z, Y) bome(X, Z) Hai chiến lƣợc này dẫn đến các tập truy vấn con Q1

= {mag_totienbf} và Q2 = {mag_totienbf, mag_totienff}. Trong Q2 truy vấn con mag_totienff chứa truy vấn con

mag_totienbf. Nhƣ vậy việc chọn chiến lƣợc Sips từ phải sang trái để định giá các đích con dẫn đến câu truy vấn ?totien(X, Y) và kiểm tra a có thuộc X không? Tuy nhiên, để ý rằng mag_totienff chứa, mag_totienbf, vì vậy thuộc chiến lƣợc từ trái sang phải là tốt hơn chiến lƣợc từ phải sang trái.

3.3.4. Phƣơng pháp ma tập cải tiến [6]

Vào: Chƣơng trình Datalog P và câu truy vấn q.

Ra: Câu trả lời truy vấn.

Phƣơng pháp

1. Tô điểm chƣơng trình Datalog đã cho thành chƣơng trình tô điểm Pad

theo thuật toán tô điểm chƣơng trình.

2. Biến đổi chƣơng trình P thành chƣơng trình Mag_Pad. 3. Định giá chƣơng trình Mag_Pad

bằng thuật toán dƣới lên nhƣ nửa ngây thơ, trong đó ở mỗi bƣớc lặp có kiểm tra quan hệ bao hàm giữa các vị từ magic đƣợc tô điểm để hạn chế tính toán dƣ thừa và một chiến lƣợc truyền thông tin sẽ đƣợc chọn dựa vào kích thƣớc nhỏ nhất của các quan hệ của các vị từ đƣợc tạo ra tại thời điểm đó.

Định lý 3.7 [6] Phƣơng pháp ma tập cải tiến là đúng đắn và hiệu quả hơn phƣơng pháp

ma tập.

Chứng minh: Tính đúng đắn của thuật toán đƣợc suy ra từ định lý 3.5 và 3.6. Tính hiệu quả của phƣơng pháp ma tập cải tiến đƣợc thể hiện ở chỗ: trong quá trình định giá chƣơng trình Mag_Pad, ở mỗi bƣớc lặp có kiểm tra các quan hệ bao hàm giữa các vị từ magic để hạn chế tính toán dƣ thừa, đồng thời có xem xét số các bộ của các quan hệ đƣợc tạo ra tại thời điểm đó. Từ đó kết hợp đƣợc các chiến lƣợc truyền thông tin khác nhau trong từng bƣớc lặp, điều này giảm đƣợc chi phí tính toán đối với các phép nối trong thân quy tắc trong quá trình định giá.[]

3.4. Kết luận

Chƣơng 3 đã giới thiệu một số kết quả ban đầu trong quá trình nghiên cứu việc tối ƣu hoá câu truy vấn trên chƣơng trình Datalog, cụ thể đã phân tích phƣơng pháp chính nhằm ngăn chặn các vòng lặp vô hạn khi tìm kiếm các lời giải của câu truy vấn: phƣơng pháp biến đổi ma tập. Một số hạn chế của phép biến đổi ma tập trên một số lớp con của chƣơng trình Datalog cũng đã đƣợc thảo luận chi tiết, từ đó trình bày một cải tiến trên các lớp chƣơng trình này. Phần cuối chƣơng 3 là một cải tiến thuật toán ma tập trên chƣơng trình Datalog.

KẾT LUẬN

Luận văn nghiên cứu về chƣơng trình Datalog trong mối quan hệ giữa logic và CSDL suy diễn. Các vấn đề đƣợc trình bày trong luận văn là:

 Phân tích chi tiết hai phƣơng pháp chính nhằm ngăn chặn các vòng lặp vô hạn trong quá trình tìm kiếm lời giải của câu truy vấn đối với chƣơng trình Datalog là phƣơng pháp định giá bảng và phƣơng pháp biến đổi ma tập.

 Xây dựng thuật toán định giá chƣơng trình Datalog theo các thành phần liên thông mạnh.

 Thuật toán ma tập cải tiến trên hai lớp con của chƣơng trình Datalog là chƣơng trình Datalog tuyến tính phải và chƣơng trình không đệ qui.

 Thuật toán ma tập cải tiến trên chƣơng trình Datalog.

Các vấn đề có thể tiếp tục nghiên cứu:

 Nghiên cứu CSDL suy diễn theo cách tiếp cận hƣớng đối tƣợng.

TÀI LIỆU THAM KHẢO A. TÀI LIỆU THAM KHẢO TIẾNG VIỆT

[1] Lê Mạnh Thạnh, Trƣơng Công Tuấn. Một số phương pháp xác định mô hình của chương trình Datalog và mở rộng của nó. Kỷ yếu Hội thảo Quốc gia về Tin học ứng dụng, Quy Nhơn 6/1998.

[2] Lê Mạnh Thạnh, Trƣơng Công Tuấn. Một số phương pháp ước lượng câu truy vấn trong cơ sở dữ liệu suy diễn, Tạp chí Khoa học Đại học Huế, số 7/2001, 49-59.

[3] Hồ Thuần, Lê Mạnh Thạnh, Trƣơng Công Tuấn. Phân tích một số phương pháp xử lý vòng lặp vô hạn trong quá trình ước lượng câu truy vấn đối với chương trình Datalog. Tạp chí Tin học và Điều khiển học, tập 17, số 4, 2001, 87-96.

[4] Hồ Thuần, Lê Mạnh Thạnh, Trƣơng Công Tuấn. Tối ưu truy vấn trên chương trình Datalog. Kỷ yếu Hội nghị Toán Toàn quốc, Huế 9/2002.

[5] Lê Mạnh Thạnh, Trƣơng Công Tuấn. Thuật toán ma tập cải tiến để ước lượng câu truy vấn đối với lớp con của chương trình Datalog. Chuyên san Tạp chí Bƣu chính Viễn thông, Số 8, 2002, 78-84.

[6] Lê Mạnh Thạnh, Trƣơng Công Tuấn. Một số cải tiến đối với phép biến đổi ma tập để tối ưu câu truy vấn trên chương trình Datalog. Chuyên san Tạp chí Bƣu chính Viễn thông, Số 9, 2003, 77-81.

[7] Lê Mạnh Thạnh, Trƣơng Công Tuấn. Tối ưu hóa câu truy vấn trong cơ sở dữ liệu suy diễn bằng phép biến đổi ma tập. Tạp chí Tin học và Điều khiển học, tập 19, số 3, 2003, 233-242.

[8] Hồ Thuần, Lê Mạnh Thạnh, Trƣơng Công Tuấn, Ngữ nghĩa chương trình Datalog có chứa phủ định dựa trên logic ba giá trị. Kỷ yếu Hội thảo Khoa học quốc gia “Nghiên cứu phát triển và ứng dụng Công nghệ thông tin và Truyền thông” (ICT.Rda), 2/2003.

[9] Trƣơng Công Tuấn (2003), Nghiên cứu Datalog trong mối quan hệ giữa Logic và cơ sở dữ liệu, Luận án Tiến sĩ Toán học, Viện Công nghệ thông tin, Hà Nội.

[10] Ullman J.D., Nguyên lý các hệ cơ sở dữ liệu và cơ sở tri thức, Biên dịch: Trần Đức Quang, Tập 1, 2, 3, NXB Thống kê 2000.

B. TÀI LIỆU THAM KHẢO TIẾNG ANH

[11] Apt K. R., Blair H. A., and Walker A., Towards a Theory of Declarative Knowledge, In J. Minker, editor, Foundation of Deductive Databases and Logic Programming, pages 89-142, Morgan Kaufmann, 1988.

[12] Apt K. R., Logic Programming, Elservier Science Publishers, 1990.

[13] Beeri C., Ramakrishnan R., On the Power of Magic, Procceding of the ACM Symposium on the Principles of Databases Systems, CA, 1987.

[14] Ceri S., Gottlob G., Tanca L., Logic Programming and Databases, Springer- Verlag Berlin Heidelberg, 1990.

[15] Chen W. and Warren D. S., Tabled Evaluation with Delaying for General Logic Programs, JACM, 43(1), 20-74, 1/1996.

[16] Clement T.Yu, Weiyi Meng, Principles of Database Query Processing for Advanced Applications, Morgan Kaufmann Publisders, Inc, 1998

[17] Gallaire H., Minker J., Nicolas J., Logic and Databases: A Deductive Approach, In Computing Survey, Vol 16, 1984.

[18] Gelfond M., Lifschitz V., The Stable Model Semantics for Logic Programming, In R. Kowalski and K. Bowen, Editors, Proceedings of the Fifth Logic Programming Symposium, 1988, 1070-1080.

[19] Loyd J. W., Foundations of Logic Programming, First Edition. Springer-Verlag, New York, 1984.

[20] Przymusinski T. C., On the declarative semantics of stratified deductive databases and logic programs, In J. Minker, editor, Foundation of Deductive Databases and Logic Programming, pages 193-216, Morgan Kaufmann, 1988.

[21] Ramakrishnan R., Magic Templates: A Spellbinding Approach to Lgic Programs, Journal of Logic Programming 11(1991), 189-216.

[22] Robert M.Colomb, Deductive Databases and Their Application, Taylor& Francis, 1998.

[23] Subrata Kumar Das, Deductive Databases and Logic Programming, Addision Wesley Ed, 1992.

[24] Ullman J. D., Principles of Database and Knowledge-Base Systems, Computer Science Press, 1989.

[25] Van Emden M. and Kowalski R., The semantics of Predicate Logic as a Programming Language, Journal of the ACM, 23(4), 733-742, 1976.

PHỤ LỤC

ĐỊNH GIÁ CHƢƠNG TRÌNH DATALOG BẰNG

MỘT SỐ THUẬT TOÁN DƢỚI DẠNG ĐƠN GIẢN, DỄ CÀI ĐẶT

Hiện nay các vấn đề cơ sở dữ liệu suy diễn đang đƣợc rất nhiều nhà khoa học quan tâm, nghiên cứu trong đó có các phƣơng pháp định giá một chƣơng trình Datalog. Phƣơng pháp định giá dƣới lên (Bottom-up): Đề cập đến hai thuật toán ngây thơ (naive) và nửa ngây thơ (semi-naive). Thuật toán Jacobi và Gauss-Seidel là hai dạng đại số của thuật toán ngây thơ.

Phƣơng pháp định giá trên xuống (Top-down): Thuật toán truy vấn truy vấn con (Query-Subquery).

A. Thuật toán ngây thơ (naive)

Dạng đại số của thuật toán Naive định giá lời giải của một hệ các quy tắc Datalog theo quan điểm lý thuyết điểm bất động. Chúng ta xem xét hai dạng đại số của thuật toán Naive là thuật toán Jacobi và thuật toán Gauss-Seidel.

1. Thuật toán Jacobi

Là một dạng đại số của thuật toán Naive dùng để ƣớc lƣợng tập chƣơng trình Datalog từ các phƣơng trình quan hệ (thu đƣợc từ chƣơng trình Datalog trong đó :- đƣợc thay bằng dấu =)

Ri = Ei(R1, ..., Rn) (i=1, ..., n)

Trƣớc tiên, các Ri đƣợc gán nhãn rỗng. Sau mỗi vòng lặp các giá trị tƣơng ứng với các Ri lần lƣợt đƣợc thêm vào. Vòng lặp kết thúc khi khô ng có Ri nào thay đổi giá trị trong 2 vòng lặp liên tiếp nghĩa là tất cả các Ri đều đạt đến điểm bất động.

Thuật toán Jacobi đƣợc mô tả nhƣ sau:

Input: Một hệ phƣơng trình đại số và một cơ sở dữ liệu ngoại diên EDB.

Phƣơng pháp: For i:=1 to n do Ri:= ; Repeat cond:=true; For i:=1 to n do Si:=Mi; For i:=1 to n do Begin Ri:=Ei{M1, ..., Mn}; If Ri Mi then cond:=false; End; Until cond;

For i:=1 to n do Output(Ri).

2. Thuật toán Gauss-Seidel Mô tả thuật toán

Input: Một hệ phƣơng trình đại số và một cơ sở dữ liệu ngoại diên EDB.

Output: Các giá trị của các quan hệ biến R1, ..., Rn.

Phƣơng pháp: For i:=1 to n do Ri:= ; Repeat cond:=true; For i:=1 to n do Begin

Một phần của tài liệu Datalog và cơ sở dữ liệu suy diễn (Trang 79)

Tải bản đầy đủ (PDF)

(98 trang)