Phép diễn giải này chính là điều chúng ta đa ra trong các quy tắc của thí dụ 1.2, trong đó chúng ta đã trình bày rằng sự kiện boss có thể chứng minh đợc từ các quy tắc 1 và 2, cùng với c
Trang 1Mụclục trang
1.3.1.1 Phép diễn giải quy tắc theo lý thuyết chứng minh– 11
1.3.1.2 Phép diễn giải quy tắc theo lý thuyết mô hình– 12
Chơng II Ước lợng quy tắc không đệ quy
21 2.2.1 Quan hệ đợc định nghĩa từ phần thân của quy tắc 22
Trang 22.2.3 Tính các quan hệ cho các vị từ không đệ quy 29
2.2.4 Tính toán ý nghĩa của các quy tắc đệ quy 31
2.2.4.1 Điểm cố định của các phơng thức DATALOG 32
2.2.4.2.Giải các phơng trình datalog đệ quy 36
2.2.5 Ước lợng gia tăng cho các điểm cố định nhỏ nhất 42
2.2.6 Phép phủ định trong phần thân quy tắc và đại số quan hệ Logic 46
2.2.6 1 Tính không duy nhất của điểm cố định cực tiểu 52
Trang 4Phần I Lời nói đầu
Trong công nghệ lập trình truyền thống, ta xây dựng chơng trình bằng cách xác định các thao tác phải thực hiện trong việc giải quyết một bài toán, có nghĩa là, bằng việc nói rằng bài toán đợc giải nh thế nào (how) Các giả thiết làm cho chơng trình thờng đợc để không tờng minh
Trong lập trình Logic, ta xây dựng một chơng trình bằng cách mô tả lĩnh vực ứng dụng của nó, có nghĩa là bằng cách nói rằng cái gì (what) là đúng Các giả thiết
là hiển, còn việc chọn các thao tác là ẩn
Lập trình Logic là sử dụng logic tơng tự để định nghĩa cho công thức thực hiện trên máy tính Đại diện là ngôn ngữ Prolog, đây là ngôn ngữ xử lý các kí hiệu
và có nhiều kiểu cấu trúc dữ liệu động giúp cho việc suy diễn và lập luận ch ơng trình Ngời đặt nền móng là Kowalski ngời Balan
Logic là ngôn ngữ về lập luận khả năng suy diễn đúng, sai và nó tập trung vào việc xác định mối quan hệ giữa các thành phần trong mệnh đề để xây dựng thành phơng pháp suy luận Từ đó ta có thể thấy đợc các chơng trình Logic đều thiên về phát triển trí tuệ nhân tạo
Một mô tả nh vậy sẽ trở thành một chơng trình khi nó đợc tổ hợp với một thủ tục suy diễn độc lập - ứng dụng Khi áp dụng thủ tục đó cho một mô tả của một lĩnh vực ứng dụng, máy tính có thể rút ra các kết luận về lĩnh vực ứng dụng và trả lời các câu hỏi ngay cả khi các câu trả lời không đợc ghi dới dạng hiển trong mô tả Năng lực đó là cơ sở cho công nghệ lập trình Logic
Hình 1 minh hoạ cấu hình của một hệ lập trình logic tiêu biểu
Trung tâm của hệ là một thủ tục suy diễn độc lập - ứng dụng thu nhận các câu hỏi của ngời dùng, truy nhập các sự kiện trong cơ sở tri thức của nó (cái mô tả) và
Trang 5rút ra các kết luận thích hợp Nh vậy, hệ thống có khả năng trả lời các câu hỏi của ngời dùng và trong một số trờng hợp ghi lại các kết luận của nó vào trong cơ sở tri thức (CSTT) của nó.
Bố cục luận văn bao gồm:
- Chơng II: Ước lợng quy tắc không đệ quy
- Chơng III: Mở rộng về Logic
- Chơng IV: Ngôn ngữ PROLOC và lập trình PROLOG
Trang 6Phần II Nội dung
Vì thủ tục suy diễn đợc dùng bởi một chơng trình Logic là độc lập với CSTT
mà nó truy nhập, cho nên việc triển khai chơng trình chung quy là việc triển khai một CSTT thích hợp nghĩa là tìm một mô tả thích hợp của một ứng dụng Điều này
có nhiều cái lợi, chủ yếu nhất là sự triển khai (phát triển) tăng trởng Chừng nào phát hiện đợc một thông tin mới về một lĩnh vực ứng dụng (hoặc có thể vừa đợc phát hiện
là quan trọng cho bài toán mà chơng trình đợc thiết kế để giải nó) thì thông tin đó có thể đợc bổ sung vào CSTT của chơng trình và nh vậy nó cũng đợc sát nhập vào đúng chơng trình mà không cần triển khai thuật toán hay duyệt lại
Một cái lợi thứ hai là sự giải thích Với bản chất tiến hành dần (từng bớc, từng cái một) của suy luận tự động, ta dễ dàng lu dữ một bản ghi các bớc thực hiện trong việc giải một bài toán, đa bản ghi đó cho ngời dùng, đồng thời chơng trình có khả năng giải thích nó giải bài toán đó nh thế nào và tại sao nó tin kết quả đó là đúng Những kiểu giải thích nh vậy đặc biệt quý giá đối với ngời lập trình để gỡ lỗi các ch-
Trang 7Chúng ta sẽ giới thiệu ngắn gọn các ký hiệu của Prolog cho các quy tắc logic Các câu lệnh của Prolog đợc cấu tạo từ những công thức nguyên tử (atomic formula), nó chứa một ký hiệu vị từ (Predicate symbol) đợc dùng nh một tên thủ tục với các đối (argument) Những đối này có thể đợc cấu tạo từ các hằng (constant, còn gọi là nguyên tử, atom), các biến (variable), ký hiệu hàm (function symbol); ký hiệu hàm đợc sử dụng với các đối số giống nh chúng ta gọi một hàm trong một ngôn ngữ lập trình thông thờng Các ký hiệu vị từ đợc coi nh sẽ trả về kết qủa True hoặc False; nghĩa là chúng là những hàm Bool Ngợc lại các ký hiệu hàm có thể đợc trả về một giá trị thuộc một kiểu bất kỳ.
Theo quy tắc Prolog, ký hiệu vị từ, ký hiệu hàm, và các hàm bắt đầu bằng một chữ thờng, với ngoại lệ là hằng cũng có thể là số nguyên Các biến phải bắt đầu bằng chữ hoa Các câu lệnh logic thờng, gọi là các quy tắc (rule)1, thờng sẽ viết dới dạng mệnh đề Horn, đó là những câu lệnh thuộc dạng: “Nếu A1 và A2 và A… n đúng thì B đúng” Cú pháp Prolog cho một câu lệnh là:
B: - A1 , A2 , ,A… n
Ký hiệu: - đợc đọc là “nếu” Chú ý dấu chấm Cuối đợc làm dấu kết thúc cho quy tắc Nếu n = 0 thì quy tắc khẳng định B luôn đúng và chúng ta viết
B
Thí dụ: 1.0: Hai quy tắc sau có thể đợc diễn giải nh là một định nghĩa quy
S(X) là số nguyên đi sau X, nghĩa là số nguyên lớn hơn X một giá trị Do đó, các quy tắc:
sum (X, 0, X)
sum (X, s(Y), s(Z)) :- sum (X, Y, Z)
Nói rằng X+0 =X và khẳng định nếu X + Y = Z thì X + (Y+1)= Z+1
Thí dụ 1.1: Chúng ta cần quan tâm đến các quy tắc Logic diễn tả các thông
tin về dữ liệu trong CSDL Chúng ta nên nhận xét sự giống nhau giữa khái niệm vị
từ và các đối của nó với tên quan hệ và các thuộc tính của nó Nghĩa là chúng ta có
Trang 8thể xem một vị từ là đúng đối với những đối nếu và chỉ nếu những đối này tạo ra một bộ của quan hệ tơng ứng Chẳng hạn chúng ta có thể định nghĩa khung nhìn SAFE - EMPS bằng quy tắc Logic sau:
Safe-emps (N, D, A) :- employees (N, D, S, A)
Để diễn giải quy tắc trên, chúng ta phải nhớ rằng EMPLOYEES có 4 trờng : NAME, DEPT, SALARY, và ADDRESS Quy tắc nói rằng với mọi nhân viên, tên
tồn tại một giá trị lơng S, sao cho (N,D,S,A) là một sự kiện của vị từ employees Chú
ý rằng nói chung một biến nh S xuất hiện ở vế phải nhng không ở vế trái của ký hiệu :- đều đợc xử lý nh một lợng từ tồn tại; một cách không hình thức, khi đọc quy tắc chúng ta đọc “tồn tại S” sau khi đọc “nếu” tơng ứng với ký hiệu :-
Một thí dụ khác, làm thế nào để diễn tả một thông tin về dữ liệu theo Logic? Giả sử rằng chúng ta đã có quan hệ EMPLOYEES với các thuộc tính duy nhất là NAME, và DEPT Chúng ta cũng sử dụng quan hệ DEPARTMENTS với các thuộc tính DEPT và MANAGER nh đã làm ở thí dụ trên Thế thì có thể định nghĩa vị từ
manager(E, M) với ý nghĩa trực quan là trởng phòng M quản lý nhân viên E bằng
cách:
Manager(E, M) :- employees(E, D) , departments (D, M) (1.1)Nghĩa là (E, M) là một sự kiện của manager nếu tồn tại một phòng ban D sao cho (E, D) là một sự kiện của employees và (D, M) là một sự kiện của departments
Về bản chất chúng ta đã dùng quy tắc Logic trên để tạo ra khung nhìn manager Các câu vấn tin đợc trình bày trong hình 1.1 và 1.2, là tìm trởng phòng của Clark Kent có thể đợc diễn tả theo khung nhìn này hết sức đơn giản:
Các giá trị của X làm cho (1.2) đúng đợc tìm ra Thuật toán mà bản chất giống
nh Thuật toán trong hình 1.1 và hình 1.2, nhng quy tắc (1.1) đóng vai trò quan trọng trong việc cho phép hệ thống diễn giải ý nghĩa của câu vấn tin Theo nghĩa ít chặt chẽ hơn, chúng ta có thể giả sử rằng (1.1) biểu diễn một “tri thức” về mối liên hệ manages
1.2.2 Khả năng diễn đạt của logic
Trang 9Chúng ta đã biết rằng SQL và ngôn ngữ DML tơng tự không đủ mạnh để tính
sử dụng các ký hiệu hàm có tất cả khả năng của một máy Turing; nghĩa là chúng có thể diễn tả một phép tính bất kỳ diễn tả viết bằng một ngôn ngữ lập trình thông th-ờng Thậm chí các quy tắc không dùng đến các ký hiệu hàm (một ngôn ngữ chúng
ta sẽ gọi là “datalog” trong chơng II) cũng có khả năng diễn tả các phép tính hơn cả khả năng của DML, nh đợc trình bày trong ví dụ sau
Thí dụ 1.2: Giả sử chúng ta có quan hệ (hoặc vị từ) manager(E, M), nhận giá
trị đúng khi nhân viên E chịu sự trực tiếp của trởng phòng M Chúng ta có thể định nghĩa một vị từ khác là boss(E, B), nhận giá trị đúng khi B là “xếp” của E, hoặc xếp gián tiếp của B, tức có nghĩa là, boss là bao đóng bắc cầu (transitive closure) của manages Vị từ boss có thể đợc diễn tả theo mệnh đề Horn nh sau:
(1) boss(E, M) :- manages(E, M)
(2) boss(E, M) :- boss(E, N) , manages(N, M)
Trên đây là một thí dụ điển hình về việc sử dụng các quy tắc logic một cách
đệ quy, nghĩa là nó đợc dùng để định nghĩa một vị từ nh boss theo chính nó Để xác
định rằng tập các quy tắc logic định nghĩa một điều gì đó, chúng ta cần phải hình thức hoá ý nghĩa của các quy tắc, và chúng ta sẽ làm điều này trong chơng II Còn bây giờ việc thảo luận ngữ nghĩa sau đây sẽ cho chúng ta thấy đợc nhiều điều thú vị
về ngữ nghĩa của quy tắc logic
Trớc tiên chúng ta phải chứng minh rằng nếu các quy tắc (1) và (2) cho boss(e,b) đúng thì b thực sự là sếp của e Nghĩa là chúng ta phải chứng minh rằng có một dây chuyền quản lý từ e đến b, nói cách khác là một chuỗi hai hoặc nhiều cá thể
c1, c… n trong đó e=c1, b=cn và vị từ manages (ci, ci+1) là đúng với mọi i thoả 1≤i<n nếu chúng ta xác định boss (e, c) đúng bằng quy tắc (1), thì manages (e, b) phải
đúng, do đó chắc chắn b là “xếp” nào đó của e; nghĩa là có một dây chuyền quản lý với n=2 Nếu không thì chúng ta phải xác định boss(e,b) đúng bằng quy tắc (2) Khi
đó phải có một cá thể c sao cho sự kiện boss(e, c) đã đợc xác dịnh là đúng (vì vậy c thuộc dây chuyền quản lý ở trên e), và sự kiện manages (c, b) cũng vậy Thế thì b
2 Về hình thức, bao đóng bắc cầu của một quan hệ hai ngôi r là quan hệ nhỏ nhất s có bao hàm r và có tính bắc
Trang 10phải thuộc dây chuyền quản lý ở trên e nên suy diễn của chúng ta về boss(e, b) là
đúng
Ngợc lại, chúng ta phải chứng minh rằng khi b thuộc dây chuyền quản lý ở trên e, cũng ta có thể suy ra boss(e, b) đúng Ta dùng phép quy nạp trên chiều dài của dây chuyền quản lý e = c1, , c… n= b Trờng hợp cơ bản n =2, nếu b là trực tiếp của e thì chúng ta có thể suy ra kết quả ở trên bằng quy tắc (1) Nếu có một chuỗi dài hơn 1 từ e đến b, gọi là:
e = c1 , , c… n = bthì theo giả thiết quy nạp, chúng ta có thể suy ra boss (e,cn-1) và manages (cn-1, b) đều
đúng Do vậy chúng ta có thể dùng quy tắc (2) để suy ra boss (e, b) đúng
1.3 Logic mô hình dữ liệu–
1.3.1 Ngữ nghĩa của các quy tắc logic
Chúng ta đã xét phần 1.1 và đã giới thiệu không hình thức về các quy tắc logic if then.… Cụ thể là chúng ta đã thảo luận các quy tắc:
(1) boss (E, M) :- manages (E, M)
(2) boss (E, M) :- boss (E, N) , manages (N, M)
trong thí dụ 1.2 ở đó chúng ta đã giải thích ý nghĩa trực quan của các quy tắc này,
đó là “khi thay các biến E, N và M bằng các hằng, nếu kết quả làm cho vế phải đúng thì vế trái cũng phải đúng” Tổng quát, các quy tắc định nghĩa những tình huống
đúng của một số vị từ, trong trờng hợp này là boss, theo các vị từ khác đợc định nghĩa bởi các quan hệ CSDL, chẳng hạn manages
Có ba cách khác nhau để xác định “ngữ nghĩa” của các quy tắc Trong những trờng hợp đơn giản nh trên, tất cả các phơng pháp đều cho ra cùng một kết quả Khi cho phép nhiều loại quy tắc phức tạp hơn, chúng ta sẽ có nhiều cách tiếp cận khác nhau, dẫn đến nhiều câu trả lời khác nhau, bởi vì các quy tắc logic, vốn có bản chất khai báo, chỉ xác định các đặc tính của câu trả lời Trong những trờng hợp khó, không có gì đảm bảo rằng chỉ có một câu trả lời duy nhất đợc tạo ra, hoặc cũng không đảm bảo tìm đợc một cách nào đó hợp lý để biến đổi chơng trình khai báo thành một chuỗi các bớc cho phép “tính” đợc câu trả lời
1.3.1.1 Phép diễn giải quy tắc theo lý thuyết chứng minh–
Trang 11Đây là một trong ba phép diễn giải (interpretation)3 cho các quy tắc logic, là phép diễn giải theo tiêu đề đợc sử dụng trong một phép chứng minh Nghĩa là, từ những sự kiện trong CSDL, chúng ta đi tìm những sự kiện có thể chứng minh đợc bằng cách sử dụng các quy tắc theo mọi cách khả hữu Phép diễn giải này chính là
điều chúng ta đa ra trong các quy tắc của thí dụ 1.2, trong đó chúng ta đã trình bày rằng sự kiện boss có thể chứng minh đợc từ các quy tắc (1) và (2), cùng với các tập
sự kiện manages đã biết, chúng chính là điều chúng ta mong muốn nếu boss đợc diễn giải nh là “một vị từ trong hệ thống phân cấp quản lý”
Trong những trờng hợp đơn giản nh thí dụ 1.2, là trờng hợp tất cả các tiêu đề
kiện, thế thì chúng ta thấy rằng tất cả các sự kiện suy ra đợc nhờ các quy tắc này đều
có thể suy ra đợc bằng cách áp dụng các quy tắc giống nh chúng ta đã thực hiện trong thí dụ đó Nh vậy chúng ta chỉ sử dụng các quy tắc bằng cách thay thế các sự kiện đã đợc chứng minh hoặc đã đợc cho trớc vào vế phải rồi chứng minh các sự kiện kết quả ở vế trái4 Tuy nhiên khi có phép phủ định, tập các sự kiện có thể chứng minh đợc thờng không phải là những sự kiện mà theo trực quan chúng ta muốn cho
là “ý nghĩa” của các quy tắc logic Vì vậy ở đây chúng ta sẽ định nghĩa “ý nghĩa theo lý thuyết chứng minh” của tập các quy tắc là tập các sự kiện có thể suy diễn từ các sự kiện cho trớc hoặc từ các sự kiện có sẵn trong CSDL bằng cách chỉ sự dụng các quy tắc theo chiều “đi tới”, nghĩa là bằng cách suy ra vế trái (kết luận) từ vế phải (giả thiết)
1.3.1.2 Phép diễn giải quy tắc theo lý thuyết mô hình–
Theo quan điểm này, chúng ta coi các quy tắc là công cụ định nghĩa một thế giới khả hữu hoặc là “mô hình” Phép diễn giãi của một tập các vị từ sẽ gán “tính chân thực” (đúng hoặc sai) cho mỗi tình huống có thể có của các vị từ này, trong đó
đối của các vị từ đợc chọn ra từ một miền vô hạn các hằng Thông thờng một phép diễn giải đợc biểu diễn bằng một tập các tình huống “đúng” của nó Để là một mô
3 Còn gọi là thể hiện (ND).
4 Chú ý rằng nếu có phép phủ định trong các tiên đề hoặc các sự kiện thì khẳng định vừa nêu là sai Thí dụ: nếu chúng ta còn quy tắc q :- p và sự kiệnphủ định ơ q, chúng ta có thể suy ra ơ p bằng cách áp dụng quy tắc theo
Trang 12hình của một tập các quy tắc, mỗi phép diễn giải phải làm cho các quy tắc đúng với mọi phép gán giá trị cho các biến trong mỗi quy tắc đợc lấy từ miền giá trị đã cho.
Thí dụ 2.1: Xét các quy tắc
(1) p(X) :- q(X)
(2) q(X) :- r(X)
và giả sử miền đang xét là các số nguyên Các quy tắc này khẳng định rằng với một
số nguyên nào đó, khi r đúng thì q cũng đúng và khi q đúng thì p cũng đúng
Một mô hình khả hữu mà chúng ta gọi là M1 : Cho r(1), q(1), p(1), q(2), p(2)
và p(3) tất cả đều đúng, đồng thời cho p, q, r sai với tất cả các đối khác Để chứng
đúng, vì vậy khẳng định “if q(1) then p(1)” đúng Cũng nh thế khi thay X =1 ở (2),
đúng, vì vậy quy tắc (2) lại đợc thoả Chúng ta cũng thu đợc các kết quả tơng tự khi thay X=3 trong quy tắc (1)
Khi thay X=3 quy tắc (2), hoặc thay các giá trị khác với các giá trị 1, 2, hoặc
3 vào một trong 2 quy tắc, chúng ta có tình huống cả giả thiết và kết luận đều sai,
thu đợc các khẳng định đúng, do đó đây thực sự là một mô hình
Ngợc lại, nếu chúng ta cho r(1) đúng và cho cả ba vị từ đều sai đối với tất cả các giá trị khác thì chúng ta không tạo ra đợc một mô hình Lý do là khi thay X=1 trong quy tắc (2), chúng ta đợc một giả thiết đúng và một kết luận sai Đó là một tổ hợp làm cho khẳng định if then … sai
Khi sử dụng các quy tắc để định nghĩa các phép toán trên CSDL, chúng ta sẽ xem một tình huống của một vị từ CSDL là đúng nếu và chỉ nếu quan hệ tơng ứng lu tình huống đó nh là một bộ Sau đó chúng ta mở rộng CSDL thành một mô hình theo tất cả các vị từ, và chúng ta có thể xem mô hình nh thế là một thế giới khả hữu đợc
định nghĩa bằng các quy tắc Chẳng hạn trong thí dụ 2.1, chúng ta có thể giả sử rằng
r là một vị từ CSDL, trong khi đó p và q đợc định nghĩa theo r Chúng ta cũng có thể giả sử rằng r(1) đúng, đồng thời r(X) sai với X khác 1 Thế thì mô hình
M1={r(1), q(1), p(1), q(2), p(2), p(3)}
Trang 13đợc mô tả trong thí dụ 2.1 là một thế giới khả hữu phù hợp với CSDL này.
biến đổi p(3) từ đúng thành sai trong M1 và kết quả vẫn là một mô hình
hình này cũng là mô hình chúng ta nhận đợc nếu dùng định nghĩa lý thuyết chứng minh của ý nghĩa các quy tắc Đó là, khởi đầu với các quy tắc (1) và (2) của thí dụ 2.1 và một sự kiện r(1) đúng, chúng ta có thể chứng minh q(1), p(1) đúng và không còn tình huống nào khác Tổng quát sự trùng hợp ngẫu nhiên này sẽ đợc coi là đúng
đối với các quy tắc datalog nếu chúng không chứa phép phủ định Khi xem phép phủ
định nh một phép toán mà chúng ta sẽ gặp trong các phần sau, thì ở đó không cần một cực tiểu duy nhất, và không một mô hình cực tiểu nào cần phải tơng ứng với tập các sự kiện mà chúng ta có thể chứng minh đợc từ các tập các quy tắc Đối với một
số quy tắc, chúng ta có thể giải quyết vấn đề này bằng cách định nghĩa một mô hình cực tiểu “hợp thị hiếu” nhng nói chung với các quy tắc khá phức tạp sẽ mau chóng làm cho vấn đề trở nên khó hiểu
là một mô hình Tuy nhiên trong nhiều trờng hợp thông thờng, Prolog sẽ thành công
Trang 14và tạo ra một mô hình cực tiểu duy nhất cho một tập các quy tắc khi các quy tắc này
đợc “chạy” nh một chơng trình Prolog
Trong chơng này chúng ta sẽ dùng một cách tiếp cận khác nhằm xử lý các quy tắc bằng tính toán Chúng ta sẽ chuyển các quy tắc thành một chuỗi các phép toán đại số quan hệ, và đối với các quy tắc datalog không có phép phủ định, chúng
ta có thể chỉ ra rằng chơng trình đợc tạo ra theo cách này luôn tính đợc mô hình cực tiểu duy nhất và vì thế nó là tập các sự kiện có thể chứng minh đ ợc từ CSDL này Khi cho phép sử dụng phép phủ định, chúng ta chỉ xét đến một trờng hợp gọi là phép phủ định “phân tầng”, rồi chứng minh rằng “lời giải” mà chơng trình tạo ra sẽ là một mô hình cực tiểu mặc dù không nhất thiết là mô hình cực tiểu duy nhất Tuy nhiên chúng ta cũng đa ra những lý giải khi chọn lựa một mô hình cực tiểu trong số các mô hình cực tiểu khả hữu
1.3.1.4 So sánh các ý nghĩa“ ”
Chúng ta sẽ có thể đặt ra câu hỏi rằng ý nghĩa nào là “đúng nhất” đối với các chơng trình logic Một nhà logic học sẽ không coi trọng ý nghĩa tính toán của các quy tắc, nhng vì mong muốn cài đặt các hệ thống cơ sở tri thức, việc tính toán có hiệu quả là quan trọng Chúng ta không thể dùng các quy tắc logic theo kiểu chơng trình trừ khi chúng ta có cách tính đợc kết quả, và một cách hiệu quả để thực hiện
Ngợc lại, một định nghĩa quá máy móc về ý nghĩa các quy tắc kiểu nh
“Ch-ơng trình chính là điều đợc trình thông dịch do chúng ta viết ra thực hiện” cũng không đợc chấp nhận Chúng ta cũng không đợc theo thị hiếu khi phải chọn lựa giữa
ý nghĩa lý thuyết chứng minh và ý nghĩa lý thuyết mô hình, chỉ cần chúng dễ hiểu
đối với ngời sử dụng ngôn ngữ logic Trong thực tế dờng nh lý thuyết mô hình cho phép xử lý nhiều lớp quy tắc “mạnh” hơn so với lý thuyết chứng minh, mặc dầu chúng ta sẽ khởi điểm bắt đầu bằng lý thuyết chứng minh trong phần 2.3 Với mọi ý nghĩa chúng ta chọn, điều quan trọng là chúng ta phải chỉ ra sự tơng đơng của nó với một ý nghĩa tính toán thích hợp
1.3.2 Mô hình dữ liệu Datalog
Trong phần này chúng tôi sẽ giới thiệu các thuật ngữ cơ bản cho việc thảo luận mô hình dữ liệu dựa trên logic mà chúng ta gọi là datalog Thuật ngữ datalog đ-
Trang 15ợc tạo ra với mục đích xem đây là một phiên bản của prolog dành cho các hệ thống CSDL Nó khác với Prolog ở nhiều điểm.
1 Datalog không cho phép dùng những ký hiệu hàm trong các đối Chẳng hạn ký hiệu hàm s dùng để định nghĩa phép cộng trong thí dụ 1.1 không đợc phép dùng trong datalog Datalog chỉ cho phép dùng các biến và hằng làm đối của vị từ
2 “ý nghĩa” của những chơng trình datalog dựa theo quan điểm lý thuyết mô hình
nh đã đợc thảo luận ở phần trớc, hoặc dựa theo lý thuyết chứng minh nếu tơng đơng Tuy nhiên Prolog có một “ý nghiã” tính toán nh chúng ta đã thảo luận và trong một
số trờng hợp, ý nghĩa tính toán này có thể khác với ý nghĩa theo lý thuyết mô hình hoặc theo lý thuyết chứng minh
Mô hình toán học nền tảng của dữ liệu trong datalog chủ yếu là mô hình quan
hệ Các ký hiệu vị từ trong datalog biểu thị các quan hệ Tuy nhiên cũng giống nh trong định nghĩa hình thức của đại số quan hệ, các quan hệ này không có những thuộc tính để làm tên của các cột Thực ra chúng là các quan hệ theo nghĩa “tập danh sách”, trong đó các thành phần xuất hiện theo một thứ tự cố định, và chúng ta tham chiếu đến một cột qua vị từ của nó trong danh sách các đối của ký hiệu vị từ đã cho Chẳng hạn nếu p là một ký hiệu vị từ thì chúng ta có thể viết p(X,Y,Z) và biến
X sẽ biểu thị cho thành phần đầu tiên của một bộ nào đó trong quan hệ tơng ứng với
vị từ p
1.3.2.1.Vị từ ngoại xạ và vị từ nội hàm
Một cách khác biệt nữa là giữa mô hình quan hệ và mô hình datalog là trong datalog, có hai cách để định nghĩa quan hệ Một vị từ có quan hệ đợc lu trữ trong CSDL đợc gọi là quan hệ CSDL ngoại xạ (extensnional database relation : EDB), trong khi đó những quan hệ đợc định nghĩa bởi các quy tắc logic đợc gọi là quan hệ CSDL nội hàm (intensional database relation : IDB) Chúng ta giả sử rằng mỗi ký hiệu vị từ chỉ biểu thị hoặc là quan hệ EDB hoặc là quan hệ IDB chứ không biểu thị
Trang 162.2.2 Công thức phân tử và vị từ cài sẵn
Các chơng trình datalog đợc xây dựng từ những công thức nguyên tử (atomic formula), đó là những ký hiệu vị từ (predicate symbol) với một danh sách các đối (argument), chẳng hạn nh p(A1…An) trong đó p là một ký hiệu vị từ Một đối trong datalog có thể là biến (variable) hoặc hằng (constant) Nh đã đề cập trong phần 1.1, chúng ta sử dụng tên bắt đầu bằng ký tự viết thờng cho hằng và vị từ, và tên bắt đầu bằng ký tự viết hoa cho các biến Chúng ta cũng dùng các số nh là các hằng Chúng
ta giả sử rằng mỗi ký hiệu vị từ đều liên kết với một số lợng các đối cụ thể, và chúng
ta có thể viết p(k) để biểu thị vị từ bậc k
Một công thức nguyên tử biểu thị cho một quan hệ; đó là quan hệ của vị từ
đ-ợc giới hạn bằng cách:
1 Chọn theo đẳng thức giữa một hằng và các thành phần mà ở đó là vị từ của hằng
2 Chọn theo đẳng thức giữa các thành phần có biến giống nhau
Chẳng hạn xét các quan hệ CSDL YVCB trong hình 2.8 Công thức nguyên tử
Customers(joe, Address, Blance)
1.3.2.3 Mệnh đề và mệnh đề HORN
Một trực kiện (literal) là một công thức nguyên tử hoặc là một công thức nguyên tử phủ định (negated atomic formula); chúng ta biểu thị công thức nguyên tử phủ định bằng ký hiệu ơp(A1, ,A… n) hoặc p− (A1, ,A… n) Một công thức nguyên tử phủ định là một trực kiện âm (negativ literal); ngợc lại là trực kiện dơng (positive literal) Một mệnh đề (clause) là một tổng (phép OR logic) các trực kiện Mệnh đề
Trang 17HORN (Horn clause) là một mệnh đề có tối đa một trực kiện dơng Vì vậy một mệnh đề Horn có thể là:
1 Một trực kiện dơng duy nhất, chẳng hạn p(X,Y), và đợc gọi là một sự kiện (fact)
2 Một hoặc nhiều trực kiện âm nhng không có trực kiện dơng, đó là ràng buộc toàn vẹn (integrity constraint), và không đợc đề cập đến trong phần thảo luận về datalog
3 Một trực kiện dơng hoặc một hoặc nhiều trực kiện âm, và đợc gọi là một quy tắc (rule)
Lý do chúng ta gọi các mệnh đề Horn ở nhóm (3) là các quy tắc là bởi vì biểu thức tự nhiên của chúng là một phép suy diễn (inferce) Nghĩa là mệnh đề Horn
) 1 2 (
Chúng ta sẽ sử dụng cách biểu diễn của Prolog cho các mệnh đề Horn, nghĩa
là sử dụng
q :- p1 , ,p… n.cho mệnh đề Horn p1 ∧….∧ pn→ q Chúng ta sẽ gọi q là phần đầu (head) của quy tắc
và p1 , , p… n là phần thân (body) của quy tắc Mỗi pi đợc gọi là đích con (subgoal) Tập các mệnh đề Horn là một chơng trình Logic (logic program)
Khi viết mệnh đề Horn dới dạng phép kéo theo, hoặc theo kiểu
p1∧….∧pn→q
hoặc theo kiểu Prolog Các biến chỉ xuất hiện trong phần thân có thể xem nh lợng từ tồn tại (exitstential quantifier) bên trong thân, còn các biến khác đợc xem là lợng từ phổ dụng (universal quantifier) trên toàn bộ quy tắc Chẳng hạn khẳng định ở quy tắc (1) trong đoạn chơng trìnhlogic mẫu nh sau “với mọi X và mọi Y, X là anh em ruột cuả Y nếu tồn tại Z sao cho Z là cha của X và Y, và X, Y không phải là một ng-ời” Tuy nhiên hoàn toàn chính xác và tơng đơng về mặt logic khi coi tất cả các biến
đều là lợng từ phổ dụng đối với toàn bộ quy tắc Khi đó quy tắc (1) ở đoạn chơng
Trang 18trình logic mẫu có thể đọc là “với mọi X, Y và Z, nếu Z là cha cả X và Y, và X không phải là Y thì X là anh em ruột của Y”.
(1) sibling(X,Y) :- parent(X,Z) , parent(Y,Z) , X≠Y
(2) cousin(X,Y) :- parent(X,Xp) , parent(Y,Yp) , sibling(Xp,Yp)
(3) cousin(X,Y) :- parent(X,Xp) , parent(Y,Yp) , cousin (Xp,Yp)
(4) related(X,Y) :- sibling(X,Y)
(5) related(X,Y) :- related(X,Z) , parent(Y,Z)
(6) related(X,Y) :- related(Z,Y) , parent(X,Z)
Đoạn chơng trình Logic mẫu
1.3.2.4 Đồ thị phụ thuộc và phép đệ quy
Trong một chơng trình logic, chúng ta thờng xuyên phải đề cập đến mối liên
hệ phụ thuộc giữa các vị từ Để biểu thị đợc điều này, chúng ta sẽ vẽ một đồ thị phụ thuộc (dependency graph) với các nút là các vị từ thông thờng (ordinary predicates) Nếu có một quy tắc với một đích con có vị từ là p và phần đầu có vị từ là q, chúng ta
vẽ một cung từ vị từ p đến vị từ q Một chơng trình Logic gọi là đệ quy (recursive) nếu đồ thị phụ thuộc của nó có một hoặc nhiều chu trình (cycle, hay còn gọi là vòng) Một chu trình chứa một cung đi từ một nút đến chính nó là làm cho ch ơng trình đệ quy Sự thực là chu trình một nút hay gặp hơn chu trình có nhiều nút
Tất cả các vị từ trong chu trình đợc gọi là vị từ đệ quy Chơng trình logic có
đồ thị phụ thuộc không chứa một chu trình nào thì không đệ quy Rõ ràng là tất cả các vị từ trong một chơng trình không đệ quy đều không phải là vị từ đệ quy; chúng
ta cũng gọi là một vị từ là không đệ quy nếu nó thuộc về một chơng trình đẹ quy
nh-ng khônh-ng thuộc một chu trình nào tronh-ng đồ thị phụ thuộc
Thí dụ 2.1: Giả sử rằng parent là một quan hệ EDB, và parent (C,P) mang
nghĩa là “P là cha của C” Chúng ta định nghĩa những quan hệ IDB sibling, cousin
và related trong đoạn chơng trình logic mẫu Sibling (anh em ruột) là những ngời có cha mẹ chung, nhng chúng ta cũng không loại trừ khả năng sibling(a,a) đúng với một cá thể a nào đó, điều này lý giải cho sự có mặt của đích con X≠Y trong quy tắc
Trang 19(1) Cousins (anh em họ) là những ngời có tổ tiên chung (từ hai đời trở lên) và thuộc
Quy tắc (4) – (6) định nghĩa X và Y là có họ hàng (ralated) nếu chúng có chung tổ tiên và tổ tiên này không phải X cũng không phải Y Nh vậy quy tắc (4) khẳng định rằng anh em ruột có họ hàng với nhau theo nghĩa này, bởi vì cha mẹ của chúng chính là tổ tiên chung không phải là anh em của nhau Còn quy tắc (5) và (6) khẳng định rằng những ngời có họ hàng với nhau cũng có họ với con cháu của ngời
bà con của mình
Đồ thị phụ thuộc cho đoạn chơng trình logic mẫu đợc trình bày trong hình 2.1 chẳng hạn quy tắc (1) đợc gán một cung từ parent đến sibling Chú ý rằng chúng ta không dùng các nút cho vị từ cài sẵn Quy tắc (2) cho phép vẽ một cung từ parent
đến cousin và từ cousin đến cousin Cung sau cùng là một chu trình cho biết chơng trình logic này thuộc loại đệ quy Các cung còn lại đợc mô tả bởi các quy tắc (4) – (6)
5 Nói tóm lại quy tắc (2) và (3) định nghĩa một ngời là anh em họ của chính mình nếu cha mẹ của anh ta là anh chị em ruột Có lẽ điều đó đúng, nhng nếu không đồng ý, chúng ta có thể thêm một đích con X ≠ Y cho quy tắc
Trang 20Trong Hình 2.1 có hai chu trình Một chu trình chỉ có cousin và chu trình kia chỉ có related Vì vậy những vị từ này là đệ quy, còn vị từ parent và sibling không đệ quy Dĩ nhiên, mỗi quan hệ EDB nh parent không đệ quy Thực sự, vị từ EDB chính là những nút không có cung đến, khẳng định rằng chúng không thể đệ quy Chơng trình của đoạn chơng trình logic mẫu là đệ quy bởi vì nó có những vị từ
đệ quy
Chơng II Ước lợng quy tắc không đệ quy
ở chơng này, chúng ta chỉ xử lý những quy tắc datalog an toàn không chứa phép phủ định, và thuật ngữ “datalog” bây giờ chỉ liên hệ đến những quy tắc thuộc lớp này Chúng ta bắt đầu bằng cách nghiên cứu những chơng trình datalog không
đệ quy Đối với lớp chơng trình đơn giản này (cũng nh đối với các lớp chơng trình
đệ quy tơng ứng), cả ba phép diễn giải đều cho ra các ý nghĩa giống nhau Chúng ta thấy rằng có một cách để biến đổi những quy tắc datalog không đệ quy thành những biểu thức đại số quan hệ; những biểu thức này sinh ra các quan hệ cho các vị từ IDB,
và đó chính là mô hình cực tiểu duy nhất của các quy tắc và cũng là tập các sự kiện IDB suy ra đợc từ các quy tắc và CSDL Trong phần này chúng ta sẽ đi từ góc độ lý thuyết chứng minh nhng chúng ta sẽ thấy rằng ý nghĩa mà chúng ta gán cho các quy tắc cũng là mô hình cực tiểu duy nhất cho những quy tắc này
Nếu các quy tắc của chúng ta không đệ quy, chúng ta có thể sắp thứ tự cho các nút của đồ thị phụ thuộc p1, ,p… n sao cho nếu có một cung từ pi →pj thì i<j Do
đó chúng ta có thể tính đợc quan hệ cho các vị từ của p1, ,p… n theo thứ tự đó, yên tâm rằng khi chúng ta thực hiện trên pi tất cả các quan hệ cho các vị từ xuất hiện trong thân quy tắc pi đều đã đợc tính Tính quan hệ cho pi đợc chia làm hai bớc
1 Đối với mỗi quy tắc r có pi trong phần đầu, hãy tính quan hệ tơng ứng với phần thân của quy tắc Quan hệ này có một thành phần cho mỗi biến của quy tắc r Để
Trang 21tính quan hệ cho phần thân của r, chúng ta sẽ lấy nối tự nhiên của các quan hệ tơng ứng với các đích con khác nhau của r, xử lý các thuộc tính của những quan hệ này giống nh các biến xuất hiện ở vị trí tơng ứng trong đích con Do đây là những quy tắc không đệ quy, chúng ta có thể khẳng định rằng những quan hệ cho các đích con khi đó đã đợc tính.
2 Chúng ta hãy tính quan hệ cho chính pi bằng cách chiếu quan hệ cho mỗi quy tắc của pi trên các thành phần tơng ứng với các biến của phần đầu rồi lấy hợp tất cả các quy tắc có pi trong phần đầu
Trong mỗi bớc này, việc tính toán đôi khi phức tạp hơn cả các phép nối và phép chiếu Chúng ta phải xem các hằng nh các đối, và chúng ta phải xét đến những tình huống mà một biến xuất hiện trong nhiều đối của một đích con hoặc của phần
đầu Các Thuật toán 2.1 và 2.2 sẽ đề cập chi tiết đến phần này
2.2.1 Quan hệ đợc định nghĩa từ phần thân của quy tắc
Trớc tiên chúng ta cần xét tập giá trị mà khi thay vào các biến của một quy tắc sẽ làm cho phần thân đúng Trong các chứng minh có sử dụng quy tắc này, chúng ta có thể kết luận rằng phần đầu cũng đúng Vì vậy chúng ta định nghĩa quan
hệ cho một quy tắc r có lợc đồ là X1, ,X… m, trong đó Xi là các biến của phần thân của r theo một thứ tự nhất định nào đó Quan hệ này có một bộ (a1, ,a… m) nếu và chỉ nếu, khi thay ai vào Xi với 1 ≤ i ≤ m, tất cả các đích con đều đúng
Chính xác hơn, giả sử rằng p1, , p… n là danh sách các vị từ xuất hiện trong phần thân của quy tắc r, và giả sử p1, ,p… n là những quan hệ, trong đó Pi có tất cả các
bộ (a1, , a… k) sao cho p (a1, ,a… k) đợc xem là đúng Thế thì đích con S của r đợc làm cho đúng bằng phép thay thế này nếu thoả những điều sau đây:
i) Nếu S là một đích con thông thờng thì S trở thành p(b1, b… k) qua phép thay thế này và (b1, b… k) là một bộ trong quan hệ P tơng ứng với p
ii) Nếu S là đích con cài sẵn thì qua phép thay thế này, S trở thành b0c, và quan hệ số học b0c là đúng
Thí dụ 2.5: Sau đây là một thí dụ không hình thức nhằm minh hoạ cách xây
dựng các quan hệ cho phần thân quy tắc, và chúng ta trình bày một thủ tục hình thức trong Thuật toán 2.1 Hãy xét quy tắc (2) từ đoạn chơng trình logic mẫu Giả sử rằng
Trang 22chúng ta đã có sẵn các quan hệ P và S cho các vị từ parent và sibling Hãy t ởng tợng rằng có một bản sao của P với các thuộc tính X và Xp là một bản sao khác với thuộc tính Y và Yp Chúng ta cũng giả sử rằng các thuộc tính của S là Xp và Yp Thế thì quan hệ tơng ứng với thân quy tắc (2) sẽ là
Theo hệ quả 2.1, chúng ta có một cách tơng đơng để diễn tả công thức (3.2) bằng cách khẳng định rằng quan hệ R(X, Xp, Y, Yp) có các bộ (a,b,c,d) sao cho:
1 (a,b) thuộc P
2 (c,d) thuộc P và
3 (b,d) thuộc S Quan hệ này chính là tập các bộ (a, b, c, d) mà khi thay vào R (X, Xp, Y, Yp) theo thứ tự đó sẽ làm cho phần thân của quy tắc đúng Vì vậy (2.2) là quan hệ cho phần thân của quy tắc (2) trong hình (2.1)
Một thí dụ khác, xét quy tắc (1) của hình (2.1) ở đây chúng ta cần lấy nối hai bản sao của P rồi chọn theo bất đẳng thức số học X≠Y Biểu thức đại số cho quy tắc (1) là:
Trang 23Dễ thấy rằng những bộ (x, y, z) chính là những bộ đệm cho thân quy tắc (1) Vì vậy công thức (2.3) biểu diễn quan hệ cho thân của quy tắc (1).
Cuối cùng hãy xét một thí dụ trừu tợng hơn Nó cho thấy nhiều vấn đề khi tính toán quan hệ cho thân của một quy tắc Hãy xét:
Giả sử rằng chúng ta đã tính các quan hệ Q, R, S tơng ứng cho các đích con q,
r và s Bởi vì đích con đầu tiên chỉ yêu cầu những bộ của Q và các thành phần đầu tiên là a, chúng ta cần xây dựng một quan hệ với một thuộc tính là X và chỉ chứa những thành phần thứ hai của những bộ này Do vậy chúng ta định nghĩa quan hệ
T(X) = π2(σS1=a(Q))Chúng ta cũng phải giới hạn quan hệ R sao cho thành phần thứ nhất và thứ ba, mỗi thành phần tơng ứng trong đích con thứ hai đều mang biến X, phải bằng nhau Vì vậy chúng ta định nghĩa:
U(X, Z) =π1,2(σS1=S3(R))Quan hệ cho thân quy tắc (2.4) đợc định nghĩa bằng biểu thức:
để tính quan hệ cho thân quy tắc
Thuật toán 2.1: Tính quan hệ cho thân quy tắc, dùng các phép Đại số quan hệ NHập: Thân của một quy tắc datalog r mà chúng ta sẽ giả sử chứa các đích con
S1…Sn có các biến X1….Xm Đối với mỗi Si = pi(Ail, ,A… ik) là một vị từ thông thờng,
có một quan hệ r đã đợc tính, trong đó A là các đối, biến hoặc hằng
Xuất: Một biểu thức của quan hệ đại số mà chúng ta gọi là
EVAL-RULE(r, R1, ,R… n)
Trang 24Cho phép từ các quan hệ R1, ,R… n tính đợc một quan hệ R(X1….Xm) có tất cả chỉ những bộ (a1…am) sao cho khi chúng ta thay aj vào Xj, 1≤ j≤ m, tất cả đích con
S1, ,S… n đều đúng
Phơng pháp: Biểu thức đợc xây dựng qua các bớc sau.
1 Đối với mỗi đích con thông thờng Si, gọi Qi là biểu thức πvi(σFi(Ri)) ở đây, Vi là tập các thành phần chỉ chứa đúng một xuất hiện của biến X có trong các đối của Si Còn Fi là phép hội (phép AND logic) của các điều kiện sau:
a Nếu ở vị trí k của Si có hằng a thì Fi có điều kiện $k=a
b Nếu ở vị trí k và l của Si chứa các giá trị giống nhau thì Fi có điều kiện $k = $l.7
Đặc biệt, nếu Fi không có một điều kiện nào, chẳng hạn khi Si =p(X, Y) thì xem Fi là điều kiện đồng nhất đúng, nh thế Qi = Ri
Đối với mỗi biến X không hiện diện trong các đích con thông thờng, hãy tính một biểu thức Dx để tạo ra một quan hệ đơn ngôi chứa tất cả các giá trị mà X có thể nhận trong phép gán làm thoả tất cả các đích con của quy tắc r Bởi vì r là an toàn nên X phải đợc gán bằng một biến Y có giới hạn nào đó qua một chuỗi các phép gán
=, và Y đợc giới hạn nhờ bằng với một hằng a nào đó trong một đích con, hoặc Y là một đối của một đích con thông thờng
a Nếu Y =a là một đích con, thì đặt DX là biểu thức {a}
b Nếu Y xuất hiện nh là đối thứ j của một đích con thông thờng Si, thì đặt DX là
πj(Ri)
3 Gọi E là nối tự nhiên của tất cả Qi đợc định nghĩa trong (1) và các DX đợc định
tính là các biến xuất hiện trong Si, và xem DX là quan hệ có thuộc tính X.8
4 Gọi EVAN-RULE (r, R1, , R… n) là σF(E), trong đó F là hội các biểu thức XθY
t-ơng ứng với mỗi đích con cài sẵn XθY xuất hiện trong số các đích con p1, ,p… n, và E
là biểu thức đợc xây dựng trong bớc (3) Nếu không có đích con nào cài sẵn thì biểu thức cuối cùng chính là E
6 Thực ra không phải n quan hệ đều có thể biểu diễn nh những đối bởi vì một vài đích con có thể có những vị từ cài sẵn và vì vậy không có quan hệ tơng ứng.
7 Không nhất thiết phải thêm điều kiện này cho tất cả các cặp k và l mà chỉ đối với những cặp dùng để làm cho tất cả các xuất hiện bằng nhau Chẳng hạn nếu X xuất hiện ở vị trí 2, 5, 9 và 14 thì chỉ cần thêm $2=$5, $5=$9 và
$9=$14 là đủ
8 Rõ ràng là X không thể là thuộc tính của các Q i , nối tự nhiên thực sự chứa tích Descartes của tất cả các tập D X
Trang 25Thí dụ 2.6: ở trên đã minh hoạ cho quá trình xây dựng cho Thuật toán
Chẳng hạn, biểu thức T(X) = π2(σ$1=a(Q)) là biểu thức đợc xây dựng bằng bớc (1) của Thuật toán 2.1 cho đích con đầu tiên q(a,X) của quy tắc (2.4); do đó, T(X) trong thí dụ 2.5 là Q1 ở đây Tơng tự, U(X,Z)= π1,2((σ$1=$3(R)) trong thí dụ 2.5 là Q2, đợc xây dựng từ đích con thứ hai r(X, Z, X) Q3 đợc xây dựng từ đích con thứ ba S(Y, Z) chính là S(Y, Z) Vì không có các đích con cài sẵn nên trong bớc (2) không phải xây dựng các miền sung, và không cho phép chọn nào cần đợc thực hiện trong bớc (4) Vì vậy biểu thức T(X) U(X, Z) S(Y, Z) là biểu thức cuối cùng cho phần thân của quy tắc (2.4) Trong thí dụ 2.7 chúng ta sẽ tính EVAL-RULE cho một quy tắc
có các đích con cài sẵn
Định lý 2.1: Thuật toán 2.1 là đúng đắn, theo nghĩa là quan hệ R đợc tạo ra có tất cả
và có những bộ (a1, , a… m) sao cho khi thay thế mỗi Xj bằng aj mỗi đích con Si đều làm cho đúng
Chứng minh: Giả sử bộ (a1, a… m) làm cho mỗi Si đều đúng Nhờ (i) trong định nghĩa “làm cho đúng”7 và bớc (1) của Thuật toán 2.1, tồn tại một bộ ài trong Qi
chứa aj trong thành tơng ứng với Xj cho mỗi biến Xj xuất hiện trong đích con Si Bớc (2) cho chúng ta biết có một bộ (bậc một) vXi=ai trong tập DXi cho mỗi biến Xi không xuất hiện trong các đích con thông thờng Bớc (3) của Thuật toán lấy nối tự nhiên của các Qi và các DX Tại mỗi bớc thực hiện phép nối, các bộ ài giống nhau ở các biến chung sẽ nối lại với nhau thành những bộ càng lớn, mỗi bộ khớp với (a1, ,a… m)
ở các thuộc tính chung
Cuối cùng, phép nối của tất cả các ài và các v chính là (a1, ,a… m) Hơn nữa theo (ii) trong định nghĩa “làm cho đúng”, bộ (a1, a… m) thoả điều kiện F trong bớc (4), vì vậy Thuật toán 2.1 đặt bộ (a1…,am) vào trong quan hệ R
Ngợc lại, giả sử bộ (a1 …, am) đợc đặt vào quan hệ R nhờ vào Thuật toán trên Thế thì bộ này phải thoả điều kiện F của bớc (4), và vì vậy điều kiện (ii) của định nghĩa “làm cho đúng” đợc thoả Đồng thời bộ (a1,…, am) cũng phải thuộc quan hệ đ-
ợc định nghĩa bởi E của bớc (3), nên mỗi Qi có một bộ ài mà thành phần tơng ứng với biến Xj có giá trị là aj với mỗi biến Xj xuất hiện trong đích con Si Kiểm tra bớc (1) cho thấy rằng cách duy nhất ài thuộc Qi là nếu có một bộ pi trong Ri
Trang 26a, Có hằng a ở vị trí k nếu Si có a ở vị trí k, và
b, Có giá trị aj ở tất cả vị tơng ứng với biến Xj trong Si
Nhng pi(pi) chính là vị từ thu đợc khi chúng ta thay Xj trong Si bằng aj, với
1≤j≤m Bởi vì pi thuộc Ri, điều kiện (i) của định nghĩa “làm cho đúng” đợc thoả
2.2.2 Tinh chỉnh các quy tắc
Bây giờ chúng ta phải xét xem cách tổ hợp các quan hệ cho thân quy tắc thành quan hệ các vị từ Nh chúng ta đã đề cập, ý tởng cơ bản là xét tất cả các quy tắc có p trong phần đầu, tính các quan hệ cho những quy tắc này, chiếu trên các biến xuất hiện trong phần đầu rồi hợp tất cả các kết quả chiếu lại Tuy nhiên chúng ta sẽ gặp rắc rối khi một số vị từ p có các hằng hoặc có các biến đợc lập thành nhiều lần, chẳng hạn p(a, X, X) Vì vậy các quy tắc cho vị từ p đợc gọi là đã tinh chỉnh (rectiffied) nếu tất cả các phần đầu đều đồng nhất và có dạng p(X1, ,X… k), trong đó
X1, ,X… k là các biến phân biệt
Tinh chỉnh các quy tắc là một thao tác đơn giản: tạo ra các biến mới cho đối
số của vị từ nằm trong phần đầu, rồi đa những đích con cài sẵn vào phần thân nhằm duy trì các ràng buộc mà các vị từ ở phần đầu phải tuân thủ qua các hằng và các biến đợc lặp lại Giả sử chúng ta có quy tắc r với vị từ của phần đầu là p (Y1, ,Y… k), trong đó Y có thể là biến hoặc hằng và đợc phép lặp lại Chúng ta thay thế phần đầu của r bằng p (X1, ,X… k) trong đó mỗi X là các biến mới và khác nhau, đồng thời thêm các đích con Xi = Yi (với mọi i) vào r Nếu Yi là một biến thì có thể loại bỏ
đích con Xi = Yi rồi thay Yi bằng Xi vào mọi vị trí có Yi.9
Thí dụ 2.7: Tất cả các quy tắc trong đoạn chơng trình logic mẫu đều đã đợc
tinh chỉnh Xét một thí dụ khác: giả sử chúng ta có vị từ p đợc định nghĩa bởi các quy tắc
P(a, X, Y) :- r(X, Y)
P(X, Y, X) :- r(X, Y)
Chúng ta tinh chỉnh các quy tắc này bằng cách làm cho các phần đầu thành p(U,V, W) và thêm các đích con nh sau:
P(U, V, W) :- r(X, Y) , U=a , V=X , W=Y
9 Chú ý rằng sau khi thayY i bằng một biến mới, chẳng hạn X i thì không thể thay Y i còn lại bằng các biến khác với
X i
Trang 27P(U, V, W) :- r(X, Y) , U=X , V=Y , W=X.
Nếu chúng ta thay X và Y bằng một trong các biến mới U, V, hoặc W khi thích hợp, chúng ta thu đợc:
P(U, V, W) :- r(V, W) , U=aP(U, V, W) :- r(V, U) , W=U
Nghĩa là trong quy tắc đầu tiên, X đợc thay bằng V và Y đợc thay bằng W, còn trong quy tắc thứ hai, X đợc thay bằng U và Y đợc thay bằng V
Bổ đề 2.1: Giả sử r là một quy tắc, và kết quả tinh chỉnh r là một quy tẳc’ Thế thì:
a, Nếu r an toàn thì r’ cũng an toàn
b, Các quy tắc r và r’ là tơng đơng, theo định nghĩa là cho các quan hệ tơng ứng với các vị từ của các đích con, tồn tại một phép thay thế cho các biến của r làm cho tất cả các đích con của nó thành đúng và làm cho phần đầu trở thành p(c1, ,c… n) nếu và chỉ nếu tồn tại một phép thay thế nào đó cho các biến r’ làm cho phần đầu của r’ trở thành p(c1, ,c… n)
Chứng minh: Trớc tiên giả sử rằng khi biến đổi r thành r’, chúng ta không loại đi
bất kỳ một biến nào bằng cách thay X và Y nếu X=Y là một đích con Dễ thấy (a)
đúng; các biến của r bị giới hạn bởi vì r là an toàn, và những biến mới X1…Xk cũng
bị giới hạn vì tất cả đều đợc cho bằng các biến của r
Chứng minh phần (b) cũng không có gì khó khăn Nếu một hằng cho các biến của r làm cho phần đầu của r là p(Y1…Yk) trở thành p(a1, ,a… k) thì chúng ta có thể tìm đợc một phép gán cho các biến của r’ cũng cho ra một phần đầu nh thế Hãy nhớ rằng phần đầu của r’ là p(X1…Xk) và tất cả X đều là những biến mới Chúng ta hãy chọn giá trị cho Xi giống nh các hằng gán cho Yi Thế thì đích con Xi = Yi sẽ
đúng, và phần đầu của r’ sẽ trở thành p(a1, ,a… k) Ngợc lại, nếu một phép gán các hằng cho các biến của r’ tạo ra phần đầu p(b1, ,b… k) thì nó phải gán giá trị giống nhau cho Xi và Yi với mọi i, nếu không thì đích con Xi =Yi của r’ không trở thành
đúng Vì vậy cũng chính phép gán này, đợc giới hạn cho các biến xuất hiện của r, cũng sinh ra phần đầu p(b1, ,b… k) khi áp dụng cho r
Cuối cùng chúng ta cũng nhận xét rằng nếu sửa đổi r’ bằng cách thay đổi một
X nào đó cho Y, trong đó X = Y là một đích con thì chúng ta không làm cho quy tắc
Trang 28trở thành không an toàn nếu nó đã an toàn, và không thay đổi đợc các tập các sự kiện do phần đầu của quy tắc tạo ra Phần chứng minh này dành cho bạn đọc.
Từ nay về sau, chúng ta giả sử rằng tất cả các quy tắc đều đã đợc tinh chỉnh
mà không cần nhắc lại giả thiết này
2.2.3 Tính các quan hệ cho các vị từ không đệ quy
Một khi các quy tắc đã đợc tinh chỉnh, chúng ta chỉ cần chiếu quan hệ cho mỗi thân quy tắc trên các biến của phần đầu, và đối với mỗi vị từ, chúng ta thực hiện phép hợp các quan hệ đợc sinh ra từ mỗi quy tắc của nó
Thuật toán 2.2: Ước lợng các quy tắc không đệ quy bằng cách dùng các phép
toán đại số quan hệ
Nhập: Một chơng trình datalog không đệ quy và một quan hệ cho mỗi vị từ EDB
hiện diện trong chơng trình
Xuất: Đối với mỗi vị từ IDB p, cho ra một biểu thức đại số quan hệ biểu diễn một
quan hệ cho p theo các quan hệ R1, ,R… m của các vị từ EDB
Phơng pháp: Khởi đầu chúng ta sẽ tinh chỉnh tất cả các quy tắc, kế đến, xây
dựng đồ thị phụ thuộc cho chơng trình nhập, và sắp thứ tự cho các vị từ p1, p… n sao cho nếu đồ thị phụ thuộc của chơng trình có một cung từ pi đến pj thì i<j Chúng ta
có thể tìm đợc một thứ tự nh thế bởi vì chơng trình nhập không đệ quy, và do đó đồ thị phụ thuộc sẽ không có chu trình Thế thì với i=1,2, ,n chúng ta tạo ra biểu thức…của quan hệ Pi (cho pi) nh sau:
Nếu pi là vị từ của EDB, gọi Pi là quan hệ cho pi là một vị từ IDB Thế thì:
1, Đối với mỗi quy tắc r có pi là phần đầu, hãy dùng Thuật toán 2.1 để tìm một biểu thức Er tính đợc quan hệ Rr cho thân của quy tắc r theo các quan hệ các vị từ xuất hiện trong thân của r
2, Do chơng trình không đệ quy, tất cả các vị từ xuất hiện trong r đều có những biểu thức cho các quan hệ của chúng, đợc tính theo quan hệ EDB Hãy thay các biểu thức thích hợp cho mỗi xuất hiện của một quan hệ IDB trong biểu thức Er để có một biểu thức mới Fr
Trang 293, Đặt lại tên cho các biến nếu cần, và chúng ta có thể giả sử rằng phần đầu cho mỗi quy tắc pi là pi(X1, ,X… k) Sau đó gán biểu thức cho Pi là hợp trên tất cả các quy tắc trên r cho pi, nghĩa là hợp của các πX1 Xk … (Fr).
Thí dụ 2.8: Chúng ta hãy lấy một thí dụ trừu tợng để minh hoạ cho hoạt động
của Thuật toán 2.2 Giả sử rằng chúng ta có bốn quy tắc:
P(X,Y) =πX,Y(R(Z,Y) {a}(X)) ∪πX,Y(S(X, Z) R(Z, Y))
Kế đến chúng ta xét q Quan hệ cho quy tắc (3) đợc tính nh sau Bằng Thuật toán 2.1 biểu thức đích con p(X, b) là
πX(σZ=b(P(X, Z)))
ở đây Z là một biến đợc chọn tuỳ ý và sẽ biến mất qua phép chiếu Biểu thức này tạo ra một quan hệ đơn ngôi trên thuộc tính X, và chúng ta cần một biểu thức sản sinh ra tất cả các giá trị của Y, bởi vì Y chỉ xuất hiện trong vị từ cài sẵn X=Y Bởi vì Y đợc cho bằng X, chúng ta biết rằng chỉ những giá trị của X mới có thể là
Trang 30giá trị của Y, vì vậy chúng ta có thể lấy đối ở vị trí X xuất hiện, là đối đầu tiên của
là biến đợc chọn tuỳ ý khác Sau khi lấy tích trực tiếp (cross product) của biểu thức cho p(X, b) với miền của Y, chúng ta chọn theo X = Y trong quy tắc (3) Vậy thì biểu thức cho thân quy tắc (3) là
σX=Y(πX(σZ=b(P(X, Z)))) x πY(P(Y, W))Cuối cùng, biểu thức cho quy tắc (4) là P(X, Z) S(Z, Y), vì vậy biểu thức cho Q là
Q(X,Z) =σX=Y(πX(σZ=b(P(X, Z)))) x πY(P(Y,W))∪πX,Y(P(X, Z)) S(Z,Y)Theo đúng bài bản, chúng ta phải thay P bằng đúng biểu thức đã xây dựng cho P để
có đợc Q theo các quan hệ CSDL R và S
Định Lý 2.2: Thuật toán 2.2 tính chính xác quan hệ cho mỗt vị từ, theo nghĩa là
biểu thức do nó xây dựng cho mỗi vị từ IDB sẽ tạo ra:
Chứng minh: ở cuối phần 2.1 chúng ta đã nhận xét là, khi tất cả các tiên đề đều là
các quy tắc datalog không chứa phép phủ định, và các sự kiện đã cho là các trực kiện không phủ định (các sự kiện EDB), thì những sự kiện IDB duy nhất có thể chứng minh là những sự kiện có thể suy ra bằng cách áp dụng các quy tắc theo cách chúng ta có, nghĩa là từ giả thiết đến kết luận Cho trớc sự kiện này, dễ dàng dùng phép quy nạp trên thứ tự xây dựng các biểu thức cho các vị từ, trong đó mỗi biểu thức sinh ra tất cả và chỉ những sự kiện có thể chứng minh đợc từ các sự kiện EDB
đó mô hình chúng ta xây dựng cũng là mô hình cực tiểu khả hữu duy nhất
Trang 312.2.4 Tính toán ý nghĩa của các quy tắc đệ quy
Thuật toán 2.2 không áp dụng cho những chơng trình datalog đệ quy, bởi vì không có một thứ tự nào để áp dụng Thuật toán cho các vị từ Nghĩa là nếu có một chu trình trong đồ thị phụ thuộc, vị từ đầu tiên trên chơng trình mà chúng ta đang ớc lợng sẽ có quy tắc với một đích con cha có sẵn biểu thức
Tuy nhiên, cách tiếp cận theo lý thuyết chứng minh vẫn sử dụng đợc nếu chúng ta nhớ rằng nó vẫn cho phép suy diễn nhiều sự kiện bằng cách sử dụng một quy tắc, rồi sau đó sẽ dùng những sự kiện mới đợc suy ra trong phần thân để suy ra nhiều sự kiện khác Nếu chúng ta khởi đầu từ một CSDL hữu hạn, và chỉ dùng các quy tắc datalog thì có thể suy ra đợc một số lợng hữu hạn những sự kiện; chúng phải
có dạng p(a1 , , a… k) trong đó p là một vị từ IDB đã đợc đề cập trong các quy tắc, và
a1 , , a… k là các hằng xuất hiện trong CSDL
Xét một chơng trình datalog với những quan hệ EDB cho trớc là R1, ,R… k và những quan hệ IDB P1 , , P… m cần tính Với mỗi i, 1≤ i≤ m, chúng ta có thể diễn tả tập các sự kiện có thể chứng minh đợc cho vị từ pi (tơng ứng với quan hệ IDB Pi) bằng phép gán
Pi = EVAL(pi, R1, ,R… k,, P1, , P… m)Trong đó EVAL là hợp của EVAL-RULE (đã đợc định nghĩa trong Thuật toán 2.1) của mỗi quy tắc của pi, đợc chiếu trên các biến của phần đầu Nếu chúng ta khởi đầu với tất cả Pi đều rỗng, và thực hiện phép gán nh thế lập lại cho mỗi i, cuối
nữa.10 Khi đó ký hiệu gán trở thành đẳng thức; nghĩa là tập các sự kiện IDB có thể chứng minh đợc thoả chơng trình sau
Pi = EVAL (pi, R1, , R… k,, P1, , P… m)Với mọi i, chúng ta sẽ gọi những phơng trình đợc suy ra từ một chơng trình datalog theo cách này là phơng trình datalog (datalog equation)
Thí dụ 2.9: Những quy tắc của đoạn chơng trình logic mẫu có thể đợc xem
nh những phơng trình dới đây Chúng ta sử dụng P, S, C, và R tơng ứng cho các quan hệ parent, siblng, cousin và related
10 Chúng ta sẽ chứng minh rằng khi các quy tắc không có đích con âm, EVAL có tính “đơn điệu”; nghiã là P i có
Trang 32S(X, Y)=πX,Y(σX ≠ Y(P(X, Z) P(Y, Z)))
C(X, Y)= πX,Y(P(X, Xp) P(Y,Yp) S(Xp,Yp)) ∪
πX,Y(P(X, Xp) P(Y,Yp) C(Xp, Yp))
R(X, Y) = S(X, Y) ∪πX,Y(R(X, Z) P(Y, Z)) ∪πX,Y(R(Z, Y) P(X, Z))
2.2.4.1 Điểm cố định của các phơng thức DATALOG
Bằng trực quan chúng ta có thể nhận thấy là ý nghĩa của các quy tắc chính là
điều có thể chứng minh đợc nhờ các quy tắc, và nó đã biện minh cho việc thay ký hiệu :- bằng đẳng thức để tạo ra các phơng trình datalog Thật là tuyệt vời nếu có một lời giải duy nhất cho một tập các phơng trình datalog, nhng nói chung thì có nhiều lời giải Cho một tập các quan hệ cho các vị từ EDB là R1…Rk, một điểm cố
định (fixed point) của các phơng trình datalog (ứng với R1…Rk) là một lời giải (một nghiệm) cho các quan hệ tơng ứng cho các vị từ IDB của những phơng trình này
Một điểm cố định P1, ,P… m của các phơng trình datalog (ứng với những quan
hệ EDB R1…Rk) cùng với những quan hệ này tạo ra một mô hình của các quy tắc đã sinh ra các phơng trình Thật vậy, gọi M là mô hình mà trong đó chỉ có các sự kiện
đúng là các bộ thuộc P1, ,P… m và R1…Rk Thế thì một phép gán các hằng cho các biến làm cho phần thân của quy tắc r đúng thì cũng phải làm cho phần đầu r đúng Bởi vì nếu phần đầu là p(a1, ,a… n) phải thuộc quan hệ cho IDB p, nếu không thì những quan hệ IDB trên không phải là một điểm cố định của phơng trình
Tuy nhiên không phải là mỗi mô hình của một tập các quy tắc datalog đều là một điểm cố định của các phơng trình datalog tơng ứng, bởi vì mô hình có thể có
“quá nhiều” sự kiện, và một sự kiện chỉ xuất hiện ở vế trái nhng không xuất hiện ở
vế phải Chúng ta sẽ minh hoạ hiện tợng này qua một thí dụ đơn giản Chúng ta sẽ tiếp tục quan tâm đến các điểm cố định và mô hình cực tiểu, theo nghĩa là chúng không có các tập con thực sự cũng là một điểm cố định Chúng tôi đã dành cho bạn
đọc chứng minh nhận xét rằng thành phần IDB của một mô hình cực tiểu luôn là
điểm cố định, và thực sự là điểm cố định cực tiểu (minimal fixed point)
Rõ ràng là mỗi chơng trình datalog đều có một mô hình cực tiểu duy nhất có chứa các quan hệ EDB cho trớc, và mô hình này cũng là một điểm cố định cực tiểu duy nhất của những phơng trình tơng ứng với các quan hệ EDB đã cho Hơn nữa
Trang 33cũng giống nh trong trờng hợp không đệ quy, điểm cố định nhỏ nhất (least fixed point) này chính là tập các sự kiện có thể suy ra từ một CSDL cho trớc bằng cách dùng các quy tắc đã cho.
Một cách hình thức hơn, gọi các biến của phơng trình là P1, , P… m tơng ứng với các vị từ IDB p1, , p… m, và xét những quan hệ R1…, Rk đợc gán cho các vị từ EDB r1, , r… k Một lời giải, hoặc điểm cố định, cho các quan hệ EDB R1…, Rk sẽ gán những quan hệ cụ thể P1(1), ,P… m(1) cho các biến P1, ,P… m sao cho những phơng trình này đợc thoả Nếu S1 = P1(1), ,P… m(1) và S2 = P1(2), ,P… m(2) là hai lời giải của tập các ph-
ơng trình cho trớc, chúng ta nói rằng S1≤ S2 nếu quan hệ Pi(1) là tập con của quan hệ
Pi(2) với mọi i, 1≤i≤m Thế thì S0 là điểm cố định nhỏ nhất của tập các phơng trình ứng với các quan hệ EDB R1, ,R… k, nếu với mọi lời giải S chúng ta đều có S0≤S tổng quát hơn S0 là một điểm cố định cực tiểu nếu không tồn tại một điểm cố định S sao cho S≤S0 Chú ý rằng nếu có một điểm cố định nhỏ nhất thì đó là điểm cực tiểu duy nhất Tuy nhiên có thể có nhiều điểm cố định cực tiểu không thể so sánh đợc bằng toán tử ≤, và trong trờng hợp đó không có điểm cố định nhỏ nhất
Thí dụ 2.10: Chúng ta hãy xét một bài toán hay gặp là việc tính bao đóng bắc
cầu của một đồ thị có hớng Nếu đồ thị đợc biểu diễn bằng một vị từ EDB arc sao cho arc(X,Y) là đúng nếu và chỉ nếu có một cung từ nút X đến nút Y, thế thì có thể diễn tả đợc các đờng đi (path) trong đồ thị bằng các quy tắc:
(1) Path(X,Y) :- arc(X, Y)
(2) Path(X,Y) :-path(X,Z), path(Z,Y)
Nghĩa là, quy tắc đầu tiên khẳng định rằng một đờng đi có thể chỉ là một cung, và quy tắc thứ hai khẳng định rằng đờng nối của hai đờng, một từ X đến Z, một từ Z đến Y sinh ra một đờng từ X đến Y Cặp quy tắc này không phải là cách hay nhất để định nghĩa một đờng, nhng có lẽ chúng là cách tự nhiên nhất Chúng ta cần để ý tính tơng tự giữa path và arc ở đây với các vị từ boss và manages trong thí
dụ 1.2.ở đó chúng ta đã sử dụng một cách đơn giản hơn để tính bao đóng bắc cầu của một quan hệ
Chúng ta sẽ biến đổi những quy tắc này thành một phơng trình duy nhất cho quan hệ P tơng ứng với vị từ path Phơng trình giả định rằng có một
Trang 34quan hệ A cho trớc tơng ứng với vị từ arc.
={(1,2),(2,3)} Quy tắc đầu tiên cho biết (1,2) và (2,3) thuộc P, và quy tắc (2) khẳng
định rằng (1,3) cũng thuộc P Tuy nhiên chúng ta không nhất thiết phải suy ra sự tồn tại của những đờng đi khác, bởi vì P={(1,2), (2,3), (1,3)} là một lời giải của phơng trình (3.5) Nghĩa là:
{(1,2),(2,3),(1,3)}={(1,2),(2,3)}∪
πX,Y({(1,2),(2,3),(1,3)} {(1,2),(2,3),(1,3)})
Là một đẳng thức đúng Trong phép diễn giải này, chúng ta phải nhớ rằng toán hạng bên trái của phép nối là một quạn hệ trên danh sách thuộc tính X, Z Vì vậy biểu thức πX,Y(P(X,Z) P(Z,Y)) có thể xem nh là sự nối kết của quan hệ P với chính nó, và giá trị của nó ở đây là {(1,3)}
Lời giải này là ý nghĩa của các quy tắc y theo lý thuyết chứng minh, bởi vì chúng ta đã suy từ quan hệ EDB A chính kết quả chứng minh đợc từ những quy tắc
đã cho Dễ thấy rằng đó là một mô hình cực tiểu của các quy tắc hoặc là điểm cố
định nhỏ nhất của phơng trình (2.5) [đối với quan hệ A đã cho], bởi vì mỗi sự kiện suy ra đều có thể đợc chứng minh là thuộc về mỗi mô hình hoặc mỗi điểm cố định
có chứa quan hệ EDB A
Tuy nhiên cũng có nhiều lời giải khác cho (2.5) Giả sử rằng chúng ta quyết
định cho (1,1) thuộc P Những quy tắc này không xác định thêm đờng nào khác nữa,
do đó A ={(1,2), (2,3)} và P={(1,1), 1,2), (2,3), (1,3)} Nh vậy thế nào để (1,1) “tự chứng minh” nếu chúng ta cho X = Y = Z = 1 trong quy tắc (2) Nh thế một lời giải khác của (2.5) là:
{(1,2), (2,3), (1,3)}={(1,2), (2,3)}∪
πX,Y({(1,2), (2,3), (1,3)} {(1,2), (2,3), (1,3)})
Tơng tự chúng ta có thể cho P chứa tất cả chín cặp (i,j), trong đó 1≤ i, j ≤3, và giá trị đó cũng thoả (2.5) Ngợc lại không phải mỗi giá trị của P đều thoả (2.5) Thí dụ vẫn giả sử A ={(1,2), (2,3)}, chúng ta không thể cho P ={(1,2), (2,3), (1,3), (3,1)}, bởi vì phép thế kết quả vào (2.5) là
Trang 35πX,Y({(1,2),(2,3),(1,3)} {(1,2),(2,3),(1,3)})
không phải là một đẳng thức đúng Chẳng hạn phép nối ở vế phải sinh ra bộ (3,1,2) trên danh sách thuộc tính X, Z, Y kết quả sau khi chiếu là bộ (3,2) không thuộc vế trái
Một thí dụ cuối cùng, hãy xét một mô hình không phải là một điểm cố định
tắc (1), không có cách nào làm cho phần thân của quy tắc là arc(X,Y) trở thành
đúng, vì vậy quy tắc sẽ đúng với mọi hằng đợc thay vào các biến Trong quy tắc (2), không có giá trị nào chúng ta có thể thay vào Z để làm cho (X, Z) và (Z, Y) đều là những bộ của P, một lần nữa không có cách gì làm cho thân quy tắc trở thành đúng
và vì vậy quy tắc này sẽ luôn đúng Chúng ta kết luận rằng tập các sự kiện chứa một mình path(1,2) là một mô hình của các quy tắc datalog đã cho
Tuy nhiên, chúng lại không thoả (2.5); vể trái là {(1,2)} còn vế phải là ∅ đối
với A và P đã cho Vì vậy P={(1,2)} không phải là một điểm cố định của phơng
Chúng ta có thể giải một tập phơng trình datalog bằng cách giả sử rằng lúc
đầu tất cả Pi đều trống, và Ri là những quan hệ đã biết Sau đó tính giá trị EVAL với giá trị hiện có của các quan hệ IDB và giá trị cố định của các quan hệ EDB đ ợc nhận giá trị mới cho các quan hệ IDB Quá trính này đợc lập lại cho đến khi không còn Pi
nào thay đổi nữa Chúng ta biết rằng theo nghĩa này, các quan hệ IDB phải hội tụ, bởi vì phép toán EVAL là “đơn điệu”, là một đặc tính sẽ đợc định nghĩa một cách hình thức, nhng cơ bản của nó là khi đa thêm một số bộ vào trong một số đối của phép toán, kết quả sẽ không mất đi một số bộ đã có
Thuật toán 2.3: Ước lợng các Phơng trình datalog
Nhập: Một tập các quy tắc datalog với những vị từ EDB r1…rk và những vị từ IDB
p1, ,p… m và một danh sách những quan hệ R1, ,R… k đợc dùng nh giá trị những vị từ EDB
Trang 36Xuất: Điểm cố định nhỏ nhất (lời giải) của những phơng trình datalog thu đợc từ
những quy tắc này
Phơng pháp: Trớc tiên cần xây dựng các phơng trình cho các quy tắc Những
phơng trình sẽ có các biến P1, ,P… m tơng ứng với các vị từ IDB, và phơng trình cho Pi
là Pi=EVAL(pi, R1, ,R… k, P1, ,P… m) Sau đó khởi gán giá trị trống cho mỗi Pi rồi tính EVAL lập đi lập lại để thu đợc giá trị mới cho các Pi Khi không còn đa thêm các bộ vào trong một quan hệ IDB đợc nữa, chúng ta sẽ nhận đợc kết quả nh mong muốn Chi tiết Thuật toán đợc trình bày trong đoạn chơng trình
For i:=1 to m do
P:=∅;Repeat
Đoạn chơng trình Thuật toán ớc lợng đơn giản.
Thí dụ 2.11: Xét các quy tắc đoạn chơng trình logic mẫu và một quan hệ P
cụ thể của vị từ EDB parent trong hình 2.3 Một cách đi từ x xuống đến y biểu thị x
là cha của y; nghĩa là parent(y, x) đúng Các công thức EVAL cho các vị từ sibling, cousin và related, hoặc tơng đơng là các biến quan hệ S, C và R là những công thức
ở vế phải của phơng trình trong thí dụ 2.8 khi chúng ta áp dụng Thuật toán 2.3, quan hệ P vẫn cố định; nó chứa các bộ ca, da, đ… ợc trình bày trong hình 2.3 [Chú
ý rằng chúng dùng ký hiệu viết gọn cho các bộ ca thay cho (c,a), ].…
Trang 37Trong Hình 2.4 chúng ta thấy những bộ thêm vào trong các quan hệ S, C, và
R, tơng ứng với sibling, cousin và related Những bộ này đợc nhóm theo tong vòng chơng trình (là vòng lặp trong Đoạn chơng trình) mà chúng đợc thêm vào Sau mỗi vòng, giá trị của mỗi quan hệ là tập các bộ đợc thêm vào tại vòng đó và tại những vòng trớc đó Tuy nhiên bởi vì tất cả các ba quan hệ này đều có tính đối xứng, nghĩa
là chúng có bộ xy nếu và chỉ nếu chúng có bộ yx nên chúng ta chỉ liệt kê những bộ
có các thành phần đợc sắp theo thứ tự chữ cái Do đó sau vòng 1, quan hệ S thực sự chứa 10 bộ là cd, dc,
do là đối với hai quan hệ kia, mỗi nối có chứa một trong những quan hệ IDB mà hiện tại còn đang rỗng Chẳng hạn nh trong thí dụ 2.8, biểu thức EVAL (cousin, P,
S, C, R) chứa hai nối, nối đầu tiên chứa hai bản sao của P và một xuất hiện của S, nối thứ hai gồm hai P và một C Bởi vì S và C hiện đều đang rỗng, và nối giữa một quan hệ với một quan hệ rỗng đều cho ra một quan hệ rỗng nên giá trị mới của C là
ở vòng hai, S không có thêm bộ nào nữa bởi vì quan hệ P và S phụ thuộc là một quan hệ EDB và vì vậy không thay đổi Quy tắc (2) của đoạn chơng trình logic mẫu cho cousin hiện giờ có những quan hệ không rỗng nên trong òng hai nó nhận thêm đợc một số bộ Thí dụ cặp anh em ruột cd khẳng định rằng tất cả con của c, là
f và g, đều là anh em họ của các con của d là h và i Vì vậy chúng ta thêm fh, fi, gh
và gi vào C Nhờ tính đối xứng cặp dc cũng tạo ra các cặp có thứ tự đảo ngợc và cũng thuộc C nhng chúng ta không liệt kê
k
dc
f
e
jHình 2.3 Quan hệ P cho vị từ parent
Trang 38Hình 2.4 áp dụng Thuật toán của Đoạn chơng trình
Trong vòng thứ ba, quy tắc (3) cho cousin bổ sung jj và kk vào C Chẳng hạn
sự kiện f và h đợc phát hiện trong vòng hai là anh em họ của nhau (chúng là con của cặp c và d) cho chúng ta biết trong vòng ba, j là anh em họ của chính nó, một kết quả khó tởng tợng đợc nhng hoàn toàn đúng về mặt lý luận
Quy tắc (4) –(6) cho related đợc áp dụng tơng tự từ vòng hai, nó nhận đợc tất cả trong R đợc suy ra cho đến khi vòng sáu Chẳng hạn sự kiện j có họ với chính
nó chỉ suy ra ở vòng sáu.11
2.2.4.3 Tính đơn điệu
Để chứng minh Thuật toán 2.3 luôn hội tụ, cha kể là nó còn hội tụ đến điểm
cố định nhỏ nhất, đòi hỏi phải xác định rằng việc áp dụng EVAL lập đi lập lại cho mỗi vị từ IDB sinh ra một chuỗi ngày càng lớn, đến một lúc chúng ngừng lại và không thay đổi nữa Chúng ta cần dùng thuật ngữ tính đơn điệu (monotonicity) để
11 Chú ý rằng j có họ chính nó vì c và d là anh em ruột, j là con chú của c và cũng là con cháu của d.
Trang 39diễn tả một các hình thức đặc tính này của các hàm nh EVAL: khi cho chúng những
đối không nhỏ hơn những đối đã cho trớc đó, chúng sẽ trả lại một kết quả không nhỏ hơn kết quả trớc đó
Về hình thức, gọi f(P1, ,P… m) là các hàm có các đối và kết quả đều là những quan hệ Gọi S1=P1(1), , P… m1) và S2= P1(2), , P… m(2)
Là hai phép gán quan hệ cho các biến quan hệ của f Giả sử rằng S1≤ S2; nghĩa là mỗi quan hệ Pi(2) là một tập bao hàm (không cần phải bao hàm thực sự) quan hệ P1(1)
tơng ứng Ta nói rằng f là hàm đơn điệu nếu với bất kỳ S1 và S2 nh trên, ta có f(S1) ⊆
phép toán quan hệ đều có tính đơn điệu chỉ trừ phép lấy hiệu
Định lý 2.3: Các phép toán hợp, chọn, chiếu và tích đều đơn điệu.
Chứng minh: Phép chứng minh trong mọi trờng hợp đều đơn giản; chúng ta sẽ
chứng minh cho trờng hợp phép chọn, các phép chứng minh còn lại thì tơng tự Xét phép chọn σF, trong đó F là một điều kiện tuỳ ý, và gọi R(1) ⊆R(2) là hai quan hệ có
áp dụng phép chọn σF Gọi à là một bộ trong σF(R(1)) Vậy thì à phải thuộc R(1), và vì vậy à cũng thuộc R(2) Hơn nữa, à thoả điều kiện F nên chúng ta kết luận rằng à
thuộc σF(R(2)) Vì lập luận này áp dụng cho một bộ tuỳ ý trong σF(R(1)), chúng ta kết luận rằng σF(R(1)) ⊆σF(R(2))
Hệ quả 2.1: Nối tự nhiên và nối –θ là những hàm đơn điệu.
Chứng minh: Những phép toán này đều là tổ hợp của những phép toán đã đợc
chứng minh là đơn điệu trong định lý 2.3 Chúng ta có thể dễ dàng chứng minh đợc rằng tổ hợp của những hàm đơn điệu cũng là hàm đơn điệu
Hệ quả 2.2: phép toán EVAL là một hàm đơn điệu.
Chứng minh: Kiểm tra Thuật toán 2.1 và 2.2 cho thấy rằng chúng ta chỉ dùng
những phép toán hợp, phép nối tự nhiên, phép chọn, phép chiếu và phép lấy tích trong khi tính hàm số EVAL Vì những hàm này đều là đơn điệu nên EVAL cũng
Trang 40datalog tơng ứng Cũng dễ thấy rằng điểm cố định nhỏ nhất là tập các sự kiện có thể chứng minh đợc từ CSDL nhờ những quy tắc này (Phần chứng minh tơng tự ở trên)
Định lý 2.4: Thuật toán 2.3 sinh ra điểm cố định nhỏ nhất cho những phơng trình
datalog ứng với những quan hệ EDB đã cho
Chứng minh: Chúng ta đã thực hiện nhiều bớc quy nạp theo số lần vòng lặp repeat
của Đoạn chơng trình và gọi các vòng lặp là các vòng
các quan hệ EDB hoặc trong chính quy tắc Chúng ta chứng minh bằng quy nạp qua các vòng ở trớc vòng 1, mỗi Pi= ∅ nên khẳng định chắc chắn đúng Thực hiện quy nạp cho thấy rằng mỗi lần áp dụng EVAL, chúng ta chỉ sử dụng các phép toán hợp, chọn, nối tự nhiên, chiếu và tích Descartes Không có phép toán nào đa ra những kí hiệu không hiện diện trong các đối của chúng
Kế đến chúng ta nhận xét rằng đối với mỗi i, giá trị Pi đợc sinh ra từ vòng j là một tập bao hàm (không nhất thiết là bao hàm thực sự) của tập giá trị cho quan hệ đ-
ợc sinh ra từ vòng trớc đó (vòng j -1) Một lần nữa, kết quả chính là một bớc quy nạp trên vòng đang xét Đối với vòng 1, giá trị trớc đó là ∅, do vậy khẳng định là
đúng Khi thực hiẹn quy nạp, chú ý EVAL có tính đơn điệu (Hệ quả 2.2) ở vòng j
>1, các đối của EVAL trong Thuật toán của Đoạn chơng trình là các quan hệ R (không thay đổi) và các quan hệ Q, là những giá trị tơng ứng của các P đợc sinh ra
từ vòng j -1 Nếu so sánh chúng ta sẽ thấy rằng các đối của EVAL trong vòng j –1 cũng là những quan hệ R và những giá trị của P đợc sinh ra từ vòng j –2 (nếu j =2, tất cả P đều ∅) Theo giả thiết quy nạp, những giá trị của P đợc sinh ra trong vòng j –1 là các tập bao hàm các giá trị tơng ứng đợc sinh ra từ vòng j -2 Do tính đơn
điệu của EVAL, giá trị của Pi đợc sinh ra từ vòng j là tập bao hàm của tập giá trị của
Pi ở vòng j –1 Nhận xét này là khẳng định quy nạp, và chúng ta kết luận rằng mỗi
Pi lần lợt nhận một chuỗi các giá trị Vi1,Vi2, ; đó là chuỗi không giảm; nghĩa là Vi1
Bây giờ hãy chú ý rằng đối với một tập các quy tắc cho trớc, tồn tại một cận trên cho bậc của những vị từ IDB, hãy gọi nó là a Đồng thời đối với danh sách các quan hệ cho trớc tơng ứng với các vị từ EDB, có một số hữu hạn xuất các kí hiệu