You are on page 1of 44

Machine Translated by Google

9 ẢNH HƯỞNG TRONG


LOGIC ĐƠN HÀNG ĐẦU TIÊN

Trong đó chúng tôi xác định các thủ tục hiệu quả để trả lời các câu hỏi được đặt ra theo

logic bậc nhất.

Chương 7 đã chỉ ra cách thức có thể đạt được suy luận đúng đắn và đầy đủ đối với logic mệnh đề.

Trong chương này, chúng tôi mở rộng các kết quả đó để thu được các thuật toán có thể trả lời bất kỳ câu

hỏi nào có thể trả lời được nêu trong logic bậc nhất. Phần 9.1 giới thiệu các quy tắc suy luận cho các bộ

định lượng và chỉ ra cách giảm suy luận bậc nhất thành suy luận mệnh đề, mặc dù có khả năng phải trả giá

rất lớn. Phần 9.2 mô tả ý tưởng về sự hợp nhất, chỉ ra cách nó có thể được sử dụng để xây dựng các quy tắc

suy luận hoạt động trực tiếp với các câu bậc nhất. Sau đó, chúng ta thảo luận về ba họ chính của các thuật

toán suy luận bậc nhất. Chuỗi chuyển tiếp và các ứng dụng của nó đối với cơ sở dữ liệu suy diễn và hệ thống

sản xuất được đề cập trong Phần 9.3; Hệ thống lập trình chuỗi và logic ngược được phát triển trong Phần

9.4. Chuỗi phường tiến và chuỗi lùi có thể rất hiệu quả, nhưng chỉ áp dụng cho các cơ sở tri thức có thể

được biểu thị dưới dạng tập hợp các mệnh đề Horn. Các câu bậc nhất tổng quát yêu cầu chứng minh định lý

dựa trên độ phân giải, được mô tả trong Phần 9.5.

9.1 ĐỀ XUẤT VS. ẢNH HƯỞNG ĐƠN HÀNG ĐẦU TIÊN

Phần này và phần tiếp theo giới thiệu các ý tưởng cơ bản của các hệ thống suy luận logic hiện đại.

Chúng ta bắt đầu với một số quy tắc suy luận đơn giản có thể áp dụng cho các câu có bộ định lượng để thu

được các câu không có bộ định lượng. Những quy tắc này tự nhiên dẫn đến ý tưởng rằng suy luận bậc nhất có

thể được thực hiện bằng cách chuyển đổi cơ sở tri thức sang logic mệnh đề và sử dụng suy luận mệnh đề, điều

mà chúng ta đã biết cách làm. Phần tiếp theo chỉ ra một lối tắt rõ ràng, dẫn đến các phương pháp suy luận

thao tác trực tiếp với các câu bậc nhất.

9.1.1 Các quy tắc suy luận cho bộ định lượng

Chúng ta hãy bắt đầu với các bộ định lượng phổ quát. Giả sử cơ sở tri thức của chúng ta chứa tiên đề dân

gian tiêu chuẩn nói rằng tất cả các vị vua tham lam đều xấu xa:

x Vua (x) Tham lam (x) Ác nhân (x).

322
Machine Translated by Google

Mục 9.1. Mệnh đề so với Suy luận bậc nhất 323

Sau đó, có vẻ khá dễ dàng để suy ra bất kỳ câu nào sau đây: Vua (John)

Tham lam (John) Ác độc (John)


Vua (Richard) Tham lam (Richard) Ác độc (Richard)
Vua (Cha (John)) Tham lam (Cha (John)) Ác ma (Cha (John)).
.
.
.

PHỔ CẬP
KHỞI ĐỘNG
Quy tắc của Universal Instantiation (viết tắt là UI) nói rằng chúng ta có thể suy ra bất kỳ câu nào
THỜI HẠN bằng cách thay thế một thuật ngữ cơ bản (một thuật ngữ không có biến) cho biến.1 Để viết rasuy
quyluận
tắc

một cách chính thức, chúng ta sử dụng khái niệm thay thế được giới thiệu trong Phần 8.3.

Gọi SUBST (θ, α) là kết quả của việc áp dụng phép thay thế θ cho câu α. Khi đó quy tắc được viết
v α

SUBST ({v / g}, α)

cho bất kỳ biến v và số hạng cơ sở g. Ví dụ: ba câu đã cho trước đó nhận được bằng các thay thế

{x / John}, {x / Richard} và {x / Father (John)}.


HIỆN TẠI
KHỞI ĐỘNG
Trong quy tắc cho Thuyết minh hiện sinh, biến được thay thế bằng một ký hiệu quan trọng
mới. Câu lệnh chính thức như sau: đối với bất kỳ câu nào α, biến v và ký hiệu hằng số k không
xuất hiện ở nơi khác trong cơ sở tri thức, v α SUBST ({v / k}, α)

Ví dụ, từ câu x Crown (x)

OnHead (x, John) chúng ta có thể suy

ra câu

Crown (C1) OnHead (C1, John) miễn

là C1 không xuất hiện ở nơi khác trong cơ sở tri thức. Về cơ bản, câu hiện sinh nói rằng có một
số đối tượng thỏa mãn một điều kiện và việc áp dụng quy tắc thời gian tồn tại chỉ đặt tên cho
đối tượng đó. Tất nhiên, cái tên đó không được thuộc về đối tượng khác. Toán học cung cấp một
ví dụ hay: giả sử chúng ta phát hiện ra rằng có một số lớn hơn một chút so với 2,71828 và thỏa

mãn phương trình d (xy) / dy = xy với x.


Chúng ta có thể đặt tên cho con số này, chẳng hạn như e, nhưng sẽ là sai lầm nếu đặt tên cho nó là SKOLEM

CONSTANT cho một đối tượng hiện có, chẳng hạn như π. Theo logic, tên mới được gọi là hằng số Skolem. Tồn tại tial

Instantiation là một trường hợp đặc biệt của một quá trình tổng quát hơn được gọi là skolemization, mà
chúng tôi đề cập trong Phần 9.5.

Trong khi Thuyết minh phổ biến có thể được áp dụng nhiều lần để tạo ra nhiều hệ quả khác
nhau, thì Thuyết minh hiện sinh có thể được áp dụng một lần, và sau đó câu được xác định theo

quan điểm hiện sinh có thể bị loại bỏ. Ví dụ, chúng ta không còn cần x Kill (x, Victim) khi
chúng ta đã thêm câu Kill (Kẻ sát nhân, Nạn nhân). Nói một cách chính xác, cơ sở tri thức mới
SUY LUẬN
TƯƠNG ĐƯƠNG
không tương đương về mặt logic với cơ sở cũ, nhưng nó có thể được chứng minh là tương đương
về mặt suy luận theo nghĩa là nó có thể thỏa mãn chính xác khi cơ sở tri thức ban đầu được thỏa mãn.

1 Đừng nhầm lẫn những sự thay thế này với những cách diễn giải mở rộng được sử dụng để xác định ngữ nghĩa của các bộ định lượng.

Phép thay thế sẽ thay thế một biến bằng một thuật ngữ (một đoạn cú pháp) để tạo ra một câu mới, trong khi một
phép diễn giải ánh xạ một biến tới một đối tượng trong miền.
Machine Translated by Google

324 Chương 9. Suy luận trong logic bậc nhất

9.1.2 Rút gọn suy luận mệnh đề

Một khi chúng ta có các quy tắc để suy ra các câu không có định lượng từ các câu đã được định lượng, có thể

giảm suy luận bậc nhất thành suy luận mệnh đề. Trong phần này chúng tôi đưa ra những ý chính; các chi tiết

được nêu trong Phần 9.5.

Ý tưởng đầu tiên là, cũng giống như một câu được định lượng tồn tại có thể được thay thế bằng một câu

khởi tạo, một câu được định lượng phổ biến có thể được thay thế bằng tập hợp tất cả các cách khởi tạo có thể

có. Ví dụ: giả sử cơ sở kiến thức của chúng ta chỉ chứa các câu

x Vua (x) Tham lam (x) Ác ma (x)

King (John)
(9,1)
Tham lam (John)

Anh trai (Richard, John).

Sau đó, chúng tôi áp dụng giao diện người dùng cho câu đầu tiên bằng cách sử dụng tất cả các thuật ngữ thay thế từ cơ

bản có thể có từ từ vựng của cơ sở kiến thức — trong trường hợp này là {x / John} và {x / Richard}. Chúng tôi đạt được

Vua (John) Tham lam (John) Ác độc (John)

Vua (Richard) Tham lam (Richard) Ác độc (Richard),

và chúng tôi loại bỏ câu được định lượng phổ biến. Bây giờ, cơ sở tri thức về cơ bản là mệnh đề nếu chúng ta

xem các câu nguyên tử cơ bản — King (John), Greedy (John), v.v. — như là các ký hiệu mệnh đề. Do đó, chúng ta

có thể áp dụng bất kỳ thuật toán mệnh đề hoàn chỉnh nào trong Chương 7 để thu được kết luận chẳng hạn như Ác-

si-mét (John).

Kỹ thuật mệnh đề này có thể được thực hiện hoàn toàn tổng quát, như chúng tôi đã trình bày trong Phần

9.5; nghĩa là, mọi cơ sở tri thức bậc nhất và truy vấn có thể được định đề hóa theo cách mà yêu cầu được bảo

toàn. Như vậy, chúng ta đã có đầy đủ thủ tục quyết định cho việc nhập ngũ ... hoặc có lẽ không. Có một vấn đề:

khi cơ sở tri thức bao gồm một ký hiệu hàm, thì tập hợp các số hạng cơ sở có thể thay thế là vô hạn! Ví dụ, nếu

cơ sở tri thức đề cập đến biểu tượng Father, thì có thể xây dựng vô số thuật ngữ lồng nhau như Father (Cha

(Cha (John)))). Các thuật toán mệnh đề của chúng tôi sẽ gặp khó khăn với một tập hợp các câu lớn vô hạn.

May mắn thay, có một định lý nổi tiếng của Jacques Herbrand (1930) với kết quả là nếu một câu được đưa

vào bởi cơ sở tri thức bậc nhất, ban đầu, thì sẽ có một chứng minh chỉ liên quan đến một tập con hữu hạn của cơ

sở tri thức mệnh đề. Vì bất kỳ tập hợp con nào như vậy đều có độ sâu tối đa lồng vào nhau trong số các thuật

ngữ cơ bản của nó, chúng ta có thể tìm thấy tập hợp con bằng cách tạo tất cả các ký tự với các ký hiệu không

đổi (Richard và John), sau đó tất cả các thuật ngữ có độ sâu 1 (Father (Richard) và Father (John) )), sau đó là

tất cả các thuật ngữ của độ sâu 2, v.v., cho đến khi chúng ta có thể xây dựng một bằng chứng mệnh đề cho câu

kéo theo.

Chúng tôi đã phác thảo một cách tiếp cận để suy luận bậc nhất thông qua mệnh đề hoàn chỉnh — nghĩa là,

bất kỳ câu nào kèm theo đều có thể được chứng minh. Đây là một thành tựu lớn, vì không gian của các mô hình

khả thi là vô hạn. Mặt khác, chúng tôi không biết cho đến khi việc chứng minh được thực hiện thì bản án sẽ

được đưa ra! Điều gì xảy ra khi bản án không được yêu cầu?

Chúng ta có thể nói? Đối với logic bậc nhất, hóa ra là chúng ta không thể. Quy trình chứng minh của chúng tôi

có thể tiếp tục lặp đi lặp lại, tạo ra ngày càng nhiều các thuật ngữ lồng nhau sâu sắc hơn, nhưng chúng tôi sẽ

không biết liệu nó có bị mắc kẹt trong một vòng lặp vô vọng hay liệu bằng chứng sắp xuất hiện. Điều này rất nhiều
Machine Translated by Google

Mục 9.2. Thống nhất và Nâng cao 325

như vấn đề tạm dừng đối với máy Turing. Alan Turing (1936) và Alonzo Church (1936) đều đã chứng minh, theo

những cách khá khác nhau, tính tất yếu của tình trạng này. Câu hỏi đặt ra đối với logic bậc nhất là có thể

quyết định — nghĩa là, các thuật toán tồn tại nói có cho mọi câu được đưa vào, nhưng không tồn tại thuật

toán nào cũng nói không với mọi câu không có đuôi.

9.2 HỢP NHẤT VÀ NÂNG CẤP

Phần trước mô tả sự hiểu biết về suy luận bậc nhất tồn tại cho đến đầu những năm 1960. Người đọc nhạy bén

(và chắc chắn là các nhà logic tính toán của đầu những năm 1960) sẽ nhận thấy rằng cách tiếp cận mệnh đề

tương đối kém hiệu quả. Ví dụ, với truy vấn Evil (x) và cơ sở kiến thức trong Phương trình (9.1), có vẻ như

mỗi câu sẽ tạo ra các câu như King (Richard) Greedy (Richard) Evil (Richard).

Thật vậy, suy luận của Ác ma (John) từ các câu

x Vua (x) Tham lam (x) Ác ma (x)

King (John)

Tham lam (John)

dường như hoàn toàn hiển nhiên đối với một con người. Bây giờ chúng tôi hướng dẫn cách làm cho nó hoàn

toàn hiển nhiên với máy tính.

9.2.1 Quy tắc suy luận bậc nhất

Suy luận rằng John là ác - nghĩa là {x / John} giải được truy vấn Evil (x) - hoạt động như sau: để sử dụng

quy tắc rằng những vị vua tham lam là xấu xa, hãy tìm một số x sao cho x là vua và x là tham lam, và sau đó

suy ra rằng x này là ác. Nói một cách tổng quát hơn, nếu có một số thay thế θ làm cho mỗi liên từ của tiền đề

hàm ý giống hệt với các câu đã có trong cơ sở tri thức, thì chúng ta có thể khẳng định kết luận của hàm ý,

sau khi áp dụng θ.

Trong trường hợp này, phép thay thế θ = {x / John} đạt được mục tiêu đó.

Chúng tôi thực sự có thể làm cho bước suy luận hoạt động nhiều hơn. Giả sử rằng thay vì

biết Tham lam (John), chúng ta biết rằng mọi người đều tham lam:

y Tham lam (y). (9.2)

Sau đó, chúng ta vẫn muốn có thể kết luận rằng Ác ma (John), bởi vì chúng ta biết rằng John là một vị vua

(được cho) và John là tham lam (bởi vì mọi người đều tham lam). Những gì chúng ta cần để làm việc này là tìm

sự thay thế cho cả các biến trong câu hàm ý và cho các biến trong các câu nằm trong cơ sở kiến thức. Trong

trường hợp này, việc áp dụng phép thay thế {x / John, y / John} cho tiền đề ngụ ý King (x) và Greedy (x) và

các câu cơ sở tri thức King (John) và Greedy (y) sẽ làm cho chúng giống hệt nhau. Do đó, chúng ta có thể suy

ra kết luận của hàm ý.

Quá trình suy luận này có thể được nắm bắt dưới dạng một quy tắc suy luận duy nhất mà chúng tôi gọi
là Gener 2 alized Modus Ponens:
Đối với các câu nguyên tử pi, pi và q, trong đó có sự thay thế θ
TỔNG HỢP
MODUS PONENS
Machine Translated by Google

326 Chương 9. Suy luận trong logic bậc nhất

sao cho SUBST (θ, pi ) = SUBST (θ, pi), với mọi i, pn ,

p1 , p2 , ... (p1 p2 ... pn q)


.
SUBST (θ, q)

Có n + 1 tiền đề cho quy tắc này: n câu nguyên tử pi và một hàm ý. Kết luận là kết quả của việc áp dụng

phép thay thế θ cho hệ quả q. Ví dụ: p1 là Vua (John) p1 là Vua (x) p2 là Tham lam (y) p2 là Tham lam (x)

θ là {x / John, y / John} q là Ác nhân (x)

SUBST (θ, q) là Ác ma (John).

Dễ dàng chỉ ra rằng Modus Ponens tổng quát hóa là một quy tắc suy luận đúng đắn. Đầu tiên, chúng ta quan

sát thấy rằng, đối với bất kỳ câu p nào (có các biến được giả định là được định lượng phổ biến) và đối

với bất kỳ thay thế nào θ,

p | = SUBST (θ, p)

do Universal Instantiation nắm giữ. Nó đặc biệt phù hợp với một θ thỏa mãn các điều kiện của quy tắc Mô-đun

tổng quát Ponens. Do đó, từ p1 ,. .., pn chúng ta có thể suy ra

SUBST (θ, p1 ) ... SUBST (θ, pn )

và từ hàm ý p1 ... pn q ta có thể suy ra

SUBST (θ, p1) ... SUBST (θ, pn) SUBST (θ, q).

Bây giờ, θ trong Mô-đun tổng quát Ponens được định nghĩa sao cho SUBST (θ, pi ) = SUBST (θ, pi), với mọi

i; do đó câu đầu tiên của hai câu này khớp với tiền đề của câu thứ hai một cách chính xác.

Do đó, SUBST (θ, q) theo sau bởi Modus Ponens.

NÂNG Modus Ponens tổng quát là phiên bản nâng cấp của Modus Ponens — nó nâng cao Modus Po

chuyển từ logic mệnh đề cơ bản (không có biến) sang logic bậc nhất. Chúng ta sẽ thấy trong phần còn lại của

chương này rằng chúng ta có thể phát triển các phiên bản nâng cao của thuật toán chuỗi tiến, chuỗi lùi và

phân giải được giới thiệu trong Chương 7. Ưu điểm chính của các quy tắc suy luận nâng cao so với mệnh đề

là chúng chỉ thực hiện những thay thế được yêu cầu để cho phép tiến hành các suy luận cụ thể.

9.2.2 Thống nhất

Các quy tắc suy luận nâng cao yêu cầu tìm các phép thay thế làm cho các biểu thức logic khác nhau trông

HỢP NHẤT giống hệt nhau. Quá trình này được gọi là hợp nhất và là thành phần chính của tất cả các thuật toán suy

UNIFIER luận bậc nhất. Thuật toán UNIFY nhận hai câu và trả về một từ hợp nhất cho chúng nếu một câu tồn tại:

UNIFY (p, q) = θ trong đó SUBST (θ, p) = SUBST (θ, q).

Hãy để chúng tôi xem xét một số ví dụ về cách UNIFY nên cư xử. Giả sử chúng ta có một truy vấn AskVars

(Knows (John, x)): John biết ai? Có thể tìm thấy câu trả lời cho câu hỏi này

2 Modus Ponens tổng quát hơn Modus Ponens (trang 249) theo nghĩa là các dữ kiện đã biết và tiền đề
của hàm ý chỉ cần khớp với một sự thay thế, chứ không phải chính xác. Mặt khác, Modus Ponens cho
phép bất kỳ câu α nào làm tiền đề, thay vì chỉ là sự kết hợp của các câu nguyên tử.
Machine Translated by Google

Mục 9.2. Thống nhất và Nâng cao 327

bằng cách tìm tất cả các câu trong cơ sở kiến thức thống nhất với Knows (John, x). Dưới đây là
kết quả của việc thống nhất bốn câu khác nhau có thể có trong cơ sở kiến thức:

UNIFY (Biết (John, x), Biết (John, Jane)) = {x / Jane}


UNIFY (Biết (John, x), Biết (y, Bill)) = {x / Bill, y / John}
UNIFY (Biết (John, x), Biết (y, Mẹ (y))) = {y / John, x / Mẹ (John)}
UNIFY (Knows (John, x), Knows (x, Elizabeth)) = fail.

Sự hợp nhất cuối cùng không thành công vì x không thể tiếp nhận các giá trị John và Elizabeth tại

cùng thời gian. Bây giờ, hãy nhớ rằng Knows (x, Elizabeth) có nghĩa là “Mọi người đều biết
Elizabeth”, vì vậy chúng ta có thể suy ra rằng John biết Elizabeth. Vấn đề nảy sinh chỉ vì hai câu
xảy ra sử dụng cùng một tên biến, x. Vấn đề có thể tránh được bằng cách chuẩn hóa riêng một trong
NGHIÊN CỨU
RIÊNG BIỆT
hai câu được thống nhất, có nghĩa là đổi tên các biến của nó để tránh đụng độ tên. Ví dụ, chúng

ta có thể đổi tên x trong Knows (x, Elizabeth) thành x17 (một tên biến mới) mà không thay đổi ý
nghĩa của nó. Bây giờ hợp nhất sẽ hoạt động:

UNIFY (Biết (John, x), Biết (x17, Elizabeth)) = {x / Elizabeth, x17 / John} .

Bài tập 9.12 nghiên cứu sâu hơn về sự cần thiết của việc tiêu chuẩn hóa ngoài.

Có một điều phức tạp nữa: chúng tôi đã nói rằng UNIFY nên trả về một thay thế làm cho hai
đối số trông giống nhau. Nhưng có thể có nhiều hơn một đơn vị tốt hơn như vậy. Ví dụ: UNIFY

(Knows (John, x), Knows (y, z)) có thể trả về {y / John, x / z} hoặc {y / John, x / John, z /
John}. Bộ hợp nhất đầu tiên cung cấp Knows (John, z) là kết quả của cation unifi, trong khi bộ thứ
hai cho biết Knows (John, John). Kết quả thứ hai có thể nhận được từ kết quả đầu tiên bằng cách
thay thế bổ sung {z / John}; chúng ta nói rằng bộ hợp nhất đầu tiên tổng quát hơn bộ thứ hai, bởi
vì nó đặt ít hạn chế hơn đối với các giá trị của các biến. Nó chỉ ra rằng, đối với mọi cặp biểu
CHUNG NHẤT
UNIFIER thức duy nhất, có một bộ hợp nhất tổng quát nhất (hoặc MGU) duy nhất để đổi tên và thay thế các

biến. (Ví dụ: {x / John} và {y / John} được coi là tương đương, cũng như {x / John, y / John}
và {x / John, y / x}.) Trong trường hợp này, nó là {y / John, x / z}.

Một thuật toán để tính toán hầu hết các bộ hợp nhất chung được thể hiện trong Hình 9.1. Quá
trình này rất đơn giản: khám phá đệ quy đồng thời hai biểu thức “cạnh nhau”, xây dựng một bộ hợp
nhất trong quá trình này, nhưng không thành công nếu hai điểm tương ứng trong cấu trúc không khớp.
Có một bước đắt giá: khi so khớp một biến với một thuật ngữ phức tạp, người ta phải kiểm tra xem bản thân

biến đó có xuất hiện bên trong thuật ngữ hay không; nếu có, kết quả trùng khớp không thành công vì không có

bộ hợp nhất nhất quán nào có thể được xây dựng. Ví dụ, S (x) không thể thống nhất với S (S (x)). Điều này
KIỂM TRA CỦA CHÚNG TÔI
được gọi là kiểm tra xảy ra làm cho độ phức tạp của toàn bộ thuật toán là bậc hai trong kích thước của các

biểu thức được thống nhất. Một số hệ thống, bao gồm tất cả các hệ thống lập trình logic, chỉ đơn giản là bỏ

qua kiểm tra sự cố và kết quả là đôi khi đưa ra những suy luận không chắc chắn; các hệ thống khác sử dụng

các thuật toán phức tạp hơn với độ phức tạp theo thời gian tuyến tính.

9.2.3 Lưu trữ và truy xuất

Bên dưới các hàm TELL và ASK được sử dụng để thông báo và thẩm vấn cơ sở kiến thức là các hàm
STORE và FETCH nguyên thủy hơn . STORE (các) lưu trữ một câu s vào cơ sở tri thức và FETCH (q)
trả về tất cả các bộ hợp nhất sao cho truy vấn q hợp nhất với một số
Machine Translated by Google

328 Chương 9. Suy luận trong logic bậc nhất

hàm UNIFY (x , y, θ) trả về một thay thế để làm cho x và y giống hệt nhau
đầu vào: x , một biến, hằng số, danh sách hoặc biểu thức phức hợp
y, một biến, hằng số, danh sách hoặc biểu thức ghép
θ, thay thế được tích hợp cho đến nay (tùy chọn, mặc định là trống)

nếu θ = thất bại thì trả về thất bại

khác nếu x = y thì trả về θ


khác nếu VARIABLE? (x ) thì trả về UNIFY-VAR (x , y, θ)
khác nếu VARIABLE? (y) thì trả về UNIFY-VAR (y, x, θ)
khác nếu COMPOUND? (x ) và COMPOUND? (y) thì
trả về UNIFY (x .ARGS, y.ARGS , UNIFY (x .OP , y.OP, θ))
khác nếu LIST? (x ) và LIST? (y) thì
trả về UNIFY (x .REST, y.REST , UNIFY (x .FIRST, y.FIRST, θ))
nếu không trả lại thất bại

hàm UNIFY-VAR (var , x , θ) trả về một thay thế

nếu {var / val} θ thì trả về UNIFY (val, x, θ)


khác nếu {x / val} θ thì trả về UNIFY (var , val, θ)
khác nếu OCCUR-CHECK? (var , x) thì trả về lỗi

nếu không, hãy trở lại, thêm {var / x} vào θ

Hình 9.1 Thuật toán hợp nhất. Thuật toán hoạt động bằng cách so sánh các cấu trúc
của các yếu tố đầu vào, từng phần tử. Sự thay thế θ là đối số của UNIFY được xây dựng
trên đường đi và được sử dụng để đảm bảo rằng các so sánh sau này phù hợp với các ràng buộc

đã được thành lập trước đó. Trong một biểu thức ghép như F (A, B), trường OP chọn
ra ký hiệu hàm F và trường ARGS chọn ra danh sách đối số (A, B).

câu trong cơ sở kiến thức. Vấn đề mà chúng tôi sử dụng để minh họa cho sự hợp nhất — tìm ra tất cả
sự kiện thống nhất với Knows (John, x) —là một ví dụ của FETCHing.

Cách đơn giản nhất để triển khai CỬA HÀNG và TÌM KIẾM là lưu giữ tất cả các dữ kiện trong một thời gian dài

liệt kê và thống nhất từng truy vấn với mọi phần tử của danh sách. Quá trình như vậy là không hiệu quả, nhưng

nó hoạt động và đó là tất cả những gì bạn cần để hiểu phần còn lại của chương. Phần còn lại của điều này

phần đưa ra các cách giúp truy xuất hiệu quả hơn; nó có thể được bỏ qua trong lần đọc đầu tiên.

Chúng tôi có thể làm cho FETCH hiệu quả hơn bằng cách đảm bảo rằng các hợp nhất chỉ được thử

với những câu có một số cơ hội thống nhất. Ví dụ, không có ích gì khi cố gắng

để hợp nhất Knows (John, x) với Brother (Richard, John). Chúng ta có thể tránh những sự hợp nhất như vậy bằng cách
CHỈ SỐ
lập chỉ mục các dữ kiện trong cơ sở tri thức. Một lược đồ đơn giản được gọi là lập chỉ mục vị từ đặt
THUỘC TÍNH
tất cả các sự kiện Knows trong một thùng và tất cả các thông tin Brother trong một thùng khác. Các thùng có thể được
CHỈ SỐ

được lưu trữ trong bảng băm để truy cập hiệu quả.

Lập chỉ mục vị từ rất hữu ích khi có nhiều ký hiệu vị từ nhưng chỉ có một số

mệnh đề cho mỗi ký hiệu. Tuy nhiên, đôi khi, một vị ngữ có nhiều mệnh đề. Ví dụ,

giả sử rằng cơ quan thuế muốn theo dõi xem ai thuê ai, sử dụng dự đoán cate Employs (x, y). Đây sẽ là một nhóm

rất lớn với có lẽ hàng triệu nhà tuyển dụng


Machine Translated by Google

Mục 9.2. Thống nhất và Nâng cao 329

Số sử dụng (x, y) Số sử dụng (x, y)

Tuyển dụng (x, Richard) Tuyển dụng (IBM, y) Dịch vụ (x, John) Số sử dụng (x, x) Tuyển dụng (John, y)

Tuyển dụng (IBM, Richard) Tuyển dụng (John, John)

(Một) (b)

Hình 9.2 (a) Mạng phụ có nút thấp nhất là Employs (IBM, Richard).
(b) Mạng phụ cho câu Employs (John, John).

và hàng chục triệu nhân viên. Trả lời một truy vấn chẳng hạn như Employs (x, Richard) với

lập chỉ mục vị từ sẽ yêu cầu quét toàn bộ nhóm.

Đối với truy vấn cụ thể này, sẽ hữu ích nếu các dữ kiện được lập chỉ mục theo cả vị từ và theo

đối số thứ hai, có thể sử dụng khóa bảng băm kết hợp. Sau đó, chúng tôi có thể chỉ cần xây dựng

khóa từ truy vấn và truy xuất chính xác những dữ kiện thống nhất với truy vấn. Cho người khác

các truy vấn, chẳng hạn như Employs (IBM, y), chúng tôi cần phải lập chỉ mục các dữ kiện bằng cách kết hợp

vị ngữ với đối số đầu tiên. Do đó, dữ kiện có thể được lưu trữ dưới nhiều chỉ mục

, hiển thị chúng ngay lập tức có thể truy cập được vào các truy vấn khác nhau mà chúng có thể hợp nhất với nhau.

Đưa ra một câu được lưu trữ, có thể tạo chỉ số cho tất cả các truy vấn có thể

mà thống nhất với nó. Đối với thực tế Employs (IBM, Richard), các truy vấn là

Tuyển dụng (IBM, Richard) IBM có tuyển dụng Richard không?

Tuyển dụng (x, Richard) Ai thuê Richard?

Tuyển dụng (IBM, y) IBM tuyển dụng ai?

Số sử dụng (x, y) Ai thuê ai?

Các truy vấn này tạo thành một mạng phụ, như trong Hình 9.2 (a). Mạng tinh thể có một số đặc tính thú vị.

Ví dụ: nút con của bất kỳ nút nào trong mạng tinh thể được lấy từ

cha mẹ bởi một sự thay thế duy nhất; và con chung "cao nhất" của hai nút bất kỳ là

kết quả của việc áp dụng bộ hợp nhất chung nhất của họ. Phần của mạng tinh thể trên mặt đất bất kỳ

thực tế có thể được xây dựng một cách có hệ thống (Bài tập 9.5). Một câu với các hằng số lặp lại có

một mạng tinh thể hơi khác, như thể hiện trong Hình 9.2 (b). Các ký hiệu và biến hàm trong

các câu được lưu trữ giới thiệu các cấu trúc mạng tinh thể thú vị hơn.

Lược đồ chúng tôi đã mô tả hoạt động rất tốt bất cứ khi nào mạng tinh thể chứa một

số lượng nút. Tuy nhiên, đối với một vị từ có n đối số, mạng tinh thể chứa O (2n)

điểm giao. Nếu các ký hiệu hàm được cho phép, số lượng nút cũng có kích thước theo cấp số nhân

của các điều khoản trong câu được lưu trữ. Điều này có thể dẫn đến một số lượng lớn các chỉ số. Tại một số

điểm, lợi ích của việc lập chỉ mục lớn hơn chi phí lưu trữ và duy trì tất cả

các chỉ số. Chúng tôi có thể phản hồi bằng cách áp dụng một chính sách cố định, chẳng hạn như chỉ duy trì các chỉ số trên

các khóa bao gồm một vị từ cộng với mỗi đối số hoặc bằng cách sử dụng một chính sách thích ứng tạo ra

các chỉ số để đáp ứng nhu cầu của các loại truy vấn được yêu cầu. Đối với hầu hết các hệ thống AI,

số lượng dữ kiện được lưu trữ đủ nhỏ để việc lập chỉ mục hiệu quả được coi là một giải pháp

vấn đề. Đối với cơ sở dữ liệu thương mại, trong đó số dữ kiện lên đến hàng tỷ, vấn đề có

là chủ đề của nghiên cứu chuyên sâu và phát triển công nghệ ..
Machine Translated by Google

330 Chương 9. Suy luận trong logic bậc nhất

9.3 ĐÀO TẠO TIẾP THEO

Một thuật toán chuỗi chuyển tiếp cho các mệnh đề xác định đã được đưa ra trong Phần 7.5.

Ý tưởng rất đơn giản: bắt đầu với các câu nguyên tử trong cơ sở kiến thức và áp dụng Modus Ponens theo

hướng thuận, thêm các câu nguyên tử mới, cho đến khi không thể suy luận thêm. Ở đây, chúng tôi giải thích

cách thuật toán được áp dụng cho các mệnh đề xác định bậc nhất.

Các mệnh đề xác định như Tình huống Phản hồi đặc biệt hữu ích cho các hệ thống đưa ra suy luận để phản

ứng với thông tin mới đến. Nhiều hệ thống có thể được định nghĩa theo cách này và chuỗi chuyển tiếp có thể

được thực hiện rất hiệu quả.

9.3.1 Mệnh đề xác định bậc nhất

Các mệnh đề xác định bậc nhất gần giống với các mệnh đề xác định theo mệnh đề (trang 256): chúng là các

phép rút gọn của các nghĩa trong đó chính xác một là số dương. Một mệnh đề xác định hoặc là nguyên tử hoặc

là một hàm ý có tiền đề là sự kết hợp của các nghĩa đen và nghĩa của nó là một nghĩa đen dương duy nhất.

Sau đây là các mệnh đề xác định bậc nhất:

Vua (x) Tham lam (x) Ác nhân (x).

Vua (John).

Tham lam (y).

Không giống như các nghĩa đen mệnh đề, các nghĩa đen bậc nhất có thể bao gồm các biến, trong trường hợp

đó, các biến đó được giả định là được định lượng phổ biến. (Thông thường, chúng tôi bỏ qua các định

lượng phổ quát khi viết các mệnh đề xác định.) Không phải mọi cơ sở tri thức đều có thể được chuyển đổi

thành một tập hợp các mệnh đề xác định vì hạn chế đơn dương - nghĩa đen, nhưng nhiều cơ sở có thể. Hãy xem

xét vấn đề sau:

Luật pháp quy định rằng việc một người Mỹ bán vũ khí cho các quốc gia thù địch là một
tội ác. Đất nước Nono, kẻ thù của Mỹ, có một số tên lửa, và tất cả tên lửa của nó đã
được bán cho nó bởi Đại tá West, người Mỹ.

Chúng tôi sẽ chứng minh rằng Tây là tội phạm. Đầu tiên, chúng tôi sẽ biểu diễn những dữ kiện này dưới dạng

mệnh đề xác định bậc nhất. Phần tiếp theo cho thấy cách thuật toán chuỗi chuyển tiếp giải quyết vấn đề.

“... việc người Mỹ bán vũ khí cho các quốc gia thù địch là một tội ác ”:

Mỹ (x) Vũ khí (y) Bán (x, y, z) Kẻ thù địch (z) Tội phạm (x). (9,3)

"Không không .. . có một số tên lửa. ” Câu x Owns (Nono, x) Missile (x) được biến đổi
thành hai mệnh đề xác định bởi Existential Instantiation, giới thiệu một hằng số mới M1:

Quyền sở hữu (Nono, M1) (9,4)

Hỏa tiễn .(M1) (9,5)

"Tất cả tên lửa của nó đã được bán cho nó bởi Đại tá West":

Tên lửa (x) Sở hữu (Nono, x) Bán (Tây, x, Nono). (9,6)

Chúng ta cũng cần biết rằng tên lửa là vũ khí:

Tên lửa (x) Vũ khí (x) (9,7)


Machine Translated by Google

Mục 9.3. Chuyển tiếp chuỗi 331

và chúng ta phải biết rằng kẻ thù của Hoa Kỳ được coi là "thù địch":

Kẻ thù (x, Hoa Kỳ) Kẻ thù địch (x). (9,8)

“Tây, ai là người Mỹ ...”:

Miền Tây nước Mỹ) . (9,9)

"Đất nước Nono, kẻ thù của nước Mỹ ...":

Kẻ thù (Nono, Mỹ). (9,10)

Cơ sở tri thức này không chứa ký hiệu chức năng và do đó là một thể hiện của lớp cơ sở tri thức
DATALOG Datalog. Datalog là một ngôn ngữ được giới hạn cho các mệnh đề xác định bậc nhất không có ký hiệu

chức năng. Datalog có tên vì nó có thể đại diện cho kiểu câu lệnh thường được thực hiện trong cơ sở

dữ liệu quan hệ. Chúng ta sẽ thấy rằng sự vắng mặt của các ký hiệu hàm làm cho việc suy luận trở nên

dễ dàng hơn nhiều.

9.3.2 Một thuật toán chuỗi chuyển tiếp đơn giản

Thuật toán chuỗi chuyển tiếp đầu tiên mà chúng tôi xem xét là một thuật toán đơn giản, được thể hiện

trong Hình 9.3. Bắt đầu nhập từ các dữ kiện đã biết, nó kích hoạt tất cả các quy tắc mà tiền đề của

chúng được thỏa mãn, thêm kết luận của chúng vào các dữ kiện đã biết. Quy trình lặp lại cho đến khi

truy vấn được trả lời (giả sử rằng chỉ cần một câu trả lời) hoặc không có dữ kiện mới nào được thêm
RENAMING vào. Lưu ý rằng một sự kiện không phải là "mới" nếu nó chỉ là một sự đổi tên của một sự việc đã biết.

Một câu là sự đổi tên của câu khác nếu chúng giống nhau ngoại trừ tên của các biến. Ví dụ: Thích (x,

IceCream) và Thích (y, IceCream) là tên của nhau vì chúng chỉ khác nhau ở cách chọn x hoặc y; ý nghĩa

của chúng giống hệt nhau: mọi người đều thích kem.

Chúng tôi sử dụng vấn đề tội phạm của mình để minh họa cách hoạt động của FOL-FC-ASK . Các câu

hàm ý là (9.3), (9.6), (9.7) và (9.8). Hai lần lặp lại là bắt buộc:

• Trong lần lặp đầu tiên, quy tắc (9.3) có các tiền đề không thỏa mãn.

Quy tắc (9.6) thỏa mãn với {x / M1} và Bán (Tây, M1, Nono) được thêm vào.

Quy tắc (9.7) thỏa mãn với {x / M1} và Weapon (M1) được thêm vào.

Quy tắc (9.8) được thỏa mãn với {x / Nono} và Hostile (Nono) được thêm vào.

• Trong lần lặp thứ hai, quy tắc (9.3) thỏa mãn với {x / West, y / M1, z / Nono} và Criminal (West)

được thêm vào.

Hình 9.4 cho thấy cây bằng chứng được tạo ra. Lưu ý rằng không có suy luận mới nào khả thi tại thời

điểm này vì mọi câu có thể được kết luận bằng chuỗi chuyển tiếp đã được chứa rõ ràng trong KB. Cơ sở

tri thức như vậy được gọi là điểm cố định của quá trình suy luận. Các điểm cố định đạt được bằng

cách xâu chuỗi về phía trước với các mệnh đề xác định bậc nhất tương tự như các điểm cố định dành

cho xâu chuỗi thuận theo mệnh đề (trang 258); sự khác biệt cơ bản là một điểm cố định bậc nhất có thể

bao gồm các câu nguyên tử được định lượng phổ biến.

FOL-FC-ASK rất dễ phân tích. Đầu tiên, đó là âm thanh, bởi vì mọi suy luận chỉ là một ứng dụng

của Modus Ponens Tổng quát hóa, đó là âm thanh. Thứ hai, nó hoàn chỉnh cho các cơ sở kiến thức mệnh đề

xác định; nghĩa là, nó trả lời mọi truy vấn mà câu trả lời của nó được đưa vào bởi bất kỳ cơ sở kiến

thức nào về các mệnh đề xác định. Đối với cơ sở tri thức Datalog, không chứa ký hiệu chức năng, việc

chứng minh tính đầy đủ là khá dễ dàng. Chúng tôi bắt đầu bằng cách đếm số lượng
Machine Translated by Google

332 Chương 9. Suy luận trong logic bậc nhất

hàm FOL-FC-ASK (KB, α) trả về giá trị thay thế hoặc sai

đầu vào: KB, cơ sở kiến thức, tập hợp các mệnh đề xác định bậc nhất α, truy
vấn, các biến cục bộ của câu nguyên tử: mới, các câu mới được suy
ra trên mỗi lần lặp

lặp lại cho đến khi mới trống

mới {} cho mỗi quy tắc


trong KB làm

(p1 ... pn q) ĐOẠN CHUẨN-BIẾN (quy tắc) cho mỗi θ sao cho
SUBST (θ, p1 ... pn) = SUBST (θ, p 1 ... p n) cho một số p 1 ,. . . , p trong
KB q SUBST (θ, q) nếu
n hoặc
q không
mới thì
thống
thêm
nhất
q vào
với mới
một φsố câu
UNIFY
đã (q
có ,
trong
α) nếu
KB
φ không lỗi thì trả về φ thêm mới vào KB trả về sai

Hình 9.3 Một sơ đồ thuật toán chuỗi chuyển tiếp đơn giản về mặt khái niệm nhưng rất kém hiệu quả.
Trên mỗi lần lặp, nó thêm vào KB tất cả các câu nguyên tử có thể được suy ra trong một bước từ các

câu hàm ý và các câu nguyên tử đã có trong KB. Hàm STANDARDIZE-VARIABLES thay thế tất cả các biến

trong các đối số của nó bằng các biến mới chưa được sử dụng trước đó.

Hình sự (Tây)

Vũ khí (M1) Bán (Tây, M1, Nono) Thù địch (Nono)

Miền Tây nước Mỹ) Tên lửa (M 1) Quyền sở hữu (Nono, M1 ) Enemy (Nono, Mỹ)

Hình 9.4 Cây bằng chứng được tạo bằng chuỗi chuyển tiếp trên ví dụ tội phạm. Dữ kiện ban đầu xuất
hiện ở cấp dưới cùng, dữ kiện được suy ra ở lần lặp đầu tiên ở cấp giữa và dữ kiện được suy ra ở lần

lặp thứ hai ở cấp cao nhất.

dữ kiện có thể có có thể được thêm vào, xác định số lần lặp lại tối đa. Gọi k là độ
hiếm (số đối số) tối đa của bất kỳ vị từ nào, p là số vị từ và n là số ký hiệu hằng số.
Rõ ràng, không thể có nhiều hơn pnk sự kiện cơ bản khác biệt, vì vậy sau nhiều lần lặp
lại này, thuật toán phải đạt đến một điểm cố định. Sau đó, chúng ta có thể đưa ra một
lập luận rất giống với bằng chứng về tính đầy đủ cho mệnh đề chuyển tiếp
Machine Translated by Google

Mục 9.3. Chuyển tiếp chuỗi 333

xâu chuỗi. (Xem trang 258.) Chi tiết về cách thực hiện chuyển đổi từ mệnh đề sang tính đầy đủ bậc nhất

được đưa ra cho thuật toán giải trong Phần 9.5.

Đối với các mệnh đề xác định chung có ký hiệu hàm, FOL-FC-ASK có thể tạo ra vô số dữ kiện mới, vì

vậy chúng ta cần phải cẩn thận hơn. Đối với trường hợp yêu cầu câu trả lời cho câu truy vấn q, chúng ta

phải tuân theo định lý Herbrand để xác định rằng thuật toán sẽ tìm ra một bằng chứng. (Xem Phần 9.5 về

trường hợp giải quyết.) Nếu truy vấn không có câu trả lời, thuật toán có thể không kết thúc trong một số

trường hợp. Ví dụ, nếu cơ sở kiến thức bao gồm các tiên đề Peano

NatNum (0)

n NatNum (n) NatNum (S (n)), sau đó chuỗi

chuyển tiếp thêm NatNum (S (0)), NatNum (S (S (0))), NatNum (S (S (S ( 0)))), v.v. Vấn đề này nói chung là

khó tránh khỏi. Giống như với logic bậc nhất tổng quát, việc sử dụng các mệnh đề xác định là có thể bán
được.

9.3.3 Chuỗi tiến hiệu quả

Thuật toán chuỗi chuyển tiếp trong Hình 9.3 được thiết kế để dễ hiểu hơn là để nâng cao hiệu quả hoạt

động. Có ba nguồn kém hiệu quả có thể xảy ra. Đầu tiên, “vòng lặp bên trong” của thuật toán liên quan đến

việc tìm kiếm tất cả các bộ hợp nhất có thể có sao cho tiền đề của một quy tắc thống nhất với một tập hợp

các dữ kiện phù hợp trong cơ sở tri thức. Điều này thường được gọi là kết hợp TRÒ CHƠI MẪU MẪU và có thể

rất tốn kém. Thứ hai, thuật toán kiểm tra lại mọi quy tắc trên mỗi lần lặp để xem liệu các tiền đề của nó có được thỏa mãn

hay không, ngay cả khi rất ít bổ sung được thực hiện vào cơ sở tri thức trên mỗi lần lặp. Cuối cùng, thuật

toán có thể tạo ra nhiều dữ kiện không liên quan đến mục tiêu. Chúng tôi lần lượt giải quyết từng vấn đề

này.

Đối sánh các quy tắc với các sự kiện đã biết

Vấn đề so khớp tiền đề của một quy tắc với các dữ kiện trong cơ sở tri thức có vẻ đủ đơn giản. Ví dụ: giả

sử chúng ta muốn áp dụng quy tắc

Tên lửa (x) Vũ khí (x).

Sau đó, chúng ta cần tìm tất cả các dữ kiện thống nhất với Missile (x); trong một cơ sở kiến thức được lập chỉ mục phù hợp, điều

này có thể được thực hiện trong thời gian không đổi trên thực tế. Bây giờ hãy xem xét một quy tắc chẳng hạn như

Tên lửa (x) Sở hữu (Nono, x) Bán (Tây, x, Nono).

Một lần nữa, chúng ta có thể tìm thấy tất cả các đối tượng thuộc sở hữu của Nono trong thời gian không đổi

cho mỗi đối tượng; sau đó, đối với mỗi vật thể, chúng tôi có thể kiểm tra xem nó có phải là tên lửa hay

không. Tuy nhiên, nếu cơ sở tri thức chứa nhiều đồ vật thuộc sở hữu của Nono và rất ít tên lửa, tốt hơn hết
KẾT NỐI
ĐẶT HÀNG là bạn nên tìm tất cả các tên lửa trước rồi kiểm tra xem chúng có thuộc sở hữu của Nono hay không. Đây là bài

toán sắp xếp liên hợp: tìm thứ tự để giải quyết các liên hợp của tiền đề quy tắc sao cho tổng chi phí được giảm thiểu.

Hóa ra là việc tìm ra thứ tự tối ưu là khó, nhưng có sẵn các phương pháp phỏng đoán tốt.

Ví dụ, phương pháp phỏng đoán giá trị còn lại tối thiểu (MRV) được sử dụng cho CSP trong Chương 6 sẽ gợi

ý ra lệnh cho các liên hợp tìm kiếm tên lửa trước nếu Nono sở hữu ít tên lửa hơn đối tượng.
Machine Translated by Google

334 Chương 9. Suy luận trong logic bậc nhất

NT Diff (wa, nt) Diff (wa, sa)


Q
Diff (nt, q) Diff (nt, sa)
WA
Diff (q, nsw) Diff (q, sa)

SA NSW Diff (nsw, v) Diff (nsw, sa)

Khác (v, sa) Có màu ()

V Diff (Đỏ, Xanh lam) Khác biệt (Đỏ, Xanh lá cây)

Khác biệt (Xanh lá cây, Đỏ) Khác biệt (Xanh lá cây, Xanh lam)

T
Diff (Xanh lam, Đỏ) Khác biệt (Xanh lam, Xanh lục)

(Một) (b)

Hình 9.5 (a) Biểu đồ ràng buộc để tô màu bản đồ Australia. (b) CSP tô màu bản đồ được biểu thị dưới

dạng một mệnh đề xác định duy nhất. Mỗi vùng bản đồ được biểu diễn dưới dạng một biến có giá trị có
thể là một trong các hằng số Đỏ, Xanh lục hoặc Xanh lam.

Mối liên hệ giữa đối sánh mẫu và sự hài lòng về ràng buộc thực sự rất chặt chẽ. Chúng ta có thể xem mỗi

liên hợp là một ràng buộc đối với các biến mà nó chứa — ví dụ, Missile (x) là một ràng buộc một bậc đối với x. Mở

rộng ý tưởng này, chúng ta có thể biểu thị mọi CSP miền hữu hạn dưới dạng một mệnh đề xác định duy nhất cùng với

một số dữ kiện cơ bản liên quan.

Hãy xem xét vấn đề tô màu bản đồ từ Hình 6.1, được hiển thị lại trong Hình 9.5 (a). Một công thức tương đương

như một mệnh đề xác định duy nhất được đưa ra trong Hình 9.5 (b). Rõ ràng, kết luận có màu () chỉ có thể được

suy ra nếu CSP có một giải pháp. Vì các CSP nói chung bao gồm các bài toán 3-SAT là các trường hợp đặc biệt,

chúng ta có thể kết luận rằng việc so khớp một mệnh đề xác định với một tập hợp các dữ kiện là không khó.

Có vẻ hơi buồn khi chuỗi tiến có vấn đề về khớp NP-khó

trong vòng lặp bên trong của nó. Có ba cách để khiến bản thân vui lên:

• Chúng ta có thể tự nhắc mình rằng hầu hết các quy tắc trong cơ sở tri thức trong thế giới

thực đều nhỏ và đơn giản (giống như các quy tắc trong ví dụ tội phạm của chúng tôi) chứ
không phải là lớn và phức tạp (như công thức CSP trong Hình 9.5). Trong thế giới cơ sở dữ

liệu, người ta thường cho rằng cả kích thước của quy tắc và mức độ đặc biệt của các vị từ
TÍNH HỢP LÍ CỦA DỮ LIỆU
đều bị giới hạn bởi một hằng số và chỉ lo lắng về độ phức tạp của dữ liệu — nghĩa là, độ phức
tạp của suy luận như một hàm của số lượng dữ kiện cơ bản trong cơ sở kiến thức. Dễ dàng chỉ

ra rằng độ phức tạp dữ liệu của chuỗi chuyển tiếp là đa thức.

• Chúng ta có thể xem xét các lớp con của các quy tắc mà đối sánh là hiệu quả. Về cơ bản, mọi
mệnh đề Datalog có thể được xem như là xác định một CSP, vì vậy đối sánh sẽ có thể điều
chỉnh được chỉ khi CSP tương ứng có thể điều chỉnh được. Chương 6 mô tả một số họ CSP có
thể điều chỉnh được. Ví dụ, nếu đồ thị ràng buộc (đồ thị có các nút là biến và có các liên
kết là các ràng buộc) tạo thành một cây, thì CSP có thể được giải quyết theo thời gian tuyến

tính. Chính xác kết quả tương tự được giữ cho đối sánh quy tắc. Ví dụ, nếu chúng tôi loại bỏ Nam
Machine Translated by Google

Mục 9.3. Chuyển tiếp chuỗi 335

Úc từ bản đồ trong Hình 9.5, mệnh đề kết quả là Diff (wa, nt)

Diff (nt, q) Diff (q, nsw) Diff (nsw, v) Có màu ()

tương ứng với CSP giảm được thể hiện trong Hình 6.12 trang 224. Các thuật toán để giải các CSP

có cấu trúc cây có thể được áp dụng trực tiếp cho bài toán so khớp quy tắc. • Chúng tôi có thể cố

gắng loại bỏ các nỗ lực so khớp quy tắc dư thừa trong thuật toán chuỗi chuyển tiếp, như được mô tả

tiếp theo.

Chuỗi về phía trước tăng dần

Khi chúng tôi chỉ ra cách hoạt động của chuỗi chuyển tiếp trên ví dụ tội phạm, chúng tôi đã lừa dối;

Đặc biệt, chúng tôi đã bỏ qua một số đối sánh quy tắc được thực hiện bởi thuật toán được hiển thị trong

Hình 9.3. Ví dụ: ở lần lặp thứ hai, quy tắc

Tên lửa (x) Vũ khí (x)

các trận đấu với Tên lửa (M1) (một lần nữa), và tất nhiên kết luận Vũ khí (M1) đã được biết trước nên

không có gì xảy ra. Việc đối sánh quy tắc dư thừa như vậy có thể tránh được nếu chúng ta thực hiện

quan sát sau: Mọi dữ kiện mới được suy ra trong lần lặp t phải được suy ra từ ít nhất một dữ kiện mới

được suy ra trên lần lặp t - 1. Điều này đúng vì bất kỳ suy luận nào không yêu cầu dữ kiện mới từ lần

lặp t - 1 có thể đã được thực hiện ở lần lặp t - 1 rồi.

Quan sát này dẫn đến một thuật toán chuỗi tiến tăng dần, trong đó, tại lần lặp t, chúng tôi chỉ

kiểm tra một quy tắc nếu tiền đề của nó bao gồm một liên hợp pi hợp nhất với một dữ kiện mới được suy

liên
rahợp
ở lần
khác
lặp
của
t quy
- 1.tắc
Bước
khớp
so với
khớpcác
quydữtắc
kiện
sautừđóbất
sửakỳsốlần
pi lặp
để khớp
trướcvới
nào.
p i,
Thuật
nhưng
toán
p inày
chotạo
phép
ra các
các

dữ kiện chính xác ở mỗi lần lặp như thuật toán trong Hình 9.3, nhưng hiệu quả hơn nhiều.

Với lập chỉ mục phù hợp, thật dễ dàng xác định tất cả các quy tắc có thể được kích hoạt bởi bất

kỳ sự kiện cụ thể nào và thực sự nhiều hệ thống thực hoạt động ở chế độ "cập nhật" trong đó quá trình

nhập chuỗi chuyển tiếp xảy ra để đáp ứng với mỗi thực tế mới được NÓI với hệ thống . Các tham chiếu phân

tầng thông qua tập hợp các quy tắc cho đến khi đạt đến điểm cố định, và sau đó quá trình bắt đầu lại cho
dữ kiện mới tiếp theo.

Thông thường, chỉ một phần nhỏ các quy tắc trong cơ sở kiến thức thực sự được kích hoạt bằng

cách thêm vào một dữ kiện nhất định. Điều này có nghĩa là rất nhiều công việc thừa được thực hiện trong

việc xây dựng nhiều lần các trận đấu từng phần có một số mặt bằng chưa hài lòng. Số tiền phạm tội của

chúng tôi khá nhỏ để hiển thị điều này một cách hiệu quả, nhưng hãy lưu ý rằng một phần đối sánh được
xây dựng trên lần lặp đầu tiên giữa quy tắc

Mỹ (x) Vũ khí (y) Bán (x, y, z) thù địch (z) Tội phạm (x)

và thực tế là người Mỹ (phương Tây). Kết quả phù hợp từng phần này sau đó bị loại bỏ và được xây dựng

lại vào lần lặp thứ hai (khi quy tắc thành công). Tốt hơn là nên giữ lại và dần dần hoàn thành các trận

đấu từng phần khi có tình tiết mới, hơn là loại bỏ chúng.
RETE Thuật toán rete3 là giải thuật đầu tiên giải quyết vấn đề này. Thuật toán xử lý trước bộ quy tắc

trong cơ sở tri thức để xây dựng một loại mạng luồng dữ liệu trong đó mỗi

3 Rete là tiếng Latinh có nghĩa là mạng. Phát âm tiếng Anh vần với hiệp ước.
Machine Translated by Google

336 Chương 9. Suy luận trong logic bậc nhất

nút là một nghĩa đen từ tiền đề quy tắc. Các ràng buộc biến đổi chảy qua mạng và được

được lọc ra khi chúng không khớp với một nghĩa đen. Nếu hai ký tự trong một quy tắc chia sẻ một biến — cho

ví dụ, Bán (x, y, z) Hostile (z) trong ví dụ về tội phạm — sau đó là các ràng buộc từ mỗi

các chữ được lọc thông qua một nút bình đẳng. Một liên kết biến đến một nút cho một chữ n ary chẳng hạn như

Bán (x, y, z) có thể phải đợi các liên kết cho các biến khác là

được thiết lập trước khi quá trình có thể tiếp tục. Tại bất kỳ thời điểm nào, trạng thái của mạng rete

nắm bắt tất cả các trận đấu từng phần của các quy tắc, tránh tính toán lại rất nhiều.

Mạng Rete và các cải tiến khác nhau trên đó là một thành phần quan trọng của cái gọi là hệ thống sản
SẢN LƯỢNG
HỆ THỐNG
xuất, là một trong những hệ thống chuỗi chuyển tiếp sớm nhất được sử dụng rộng rãi.4 Hệ thống XCON (ban đầu

được gọi là R1; McDermott, 1982) được xây dựng

với kiến trúc hệ thống sản xuất. XCON chứa hàng nghìn quy tắc để thiết kế

các cấu hình của linh kiện máy tính cho khách hàng của Công Ty Cổ Phần Thiết Bị Số.

Đó là một trong những thành công thương mại rõ ràng đầu tiên trong lĩnh vực mới nổi của hệ thống chuyên gia.

Nhiều hệ thống tương tự khác đã được xây dựng với cùng một công nghệ cơ bản,

được triển khai bằng ngôn ngữ đa năng OPS-5.


NHẬN THỨC
KIẾN TRÚC
Các hệ thống sản xuất cũng phổ biến trong các kiến trúc nhận thức - tức là các mô hình lý luận của con

người - chẳng hạn như ACT (Anderson, 1983) và SOAR (Laird và cộng sự, 1987). Trong các hệ thống như vậy, "bộ

nhớ làm việc" của hệ thống mô hình hóa trí nhớ ngắn hạn của con người, và các chỉ dẫn là một phần của trí nhớ

dài hạn. Trên mỗi chu kỳ hoạt động, sản xuất được kết hợp

chống lại bộ nhớ hoạt động của các sự kiện. Một sản xuất có các điều kiện được thỏa mãn có thể thêm hoặc

xóa dữ kiện trong bộ nhớ làm việc. Ngược lại với tình huống điển hình trong cơ sở dữ liệu, sản xuất

hệ thống thường có nhiều quy tắc và tương đối ít dữ kiện. Với kết hợp được tối ưu hóa phù hợp

công nghệ, một số hệ thống hiện đại có thể hoạt động trong thời gian thực với hàng chục triệu quy tắc.

Sự thật không liên quan

Nguồn gốc cuối cùng của sự kém hiệu quả trong chuỗi chuyển tiếp dường như là nội tại của cách tiếp cận

và cũng phát sinh trong ngữ cảnh mệnh đề. Chuỗi chuyển tiếp tạo ra tất cả các suy luận được phép

dựa trên các dữ kiện đã biết, ngay cả khi chúng không liên quan đến mục tiêu hiện tại. Trong ví dụ về tội phạm của chúng tôi,

không có quy tắc nào có khả năng đưa ra các kết luận không liên quan, do đó, việc thiếu định hướng là

không thành vấn đề. Trong các trường hợp khác (ví dụ: nếu nhiều quy tắc mô tả thói quen ăn uống của người Mỹ và

giá của tên lửa), FOL-FC-ASK sẽ tạo ra nhiều kết luận không liên quan.

Một cách để tránh đưa ra các kết luận không liên quan là sử dụng chuỗi lùi, như được ghi trong Phần

9.4. Một giải pháp khác là hạn chế chuỗi chuyển tiếp đối với một tập hợp con đã chọn của

các quy tắc, như trong PL-FC-ENTAILS? (trang 258). Cách tiếp cận thứ ba đã xuất hiện trong lĩnh vực cơ sở dữ
KHOẢN TRÍCH THEO DÕI

DỮ LIỆU
liệu quy nạp, đó là cơ sở dữ liệu quy mô lớn, giống như cơ sở dữ liệu quan hệ, nhưng sử dụng chuỗi chuyển tiếp

làm công cụ suy luận tiêu chuẩn thay vì truy vấn SQL. Ý tưởng là viết lại

bộ quy tắc, sử dụng thông tin từ mục tiêu, để chỉ các ràng buộc biến có liên quan — những

BỘ PHÉP THUẬT thuộc về một bộ ma thuật được gọi là — được xem xét trong quá trình suy luận về phía trước. Ví dụ, nếu

mục tiêu là Hình sự (Tây), quy tắc kết luận Hình sự (x) sẽ được viết lại để bao gồm

một liên từ bổ sung hạn chế giá trị của x:

Phép thuật (x) Mỹ (x) Vũ khí (y) Bán (x, y, z) Kẻ thù (z) Tội phạm (x).

4 Từ sản xuất trong hệ thống sản xuất biểu thị quy tắc điều kiện - hành động.
Machine Translated by Google

Mục 9.4. Chuỗi ngược 337

Thực tế Magic (Tây) cũng được thêm vào KB. Bằng cách này, ngay cả khi cơ sở tri thức chứa dữ
kiện về hàng triệu người Mỹ, chỉ có Đại tá West sẽ được xem xét trong quá trình suy luận
phía trước. Quá trình hoàn chỉnh để xác định bộ ma thuật và viết lại cơ sở kiến thức quá phức
tạp để đi vào đây, nhưng ý tưởng cơ bản là thực hiện một loại suy luận ngược “chung chung”
từ mục tiêu để tìm ra ràng buộc biến nào cần được hạn chế . Do đó, phương pháp tiếp cận tập
hợp ma thuật có thể được coi là một loại kết hợp giữa suy luận thuận và tiền xử lý ngược.

9.4 CHUỖI PHẦN THƯỞNG

Họ chính thứ hai của các thuật toán suy luận logic sử dụng phương pháp ap chuỗi lùi được
giới thiệu trong Phần 7.5 cho các mệnh đề xác định. Các thuật toán này hoạt động ngược lại
so với mục tiêu, xâu chuỗi các quy tắc để tìm ra các sự kiện đã biết hỗ trợ cho việc chứng
minh. Chúng tôi mô tả thuật toán cơ bản, và sau đó chúng tôi mô tả cách nó được sử dụng trong
lập trình logic, đây là hình thức lập luận tự động được sử dụng rộng rãi nhất. Chúng tôi cũng
thấy rằng chuỗi lùi có một số nhược điểm so với chuỗi tiến và chúng tôi tìm cách khắc phục
chúng. Cuối cùng, chúng ta xem xét mối liên hệ chặt chẽ giữa lập trình logic và các vấn đề
thỏa mãn ràng buộc.

9.4.1 Một thuật toán chuỗi ngược

Hình 9.6 cho thấy một thuật toán chuỗi ngược cho các mệnh đề xác định. FOL-BC-ASK (KB, mục
tiêu) sẽ được chứng minh nếu cơ sở tri thức chứa mệnh đề có dạng lhs mục tiêu, trong đó
lhs (bên trái) là danh sách các liên hợp. Một thực tế nguyên tử như Mỹ (phương Tây) được
coi là một mệnh đề có lhs là danh sách trống. Bây giờ một truy vấn có chứa các biến có thể
được chứng minh theo nhiều cách. Ví dụ: truy vấn Person (x) có thể được chứng minh với sự
MÁY PHÁT ĐIỆN thay thế {x / John} cũng như với {x / Richard}. Vì vậy, chúng tôi triển khai FOL-BC-ASK như
một trình tạo— một hàm trả về nhiều lần, mỗi lần cho một kết quả có thể.
Chuỗi ngược là một loại tìm kiếm VÀ / HOẶC — phần OR vì truy vấn mục tiêu có thể được
chứng minh bằng bất kỳ quy tắc nào trong cơ sở tri thức và phần AND vì tất cả các liên từ
trong lhs của mệnh đề phải được chứng minh. FOL-BC-OR hoạt động bằng cách tìm nạp tất cả các
mệnh đề có thể thống nhất với mục tiêu, chuẩn hóa các biến trong mệnh đề thành các biến hoàn
toàn mới và sau đó, nếu rhs của mệnh đề thực sự thống nhất với mục tiêu, chứng minh mọi liên
từ trong các lhs, sử dụng FOL-BC-AND. Chức năng đó lần lượt hoạt động bằng cách chứng minh
từng liên hợp lần lượt, theo dõi sự thay thế tích lũy khi chúng ta đi. Hình 9.7 là cây bằng
chứng để suy ra Hình sự (Tây) từ các câu (9.3) đến (9.10).
Chuỗi ngược, như chúng tôi đã viết, rõ ràng là một thuật toán tìm kiếm theo chiều sâu.
Điều này có nghĩa là yêu cầu về không gian của nó là tuyến tính đối với kích thước của bằng chứng (hiện

tại, đang bỏ qua không gian cần thiết để tích lũy các nghiệm). Điều đó cũng có nghĩa là chuỗi lùi (không

giống như chuỗi tiến) gặp phải các vấn đề với trạng thái lặp lại và không hoàn chỉnh. Chúng tôi sẽ thảo

luận về những vấn đề này và một số giải pháp tiềm năng, nhưng trước tiên chúng tôi chỉ ra cách chuỗi

ngược được sử dụng trong các hệ thống lập trình logic.


Machine Translated by Google

338 Chương 9. Suy luận trong logic bậc nhất

hàm FOL-BC-ASK (KB, truy vấn) trả về trình tạo các thay thế

trả về FOL-BC-OR (KB, truy vấn, {})

trình tạo FOL-BC-OR (KB, mục tiêu, θ) mang lại sự thay thế

đối với mỗi quy tắc (lhs rhs) trong FETCH-RULES-FOR-GOAL (KB, mục tiêu) thực hiện

(lhs, rhs) ĐOẠN CHUẨN-BIẾN TẦN ((lhs, rhs))

đối với mỗi θ trong FOL-BC-AND (KB, lhs, UNIFY (rhs, mục tiêu, θ)) làm

năng suất θ

bộ tạo FOL-BC-AND (KB, mục tiêu, θ) mang lại sự thay thế

nếu θ = thất bại thì quay trở lại

khác nếu LENGTH (mục tiêu) = 0 thì năng suất θ


khác làm

đầu tiên, phần còn lại FIRST (bàn thắng), REST (bàn thắng)

đối với mỗi θ trong FOL-BC-OR (KB, SUBST (θ, first), θ) làm

đối với mỗi θ trong FOL-BC-AND (KB, còn lại, θ) làm

năng suất θ

Hình 9.6 Một thuật toán chuỗi ngược đơn giản cho cơ sở tri thức bậc nhất.

Hình sự (Tây)

Miền Tây nước Mỹ) Vũ khí (y) Bán (Tây, M1 , z) Thù địch (Nono)

{} {z / Nono}

Tên lửa (y) Tên lửa (M 1) Sở hữu (Nono,) M Enemy (Nono, Mỹ) 1
{y / M1} {} {} {}

Hình 9.7 Cây bằng chứng được xây dựng bằng cách xâu chuỗi ngược để chứng minh rằng West là tội phạm.

Cây phải được đọc độ sâu trước tiên, từ trái sang phải. Để chứng minh Hình sự (Tây), chúng ta phải chứng minh

bốn liên hợp bên dưới nó. Một số trong số này nằm trong cơ sở kiến thức và những người khác yêu cầu

hơn nữa chuỗi ngược. Các ràng buộc cho mỗi lần hợp nhất thành công được hiển thị bên cạnh

mục tiêu con tương ứng. Lưu ý rằng khi một mục tiêu con trong một kết hợp thành công, sự thay thế của nó

được áp dụng cho các mục tiêu con tiếp theo. Do đó, vào thời điểm FOL-BC-ASK đến lần cuối cùng,

ban đầu là Hostile (z), z đã được liên kết với Nono.


Machine Translated by Google

Mục 9.4. Chuỗi ngược 339

9.4.2 Lập trình logic

Lập trình logic là một công nghệ khá gần với việc thể hiện lý tưởng khai báo được mô tả trong

Chương 7: rằng các hệ thống phải được xây dựng bằng cách diễn đạt kiến thức bằng một ngôn ngữ chính

thức và các vấn đề phải được giải quyết bằng cách chạy các quy trình suy luận trên kiến thức đó. Lý

tưởng được tóm tắt trong phương trình của Robert Kowalski,

Thuật toán = Logic + Điều khiển.

PROLOG Prolog là ngôn ngữ lập trình logic được sử dụng rộng rãi nhất. Nó được sử dụng chủ yếu như một

ngôn ngữ tạo mẫu nhanh và cho các tác vụ thao tác ký hiệu như viết trình biên dịch (Van Roy, 1990)

và phân tích cú pháp ngôn ngữ tự nhiên (Pereira và Warren, 1980). Nhiều hệ thống chuyên gia đã được

viết trong Prolog cho các lĩnh vực pháp lý, y tế, tài chính và các lĩnh vực khác.
Chương trình Prolog là tập hợp các mệnh đề xác định được viết bằng ký hiệu hơi khác với logic
bậc nhất tiêu chuẩn. Prolog sử dụng chữ hoa cho biến và chữ thường cho hằng — ngược lại với quy
ước logic của chúng ta. Dấu phẩy ngăn cách các liên từ trong một mệnh đề, và mệnh đề đó được viết
"ngược" so với những gì chúng ta quen thuộc; thay vì A B C trong Prolog chúng ta có C: - A, B.
Đây là một ví dụ điển hình:

tội phạm (X): - mỹ (X), vũ khí (Y), bán (X, Y, Z), thù địch (Z).

Kí hiệu [E | L] biểu thị một danh sách có phần tử đầu tiên là E và phần còn lại là L. Đây là chương

trình Prolog cho phần nối thêm (X, Y, Z), sẽ thành công nếu danh sách Z là kết quả của các danh sách
nối thêm X và Y :

nối ([], Y, Y). append

([A | X], Y, [A | Z]): - append (X, Y, Z).

Trong tiếng Anh, chúng ta có thể đọc các mệnh đề này như (1) nối một danh sách trống với một danh

sách Y tạo ra cùng một danh sách Y và (2) [A | Z] là kết quả của việc thêm [A | X] vào Y, với điều
kiện là Z là kết quả của việc thêm X vào Y. Trong hầu hết các ngôn ngữ cấp cao, chúng ta có thể viết

một hàm sive định kỳ tương tự mô tả cách nối hai danh sách. Tuy nhiên, định nghĩa Prolog thực sự

mạnh hơn nhiều vì nó mô tả một quan hệ chứa ba đối số, chứ không phải là một hàm được tính từ hai

đối số. Ví dụ, chúng ta có thể hỏi truy vấn append (X, Y, [1,2]): hai danh sách nào có thể được nối

thêm để cho [1,2]? Chúng tôi lấy lại các giải pháp

X = [] Y = [1,2];

X = [1] Y = [2];

X = [1,2] Y = []

Việc thực thi các chương trình Prolog được thực hiện thông qua chuỗi ngược chiều sâu đầu tiên,

trong đó các mệnh đề được thử theo thứ tự mà chúng được viết trong cơ sở tri thức. Một số khía cạnh

của Prolog nằm ngoài suy luận logic tiêu chuẩn:

• Prolog sử dụng ngữ nghĩa cơ sở dữ liệu của Phần 8.2.8 thay vì ngữ nghĩa bậc nhất, và điều này

rõ ràng trong cách xử lý bình đẳng và phủ định của nó (xem Phần 9.4.5). • Có một tập hợp các

hàm cài sẵn cho số học. Chữ viết sử dụng các ký hiệu chức năng này được “chứng minh” bằng cách

thực thi mã hơn là suy luận thêm. Ví dụ,


Machine Translated by Google

340 Chương 9. Suy luận trong logic bậc nhất

mục tiêu “X là 4 + 3” thành công với X liên kết với 7. Mặt khác, mục tiêu “5 là X + Y” không

thành công, bởi vì các hàm tích hợp không thực hiện giải phương trình tùy ý.

• Có các vị từ cài sẵn có tác dụng phụ khi thực thi. Chúng bao gồm các vị từ đầu vào - đầu ra và

các vị từ khẳng định / rút lại để sửa đổi cơ sở kiến thức. Các vị từ như vậy không có đối âm

trong logic và có thể tạo ra các kết quả khó hiểu - ví dụ: nếu các dữ kiện được khẳng định trong

một nhánh của cây chứng minh mà cuối cùng không thành công. • Kiểm tra xảy ra được bỏ qua trong

thuật toán hợp nhất của Prolog. Điều này có nghĩa là một số suy luận không chắc chắn có thể được

thực hiện; những điều này hầu như không bao giờ là một vấn đề trong thực tế. • Prolog sử dụng

tìm kiếm chuỗi ngược chiều sâu đầu tiên mà không kiểm tra đệ quy vô hạn.

Điều này làm cho nó rất nhanh khi đưa ra tập hợp các tiên đề đúng, nhưng không đầy đủ khi đưa

ra các tiên đề sai.

Thiết kế của Prolog thể hiện sự thỏa hiệp giữa khả năng khai báo và hiệu quả thực thi— không giống như

hiệu quả được hiểu tại thời điểm Prolog được thiết kế.

9.4.3 Thực hiện hiệu quả các chương trình logic

Việc thực thi một chương trình Prolog có thể xảy ra ở hai chế độ: thông dịch và biên dịch.

Việc diễn giải về cơ bản tương đương với việc chạy thuật toán FOL-BC-ASK từ Hình 9.6, với chương trình

là cơ sở kiến thức. Chúng tôi nói “về cơ bản” vì trình thông dịch Prolog chứa nhiều cải tiến được

thiết kế để tối đa hóa tốc độ. Ở đây chúng tôi chỉ xem xét hai.

Đầu tiên, việc triển khai của chúng tôi phải quản lý rõ ràng việc lặp lại các kết quả có thể

được tạo ra bởi mỗi hàm con. Trình thông dịch Prolog có cấu trúc dữ liệu toàn cục, một chồng điểm lựa
ĐIỂM LỰA CHỌN
chọn, để theo dõi nhiều khả năng mà chúng tôi đã xem xét trong FOL-BC-OR. Ngăn xếp toàn cục này hiệu

quả hơn và nó giúp gỡ lỗi dễ dàng hơn, vì trình gỡ lỗi có thể di chuyển lên và xuống ngăn xếp.

Thứ hai, việc triển khai đơn giản FOL-BC-ASK của chúng tôi dành rất nhiều thời gian để thay thế

gener ating. Thay vì xây dựng các thay thế một cách rõ ràng, Prolog có các biến logic ghi nhớ ràng buộc

hiện tại của chúng. Tại bất kỳ thời điểm nào, mọi biến trong chương trình đều không bị ràng buộc hoặc

bị ràng buộc với một giá trị nào đó. Cùng với nhau, các biến và giá trị này xác định ngầm định sự thay

thế cho nhánh hiện tại của bằng chứng. Việc mở rộng đường dẫn chỉ có thể thêm các liên kết biến mới,

bởi vì nỗ lực thêm một liên kết khác cho một biến đã bị ràng buộc dẫn đến việc hợp nhất không thành

công. Khi một đường dẫn trong tìm kiếm không thành công, Prolog sẽ sao lưu về điểm lựa chọn trước đó

và sau đó nó có thể phải hủy liên kết một số biến. Điều này được thực hiện bằng cách theo dõi tất cả
TRAIL các biến đã được ràng buộc trong một ngăn xếp được gọi là đường mòn. Khi mỗi biến mới bị ràng buộc

bởi UNIFY-VAR, biến đó sẽ bị đẩy vào đường mòn. Khi một mục tiêu không thành công và đã đến lúc sao

lưu trở lại điểm lựa chọn trước đó, mỗi biến trong số các biến không bị ràng buộc vì nó bị loại bỏ
khỏi đường mòn.

Ngay cả những trình thông dịch Prolog hiệu quả nhất cũng yêu cầu vài nghìn lệnh máy cho mỗi

bước suy luận vì chi phí tra cứu chỉ mục, hợp nhất và xây dựng ngăn xếp cuộc gọi đệ quy. Trên thực tế,

trình thông dịch luôn cư xử như thể nó chưa bao giờ nhìn thấy pro gram trước đó; ví dụ, nó phải tìm

các mệnh đề phù hợp với mục tiêu. Một Prolog đã biên dịch

5 Lưu ý rằng nếu các tiên đề Peano được cung cấp, các mục tiêu đó có thể được giải quyết bằng cách suy luận trong chương trình Prolog.
Machine Translated by Google

Mục 9.4. Chuỗi ngược 341

thủ tục APPEND (ax , y, az, tiếp tục)

đường mòn GLOBAL-TRAIL-POINTER ()


nếu ax = [] và UNIFY (y, az) thì CALL (tiếp tục)
ĐẶT LẠI-TRAIL (đường mòn)

cây rìu ,z NEW-VARIABLE (), NEW-VARIABLE (), NEW-VARIABLE ()

nếu UNIFY (ax , [a | x]) và UNIFY (az , [a | z]) thì APPEND (x , y, z, tiếp tục)

Hình 9.8 Mã giả đại diện cho kết quả của việc biên dịch vị từ Nối thêm. Các
hàm NEW-VARIABLE trả về một biến mới, khác với tất cả các biến khác được sử dụng cho đến nay.
Thủ tục CALL (tiếp tục) tiếp tục thực hiện với sự tiếp diễn được chỉ định.

mặt khác, chương trình là một thủ tục suy luận cho một tập hợp các mệnh đề cụ thể, vì vậy nó biết

những mệnh đề phù hợp với mục tiêu. Về cơ bản, Prolog tạo ra một câu châm ngôn định lý thu nhỏ cho mỗi

vị ngữ khác nhau, do đó loại bỏ nhiều chi phí giải thích. Nó cũng có thể mở mã quy trình hợp nhất
MÃ MỞ cho mỗi cuộc gọi khác nhau, do đó tránh

phân tích cấu trúc kỳ hạn. (Để biết chi tiết về hợp nhất mã mở, xem Warren và cộng sự (1977).)

Các tập lệnh của máy tính ngày nay không khớp với ngữ nghĩa của Prolog,

vì vậy hầu hết các trình biên dịch Prolog biên dịch thành một ngôn ngữ trung gian hơn là trực tiếp

sang ngôn ngữ ma chine. Ngôn ngữ trung gian phổ biến nhất là Máy trừu tượng Warren,

hoặc WAM, được đặt theo tên của David HD Warren, một trong những người triển khai chương trình thử

nghiệm Prolog com đầu tiên. WAM là một tập lệnh trừu tượng phù hợp với Prolog và có thể là

được thông dịch hoặc dịch sang ngôn ngữ máy. Các trình biên dịch khác dịch Prolog sang ngôn ngữ cấp

cao như Lisp hoặc C và sau đó sử dụng trình biên dịch của ngôn ngữ đó để dịch sang máy

ngôn ngữ. Ví dụ: định nghĩa của vị từ Nối thêm có thể được biên dịch thành mã

được thể hiện trong Hình 9.8. Một số điểm đáng nói:

• Thay vì phải tìm kiếm cơ sở tri thức cho các mệnh đề Nối, các mệnh đề trở thành một thủ tục và

các suy luận được thực hiện đơn giản bằng cách gọi thủ tục.

• Như đã mô tả trước đó, các ràng buộc biến hiện tại được giữ nguyên. Bước đầu tiên của

thủ tục lưu trạng thái hiện tại của đường nhỏ để có thể khôi phục lại bằng cách ĐẶT LẠI-TRAIL

nếu mệnh đề đầu tiên không thành công. Điều này sẽ hoàn tác bất kỳ ràng buộc nào được tạo bởi lệnh gọi UNIFY đầu tiên.

TIẾP TỤC • Phần khó nhất là sử dụng các phép liên tục để thực hiện các điểm lựa chọn. Bạn có thể nghĩ

của một sự tiếp diễn khi đóng gói một thủ tục và một danh sách các đối số cùng nhau

xác định những gì nên làm tiếp theo bất cứ khi nào mục tiêu hiện tại thành công. Nó sẽ không

chỉ để quay lại từ một thủ tục như APPEND khi mục tiêu thành công, bởi vì nó

có thể thành công theo một số cách, và mỗi cách trong số chúng phải được khám phá. Sự tiếp nối

đối số giải quyết vấn đề này vì nó có thể được gọi mỗi khi mục tiêu thành công. Ở trong

mã APPEND , nếu đối số đầu tiên trống và đối số thứ hai thống nhất với

thứ ba, thì vị từ APPEND đã thành công. Sau đó, chúng tôi GỌI sự tiếp tục,

với các ràng buộc thích hợp trên đường mòn, để làm bất cứ điều gì nên làm tiếp theo. Vì

ví dụ: nếu lệnh gọi tới APPEND ở cấp cao nhất, phần tiếp tục sẽ in

ràng buộc của các biến.


Machine Translated by Google

342 Chương 9. Suy luận trong logic bậc nhất

Trước khi Warren làm việc về việc biên dịch các suy luận trong Prolog, lập trình logic quá chậm để sử

dụng chung. Các trình biên dịch của Warren và những người khác đã cho phép mã Prolog đạt được tốc độ

cạnh tranh với C trên nhiều điểm chuẩn tiêu chuẩn khác nhau (Van Roy, 1990).

Tất nhiên, thực tế là người ta có thể viết một kế hoạch hoặc trình phân tích cú pháp ngôn ngữ tự nhiên

trong vài chục dòng Prolog khiến nó có phần đáng mong đợi hơn C để tạo mẫu cho hầu hết các dự án nghiên

cứu AI quy mô nhỏ.

Song song hóa cũng có thể tăng tốc đáng kể. Có hai nguồn song song chính. Thứ nhất, được gọi là
OR-PARALLELISM
song song OR, xuất phát từ khả năng một mục tiêu thống nhất với nhiều mệnh đề khác nhau trong cơ sở tri

thức. Mỗi nhánh tạo ra một nhánh độc lập trong không gian tìm kiếm có thể dẫn đến một giải pháp tiềm

năng và tất cả các nhánh như vậy có thể được giải quyết song song. Thứ hai, được gọi là song song
AND-PARALLELISM
AND, xuất phát từ khả năng giải quyết song song từng liên hợp trong cơ thể của một hàm ý. Tính song

song AND khó đạt được hơn, vì các giải pháp cho toàn bộ kết hợp yêu cầu các ràng buộc nhất quán cho

tất cả các biến. Mỗi nhánh liên hợp phải giao tiếp với các nhánh khác để đảm bảo một giải pháp toàn cầu.

9.4.4 Suy luận dư thừa và vòng lặp vô hạn

Bây giờ chúng ta chuyển sang gót chân Achilles của Prolog: sự không phù hợp giữa tìm kiếm theo chiều

sâu và cây tìm kiếm bao gồm các trạng thái lặp lại và đường dẫn vô hạn. Hãy xem xét sơ đồ logic sau

đây để quyết định xem có tồn tại một đường đi giữa hai điểm trên một đồ thị có hướng:

path (X, Z): - link (X, Z). path (X,

Z): - path (X, Y), link (Y, Z).

Một đồ thị ba nút đơn giản, được mô tả bởi liên kết dữ kiện (a, b) và liên kết (b, c), được thể hiện

trong Hình 9.9 (a). Với chương trình này, đường dẫn truy vấn (a, c) tạo cây bằng chứng được hiển thị

trong Hình 9.10 (a). Mặt khác, nếu chúng ta đặt hai mệnh đề theo thứ tự

path (X, Z): - path (X, Y), link (Y, Z). path (X, Z): -

link (X, Z).

thì Prolog đi theo đường dẫn vô hạn như trong Hình 9.10 (b). Do đó, Prolog không hoàn chỉnh như một

định lý cho các mệnh đề xác định — ngay cả đối với các chương trình Datalog, như ví dụ này cho thấy —

bởi vì, đối với một số cơ sở kiến thức, nó không chứng minh được các câu được đưa vào. Lưu ý rằng

chuỗi chuyển tiếp không bị vấn đề này: một khi đường dẫn (a, b), đường dẫn (b, c) và đường dẫn (a, c)

được suy ra, chuỗi chuyển tiếp tạm dừng.

Chuỗi lùi trước theo chiều sâu cũng có vấn đề với các tính toán dư thừa. Ví dụ, khi tìm đường

dẫn từ A1 đến J4 trong Hình 9.9 (b), Prolog thực hiện 877 suy luận, hầu hết liên quan đến việc tìm tất

cả các đường dẫn có thể đến các nút mà từ đó mục tiêu không thể truy cập được.

Điều này tương tự như vấn đề trạng thái lặp lại được thảo luận trong Chương 3. Tổng lượng suy luận

có thể là cấp số nhân với số lượng dữ kiện cơ bản được tạo ra. Thay vào đó, nếu chúng ta áp dụng chuỗi

chuyển tiếp, tối đa n2 sự kiện đường dẫn (X, Y) có thể được tạo liên kết n nút.

Đối với bài toán trong Hình 9.9 (b), chỉ cần 62 suy luận.
NĂNG ĐỘNG
LẬP TRÌNH Chuỗi chuyển tiếp trên các bài toán tìm kiếm đồ thị là một ví dụ về lập trình động, trong đó các

giải pháp cho các bài toán con được xây dựng tăng dần từ các giải pháp nhỏ hơn
Machine Translated by Google

Mục 9.4. Chuỗi ngược 343

A1

ABC

J4
(Một) (b)

Hình 9.9 (a) Tìm đường đi từ A đến C có thể dẫn Prolog vào một vòng lặp vô hạn. (ba
đồ thị trong đó mỗi nút được kết nối với hai nút kế tiếp ngẫu nhiên trong lớp tiếp theo. Tìm một
đường dẫn từ A1 đến J4 yêu cầu 877 suy luận.

đường dẫn (a, c)

đường dẫn (a, c)

đường dẫn (a, Y) liên kết (Y, c)

liên kết (a, c) đường dẫn (a, Y) liên kết (b, c)

Thất bại {}

path (a, Y ') liên kết (Y ', Y)

liên kết (a, Y)

{ } Có b /

(Một) (b)

Hình 9.10 (a) Chứng minh rằng tồn tại một đường đi từ A đến C. (b) Tạo cây chứng minh vô hạn
khi các mệnh đề theo thứ tự "sai".

các bài toán con và được lưu vào bộ nhớ đệm để tránh tính toán lại. Chúng ta có thể có được một hiệu ứng tương tự trong một

hệ thống chuỗi ngược sử dụng ghi nhớ — nghĩa là, giải pháp lưu vào bộ nhớ đệm cho các mục tiêu con như

chúng được tìm thấy và sau đó sử dụng lại các giải pháp đó khi mục tiêu con tái diễn, thay vì lặp lại
NHẬT KÝ CÓ BẢNG
LẬP TRÌNH tính toán trước đó. Đây là cách tiếp cận được thực hiện bởi các hệ thống lập trình logic theo thẻ, sử

dụng các cơ chế lưu trữ và truy xuất hiệu quả để thực hiện ghi nhớ. Được xếp theo bảng

lập trình logic kết hợp hướng đến mục tiêu của chuỗi lùi với hiệu quả lập trình động của chuỗi chuyển

tiếp. Nó cũng đầy đủ cho kiến thức Datalog

căn cứ, có nghĩa là lập trình viên không cần phải lo lắng về các vòng lặp vô hạn. (Vẫn có khả năng tạo

một vòng lặp vô hạn với các vị từ như cha (X, Y) đề cập đến một

số lượng đối tượng không giới hạn.)

9.4.5 Ngữ nghĩa cơ sở dữ liệu của Prolog

Prolog sử dụng ngữ nghĩa cơ sở dữ liệu, như đã thảo luận trong Phần 8.2.8. Giả định về tên duy nhất

nói rằng mọi hằng số Prolog và mọi thuật ngữ cơ bản đều đề cập đến một đối tượng riêng biệt và

giả định thế giới khép kín nói rằng những câu duy nhất đúng là những câu được yêu cầu
Machine Translated by Google

344 Chương 9. Suy luận trong logic bậc nhất

bằng cơ sở tri thức. Không có cách nào để khẳng định rằng một câu là sai trong Prolog. Điều này làm cho

Prolog ít diễn đạt hơn so với logic bậc nhất, nhưng nó là một phần làm cho Prolog hiệu quả hơn và ngắn

gọn hơn. Hãy xem xét các khẳng định Prolog sau đây về một số dịch vụ khóa học:

Khóa học (CS, 101), Khóa học (CS, 102), Khóa học (CS, 106), Khóa học (EE, 101). (9.11)

Theo giả định về tên duy nhất, CS và EE là khác nhau (giống như 101, 102 và 106), vì vậy điều này có

nghĩa là có bốn khóa học riêng biệt. Theo giả định thế giới đóng không có các khóa học khác, vì vậy có

chính xác bốn khóa học. Nhưng nếu đây là những khẳng định trong FOL chứ không phải trong Prolog, thì tất

cả những gì chúng ta có thể nói là có đâu đó giữa các khóa học một và vô cùng. Đó là bởi vì các khẳng

định (trong FOL) không phủ nhận khả năng các khóa học khác chưa được đề cập cũng được cung cấp, cũng

như không nói rằng các khóa học được đề cập là khác biệt với nhau. Nếu chúng ta muốn dịch Phương trình

(9.11) thành FOL, chúng ta sẽ nhận được điều này: Course (d, n) (d = CS n = 101) (d = CS n =

102) (d = CS n = 106) (d = EE n = 101).

(9,12)

HOÀN THÀNH Đây được gọi là sự hoàn thành của Phương trình (9.11). Nó thể hiện trong FOL ý tưởng rằng có nhiều nhất

bốn khóa học. Để thể hiện trong FOL ý tưởng rằng có ít nhất bốn khóa học, chúng ta cần viết sự hoàn thành

của vị từ đẳng thức: x = y (x = CS y = CS) (x = EE y = EE) ( x = 101 y = 101) (x = 102

y = 102) (x = 106 y = 106).

Việc hoàn thành rất hữu ích để hiểu ngữ nghĩa cơ sở dữ liệu, nhưng đối với các mục đích thực tế, nếu vấn

đề của bạn có thể được mô tả bằng ngữ nghĩa cơ sở dữ liệu, thì sẽ hiệu quả hơn khi lập luận với Prolog

hoặc một số hệ thống ngữ nghĩa cơ sở dữ liệu khác, thay vì dịch sang FOL và rea soning với đầy đủ Định lý

FOL.

9.4.6 Lập trình logic ràng buộc

Trong cuộc thảo luận của chúng tôi về chuỗi chuyển tiếp (Phần 9.3), chúng tôi đã chỉ ra cách các vấn đề

thỏa mãn ràng buộc (CSP) có thể được mã hóa thành các mệnh đề xác định. Standard Prolog giải quyết các

vấn đề như vậy theo cách chính xác như thuật toán quay lui được đưa ra trong Hình 6.5.

Bởi vì backtracking liệt kê các miền của các biến, nó chỉ hoạt động cho các CSP miền hữu hạn. Theo

thuật ngữ Prolog, phải có một số giải pháp hữu hạn cho bất kỳ mục tiêu nào có các biến không liên kết.

(Ví dụ, mục tiêu khác biệt (Q, SA), nói rằng Queensland và Nam Úc phải có các màu khác nhau, có sáu giải

pháp nếu ba màu được phép.)

CSP miền vô hạn — ví dụ, với các biến số nguyên hoặc có giá trị thực — yêu cầu các thuật toán khá khác

biệt, chẳng hạn như truyền giới hạn hoặc lập trình tuyến tính.

Hãy xem xét ví dụ sau. Chúng tôi định nghĩa hình tam giác (X, Y, Z) là một vị từ

giữ nguyên nếu ba đối số là các số thỏa mãn bất đẳng thức tam giác:

tam giác (X, Y, Z): - X> 0, Y>

0, Z> 0, X + Y> = Z, Y + Z> = X, X + Z> = Y.

Nếu chúng ta hỏi Prolog tam giác truy vấn (3,4,5), nó thành công. Mặt khác, nếu chúng ta hỏi tam giác

(3,4, Z), sẽ không tìm được lời giải, vì miền con Z> = 0 không thể được xử lý bởi Prolog; chúng ta không

thể so sánh giá trị không liên kết với 0.


Machine Translated by Google

Mục 9.5. Nghị quyết 345

CONSTRAINT LOGIC
LẬP TRÌNH
Lập trình logic ràng buộc (CLP) cho phép các biến bị ràng buộc hơn là bị ràng buộc. Giải pháp CLP

là tập hợp các ràng buộc cụ thể nhất đối với các biến truy vấn có thể được rút ra từ cơ sở tri thức. Ví

dụ, giải pháp cho truy vấn tam giác (3,4, Z) là ràng buộc 7> = Z> = 1. Các chương trình logic tiêu chuẩn

chỉ là một trường hợp đặc biệt của CLP trong đó các ràng buộc giải pháp phải là các ràng buộc bình đẳng

— nghĩa là ràng buộc.

Hệ thống CLP kết hợp các thuật toán giải quyết ràng buộc khác nhau cho các ràng buộc được giảm

thiểu trong ngôn ngữ. Ví dụ, một hệ thống cho phép tính bất bình đẳng tuyến tính trên các biến có giá trị

thực có thể bao gồm một thuật toán lập trình tuyến tính để giải quyết các ràng buộc đó. Hệ thống CLP cũng

áp dụng một cách tiếp cận linh hoạt hơn nhiều để giải quyết các truy vấn lập trình logic tiêu chuẩn. Ví

dụ: thay vì quay lui theo chiều sâu trước, từ trái sang phải, họ có thể sử dụng bất kỳ thuật toán nào

hiệu quả hơn được thảo luận trong Chương 6, bao gồm thứ tự liên hợp theo phương pháp heuristic,

backjumping, điều hòa cutset, v.v. Do đó, hệ thống CLP kết hợp các yếu tố của thuật toán thỏa mãn ràng

buộc, lập trình logic và cơ sở dữ liệu suy diễn.

Một số hệ thống cho phép lập trình viên kiểm soát nhiều hơn thứ tự tìm kiếm trong ference đã được

xác định. Ngôn ngữ MRS (Genesereth và Smith, 1981; Russell, 1985) cho phép lập trình viên viết các siêu
METARULE phân tử để xác định liên hợp nào được thử trước. Người dùng có thể viết quy tắc nói rằng mục tiêu có

ít biến nhất nên được thử trước hoặc có thể viết quy tắc miền cụ thể cho các vị từ cụ thể.

9.5 GIẢI QUYẾT

Hệ thống logic cuối cùng trong số ba họ của chúng tôi dựa trên độ phân giải. Chúng ta đã thấy ở trang 250

rằng việc phân giải mệnh đề bằng cách sử dụng phép bác bỏ là một quy trình suy luận hoàn chỉnh cho logic

bậc của mệnh đề. Trong phần này, chúng tôi mô tả cách mở rộng độ phân giải sang logic bậc nhất.

9.5.1 Dạng chuẩn liên kết cho logic bậc nhất

Như trong trường hợp mệnh đề, việc phân giải bậc một yêu cầu các câu phải ở dạng chuẩn liên từ (CNF) —

nghĩa là, một tổ hợp các mệnh đề, trong đó mỗi mệnh đề là một nối của các từ. 6 Chữ nghĩa có thể chứa các

biến, được giả định là định lượng phổ quát. Ví dụ, câu

x Mỹ (x) Vũ khí (y) Bán (x, y, z) thù địch (z) Tội phạm (x)

trở thành, trong CNF,

¬American (x) ¬Weapon (y) ¬Bán (x, y, z) ¬Hostile (z) Hình sự (x).

Mọi câu của logic bậc nhất có thể được chuyển đổi thành một câu CNF tương đương theo cấp số nhân. Đặc

biệt, câu CNF sẽ không đạt yêu cầu chỉ khi câu gốc không đạt yêu cầu, vì vậy chúng ta có cơ sở để chứng

minh bằng sự mâu thuẫn trên các câu CNF.

6 Một mệnh đề cũng có thể được biểu diễn như một hàm ý với sự liên kết của các nguyên tử trong tiền đề và sự tách
rời của các nguyên tử trong phần kết luận (Bài tập 7.13). Đây được gọi là dạng thông thường hàm ý hoặc dạng Kowalski
(đặc biệt khi được viết với biểu tượng hàm ý từ phải sang trái (Kowalski, 1979)) và thường dễ đọc hơn nhiều.
Machine Translated by Google

346 Chương 9. Suy luận trong logic bậc nhất

Quy trình chuyển đổi sang CNF tương tự như trường hợp mệnh đề mà chúng ta đã thấy

ở trang 253. Sự khác biệt chính phát sinh từ nhu cầu loại bỏ các định lượng hiện sinh.

Chúng tôi minh họa quy trình này bằng cách dịch câu “Mọi người yêu tất cả các loài động vật đều

được ai đó yêu thích, ”hoặc

x [ y Động vật (y) Yêu (x, y)] [ y Yêu (y, x)].

Các bước thực hiện như sau:

• Loại bỏ các tác động:

x [¬ y ¬Animal (y) Yêu (x, y)] [ y Yêu (y, x)].

• Di chuyển ¬ vào trong: Ngoài các quy tắc thông thường cho các kết nối bị phủ định, chúng tôi cần các quy tắc

cho các định lượng phủ định. Do đó, chúng tôi có

¬ xp trở thành x ¬p

¬ xp trở thành x ¬p.

Câu của chúng ta trải qua các phép biến đổi sau:

x [ y ¬ (¬Animal (y) Yêu (x, y))] [ y Yêu (y, x)].

x [ y ¬¬Animal (y) ¬Loves (x, y)] [ y Loves (y, x)].

x [ y Animal (y) ¬Loves (x, y)] [ y Loves (y, x)].

Chú ý cách một định lượng phổ quát ( y) trong tiền đề của hàm ý đã trở thành

một định lượng hiện sinh. Câu bây giờ là "Hoặc có một số động vật mà x

không yêu, hoặc (nếu không phải là trường hợp này) ai đó yêu x. ” Rõ ràng, ý nghĩa của

câu gốc đã được giữ nguyên.

• Chuẩn hóa các biến: Đối với các câu như ( xP (x)) ( xQ (x)) sử dụng tương tự

tên biến hai lần, thay đổi tên của một trong các biến. Điều này tránh nhầm lẫn

sau đó khi chúng tôi thả các bộ định lượng. Do đó, chúng tôi có

x [ y Animal (y) ¬Loves (x, y)] [ z Loves (z, x)].

SKOLEMIZATION • Skolemize: Skolemization là quá trình loại bỏ các định lượng hiện sinh bởi elimi national. Trong

trường hợp đơn giản, nó giống như quy tắc Thuyết minh hiện tại của Phần 9.1:

tịnh tiến x P (x) thành P (A), với A là hằng số mới. Tuy nhiên, chúng ta không thể áp dụng Lập

tức cấp tốc Ex cho câu của chúng ta ở trên vì nó không phù hợp với mẫu v α;

chỉ các bộ phận của câu phù hợp với mẫu. Nếu chúng ta áp dụng quy tắc một cách mù quáng cho cả hai

phù hợp với các bộ phận mà chúng tôi nhận được

x [Động vật (A) ¬Loves (x, A)] Yêu (B, x),

có nghĩa hoàn toàn sai: nó nói rằng tất cả mọi người hoặc không yêu một con vật thuộc nhóm A hoặc

được yêu bởi một số thực thể cụ thể B. Trên thực tế, câu gốc của chúng tôi

cho phép mỗi người không yêu một con vật khác nhau hoặc không được yêu bởi một người khác.

Do đó, chúng tôi muốn các thực thể Skolem phụ thuộc vào x và z:

x [Animal (F (x)) ¬Loves (x, F (x))] Loves (G (z), x).

CHỨC NĂNG SKOLEM Ở đây F và G là các hàm Skolem. Quy tắc chung là các đối số của

Hàm Skolem là tất cả các biến được định lượng phổ biến trong phạm vi mà bộ định lượng tuần tự

xuất hiện. Như với Thuyết minh hiện sinh, câu Skolemized là

thỏa mãn chính xác khi câu gốc được thỏa mãn.
Machine Translated by Google

Mục 9.5. Nghị quyết 347

• Bỏ các bộ định lượng phổ quát: Tại thời điểm này, tất cả các biến còn lại phải được phổ biến

định lượng. Hơn nữa, câu tương đương với một câu trong đó tất cả các dấu hiệu quan phổ đã được

chuyển sang bên trái. Do đó, chúng ta có thể bỏ các bộ định lượng phổ quát:

[Animal (F (x)) ¬Loves (x, F (x))] Loves (G (z), x).

• Phân phối trên :

[Animal (F (x)) Loves (G (z), x)] [¬Loves (x, F (x)) Loves (G (z), x)].

Bước này cũng có thể yêu cầu làm phẳng các liên từ và liên từ lồng vào nhau.

Câu bây giờ là CNF và bao gồm hai mệnh đề. Nó là khá khó đọc. (Nó có thể

giúp giải thích rằng hàm Skolem F (x) đề cập đến con vật có khả năng được yêu thương bởi x,

trong khi G (z) dùng để chỉ ai đó có thể yêu x.) May mắn thay, con người hiếm khi cần nhìn

ở câu CNF — quá trình dịch được tự động hóa dễ dàng.

9.5.2 Quy tắc suy luận độ phân giải

Quy tắc phân giải cho các mệnh đề bậc nhất chỉ đơn giản là một phiên bản nâng cao của quy tắc cộng hưởng mệnh

đề được đưa ra trên trang 253. Hai mệnh đề, được giả định là được tiêu chuẩn hóa tách rời nhau.

rằng chúng không chia sẻ biến, có thể được giải quyết nếu chúng chứa các ký tự bổ sung. Các nghĩa đen có điều

kiện bổ sung cho nhau nếu cái này là phủ định của cái kia; các chữ bậc nhất là

bổ sung cho nhau nếu cái này thống nhất với cái phủ định của cái kia. Do đó, chúng tôi có

1 · · · k, m1 · · · mn

SUBST (θ, 1 · · · i 1 i + 1 · · · k m1 · · · mj 1 mj + 1 · · · mn)

trong đó UNIFY (i, ¬mj ) = θ. Ví dụ, chúng ta có thể giải quyết hai mệnh đề

[Animal (F (x)) Loves (G (x), x)] và [¬Loves (u, v) ¬Kills (u, v)]

bằng cách loại bỏ các chữ bổ sung Yêu nhau (G (x), x) và ¬Loves (u, v), với bộ hợp nhất

θ = {u / G (x), v / x}, để tạo mệnh đề giải quyết

[Động vật (F (x)) ¬Kills (G (x), x)].

QUY TẮC GIẢI QUYẾT BINARY Quy tắc này được gọi là quy tắc phân giải nhị phân vì nó phân giải chính xác hai ký tự. Các
Quy tắc phân giải nhị phân tự nó không mang lại một quy trình suy luận hoàn chỉnh. Quy tắc thận trọng cộng hưởng

đầy đủ giải quyết các tập hợp con của các ký tự trong mỗi mệnh đề là không thể xác định được. Một cách tiếp cận thay thế

là mở rộng bao thanh toán — việc loại bỏ các ký tự thừa — cho trường hợp bậc nhất. Phép tính theo tỉ lệ

Proposi giảm hai chữ thành một nếu chúng giống hệt nhau; bao thanh toán bậc nhất giảm

hai chữ thành một nếu chúng không thể xác định được. Bộ hợp nhất phải được áp dụng cho toàn bộ mệnh đề. Các

sự kết hợp của phân giải nhị phân và bao thanh toán đã hoàn tất.

9.5.3 Ví dụ minh chứng

Độ phân giải chứng minh rằng KB | = α bằng cách chứng minh KB ¬α không thỏa mãn, nghĩa là, bằng cách suy ra

mệnh đề trống. Cách tiếp cận thuật toán giống với trường hợp mệnh đề, được mô tả trong
Machine Translated by Google

348 Chương 9. Suy luận trong logic bậc nhất

¬American (x) ¬Weapon (y) ¬Bán (x, y, z) ¬Hostile (z) Hình sự (x) ¬Criminal (Tây)

Miền Tây nước Mỹ) ¬American (West) ¬Weapon (y) ¬Bán (Tây, y, z) ¬Hostile (z)

¬Missile (x) Weapon (x) ¬Weapon (y) ¬Bán (Tây, y, z) ¬Hostile (z)

Tên lửa (M1) ¬Missile (y) ¬Bán (Tây, y, z) ¬Hostile (z)

¬Missile (x) ¬Owns (Nono, x) Bán (West, x, Nono) ¬Bán (Tây, M1, z) ¬ Vải trắng (z)

Tên lửa (M 1) ¬Missile (M1) ¬Owns (Nono, M1 ) ¬Hostile (Nono)

Quyền sở hữu (Nono, M 1) ¬ Màu (Nono, M1 ) ¬Hostile (Nono)

¬Enemy (x, America) thù địch (x) ¬ Vải trắng (Nono)

Enemy (Nono, Mỹ) ¬Enemy (Nono, Mỹ)

Hình 9.11 Một bằng chứng giải quyết rằng West là một tội phạm. Ở mỗi bước, các chữ hợp nhất
được in đậm.

Hình 7.12, vì vậy chúng ta không cần phải lặp lại nó ở đây. Thay vào đó, chúng tôi đưa ra hai ví dụ minh chứng. Đầu tiên là

ví dụ về tội phạm từ Phần 9.3. Các câu trong CNF là

¬American (x) ¬Weapon (y) ¬Bán (x, y, z) ¬Hostile (z) Hình sự (x)

¬Missile (x) ¬Owns (Nono, x) Bán (West, x, Nono)

¬Enemy (x, America) Hostile (x)

¬Missile (x) Weapon (x)

Quyền sở hữu (Nono, M1) Tên lửa (M1)

Miền Tây nước Mỹ) Kẻ thù (Nono, Mỹ).

Chúng tôi cũng bao gồm mục tiêu bị phủ định ¬Criminal (Tây). Bằng chứng về độ phân giải được thể hiện

trong Hình 9.11. Lưu ý cấu trúc: một “cột sống” bắt đầu bằng mệnh đề mục tiêu, giải quyết chống lại

các mệnh đề từ cơ sở tri thức cho đến khi tạo ra mệnh đề trống. Đây là đặc điểm

của sự phân giải trên cơ sở kiến thức mệnh đề Horn. Trên thực tế, các mệnh đề dọc theo cột sống chính

tương ứng chính xác với các giá trị liên tiếp của biến mục tiêu trong chuỗi lùi

thuật toán của Hình 9.6. Điều này là do chúng tôi luôn chọn giải quyết bằng một mệnh đề có

nghĩa đen thống nhất với nghĩa đen ngoài cùng bên trái của mệnh đề “hiện tại” trên cột sống; đây là

chính xác những gì xảy ra trong chuỗi ngược. Vì vậy, chuỗi lùi chỉ là một trường hợp đặc biệt

của giải pháp với một chiến lược kiểm soát cụ thể để quyết định giải pháp nào sẽ thực hiện tiếp theo.

Ví dụ thứ hai của chúng tôi sử dụng Skolemization và liên quan đến các mệnh đề không phải là mệnh

đề inite def. Điều này dẫn đến một cấu trúc bằng chứng phức tạp hơn một chút. Trong tiếng Anh,

vấn đề như sau:

Mọi người yêu tất cả các loài động vật được yêu thương bởi một người nào đó.

Bất cứ ai giết một con vật đều không được ai yêu mến.
Jack yêu tất cả các loài động vật.

Jack hoặc Curiosity đã giết con mèo tên là Tuna.

Curiosity có giết con mèo không?


Machine Translated by Google

Mục 9.5. Nghị quyết 349

Đầu tiên, chúng tôi diễn đạt các câu gốc, một số kiến thức nền tảng và mục tiêu phủ định
G trong logic bậc nhất:

A. x [ y Động vật (y) Người yêu (x, y)] [ y Người yêu (y, x)]

B. x [ z Động vật (z) Giết (x, z)] [ y ¬Loves (y, x)]

C. x Động vật (x) Người yêu (Jack, x)

D. Kills (Jack, Tuna) Kills (Curiosity, Tuna)

E. Cat (Tuna)

F. x Mèo (x) Động vật (x)

¬G. ¬Kills (Curiosity, Tuna)

Bây giờ chúng ta áp dụng quy trình chuyển đổi để chuyển đổi từng câu thành CNF:

A1. Animal (F (x)) Yêu (G (x), x)

A2. ¬Loves (x, F (x)) Loves (G (x), x)

B. ¬Loves (y, x) ¬Animal (z) ¬Kills (x, z)

C. ¬Animal (x) Yêu (Jack, x)

D. Kills (Jack, Tuna) Kills (Curiosity, Tuna)

E. Cat (Tuna)

F. ¬Cat (x) Động vật (x)

¬G. ¬Kills (Curiosity, Tuna)

Bằng chứng phân giải rằng Curiosity đã giết con mèo được đưa ra trong Hình 9.12. Bằng tiếng Anh, bằng chứng

có thể được diễn giải như sau:

Giả sử Curiosity không giết được Tuna. Chúng tôi biết rằng Jack hoặc Curiosity đã làm; do đó

Jack phải có. Bây giờ, Tuna là mèo và mèo là động vật, vì vậy Tuna là động vật. Tại vì

Bất cứ ai giết một con vật đều không được ai yêu thích, chúng ta biết rằng không ai yêu Jack. Trên

mặt khác, Jack yêu tất cả các loài động vật, vì vậy có người yêu anh ta; vì vậy chúng tôi có một mâu thuẫn.

Do đó, Curiosity đã giết chết con mèo.

Cat (Tuna) ¬Cat (x) Animal (x) Kills (Jack, Tuna) Kills (Curiosity, Tuna) ¬Kills (Curiosity, Tuna)

Động vật (Cá ngừ) ¬Loves (y, x) ¬Animal (z) ¬Kills (x, z) Kills (Jack, Tuna) ¬Loves (x, F (x)) Loves (G (x), x) ¬Animal (x) Yêu (Jack, x)

¬Loves (y, x) ¬Kills (x, Tuna) ¬Animal (F (Jack)) Yêu (G (Jack), Jack) Động vật (F (x)) Yêu (G (x), x)

¬Loves (y, Jack) Yêu (G (Jack), Jack)

Hình 9.12 Một bằng chứng phân giải rằng Curiosity đã giết con mèo. Lưu ý việc sử dụng bao thanh toán

trong dẫn xuất của mệnh đề Yêu (G (Jack), Jack). Cũng lưu ý ở phía trên bên phải,

hợp nhất Loves (x, F (x)) và Loves (Jack, x) chỉ có thể thành công sau khi các biến có

đã được tiêu chuẩn hóa ngoài.


Machine Translated by Google

350 Chương 9. Suy luận trong logic bậc nhất

Bằng chứng trả lời cho câu hỏi "Có phải Curiosity đã giết con mèo không?" nhưng thường thì chúng tôi muốn tạo dáng nhiều hơn

những câu hỏi chung chung, chẳng hạn như "Ai đã giết con mèo?" Độ phân giải có thể làm được điều này, nhưng cần một chút

làm việc nhiều hơn để có được câu trả lời. Mục tiêu là w Kills (w, Tuna), khi bị phủ định,

trở thành ¬Kills (w, Tuna) trong CNF. Lặp lại chứng minh trong Hình 9.12 với chứng minh mới bị phủ định

mục tiêu, chúng tôi có được một cây bằng chứng tương tự, nhưng với sự thay thế {w / Curiosity} ở một trong các

các bước. Vì vậy, trong trường hợp này, việc tìm ra ai đã giết con mèo chỉ là việc theo dõi

ràng buộc cho các biến truy vấn trong bằng chứng.
KHÔNG HƯỚNG DẪN
Thật không may, độ phân giải có thể tạo ra các bằng chứng phi cấu trúc cho các mục tiêu hiện sinh.
BẰNG CHỨNG

Ví dụ: ¬Kills (w, Tuna) giải quyết bằng Kills (Jack, Tuna) Kills (Curiosity, Tuna)

để cung cấp Kills (Jack, Tuna), giải quyết một lần nữa với ¬Kills (w, Tuna) để mang lại con trống

mệnh đề. Chú ý rằng w có hai ràng buộc khác nhau trong bằng chứng này; độ phân giải đang nói với chúng tôi rằng,

vâng, ai đó đã giết Tuna — Jack hoặc Curiosity. Đây không phải là bất ngờ lớn! Một điều hết sức lưu ý là hạn chế các

bước giải quyết được phép để các biến truy vấn có thể bị ràng buộc

chỉ một lần trong một bằng chứng nhất định; thì chúng ta cần có khả năng quay lại các ràng buộc có thể có. Một giải

ĐÁP ÁN pháp khác là thêm một câu trả lời đặc biệt theo nghĩa đen cho mục tiêu bị phủ định, sẽ xuất hiện ¬Kills (w, Tuna)

Answer (w). Bây giờ, quá trình giải quyết tạo ra một câu trả lời

bất cứ khi nào một mệnh đề được tạo chỉ chứa một câu trả lời duy nhất. Đối với bằng chứng trong Hình 9.12, đây là Câu

trả lời (Sự tò mò). Chứng minh phi cấu trúc sẽ tạo ra mệnh đề

Câu trả lời (Tò mò) Câu trả lời (Jack), không cấu thành câu trả lời.

9.5.4 Tính đầy đủ của giải pháp

Phần này cung cấp bằng chứng đầy đủ về độ phân giải. Nó có thể được bỏ qua một cách an toàn bởi những người

sẵn sàng thực hiện nó trên niềm tin.


TÀI LIỆU
Chúng tôi cho thấy rằng giải pháp là bác bỏ hoàn toàn, có nghĩa là nếu một tập hợp các câu là không thể thỏa
HOÀN TOÀN

mãn, thì việc giải quyết sẽ luôn có thể dẫn đến mâu thuẫn. Nghị quyết

không thể được sử dụng để tạo ra tất cả các hệ quả logic của một tập hợp các câu, nhưng nó có thể được sử dụng

để thiết lập rằng một câu nhất định được kéo theo bởi tập hợp các câu. Do đó, nó có thể được sử dụng để

tìm tất cả các câu trả lời cho một câu hỏi đã cho, Q (x), bằng cách chứng minh rằng KB ¬Q (x) là không thỏa mãn.

Chúng tôi coi nó như đã cho rằng bất kỳ câu nào trong logic bậc nhất (không có đẳng thức) đều có thể được viết

lại mười thành một tập hợp các mệnh đề trong CNF. Điều này có thể được chứng minh bằng cách quy nạp về hình thức của câu,

sử dụng câu nguyên tử làm trường hợp cơ sở (Davis và Putnam, 1960). Do đó, mục tiêu của chúng tôi là

chứng minh điều sau: nếu S là một tập hợp các mệnh đề không thỏa mãn, thì ứng dụng của một

số bước giải quyết đến S sẽ dẫn đến mâu thuẫn.

Bản phác thảo bằng chứng của chúng tôi tuân theo bằng chứng ban đầu của Robinson với một số đơn giản hóa từ

Genesereth và Nilsson (1987). Cấu trúc cơ bản của bằng chứng (Hình 9.13) như sau:

1. Đầu tiên, chúng ta quan sát thấy rằng nếu S không thỏa mãn, thì tồn tại một tập hợp cụ thể của mặt bằng

các trường hợp của mệnh đề S sao cho tập hợp này cũng không thỏa mãn (Định lý Herbrand).

2. Sau đó, chúng tôi kháng nghị định lý độ phân giải cơ bản được đưa ra trong Chương 7, trong đó tuyên bố rằng

mệnh đề phân giải hoàn chỉnh cho các câu dưới đất.

3. Sau đó, chúng tôi sử dụng bổ đề nâng để chỉ ra rằng, đối với bất kỳ bằng chứng phân giải mệnh đề nào sử dụng

tập hợp các câu cơ bản, có một bằng chứng phân giải bậc một tương ứng bằng cách sử dụng

các câu đầu tiên mà từ đó có được các câu cơ bản.


Machine Translated by Google

Mục 9.5. Nghị quyết 351

Bất kỳ tập hợp câu nào S đều có thể biểu diễn ở dạng mệnh đề

Giả sử S là không thỏa mãn và ở dạng mệnh đề

Định lý Herbrand

Một số tập hợp S 'của các trường hợp mặt đất là không thể đáp ứng được

Định lý độ phân giải

mặt đất

Sự phân giải có thể tìm ra mâu thuẫn trong S '

Bổ đề nâng

Có một bằng chứng giải quyết cho sự mâu thuẫn trong S '

Hình 9.13 Cấu trúc của một bằng chứng tính đầy đủ cho độ phân giải.

Để thực hiện bước đầu tiên, chúng ta cần ba khái niệm mới:
THẢO DƯỢC
UNIVERSE • Vũ trụ Herbrand: Nếu S là một tập hợp các mệnh đề, thì HS, vũ trụ Herbrand của S, là

tập hợp tất cả các thuật ngữ cơ bản có thể xây dựng từ sau: a. Các

ký hiệu chức năng trong S, nếu có. b. Các ký hiệu hằng trong S,

nếu có; nếu không có, thì ký hiệu hằng số A.

Ví dụ, nếu S chỉ chứa mệnh đề ¬P (x, F (x, A)) ¬Q (x, A) R (x, B), thì HS là tập vô hạn các

số hạng cơ bản sau: {A , B, F (A, A), F (A, B), F (B, A), F (B, B), F (A, F (A, A)),. ..}. • Độ

bão hòa: Nếu S là tập hợp các mệnh đề và P là tập hợp các số hạng cơ bản, thì P (S), độ

SỰ THỎA MÃN
bão hòa của S đối với P, là tập hợp tất cả các mệnh đề cơ bản thu được bằng cách áp dụng tất cả các

phép thay thế nhất quán có thể có của mặt đất các số hạng trong P với các biến trong S. • Cơ sở

Herbrand: Độ bão hòa của một tập S các mệnh đề đối với câu đơn Herbrand của nó được gọi là cơ sở
CƠ SỞ THẢO DƯỢC
Herbrand của S, được viết là HS (S). Ví dụ, nếu S chỉ chứa mệnh đề vừa cho, thì HS (S) là tập hợp

vô hạn các mệnh đề {¬P (A, F (A, A)) ¬Q (A, A) R (A, B ), ¬P (B, F (B, A)) ¬Q (B, A) R

(B, B), ¬P (F (A, A), F (F (A, A), A )) ¬Q (F (A, A), A) R (F (A, A), B), ¬P (F (A, B), F (F

(A, B), A)) ¬Q (F (A, B), A) R (F (A, B), B), ... }

THẢO DƯỢC CỦA


LÝ THUYẾT Những định nghĩa này cho phép chúng ta phát biểu một dạng của định lý Herbrand (Herbrand, 1930):

Nếu một tập S mệnh đề không thỏa mãn thì tồn tại một tập con hữu hạn HS (S) cũng không thỏa
mãn.

Gọi S là tập con hữu hạn của các câu dưới đất. Bây giờ, chúng ta có thể dựa vào định lý độ phân giải cơ

bản (trang 255) để chỉ ra rằng lệnh đóng độ phân giải RC (S) chứa mệnh đề trống.

Tức là, chạy giải mệnh đề đến khi hoàn thành trên S sẽ dẫn đến mâu thuẫn.

Bây giờ chúng ta đã thiết lập rằng luôn có một bằng chứng phân giải liên quan đến một số tập con

hữu hạn của cơ sở Herbrand của S, bước tiếp theo là chứng minh rằng có một giải
Machine Translated by Google

352 Chương 9. Suy luận trong logic bậc nhất

GODEL
¨ LÝ THUYẾT KHÔNG NHÂN CÔNG

Bằng cách mở rộng một chút ngôn ngữ của logic bậc nhất để cho phép lập giản đồ quy nạp ical trong

toán học, Kurt G¨odel đã có thể chỉ ra, trong định lý incom pleteness của mình, rằng có những câu

số học thực sự không thể chứng minh được.

Việc chứng minh định lý về tính không đầy đủ phần nào nằm ngoài phạm vi của

cuốn sách này, chiếm ít nhất 30 trang, nhưng chúng tôi có thể đưa ra một gợi ý ở đây. chúng tôi

bắt đầu với lý thuyết lôgic của các con số. Trong lý thuyết này, có một hằng số duy nhất,

0, và một hàm duy nhất, S (hàm kế thừa). Trong mô hình dự định, S (0)

biểu thị 1, S (S (0)) biểu thị 2, v.v. ngôn ngữ do đó có tên cho tất cả

các số tự nhiên. Từ vựng cũng bao gồm các ký hiệu hàm +, × và

Expt (lũy thừa) và tập hợp thông thường của các kết nối và định lượng logic. Các

bước đầu tiên là nhận thấy rằng tập hợp các câu mà chúng ta có thể viết bằng ngôn ngữ này có thể

được liệt kê. (Hãy tưởng tượng xác định thứ tự bảng chữ cái trên các ký hiệu và sau đó

sắp xếp, theo thứ tự bảng chữ cái, mỗi tập hợp các câu có độ dài 1, 2 và

cứ tiếp tục như vậy.) Sau đó, chúng ta có thể đánh số mỗi câu α bằng một số tự nhiên duy nhất # α
¨
(số Godel). Điều này rất quan trọng: lý thuyết số chứa tên cho mỗi

câu riêng của nó. Tương tự, chúng ta có thể đánh số mỗi bằng chứng P khả thi với một mô hình G¨

số G (P), bởi vì một bằng chứng đơn giản là một chuỗi hữu hạn các câu.

Bây giờ, giả sử chúng ta có một tập hợp A có thể liệt kê một cách đệ quy gồm các câu

phát biểu đúng về các số tự nhiên. Nhắc lại rằng A có thể được đặt tên bởi

tập hợp các số nguyên đã cho, chúng ta có thể tưởng tượng viết bằng ngôn ngữ của chúng ta một câu α (j, A) trong số

loại sau:

ii không phải là số mô hình của một bằng chứng cho câu có mô hình

số là j, trong đó bằng chứng chỉ sử dụng tiền đề trong A.

Sau đó, gọi σ là câu α (# σ, A), nghĩa là, một câu nói lên khả năng không có lợi của chính nó từ

A. (Câu này luôn tồn tại là đúng nhưng không hoàn toàn hiển nhiên.)

Bây giờ chúng ta lập luận khéo léo sau: Giả sử rằng σ có thể chứng minh được

từ A; thì σ là sai (vì σ nói rằng nó không thể được chứng minh). Nhưng sau đó chúng tôi có một

câu sai có thể được chứng minh từ A, vì vậy A không thể chỉ bao gồm các câu đúng—

vi phạm tiền đề của chúng tôi. Do đó, σ không thể chứng minh được từ A. Nhưng đây chính xác là

những gì σ tự nó tuyên bố; do đó σ là một câu đúng.


1
Vì vậy, chúng tôi đã chỉ ra (bỏ qua 29 trang) rằng đối với bất kỳ tập hợp câu đúng nào của
2
lý thuyết số, và đặc biệt là bất kỳ tập hợp các tiên đề cơ bản nào, có những phân tích sen đúng

khác không thể được chứng minh từ những tiên đề đó. Điều này thiết lập, trong số những

những thứ mà chúng ta không bao giờ có thể chứng minh tất cả các định lý toán học trong bất kỳ

hệ tiên đề. Rõ ràng, đây là một khám phá quan trọng đối với toán học. Của nó

tầm quan trọng đối với AI đã được tranh luận rộng rãi, bắt đầu bằng những suy đoán của G¨odel

bản thân anh ấy. Chúng ta sẽ tranh luận trong Chương 26.
Machine Translated by Google

Mục 9.5. Nghị quyết 353

chứng minh bằng cách sử dụng các mệnh đề của chính S, không nhất thiết phải là mệnh đề cơ bản. Chúng tôi bắt đầu bởi

đang xem xét một ứng dụng duy nhất của quy tắc phân giải. Robinson đã phát biểu bổ đề này:

Đặt C1 và C2 là hai mệnh đề không có biến dùng chung và đặt C và C là


1 2 và C
các trường hợp mặt đất của C1 và C2. Nếu C là một giải pháp của C1 2, sau đó tồn tại

một mệnh đề C sao cho (1) C là một phân giải của C1 và C2 và (2) C là một cơ sở
ví dụ của C.

NÂNG CẤP LEMMA Đây được gọi là bổ đề nâng, bởi vì nó nâng một bước chứng minh từ mệnh đề cơ bản lên tổng quát

mệnh đề bậc nhất. Để chứng minh bổ đề nâng cơ bản của mình, Robinson đã phải phát minh ra cation unifi

và suy ra tất cả các thuộc tính của hầu hết các hợp nhất tổng quát. Thay vì lặp lại bằng chứng

ở đây, chúng tôi chỉ minh họa bổ đề:

C1 = ¬P (x, F (x, A)) ¬Q (x, A) R (x, B)

C2 = ¬N (G (y), z) P (H (y), z)

C = ¬P (H (B), F (H (B), A)) ¬Q (H (B), A) R (H (B), B)

C 1 = ¬N (G (B), F (H (B), A)) P (H (B), F (H (B), A))


2

C = ¬N (G (B), F (H (B), A)) ¬Q (H (B), A) R (H (B), B)

C = ¬N (G (y), F (H (y), A)) ¬Q (H (y), A) R (H (y), B).

Chúng ta thấy rằng thực sự C là một ví dụ cơ bản của C. Nói chung, đối với C và C
1 2 có bất kỳ
chất phân giải, chúng phải được xây dựng bằng cách áp dụng đầu tiên cho C1 và C2 trình hợp nhất chung nhất

của một cặp chữ bổ sung trong C1 và C2. Từ bổ đề nâng, có thể dễ dàng suy ra

một tuyên bố tương tự về bất kỳ chuỗi ứng dụng nào của quy tắc phân giải:

Đối với bất kỳ mệnh đề C nào trong đóng phân giải của S, có một mệnh đề C trong đóng phân

giải của S sao cho C là một thể hiện cơ bản của C và dẫn xuất của C là

cùng độ dài với đạo hàm của C.

Từ thực tế này, điều đó xảy ra nếu mệnh đề trống xuất hiện trong phần đóng phân giải của S , nó

cũng phải xuất hiện trong phần đóng phân giải của S. Điều này là do mệnh đề trống không thể là một

ví dụ cơ bản của bất kỳ điều khoản nào khác. Tóm lại: chúng tôi đã chỉ ra rằng nếu S không đạt yêu cầu thì

có một dẫn xuất hữu hạn của mệnh đề trống bằng cách sử dụng quy tắc phân giải.

Việc nâng định lý chứng minh từ mệnh đề cơ bản lên mệnh đề bậc nhất cung cấp một lượng lớn

tăng sức mạnh. Sự gia tăng này xuất phát từ thực tế là cần khởi tạo bằng chứng thứ nhất

chỉ các biến trong chừng mực cần thiết cho việc chứng minh, trong khi các phương pháp mệnh đề cơ bản là

cần thiết để kiểm tra một số lượng lớn các khởi tạo tùy ý.

9.5.5 Bình đẳng

Không có phương pháp suy luận nào được mô tả cho đến nay trong chương này xử lý một khẳng định về dạng

x = y. Ba cách tiếp cận khác nhau có thể được thực hiện. Cách tiếp cận đầu tiên là tiên đề hóa sự bình đẳng—

để viết các câu về quan hệ đẳng thức trong cơ sở kiến thức. Chúng ta cần phải nói rằng

bình đẳng là phản xạ, đối xứng và bắc cầu, và chúng ta cũng phải nói rằng chúng ta có thể thay thế

bằng cho bằng trong bất kỳ vị ngữ hoặc hàm nào. Vì vậy, chúng ta cần ba tiên đề cơ bản, và sau đó một
Machine Translated by Google

354 Chương 9. Suy luận trong logic bậc nhất

cho mỗi vị từ và chức năng:

xx = x

x, yx = y y = x

x, y, zx = y y = z x = z

x, yx = y (P1 (x) P1 (y))

x, yx = y (P2 (x) P2 (y))


.
.
.

w, x, y, zw = y x = z (F1 (w, x) = F1 (y, z))

w, x, y, zw = y x = z (F2 (w, x) = F2 (y, z))


.
.
.

Với những câu này, một quy trình suy luận tiêu chuẩn như phân giải có thể thực hiện các nhiệm vụ

yêu cầu lập luận bình đẳng, chẳng hạn như giải phương trình toán học. Tuy nhiên, những tiên đề này

sẽ tạo ra rất nhiều kết luận, hầu hết chúng không hữu ích cho một bằng chứng. Vì vậy, đã có một

tìm kiếm các cách xử lý bình đẳng hiệu quả hơn. Một giải pháp thay thế là thêm các quy tắc suy luận

chứ không phải tiên đề. Quy tắc đơn giản nhất, giải điều chế, nhận mệnh đề đơn vị x = y và một số

mệnh đề α có chứa số hạng x và tạo ra một mệnh đề mới được hình thành bằng cách thay y cho x

trong khoảng α. Nó hoạt động nếu số hạng trong α thống nhất với x; nó không cần chính xác bằng x.

Lưu ý rằng giải điều chế là định hướng; cho trước x = y, x luôn được thay thế bằng y, không bao giờ

ngược lại. Điều đó có nghĩa là giải điều chế có thể được sử dụng để đơn giản hóa các biểu thức bằng cách sử dụng

bộ giải điều chế như x + 0 = x hoặc x1 = x. Như một ví dụ khác, đã cho

Father (Father (x)) = PaternalGrandfather (x)

Ngày sinh (Father (Father (Bella)), 1926)

chúng ta có thể kết luận bằng cách giải điều chế

Ngày sinh (Cha đẻ (Bella), 1926).

Chính thức hơn, chúng tôi có

KHOẢNG CÁCH
• Giải điều chế: Đối với bất kỳ thuật ngữ nào x, y và z, trong đó z xuất hiện ở đâu đó trong chữ mi

và trong đó UNIFY (x, z) = θ,

x = y, m1 · · · mn
.
SUB (SUBST (θ, x), SUBST (θ, y), m1 · · · mn)

trong đó SUBST là sự thay thế thông thường của một danh sách liên kết và SUB (x, y, m) có nghĩa là

thay x bằng y ở mọi nơi mà x xảy ra trong m.

Quy tắc cũng có thể được mở rộng để xử lý các mệnh đề không phải đơn vị trong đó xuất hiện một từ bình đẳng:

THÔNG SỐ
• Paramodulation: Đối với bất kỳ thuật ngữ nào x, y và z, trong đó z xuất hiện ở đâu đó trong chữ mi,

và trong đó UNIFY (x, z) = θ,


1 · · · k x = y, m1 · · · mn
.
SUB (SUBST (θ, x), SUBST (θ, y), SUBST (θ, 1 · · · k m1 · · · mn)

Ví dụ, từ

P (F (x, B), x) Q (x) và F (A, y) = y R (y)


Machine Translated by Google

Mục 9.5. Nghị quyết 355

chúng ta có θ = UNIFY (F (A, y), F (x, B)) = {x / A, y / B} và chúng ta có thể kết luận câu

P (B, A) Q (A) R (B).

Paramodulation mang lại một quy trình suy luận hoàn chỉnh cho logic bậc nhất có đẳng thức.

Cách tiếp cận thứ ba xử lý hoàn toàn lý luận bình đẳng trong một thuật toán hợp nhất mở rộng. Có

nghĩa là, các thuật ngữ là không thể xác định được nếu chúng ngang nhau một cách có thể chứng minh được

dưới một số thay thế, trong đó “có thể chứng minh” cho phép lập luận bình đẳng. Ví dụ, các thuật ngữ 1 +

2 và 2 + 1 thông thường không phải là duy nhất, nhưng một thuật toán hợp nhất biết rằng x + y = y + x có
QUỐC TẾ
HỢP NHẤT thể hợp nhất chúng với phép thay thế rỗng. Sự hợp nhất phương trình kiểu này có thể được thực hiện bằng

các thuật toán hiệu quả được thiết kế cho các tiên đề cụ thể được sử dụng (tính giao hoán, tính kết hợp,

v.v.) thay vì thông qua suy luận rõ ràng với các tiên đề đó. Các phép dò định lý sử dụng kỹ thuật này có

liên quan chặt chẽ đến các hệ thống CLP được mô tả trong Phần 9.4.

9.5.6 Các chiến lược giải quyết

Chúng ta biết rằng các ứng dụng lặp đi lặp lại của quy tắc suy luận độ phân giải cuối cùng sẽ tìm thấy một bằng

chứng nếu nó tồn tại. Trong tiểu mục này, chúng tôi xem xét các chiến lược giúp tìm ra các bằng chứng một cách hiệu quả.

ƯU ĐÃI ĐƠN VỊ Ưu tiên đơn vị: Chiến lược này ưu tiên thực hiện các giải pháp trong đó một trong các câu là một từ đơn

(còn được gọi là mệnh đề đơn vị). Ý tưởng đằng sau chiến lược là chúng tôi đang cố gắng tạo ra một

mệnh đề trống, vì vậy có thể là một ý kiến hay nếu bạn thích các suy luận tạo ra các mệnh đề ngắn hơn.

Việc giải quyết một câu đơn vị (chẳng hạn như P) với bất kỳ câu nào khác (chẳng hạn như ¬P ¬Q R)

luôn tạo ra một mệnh đề (trong trường hợp này là ¬Q R) ngắn hơn mệnh đề còn lại. Khi chiến lược ưu

tiên đơn vị lần đầu tiên được thử nghiệm cho suy luận mệnh đề vào năm 1964, nó đã dẫn đến một tốc độ

tăng nhanh chóng, khiến việc chứng minh các định lý không thể xử lý được nếu không có ưu tiên trở nên

khả thi. Giải quyết theo đơn vị là một hình thức giải quyết hạn chế, trong đó mọi bước giải quyết phải

liên quan đến điều khoản đơn vị. Nói chung, độ phân giải đơn vị là không đầy đủ, nhưng hoàn chỉnh cho

các mệnh đề Horn. Các bằng chứng về độ phân giải đơn vị trên mệnh đề Horn giống như chuỗi chuyển tiếp.

Câu châm ngôn về định lý OTTER (Các kỹ thuật có tổ chức để chứng minh định lý và nghiên cứu hiệu

quả, McCune, 1992), sử dụng một dạng tìm kiếm ưu tiên nhất. Hàm heuristic của nó đo lường "trọng lượng"

của mỗi mệnh đề, trong đó các mệnh đề nhẹ hơn được ưu tiên hơn. Sự lựa chọn chính xác của heuristic là

tùy thuộc vào người dùng, nhưng nhìn chung, trọng lượng của một mệnh đề phải tương quan với kích thước

hoặc độ khó của nó. Mệnh đề đơn vị được coi như ánh sáng; do đó, tìm kiếm có thể được coi là một tổng

quát của chiến lược ưu tiên đơn vị.

BỘ HỖ TRỢ
Bộ hỗ trợ: Tùy chọn thử một số độ phân giải nhất định trước là hữu ích, nhưng nói chung sẽ hiệu quả hơn

nếu cố gắng loại bỏ hoàn toàn một số độ phân giải tiềm năng. Ví dụ, chúng ta có thể nhấn mạnh rằng mọi

bước giải quyết liên quan đến ít nhất một phần tử của một tập hợp các mệnh đề đặc biệt — tập hợp các hỗ

trợ. Sau đó, giải pháp được thêm vào tập hợp hỗ trợ. Nếu tập hợp hỗ trợ là nhỏ so với toàn bộ cơ sở tri

thức, không gian tìm kiếm sẽ bị giảm đáng kể.

Chúng ta phải cẩn thận với cách tiếp cận này vì một lựa chọn không tốt cho tập hợp hỗ trợ sẽ làm

cho thuật toán không hoàn thiện. Tuy nhiên, nếu chúng ta chọn tập hỗ trợ S sao cho phần còn lại của các

câu cùng thỏa mãn, thì quá trình phân giải tập hỗ trợ sẽ hoàn tất.

Ví dụ: người ta có thể sử dụng truy vấn phủ định làm tập hợp hỗ trợ, với giả định rằng
Machine Translated by Google

356 Chương 9. Suy luận trong logic bậc nhất

cơ sở kiến thức ban đầu là nhất quán. (Xét cho cùng, nếu nó không nhất quán, thì thực tế là

truy vấn theo sau từ nó là trống.) Chiến lược tập hợp hỗ trợ có lợi thế bổ sung là

tạo cây bằng chứng hướng đến mục tiêu mà con người thường dễ hiểu.

GIẢI QUYẾT ĐẦU VÀO Độ phân giải đầu vào: Trong chiến lược này, mọi độ phân giải kết hợp một trong các câu đầu vào (từ

KB hoặc truy vấn) với một số câu khác. Bằng chứng trong Hình 9.11 trên trang 348 sử dụng

chỉ các độ phân giải đầu vào và có hình dạng đặc trưng của một “cột sống” duy nhất với các lớp sen đơn kết

hợp vào cột sống. Rõ ràng, không gian của cây bằng chứng có hình dạng này nhỏ hơn

hơn không gian của tất cả các đồ thị chứng minh. Trong cơ sở tri thức của Horn, Modus Ponens là một loại

chiến lược phân giải đầu vào, vì nó kết hợp hàm ý từ KB ban đầu với một số

các câu khác. Vì vậy, không có gì ngạc nhiên khi độ phân giải đầu vào là hoàn chỉnh cho các cơ sở kiến thức

GIẢI QUYẾT TUYẾN TÍNH ở dạng Horn, nhưng không đầy đủ trong trường hợp chung. Chiến lược phân giải tuyến tính là một

tổng quát hóa nhẹ cho phép P và Q được giải quyết cùng nhau nếu P ở nguyên

KB hoặc nếu P là tổ tiên của Q trong cây chứng minh. Độ phân giải tuyến tính đã hoàn tất.

BỔ SUNG Phép bổ sung: Phương pháp bổ sung loại bỏ tất cả các câu được cộng lại bởi (that

là, cụ thể hơn) một câu hiện có trong KB. Ví dụ: nếu P (x) nằm trong KB, thì

không có nghĩa gì khi thêm P (A) và càng không có nghĩa khi thêm P (A) Q (B). Tiêu thụ

giúp giữ cho KB nhỏ và do đó giúp giữ cho không gian tìm kiếm nhỏ.

Ứng dụng thực tế của các trình dò tìm định lý độ phân giải

TỔNG HỢP Các phép dò định lý có thể được áp dụng cho các vấn đề liên quan đến tổng hợp và xác minh
XÁC MINH của cả phần cứng và phần mềm. Do đó, nghiên cứu chứng minh định lý được thực hiện trong các lĩnh vực

thiết kế phần cứng, ngôn ngữ lập trình và kỹ thuật phần mềm — không chỉ trong AI.

Trong trường hợp phần cứng, các tiên đề mô tả sự tương tác giữa các tín hiệu và các phần tử cuit.

(Xem Phần 8.4.2 trên trang 309 để làm ví dụ.)

đặc biệt để xác minh đã có thể xác minh toàn bộ CPU, bao gồm cả lỗi hỗ trợ thời gian của chúng (Srivas và

Bickford, 1990). Định lý AURA đã được áp dụng vào thiết kế

mạch nhỏ gọn hơn bất kỳ thiết kế nào trước đây (Wojciechowski và Wojcik, 1983).

Trong trường hợp của phần mềm, lập luận về chương trình khá giống với lập luận về

các hành động, như trong Chương 7: các tiên đề mô tả các điều kiện tiên quyết và tác dụng của mỗi câu lệnh.

Sự tổng hợp chính thức của các thuật toán là một trong những cách sử dụng đầu tiên của các trình duyệt định lý, như đã trình bày

bởi Cordell Green (1969a), người đã xây dựng dựa trên những ý tưởng trước đó của Herbert Simon (1963). Ý tưởng

là chứng minh một cách xây dựng một định lý với kết quả rằng “tồn tại một chương trình p thỏa mãn a
KHOẢN TRÍCH THEO DÕI

TỔNG HỢP
đặc điểm kỹ thuật nhất định. ” Mặc dù tổng hợp suy diễn hoàn toàn tự động, như nó được gọi, vẫn chưa trở

nên khả thi đối với lập trình mục đích chung, tổng hợp suy diễn có hướng dẫn bằng tay đã

đã thành công trong việc thiết kế một số thuật toán mới và phức tạp. Tổng hợp các chương trình mục đích

đặc biệt, chẳng hạn như mã máy tính khoa học, cũng là một lĩnh vực nghiên cứu tích cực.

Các kỹ thuật tương tự hiện đang được áp dụng để xác minh phần mềm bởi các hệ thống như

Bộ kiểm tra mô hình SPIN (Holzmann, 1997). Ví dụ, điều khiển tàu vũ trụ Đặc vụ Từ xa
chương trình đã được xác minh trước và sau chuyến bay (Havelund và cộng sự, 2000). Khóa công khai RSA

thuật toán mã hóa và thuật toán so khớp chuỗi Boyer – Moore đã được xác minh điều này

cách (Boyer và Moore, 1984).


Machine Translated by Google

Mục 9.6. Tóm lược 357

9.6 TÓM TẮT

Chúng tôi đã trình bày một phân tích về suy luận logic trong logic bậc nhất và một số nhịp điệu thuật toán để

thực hiện nó.

• Cách tiếp cận đầu tiên sử dụng các quy tắc suy luận (tức thời phổ quát và định thời gian tồn tại) để định

đề cho bài toán suy luận. Thông thường, cách tiếp cận này chậm,
trừ khi miền nhỏ.

• Việc sử dụng hợp nhất để xác định các thay thế thích hợp cho các biến loại bỏ

bước khởi tạo trong các thử nghiệm bậc nhất, giúp quá trình này hiệu quả hơn trong nhiều trường hợp.

• Một phiên bản nâng cấp của Modus Ponens sử dụng sự hợp nhất để mang lại sự tự nhiên và mạnh mẽ

quy tắc suy luận, Modus Ponens tổng quát hóa. Các thuật toán chuỗi tiến và chuỗi lùi áp dụng quy tắc này

cho các tập hợp các mệnh đề xác định.

• Mô-đun tổng quát Ponens hoàn chỉnh cho các mệnh đề xác định, mặc dù yêu cầu

vấn đề là bán quyết định. Đối với cơ sở kiến thức Datalog bao gồm chức năng không có

mệnh đề xác định, mệnh đề có tính quyết định.

• Chuỗi chuyển tiếp được sử dụng trong cơ sở dữ liệu suy diễn, nơi nó có thể được kết hợp với các phép

toán cơ sở dữ liệu hệ thống lại. Nó cũng được sử dụng trong các hệ thống sản xuất, thực hiện

cập nhật hiệu quả với các bộ quy tắc rất lớn. Chuỗi chuyển tiếp đã hoàn tất cho Datalog

và chạy trong thời gian đa thức.

• Chuỗi ngược được sử dụng trong các hệ thống lập trình logic, hệ thống này sử dụng công nghệ trình biên

dịch giả thuyết sophisti để cung cấp suy luận rất nhanh. Chuỗi ngược bị ảnh hưởng

từ các suy luận dư thừa và các vòng lặp vô hạn; những điều này có thể được giảm bớt bằng cách ghi nhớ.

• Prolog, không giống như logic bậc nhất, sử dụng một thế giới khép kín với giả định các tên duy nhất

và phủ định là thất bại. Những điều này làm cho Prolog trở thành một ngôn ngữ lập trình thực tế hơn,

nhưng đưa nó đi xa hơn từ logic thuần túy.

• Quy tắc suy luận phân giải tổng quát cung cấp một hệ thống chứng minh hoàn chỉnh cho logic bậc nhất, sử

dụng cơ sở tri thức ở dạng chuẩn liên hợp.

• Một số chiến lược tồn tại để giảm không gian tìm kiếm của hệ thống phân giải mà không có

ảnh hưởng đến tính hoàn chỉnh. Một trong những vấn đề quan trọng nhất là giải quyết vấn đề bình đẳng;

chúng tôi đã chỉ ra cách sử dụng giải điều chế và điều chế.

• Các trình dò định lý dựa trên độ phân giải hiệu quả đã được sử dụng để chứng minh toán học thú vị

định lý matical và để xác minh và tổng hợp phần mềm và phần cứng.

LƯU Ý LỊCH SỬ VÀ ĐỒ THỊ SINH HỌC

Gottlob Frege, người đã phát triển logic bậc nhất đầy đủ vào năm 1879, dựa trên hệ thống suy luận của mình

trên một tập hợp các lược đồ hợp lệ cộng với một quy tắc suy luận duy nhất, Modus Ponens. Whitehead

và Russell (1910) đã giải thích cái gọi là quy tắc đi qua (thuật ngữ thực tế là từ thương hiệu của Her (1930))

được sử dụng để chuyển các định lượng lên trước công thức. Hằng số Skolem
Machine Translated by Google

358 Chương 9. Suy luận trong logic bậc nhất

và các hàm Skolem đã được Thoralf Skolem (1920) giới thiệu một cách thích hợp.

Thật kỳ lạ, chính Skolem là người đã giới thiệu vũ trụ Herbrand (Skolem, 1928).

Định lý Herbrand (Herbrand, 1930) đã đóng một vai trò quan trọng trong sự phát triển của

suy luận tự động. Herbrand cũng là người phát minh ra sự thống nhất. G¨odel (1930) được xây dựng trên

ý tưởng của Skolem và Herbrand để chỉ ra rằng logic bậc nhất có một phương pháp chứng minh hoàn

chỉnh. Alan Turing (1936) và Alonzo Church (1936) đồng thời cho thấy, sử dụng rất

các cách chứng minh khác nhau, tính hợp lệ đó trong logic bậc nhất không thể quyết định được. Văn bản xuất sắc của

Enderton (1972) giải thích tất cả những kết quả này một cách chặt chẽ nhưng dễ hiểu.

Abraham Robinson đề xuất rằng một trình lý luận tự động có thể được xây dựng bằng cách sử dụng

phân vị hóa mệnh đề và định lý Herbrand, và Paul Gilmore (1960) đã viết chương trình đầu tiên. Davis

và Putnam (1960) đã giới thiệu phương pháp mệnh đề của Phần 9.1. Prawitz (1960)

đã phát triển ý tưởng chính về việc cho phép truy tìm sự không nhất quán về mệnh đề thúc đẩy tìm kiếm,

và tạo ra các thuật ngữ từ vũ trụ Herbrand chỉ khi chúng cần thiết để thiết lập sự mâu thuẫn của mệnh

đề lish. Sau khi được các nhà nghiên cứu khác phát triển thêm, ý tưởng này đã dẫn

JA Robinson (không liên quan) để phát triển độ phân giải (Robinson, 1965).

Trong AI, độ phân giải đã được Cordell Green áp dụng cho các hệ thống trả lời câu hỏi và

Bertram Raphael (1968). Việc triển khai AI ban đầu đặt rất nhiều nỗ lực vào các chiến thuật cấu trúc

dữ liệu để cho phép truy xuất dữ liệu một cách hiệu quả; công việc này được đề cập trong lập trình AI

văn bản (Charniak và cộng sự, 1987; Norvig, 1992; Forbus và de Kleer, 1993). Vào đầu những năm 1970,

chuỗi chuyển tiếp đã được thiết lập tốt trong AI như một giải pháp thay thế dễ hiểu cho res olution.

Các ứng dụng AI thường liên quan đến số lượng lớn các quy tắc, vì vậy điều quan trọng là phải

phát triển công nghệ đối sánh quy tắc hiệu quả, đặc biệt là để cập nhật gia tăng. Khoa học công nghệ

cho các hệ thống sản xuất được phát triển để hỗ trợ các ứng dụng như vậy. Sản phẩm

ngôn ngữ hệ thống OPS-5 (Forgy, 1981; Brownston và cộng sự, 1985), tích hợp
RETE quy trình đối sánh rete (Forgy, 1982), được sử dụng cho các ứng dụng như hệ thống chuyên gia R1 cho

cấu hình máy tính mini (McDermott, 1982).

Kiến trúc nhận thức SOAR (Laird và cộng sự, 1987; Laird, 2008) được thiết kế để sử dụng các bộ

quy tắc rất lớn — lên đến một triệu quy tắc (Doorenbos, 1994). Các ứng dụng ví dụ của

SOAR bao gồm điều khiển máy bay chiến đấu mô phỏng (Jones et al., 1998), quản lý không
phận (Taylor et al., 2007), nhân vật AI cho trò chơi máy tính (Wintermute et al., 2007), và
dụng cụ huấn luyện cho binh lính (Wray và Jones, 2005).

Lĩnh vực cơ sở dữ liệu suy diễn bắt đầu với một hội thảo ở Toulouse vào năm 1977.

tập hợp các chuyên gia trong hệ thống cơ sở dữ liệu và suy luận logic (Gallaire và Minker,

1978). Tác phẩm có ảnh hưởng của Chandra và Harel (1980) và Ullman (1985) đã dẫn đến việc áp dụng

của Datalog làm ngôn ngữ tiêu chuẩn cho cơ sở dữ liệu suy diễn. Sự phát triển của các bộ ma thuật

kỹ thuật viết lại quy tắc của Bancilhon et al. (1986) cho phép chuỗi chuyển tiếp để vay

lợi thế của việc định hướng mục tiêu từ chuỗi lùi. Công việc hiện tại bao gồm ý tưởng

tích hợp nhiều cơ sở dữ liệu vào một không gian dữ liệu nhất quán (Halevy, 2007).

Chuỗi ngược để suy luận logic lần đầu tiên xuất hiện trong bài viết PLANNER lan guage của

Hewitt (1969). Trong khi đó, vào năm 1972, Alain Colmerauer đã phát triển và triển khai Nhật ký Pro

với mục đích phân tích cú pháp ngôn ngữ tự nhiên — Các mệnh đề của Prolog ban đầu được dự định

như các quy tắc ngữ pháp không theo ngữ cảnh (Roussel, 1975; Colmerauer và cộng sự, 1973). Phần lớn

kiến thức cơ bản về lập trình logic được phát triển bởi Robert Kowalski, đang làm việc
Machine Translated by Google

Ghi chú lịch sử và thư mục 359

với Colmerauer; xem Kowalski (1988) và Colmerauer và Roussel (1993) để biết tổng quan về lịch

sử. Các trình biên dịch Prolog hiệu quả thường dựa trên mô hình tính toán Warren Abstract Machine
(WAM) do David HD Warren (1983) phát triển. Van Roy (1990) đã chỉ ra rằng các chương trình
Prolog có thể cạnh tranh với các chương trình C về tốc độ.
Các phương pháp để tránh lặp lại không cần thiết trong các chương trình logic đệ quy được
phát triển độc lập bởi Smith et al. (1986) và Tamaki và Sato (1986). Bài báo thứ hai cũng bao
gồm ghi nhớ cho các chương trình logic, một phương pháp được phát triển rộng rãi như lập trình
logic theo bảng của David S. Warren. Swift và Warren (1994) chỉ ra cách mở rộng WAM để xử lý việc
đánh lừa, cho phép các chương trình Datalog thực hiện một thứ tự cường độ nhanh hơn so với các
hệ thống cơ sở dữ liệu suy diễn chuỗi chuyển tiếp.
Công việc ban đầu về lập trình logic ràng buộc được thực hiện bởi Jaffar và Lassez (1987).
Jaffar và cộng sự. (1992) đã phát triển hệ thống CLP (R) để xử lý các ràng buộc giá trị thực.
Hiện nay đã có các sản phẩm thương mại để giải quyết các vấn đề cấu hình và tối ưu hóa quy mô
lớn với lập trình ràng buộc; một trong những cái được biết đến nhiều nhất là ILOG (Junker,
2003). Lập trình bộ câu trả lời (Gelfond, 2008) mở rộng Prolog, cho phép tách rời và phủ định.
Nội dung về lập trình logic và Prolog, bao gồm Shoham (1994), Bratko (2001), Clocksin
(2003), và Clocksin và Mellish (2003). Trước năm 2000, Journal of Logic Pro gramming là tạp chí
kỷ lục; bây giờ nó đã được thay thế bằng Lý thuyết và Thực hành Lập trình Logic. Các hội nghị về
lập trình logic bao gồm Hội nghị quốc tế về lập trình logic (ICLP) và Hội nghị chuyên đề về lập
trình logic quốc tế (ILPS).
Nghiên cứu chứng minh định lý toán học đã bắt đầu ngay cả trước khi hệ thống bậc nhất hoàn
chỉnh đầu tiên được phát triển. Prover Định lý Hình học của Herbert Gelernter (Gelern ter, 1959)
đã sử dụng phương pháp tìm kiếm heuristic kết hợp với sơ đồ để loại bỏ các mục con sai và có thể
chứng minh một số kết quả khá phức tạp trong hình học Euclide. Wos et al. (1967) và Wos và
Robinson (1968), tương ứng. Các quy tắc này cũng được phát triển độc lập trong bối cảnh của các
hệ thống viết lại thuật ngữ (Knuth và Bendix, 1970). Việc kết hợp lý luận bình đẳng vào thuật
toán hợp nhất là do Gordon Plotkin (1972). Jouannaud và Kirchner (1991) khảo sát sự thống nhất
công bằng từ quan điểm viết lại thuật ngữ. Tổng quan về thống nhất được đưa ra bởi Baader và
Snyder (2001).

Một số chiến lược kiểm soát đã được đề xuất để giải quyết, bắt đầu với chiến lược ưu
tiên đơn vị (Wos và cộng sự, 1964). Chiến lược hỗ trợ được đề xuất bởi Wos et al. (1965) để
cung cấp mức độ định hướng mục tiêu trong việc giải quyết. Độ phân giải tuyến tính xuất hiện lần
đầu tiên ở Loveland (1970). Genesereth và Nilsson (1987, Chương 5) cung cấp một phân tích ngắn
gọn nhưng kỹ lưỡng về nhiều loại chiến lược kiểm soát.
Logic tính toán (Boyer và Moore, 1979) là tài liệu tham khảo cơ bản về định lý Boyer
Moore. Stickel (1992) đề cập đến Prolog Technology Theorem Prover (PTTP), kết hợp những ưu điểm
của việc biên dịch Prolog với sự hoàn chỉnh của mô hình elimi national. SETHEO (Letz và cộng sự,
1992) là một định lý định lý khác được sử dụng rộng rãi dựa trên phương pháp áp dụng này.
LEANTAP (Beckert và Posegga, 1995) là một định lý định lý hiệu quả được thực hiện chỉ trong 25
dòng của Prolog. Weidenbach (2001) mô tả SPASS, một trong những trình phát triển định lý mạnh
nhất hiện nay. Câu châm ngôn về định lý thành công nhất trong các cuộc thi hàng năm gần đây là
VAMPIRE (Riazanov và Voronkov, 2002). Hệ thống COQ (Bertot và cộng sự, 2004) và E
Machine Translated by Google

360 Chương 9. Suy luận trong logic bậc nhất

công cụ giải bằng (Schulz, 2004) cũng đã được chứng minh là công cụ có giá trị để chứng minh ness đúng.

Các phép dò định lý đã được sử dụng để tự động tổng hợp và xác minh phần mềm cho

điều khiển tàu vũ trụ (Denney et al., 2006), bao gồm cả viên nang Orion mới của NASA (Lowry,

2008). Thiết kế của bộ vi xử lý 32-bit FM9001 đã được NQTHM chứng minh là đúng

hệ thống (Hunt và Brock, 1992). Hội nghị về Khấu trừ Tự động (CADE) tổ chức

cuộc thi hàng năm dành cho các nhà khảo sát định lý tự động. Từ năm 2002 đến năm 2008, thành công nhất

hệ thống đã được VAMPIRE (Riazanov và Voronkov, 2002). Wiedijk (2003) so sánh

sức mạnh của 15 chuyên gia toán học. TPTP (Hàng nghìn vấn đề cho các trình duyệt định lý)

là một thư viện các bài toán chứng minh định lý, hữu ích để so sánh hiệu suất của các hệ thống

(Sutcliffe và Suttner, 1998; Sutcliffe và cộng sự, 2006).

Các nhà phát triển định lý đã đưa ra các kết quả toán học mới lạ khiến con người không thể

các nhà toán học trong nhiều thập kỷ, như được trình bày chi tiết trong cuốn sách Tự động lý luận và đĩa

đệm của các chứng minh thiếu thanh lịch (Wos và Pieper, 2003). Chương trình SAM (toán học bán tự động) là

chương trình đầu tiên chứng minh bổ đề trong lý thuyết mạng (Guard et al., 1969). Các

Chương trình AURA cũng đã trả lời các câu hỏi mở trong một số lĩnh vực toán học (Wos và
Winker, 1983). Định lý Boyer – Moore (Boyer và Moore, 1979) được sử dụng bởi

Natarajan Shankar đưa ra bằng chứng chính thức hoàn toàn nghiêm ngặt đầu tiên về sự không hoàn chỉnh của G¨odel

Định lý (Shankar, 1986). Hệ thống NUPRL đã chứng minh nghịch lý của Girard (Howe, 1987) và

Bổ đề Higman (Murthy và Russell, 1990). Năm 1933, Herbert Robbins đề xuất một
ĐẠI SỐ ROBBINS tập hợp các tiên đề — đại số Robbins — dường như để định nghĩa đại số Boolean, nhưng không có bằng chứng

có thể được tìm thấy (mặc dù công việc nghiêm túc của Alfred Tarski và những người khác). Vào ngày 10 tháng 10 năm 1996,

sau tám ngày tính toán, EQP (một phiên bản của OTTER) đã tìm ra một bằng chứng (McCune, 1997).

Nhiều bài báo ban đầu về logic toán học được tìm thấy trong From Frege to Godel: ¨

Một cuốn sách nguồn trong lôgic toán học (van Heijenoort, 1967). Sách giáo khoa hướng tới

suy luận tự động bao gồm Định lý Biểu tượng và Định lý Cơ học cổ điển Prov ing (Chang và Lee, 1973), cũng

như các công trình gần đây hơn của Duffy (1991), Wos et al. (1992),

Bibel (1993), và Kaufmann et al. (2000). Tạp chí chính để chứng minh định lý là

Tạp chí Lý luận Tự động; các hội nghị chính là Hội nghị thường niên về Khấu trừ tự động (CADE) và Hội

nghị chung quốc tế về lý luận tự động

(IJCAR). Sổ tay lý luận tự động (Robinson và Voronkov, 2001) sưu tầm

giấy tờ tại hiện trường. Bằng chứng cơ học của MacKenzie (2004) bao gồm lịch sử và công nghệ

của định lý chứng minh cho khán giả phổ biến.

BÀI TẬP

9.1 Chứng minh rằng Thuyết minh phổ quát là đúng đắn và Thuyết minh hiện sinh tạo ra

một cơ sở kiến thức tương đương theo cấp số nhân.

9.2 Từ Lượt thích (Jerry, IceCream), có vẻ hợp lý để suy ra x Lượt thích (x, IceCream).
HIỆN TẠI
GIỚI THIỆU
Viết ra một quy tắc suy luận chung, Giới thiệu Hiện sinh, trừng phạt suy luận này.

Nêu cẩn thận các điều kiện phải được thỏa mãn bởi các biến và điều khoản liên quan.
Machine Translated by Google

Bài tập 361

9.3 Giả sử một cơ sở tri thức chỉ chứa một câu, x AsHighAs (x, Everest).

Điều nào sau đây là kết quả hợp pháp của việc áp dụng Lập tức hiện sinh?

Một. AsHighAs (Everest, Everest). b.

AsHighAs (Kilimanjaro, Everest). C. AsHighAs

(Kilimanjaro, Everest) AsHighAs (BenNevis, Everest)

(sau hai lần nộp đơn).

9.4 Đối với mỗi cặp câu nguyên tử, hãy đưa ra giá trị thống nhất chung nhất nếu nó tồn tại:

Một. P (A, B, B), P (x, y, z).

b. Q (y, G (A, B)), Q (G (x, x), y).

C. Cũ hơn (Father (y), y), Older (Father (x), John). d.

Biết (Cha (y), y), Biết (x, x).

9.5 Hãy xem xét các mạng phụ được thể hiện trong Hình 9.2 (trang 329).

Một. Xây dựng mạng tinh thể cho câu Employs (Mẹ (John), Cha (Richard)). b. Xây dựng mạng tinh thể

cho câu Employs (IBM, y) (“Mọi người đều làm việc cho IBM”).

Hãy nhớ bao gồm mọi loại truy vấn thống nhất với câu.

C. Giả sử rằng CỬA HÀNG lập chỉ mục từng câu dưới mọi nút trong mạng phụ của nó.

Giải thích cách FETCH sẽ hoạt động khi một số câu này chứa các biến; sử dụng làm ví dụ cho các câu

trong (a) và (b) và truy vấn Employs (x, Father (x)).

9.6 Viết ra các biểu diễn lôgic cho các câu sau, thích hợp để sử dụng với Ponens Modus Tổng quát:

Một. Ngựa, bò và lợn là động vật có vú. b.

Con của một con ngựa là một con ngựa.

C. Râu xanh là một con ngựa.

d. Bluebeard là cha mẹ của Charlie.

e. Con cái và cha mẹ là quan hệ nghịch đảo. f. Mọi

động vật có vú đều có cha mẹ.

9.7 Những câu hỏi này liên quan đến các vấn đề liên quan đến thay thế và Skolemization.

Một. Với tiền đề x y P (x, y), không hợp lệ để kết luận rằng q P (q, q). Cho một ví dụ về một

vị từ P trong đó vị ngữ thứ nhất đúng nhưng vị ngữ thứ hai là sai. b. Giả sử rằng một công cụ suy

luận được viết sai với kiểm tra xảy ra bị bỏ qua, để nó cho phép một ký tự như P (x, F (x)) được

thống nhất với P (q, q). (Như đã đề cập, hầu hết các triển khai chuẩn của Prolog thực sự cho phép

điều này.) Chứng tỏ rằng một công cụ suy luận như vậy sẽ cho phép kết luận y P (q, q) được suy

ra từ tiền đề x y P (x, y).


Machine Translated by Google

362 Chương 9. Suy luận trong logic bậc nhất

C. Giả sử rằng một thủ tục chuyển đổi logic bậc nhất sang dạng mệnh đề không chính xác Skolemizes x

y P (x, y) thành P (x, Sk0) — nghĩa là, nó thay thế y bằng một câu lệnh Skolem chứ không phải bằng

một hàm Skolem của x. Chứng tỏ rằng một công cụ suy luận sử dụng quy trình như vậy cũng sẽ cho phép

suy ra q P (q, q) từ tiền đề x y P (x, y).

d. Một lỗi phổ biến giữa các sinh viên là giả sử rằng, trong sự hợp nhất, người ta được phép thay thế

một thuật ngữ cho một hằng số Skolem thay vì một biến. Ví dụ: họ sẽ nói rằng các công thức P (Sk1)

và P (A) có thể được thống nhất dưới sự thay thế {Sk1 / A}.

Đưa ra một ví dụ trong đó điều này dẫn đến một suy luận không hợp lệ.

9.8 Giải thích cách viết bất kỳ bài toán 3 SAT nào với kích thước tùy ý bằng cách sử dụng một mệnh đề xác

định bậc nhất duy nhất và không quá 30 dữ kiện cơ bản.

9.9 Giả sử bạn được đưa ra các tiên đề sau:

1. 0 ≤ 3.

2. 7 ≤ 9.

3. xx ≤ x. 4.

xx ≤ x + 0. 5. xx

+ 0 ≤ x. 6. x, yx +

y ≤ y + x. 7. w, x, y, zw ≤

y x ≤ z w + x ≤ y + z. 8. x, y, zx ≤ y y ≤ z x ≤

Một. Đưa ra bằng chứng xâu chuỗi ngược về câu 7 ≤ 3 + 9. (Tất nhiên, hãy chắc chắn rằng chỉ sử dụng

các tiên đề được đưa ra ở đây, chứ không phải bất kỳ điều gì khác mà bạn có thể biết về số học.)

Chỉ hiển thị các bước dẫn đến thành công, không các bước không liên quan.

b. Đưa ra bằng chứng về chuỗi chuyển tiếp của câu 7 ≤ 3 + 9. Một lần nữa, chỉ trình bày các bước dẫn
đến thành công.

9.10 Một câu đố trẻ em phổ biến là "Anh chị em không có tôi, nhưng cha của người đàn ông đó là con của cha

tôi." Sử dụng các quy tắc của miền gia đình (Phần 8.3.2 trên trang 301) để cho biết người đàn ông đó là

ai. Bạn có thể áp dụng bất kỳ phương pháp suy luận nào được mô tả trong chương này. Bạn nghĩ tại sao câu

đố này khó?

9.11 Giả sử chúng ta đưa vào cơ sở kiến thức logic một phân đoạn của danh sách dữ liệu điều tra dân số

Hoa Kỳ bao gồm tuổi, thành phố cư trú, ngày sinh và mẹ của mỗi người, sử dụng các số đặc trưng xã hội

làm hằng số xác định cho mỗi người. Do đó, tuổi của George được cho bởi Age (443-65-1282, 56). Lược đồ

lập chỉ mục nào sau đây S1 – S5 cho phép giải pháp hiệu quả cho truy vấn nào trong số các truy vấn Q1 – Q4

(giả sử chuỗi ngược bình thường)?

• S1: chỉ số cho từng nguyên tử ở mỗi vị trí. • S2:

chỉ số cho mỗi đối số đầu tiên. • S3: chỉ số cho mỗi

nguyên tử vị từ. • S4: chỉ số cho mỗi sự kết hợp của

vị từ và đối số đầu tiên.


Machine Translated by Google

Bài tập 363

• S5: chỉ mục cho mỗi sự kết hợp của vị từ và đối số thứ hai và chỉ số cho mỗi đối số đầu tiên.

• Q1: Tuổi (443-44-4321, x) •

Q2: ResidesIn (x, Houston) • Q3:

Mẹ (x, y) • Q4: Age (x, 34)

ResidesIn (x, TinyTownUSA)

9.12 Người ta có thể cho rằng chúng ta có thể tránh được vấn đề xung đột biến đổi trong việc thống nhất

trong quá trình xâu chuỗi ngược bằng cách chuẩn hóa tất cả các câu trong cơ sở tri thức một lần và mãi

mãi. Chứng tỏ rằng, đối với một số câu, cách tiếp cận này không thể hoạt động. (Gợi ý: Hãy xem xét một

câu trong đó một bộ phận thống nhất với một bộ phận khác.)

9.13 Trong bài tập này, sử dụng các câu bạn đã viết trong Bài tập 9.6 để trả lời một câu hỏi bằng cách

sử dụng thuật toán xâu chuỗi ngược.

Một. Vẽ cây bằng chứng được tạo bởi một thuật toán chuỗi lùi đầy đủ cho

truy vấn h Horse (h), trong đó các mệnh đề được so khớp theo thứ tự đã

cho. b. Bạn nhận thấy gì về miền này? C. Có bao nhiêu giải pháp cho h thực sự

theo sau từ các câu của bạn? d. Bạn có thể nghĩ ra cách để tìm tất cả chúng

không? (Gợi ý: Xem Smith và cộng sự (1986).)

9.14 Theo dõi việc thực thi thuật toán chuỗi ngược trong Hình 9.6 (trang 338) khi nó được áp dụng để

giải quyết vấn đề tội phạm (trang 330). Hiển thị chuỗi các giá trị được sử dụng bởi biến mục tiêu và

sắp xếp chúng thành một cây.

9.15 Đoạn mã Prolog sau đây xác định một vị từ P. (Hãy nhớ rằng các thuật ngữ viết hoa là biến, không

phải hằng, trong Prolog.)

P (X, [X | Y]).

P (X, [Y | Z]): - P (X, Z).

Một. Hiển thị cây bằng chứng và giải pháp cho các truy vấn P (A, [2,1,3]) và P (2, [1, A, 3]). b. P

đại diện cho hoạt động danh sách tiêu chuẩn nào?

9.16 Bài tập này xem xét việc sắp xếp trong Prolog.

Một. Viết các mệnh đề Prolog xác định vị từ được sắp xếp (L), điều này đúng nếu và chỉ khi

danh sách L được sắp xếp theo thứ tự tăng dần.

b. Viết định nghĩa Prolog cho hoán vị vị từ (L, M), đúng khi và chỉ khi L

là một hoán vị của M. c.

Xác định sắp xếp (L, M) (M là phiên bản đã sắp xếp của L) bằng cách sử dụng hoán vị và sắp xếp.

d. Chạy sắp xếp trên các danh sách dài hơn và dài hơn cho đến khi bạn mất kiên nhẫn. Thời gian phức tạp của

chương trình của bạn là gì?

e. Viết thuật toán sắp xếp nhanh hơn, chẳng hạn như sắp xếp chèn hoặc sắp xếp nhanh, trong Prolog.
Machine Translated by Google

364 Chương 9. Suy luận trong logic bậc nhất

9.17 Bài tập này xem xét ứng dụng đệ quy của các quy tắc viết lại, sử dụng phép lập trình logic. Quy

tắc viết lại (hoặc trình giải điều chế trong thuật ngữ OTTER ) là một phương trình có hướng xác định.

Ví dụ, quy tắc viết lại x + 0 x gợi ý thay bất kỳ biểu thức nào phù hợp với x + 0 bằng biểu thức x.

Quy tắc viết lại là một thành phần quan trọng của hệ thống lập luận công bằng. Sử dụng cách viết lại

vị từ (X, Y) để thể hiện các quy tắc viết lại. Ví dụ: quy tắc viết lại trước đó được viết là viết lại

(X + 0, X). Một số thuật ngữ là nguyên thủy và không thể đơn giản hóa hơn nữa; do đó, chúng ta viết

nguyên thủy (0) để nói rằng 0 là một số hạng nguyên thủy.

Một. Viết định nghĩa của một vị từ đơn giản hóa (X, Y), điều này đúng khi Y là phiên bản đơn giản

hóa của X — nghĩa là khi không có quy tắc viết lại nào áp dụng cho bất kỳ biểu thức con nào của

Y. b. Viết một bộ sưu tập các quy tắc để đơn giản hóa các biểu thức liên quan đến toán tử số học

và áp dụng thuật toán đơn giản hóa của bạn cho một số biểu thức mẫu. C. Viết một bộ sưu tập các

quy tắc viết lại để phân biệt biểu tượng và sử dụng chúng cùng với các quy tắc đơn giản hóa của

bạn để phân biệt và đơn giản hóa các biểu thức liên quan đến biểu thức số học, bao gồm cả lũy

thừa.

9.18 Bài tập này xem xét việc triển khai các thuật toán tìm kiếm trong Prolog. Giả sử rằng sự kế thừa

(X, Y) là đúng khi trạng thái Y là một kế thừa của trạng thái X; và mục tiêu (X) đó đúng khi X là

trạng thái mục tiêu. Viết định nghĩa cho giải (X, P), có nghĩa là P là một đường dẫn (danh sách các

trạng thái) bắt đầu bằng X, kết thúc ở trạng thái mục tiêu và bao gồm một chuỗi các bước hợp pháp như

được xác định bởi người kế nhiệm. Bạn sẽ thấy rằng tìm kiếm theo chiều sâu là cách dễ nhất để làm

điều này. Việc thêm điều khiển tìm kiếm theo kinh nghiệm sẽ dễ dàng như thế nào?

9.19 Giả sử một cơ sở tri thức chỉ chứa các mệnh đề Horn bậc nhất sau:

Tổ tiên (Mẹ (x), x)

Tổ tiên (x, y) Tổ tiên (y, z) Tổ tiên (x, z)

Hãy xem xét một thuật toán chuỗi chuyển tiếp, ở lần lặp thứ j, kết thúc nếu KB chứa một câu thống nhất

với truy vấn, một thuật toán khác sẽ thêm vào KB mọi câu nguyên tử có thể được suy ra từ các câu đã

có trong KB sau lần lặp j - 1.

Một. Đối với mỗi truy vấn sau đây, hãy cho biết liệu thuật toán có (1) đưa ra câu trả lời hay không (nếu có,

hãy viết ra câu trả lời đó); hoặc (2) chấm dứt mà không có câu trả lời; hoặc (3) không bao giờ chấm dứt.

(i) Tổ tiên (Mẹ (y), John) (ii) Tổ

tiên (Mẹ (Mẹ (y)), John) (iii) Tổ tiên (Mẹ (Mẹ (Mẹ

(y))), Mẹ (y)) (iv ) Tổ tiên (Mẹ (John), Mẹ (Mẹ (John)))

b. Liệu một thuật toán phân giải có thể chứng minh câu ¬Ancestor (John, John) từ orig
cơ sở kiến thức inal? Giải thích cách làm hoặc tại sao không.

C. Giả sử chúng ta thêm khẳng định rằng ¬ (Mẹ (x) = x) và tăng độ phân giải al gorithm với các quy

tắc suy luận về đẳng thức. Bây giờ câu trả lời cho (b) là gì?

9.20 Gọi L là ngôn ngữ bậc nhất có một vị từ S (p, q), nghĩa là “p cạo q.”

Giả sử một miền của mọi người.


Machine Translated by Google

Bài tập 365

Một. Hãy xem xét câu “Có một người P cạo râu cho mỗi người không cạo râu và chỉ những người không tự

cạo râu.” Diễn đạt điều này trong L.

b. Chuyển câu ở (a) sang dạng mệnh đề. C. Xây dựng

một bằng chứng phân giải để chỉ ra rằng các mệnh đề trong (b) vốn không nhất quán.

(Lưu ý: bạn không cần thêm bất kỳ tiên đề nào.)

9.21 Độ phân giải có thể được sử dụng như thế nào để chứng tỏ rằng một câu là hợp lệ? Không hài lòng?

9.22 Xây dựng một ví dụ về hai mệnh đề có thể được giải quyết cùng nhau theo hai cách khác nhau cho hai kết

quả khác nhau.

9.23 Từ "Ngựa là động vật", nó có nghĩa là "Đầu của một con ngựa là đầu của một con vật." Chứng minh rằng

suy luận này là hợp lệ bằng cách thực hiện các bước sau:

Một. Dịch tiền đề và kết luận sang ngôn ngữ của logic bậc nhất. Sử dụng ba vị từ: HeadOf (h, x) (nghĩa là

“h là đầu của x”), Horse (x) và Animal (x). b. Phủ nhận kết luận và chuyển tiền đề và kết luận phủ

định thành câu kết luận

dạng thông thường

junctive. C. Sử dụng độ phân giải để chỉ ra rằng kết luận tiếp theo từ tiền đề.

9.24 Đây là hai câu trong ngôn ngữ logic bậc nhất:

(A) x y (x ≥ y)

(B) y x (x ≥ y)

Một. Giả sử rằng các biến trên khoảng trên tất cả các số tự nhiên 0, 1, 2,. . . , ∞ và rằng

Vị từ “≥” có nghĩa là “lớn hơn hoặc bằng”. Theo cách hiểu này, hãy dịch (A) và (B) sang tiếng Anh. b.

(A) có đúng theo cách hiểu này không? C. (B) có đúng theo cách hiểu này không? d. (A) có liên quan

đến (B) một cách hợp lý không? e. (B) có liên quan đến (A) một cách hợp lý không? f. Sử dụng độ phân giải,

cố gắng chứng minh rằng (A) tiếp sau (B). Làm điều này ngay cả khi bạn nghĩ rằng (B) không liên quan đến

(A) một cách hợp lý; tiếp tục cho đến khi bằng chứng bị hỏng và bạn không thể tiếp tục (nếu nó bị hỏng).

Hiển thị sự thay thế thống nhất cho mỗi bước giải quyết.

Nếu bằng chứng không thành công, hãy giải thích chính xác vị trí, cách thức và tại sao nó bị hỏng.

g. Bây giờ hãy cố gắng chứng minh rằng (B) theo sau từ (A).

9.25 Độ phân giải có thể tạo ra các bằng chứng phi cấu trúc cho các truy vấn có biến, vì vậy chúng tôi đã

phải giới thiệu các cơ chế đặc biệt để trích xuất các câu trả lời xác định. Giải thích tại sao vấn đề này

không nảy sinh với cơ sở tri thức chỉ chứa các mệnh đề xác định.

9.26 Chúng tôi đã nói trong chương này rằng độ phân giải không thể được sử dụng để tạo ra tất cả các hàm

lôgic của một tập hợp các câu. Bất kỳ thuật toán có thể làm điều này?

You might also like