Thủ tục hợp giải SLDNF đối với chương trình logic thông thường

Một phần của tài liệu Tìm hiểu về lập luận suy diễn trong lập trình logic phỏng đoán (Trang 31 - 34)

Thủ tục hợp giải SLDNF [2] được áp dụng cho các chương trình logic thông thường (có chứa ký hiệu phủ định) và nó là sự kết hợp giữa thủ tục hợp giải SLD với các nguyên lý sau:

A thành công nếu và chỉ nếu  A có một cây SLD thất bại hữu hạn. Ngược lại,  A thất bại hữu hạn nếu và chỉ nếu cây SLD của  A có dẫn xuất SLD thành công.

G0 = ← thán_phục(Mai, Nam)

G1= ← nổi_tiếng(Nam) tử_tế(Nam,Mai)

G2 = ← chơi_tennis (Nam) tử_tế(Nam,Mai)

G3= ← tử_tế(Nam,Mai) C0: thán_phục(X0, Y0)← nổi_tiếng(Y0)  tử_tế(Y0, X0) θ1={ X0/Mai, Y0/Nam} C1: nổi_tiếng (X1)← chơi_tennis(X1) θ2={X1/Nam} C2: chơi_tennis (Nam) ← C3: tử_tế(Nam,Mai) ← 

Định nghĩa 2.9 (Rừng SLDNF) [2] Cho P là một chương trình logic và G0 là một đích (có thể chứa phủ định). Rừng SLDNF của đích G0 đối với chương trình

P được xác định như sau:

G0 là nút gốc của một cây;

 Nếu đích Q’ L1  ... Li-1 ALi+1  ... Ln (n  1) là một nút trong rừng, với A là nguyên tố được chọn theo một quy tắc tính toán nào đó. Với mỗi đích truy vấn Q” là kết quả hợp giải SLD của Q’ với một quy tắc trong chương trình, thì Q’ có một nút con được gán nhãn là Q”. Nếu không có quy tắc r nào như vậy thì Q’ có một nút con được gán nhãn là FF (Finite Failure);

 Nếu đích Q’ = L1 ... Li-1 ALi+1  ... Li+j là một nút trong rừng, với  A là literal được chọn theo một quy tắc tính toán xác định thì:

- Rừng có một cây với gốc được gán nhãn là A;

- Nếu cây gốc  A có một nút lá là  (đích rỗng) với phép thế để tính câu trả lời là rỗng thì Q’ có một nút con được gán nhãn là FF;

- Nếu cây gốc  A là hữu hạn và tất cả các nút lá được gán nhãn là FF thì nút con Q” L1 ... Li-1Li+1  ...Li+j.

Các cây của rừng SLDNF được gọi là các cây SLDNF và dãy các đích trong một nhánh của cây SLDNF có gốc G được gọi là một dẫn xuất SLDNF của G. Cây được gán nhãn bởi G0 được gọi là cây chính, cây có gốc A được gọi là cây phụ nếu A là một literal chọn trong rừng.

Ví dụ 2.9 Xét chương trình logic P gồm các quy tắc:

p1(X)  q1(Y,X) q2(X)

q2(X)  q3(X)

q3(X)  q1(X,Y)

r(X,Y)  q1(X,Z) r(Z,Y)

q1(c,b) 

q1(b,a) 

Rừng SLDNF đối với đích p1(X) được mô tả như sau:

p1(X) q3(a) q1(Y0, X) q2(X) q1(a, Y0) {X/b} {X/a} q2(b) q2(a) FF  q3(b) q3(a) q3(b) q1(b,Y0) FF □

Cây chính chứa một dẫn xuất thất bại và một nhánh thành công với phép thế để tính câu trả lời là {X/a}, nên câu trả lời của truy vấn ban đầu là p1(a).

Ví dụ 2.10 Xét chương trình logic P gồm các quy tắc sau:

p(X)  q(X)

q(X)  r(Y,X)

Rừng SLDNF đối với đích  p(X) là:

p(X) q(X)

q(X) r(Y,X)

{Y/a, X/b} □

Theo định nghĩa rừng SLDNF, trong trường hợp này mặc dù cây tương ứng với đích q(X) có một nút lá là đích rỗng (□), nhưng cây chính tương ứng với đích p(X) không phải là cây hữu hạn không thành công nghĩa là không có nút lá là FF, bởi vì đích q(X) có phép thế để tính câu trả lời là {X/b} chứ không phải là rỗng. Như vậy, phép thế hợp giải SLDNF không thể tiếp tục được nữa.

Hợp giải SLDNF là một quá trình chứng minh một đích ban đầu bằng cách xây dựng một tập PG của các đích cần phải thành công và một tập NG của các đích cần phải thất bại. SLDNF rút gọn các đích trong PG về đích rỗng {□} và xây dựng một cây thất bại hữu hạn đối với các đích trong NG. Khi một literal âm nền ¬ A được chọn trong một đích của PG thì  A được bổ sung vào NG và ngược lại, khi một literal âm nền ¬ A được chọn trong một đích của NG thì  A

được bổ sung vào PG. Trong phần tiếp theo, một đích của PG được gọi là một

đích dương và một đích của NG được gọi là một đích âm.

Một phần của tài liệu Tìm hiểu về lập luận suy diễn trong lập trình logic phỏng đoán (Trang 31 - 34)

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

(61 trang)