Thuật toán hợp nhất

Một phần của tài liệu Giáo trình trí tuệ nhân tạo (Trang 144 - 149)

TÀI LIỆU THAM KHẢO

9. Chuẩn hoá tên biến toàn cục: thay đổi tên biến sao cho các biến trên

5.3.4. Thuật toán hợp nhất

Trong logic mệnh đẻ, dễ dàng xác

logic vị từ quá trình “ương hợp (matching) này phức tạp hon

các đi i

và phát hiện có hay không một đãy các phép thay thể làm cho chúng đồng nhất. Thuật đoán hợp nhất (unification algorithm) dưới đây thực hiện công việc đó.

Ý tưởng cơ sở của thuật toán hợp nhất là đầu tiên kiểm tra tên của hai vị

từ. Nếu chúng không đồng nhất, chúng không thê hợp nhất. Nếu tên vị từ đồng nhất, kiểm tra đôi một các đối số của hai vị từ. Nếu cặp đối số đầu tiên không, thể tương hợp, hai vị từ không thể tương hợp. Nếu cặp đối số đầu tiên có thê tương hợp, xét cặp thứ hai và cứ như vậy. Nếu số đối số của hai vị từ bằng

nhau và tất cả các cặp đối số tương ứng đều có thể tương hợp, hai vị từ là có

thể tương hợp.

Nếu hai đối số tương ứng của hai vị từ là các hằng, chúng tương hợp

khi và chỉ khi chúng đồng nhất.

... Nếu một trong hai đối số tương ứng là biến, đối số tương ứng kia là một hằng, một biển khác hoặc một biều thức vị từ không chứa biễn đó, chúng có thể tương hợp, sự tương hợp nhận được qua phép thay thế biến bởi đối số tương ứng.

Ta sẽ ký hiệu sự thay thế biến X bởi A là A/X, đọc là thay thế X bởi A,

X được thay thế bởi A hoặc thay thế A cho X. Chú ý rằng, nếu một cặp đối số

tương hợp thông qua phép thay thé biến, phép thay thế này phải tác động lên

mọi thể hiện của biến trong vị từ.

Ví dụ, ta muốn hợp nhất hai vị từ P(X, X) và P(Y, Z). Hai vị từ trùng tên. Xét cặp đối số đầu tiên, chúng là các biễn X và Y, chúng có thé tương hợp thông qua phép thay thế X/Y hoặc Y/X. Giả sử phép thay thế Y/X được sử dụng, khi từ thứ nh: phép thay thế này là P(Y, Y). Khi xét tương.

hợp cặp đồ số thứ hai, các đối số này sẽ là Y và Z tương ứng. chúng tương hợp thông qua phép thay thế Y/Z hoặc Z/Y. Như vậy hai vị từ tương hợp qua hợp thành của hai phép thay thế (Y/Z)(Y/X) hoặc (Z/Y)(Y/X).

mix) |x)

P(X,X) —> PLY, „#1 É} pợ, Y)

PY, 2 py, a3 É) sợ, Y)

giá trị thay thế, các giá trị thay thể có thẻ là một hằng, một biến khác hoặc là một biểu thức vị từ. Ký hiệu (a/Xi, ax/X2, ..., ax/Xt) durge hiéu là phép thay thể thực hiện thay thé biến Xị bởi ai, X; bởi Xu bởi ak, cde tên biến không xuất hiện trong liệt kê giữ nguyên không thay đổi.

Trong ví dụ trên

(Y/):(X,Y,Z)—{X.Y,Z}

XPY YRY zI>Z

Do vậy, ta ký hiệu hợp thành của các phép thay thế như ký hiệu hợp thành của các ánh xạ: phép thay thế thực hiện trước được viết bên phải các thay thé được thực hiện sau. Mục tiêu của thủ tục hợp nhất là phát hiện phép

thay thé lam cho hai literal tương hợp.

Thủ tục hợp nhất unify(LI, L2) (xem hình 5:3) trả lại một danh sách biểu diễn hợp thành của các phép thay thế đã đượo thực hiện trong quá trình tương hợp. Danh sách rỗng. NIL, chỉ ra rằng (ương hợp không cằn phép thay thế. Danh sách chứa giá trị FAIL chi ra thủ tục hợp nhất thất bại.

“Thuật toán: unif(L¡„ L2)

4£ (1 và L2 cả hai là các biển hoặc hằng) 4f(L1 và 12 đồng nhất)rebuzn NIL,

elseif(L1 là biên)

4F (L1 xuất hiện trong L2) return {FAIL}

elseretuzn (12/11) elseif (12 1a bién)

if (L2 xuất hiện trong L1)return (FATL]

elsereturn (11/12) elsereturn (FATL)

4# (ký hiệu vị tùtrong L1 và L2 không đồng nhất)

return (FAIL]

Af (L1 và L2 có số các đổi số khác nhau)

return (FAIL)

Khởi động SUBT là NILL

for (4 =1, 4 <= số đôi số của L1) S$ € unify(arg(i, L1), arg(i, 12)) 4£ (S chúa FAIL) return (FAIL)

if ($ <> NILL)

Ấp dụng S lên phân còn lại của L1 và L2 SUBT = APPEND(S, SUBT)

return (SUB?)

Trong đó arg(i, L) tra lai đối số thứ ¡ của vị từ L

APPEND(1istl, list2): trà lại danh sách nổi hai danh sách listl va list2

Hình 5.3 Giải thuật hợp nhất

5.3.5 Hợp giải trong logic vị từ

Hai literal được gọi là bù nhau nếu một trong chúng hợp nhất với phủ

định của literal kia thông qua một phép thay thé.

Bài toán:

minh P ho một tập các phát biểu tiền để F, một phát biểu phải chứng.

“Tìm một chứng mỉnh cho P với các giả thiết F'

“Thuật toán hợp giải:

1.. Chuyển đổi tắt cả các phát biểu của F sang dạng clause

2. Lấy phủ định của P và chuyên nó sang dạng clause, thêm nó vào tập các

clause nhận được từ 1, nhận được tập các clause được gọi là tập các

clause của thủ tục.

3. Lap lại đến tận khi phát hiện mâu thuẫn hoặc không tiến triển được nữa

hoặc số bước lặp vượt quá một ngưỡng định sẵn

a. Chọn hai elause C¡ và C›, sao cho C¡ chứa một literal Li: C) = Liv Rị, C2 chứa literal L2 : C2 = Lov Ro, L¡ và La là các literal bù nhau.

thụng qua phộp thay thế ứ

b. Hợp giải : xây dung clause phan giai o(Riv R2), bằng cách áp dụng

phộp thay thể ứ lờn tuyến của Rị và R;

c. Nếu clause phân giải là clause rỗng, phát hiện mâu thuẫn, nếu không.

thêm nó vào tập các clause của thủ tục.

Nếu chọn các clause để hợp giải được tiến hành một cách có hệ thống,

thủ tục hợp giải sẽ tìm thấy mâu thuẫn, nều nó. ¡. Tuy nhiên, thời gian đề.

tìm thấy mâu thuẫn có thê rất dài. Tên tại một vài chiến lược chọn lựa làm

tăng tốc độ đáng kể quá trình hợp giải:

ô_ Chỉ hợp giải cỏc clause cú chứa cỏc literal bit

ô_ Loai bỗ một số clause ngay khi nú được sinh fa. Hai loại clause bị loại bỏ là clause hằng đúng (ví đự PCX) Ÿ—P(X)) và clause hé quả của các clause khát (ví đụ đã có clause P(X) cdc clause dạng P(X) v.... có thể

loại bỏ).

ô_ Mỗi khi cú thể, hợp a

clause phủ định của clause phải chứng minh hoặc với clause sinh ra bởi hợp giải với các clause như thế, Chiên lược này được gọi là chiến lược tập hỗ trg (set-of-support strategy).

ô_ Mỗi khi cú thể, hợp giải với clause chỉ cú một literal. Cỏc hợp giải như vậy sẽ sinh ra các clause phân giải có ít literal hơn cha của chúng và

như thể tiến sát hơn đến clause rồng. Chiến lược này được gọi là chiến

lược ưu tiên 6 don (wnit-preference strategy)

. Ta minh họa thủ tục hợp giải qua ví dụ “thông tin về Marcus” cia

phần trước

Các tiền đề

man(marcus)

pompeian(mareus)

VX : pompeian(X) => roman(X)

ruler(ceasar)

VX : roman(X) —> loyalto(X, ceasar) v hate(X, ceasar)

VX, Y : loyalto(X, Y)

WX, VY : person(X) ^ ruler(Y) a try_¢ wssinate(X, Y) > loyalto(X, Y)

try_assassinate(marcus, ceasar)

VX : man(X) > person(X)

1

Điều phải chúng minh là “Marcus căm ghét Ceasar”

Chuyển các phát biểu tiền đề sang dang clause, ta được:

Các tiền đề ở dạng clause

1) | man(mareus)

2) | pompeian(marcus)

3) | = pompeian(X1) v roman(X1) 4) | ruler(ceasar)

5) | = roman(X2) v loyalto(X2, ceasar) v hate(X2, ceasar) 6) | loyalto(Xs, f(s)

7) | = person(X4) vs ruler(Y) vtry_assassinate(Xs, Y) v—ơ loyaHo(Xs, Y) 8) | try_assassinate(marcus, ceasar)

9) | ơ man(X3) v person(Xs)

2) Điều phải chứng minh là hate(Mareus, Ceasar). Lấy phủ định của nó, ta

được —hate(Marcus, Ceasar), thêm nó vào tập cae clause tiền đề để nhận được tập ban dau cc clause của thủ tục.

'Tập các clause phải chứng tỏ có mâu thuẫn.

1) | man(marcus)

2) | pompeian(marcus)

3) | ơ pompeian(XI) v roman(X1)

4) | ruler(ceasar)

3) | —ơ roman(X2) v loyalto(X2, ceasar) v hate(X2, ceasar)

6) | loyalto(X3, f1(X3))

7) | — person(X4) vơ ruler(Y) v= try_assassinate(X4, Y) vơ loyalto(X4, Y)

8) | try_assassinate(marcus, ceasar)

9) | ơ man(X5) v person(X5)

10) | — hate(marcus, ccasar)

3.. Quá trình hợp giải

8) V loyalto(Marcus,'Ceasar); kết quả hợp giải của

larcuS/X;

11) ơroman(M:

10 & 5 với phép thay tl

12) spompeian(Marcus) v loyalto(Marcus, Ceasar): két quả hợp giải cua 11 & 3 với phép thay thế Marcus/Xị

Một phần của tài liệu Giáo trình trí tuệ nhân tạo (Trang 144 - 149)

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

(173 trang)