Ưu tiêntrong lập trình logic thường được thể hiện ở chương trình logic phân tầng, các ưutiên trong các chương trình phân tầng được xác định bởi cú pháp của một chươngtrình, và ứng dụng c
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
ĐẠI HỌC HUẾ
TRƯỜNG ĐẠI HỌC KHOA HỌC
NGUYỄN THỊ HUYÊN
TÌM HIỂU CHƯƠNG TRÌNH
LOGIC ƯU TIÊN VÀ ỨNG DỤNG
ĐỐI VỚI VIỆC LẬP LUẬN
CHUYÊN NGÀNH: KHOA HỌC MÁY TÍNH
MÃ SỐ: 60.48.01.01
LUẬN VĂN THẠC SĨ KHOA HỌC
ĐỊNH HƯỚNG NGHIÊN CỨU
NGƯỜI HƯỚNG DẪN KHOA HỌC
PGS.TS TRƯƠNG CÔNG TUẤN
Trang 2Thừa Thiên Huế, 2018
Trang 3LỜI CAM ĐOAN
Tôi xin cam đoan luận văn này là công trình nghiên cứu của
cá nhân tôi Tất cả số liệu, kết quả nghiên cứu trong luận văn làtrung thực, chưa được người khác công bố trong bất cứ một côngtrình nghiên cứu nào
Học viên
Nguyễn Thị Huyên
Trang 4LỜI CẢM ƠN
Trước tiên tôi xin gửi lời cảm ơn đặc biệt tới PGS.TS TrươngCông Tuấn, người đã định hướng đề tài và tận tình hướng dẫn, chỉ bảo,động viên tôi trong suốt quá trình thực hiện luận văn thạc sỹ
Tôi xin chân thành biết ơn tất cả thầy, cô trong khoa của trườngĐại học khoa học – Đại học Huế đã truyền đạt cho tôi những kiến thứcquý báu về các vấn đề hiện đại của lập trình logic và ngành khoa họcmáy tính
Bản luận văn này được hoàn thành với sự động viên của thầyhướng dẫn và của các bạn lớp Cao học Khoa học Máy tính năm 2016 –
2018 Tôi xin bày tỏ lòng cảm ơn chân thành đến thầy và các bạn đãdành nhiều thời gian của mình để trao đổi giúp đỡ tôi khi tôi gặp khókhăn trong suốt thời gian thực hiện luận văn này
Học viên Nguyễn Thị Huyên
Trang 5MỤC LỤC
LỜI CAM ĐOAN
LỜI CẢM ƠN
MỤC LỤC
DANH MỤC CÁC HÌNH
DANH MỤC CÁC CHỮ VIẾT TẮT
Trang 6DANH MỤC CÁC HÌNH
Trang 7DANH MỤC CÁC CHỮ VIẾT TẮT
AI Trí tuệ nhân tạo (Artificial Intelligence)
ALP Chương trình logic phỏng đoán (Abductive Logic Program)
FOL Ngôn ngữ bậc nhất (First Ordered Language)
PLP Chương trình logic ưu tiên (Prioritized Logic Program)
PDLP Chương trình logic ưu tiên dạng tuyển (Prioritized Disjunctive Logic Program)SLD Phép hợp giải
Trang 8đã phát sinh một số vấn đề trong việc biểu diễn tri thức và lập luận bằng các chươngtrình logic đối với các bài toán phức tạp trong thực tế Đã có nhiều nghiên cứunhằm mở rộng chương trình logic bằng cách bổ sung các dạng phủ định cổ điển,phủ định mặc định, các phép ưu tiên hay phép tuyển
Lập luận với các ưu tiên là một vấn đề đang được quan tâm trong biểu diễntri thức Nhiều kỹ thuật lập luận ưu tiên đã được phát triển trong lĩnh vực trí tuệnhân tạo (AI) Trong AI một số hệ thống lập luận ưu tiên đã được phát triển nhưphân loại theo thứ tự ưu tiên hoặc lập luận ưu tiên mặc định Tuy nhiên lập trìnhlogic thiếu cơ chế rõ ràng để biểu diễn các tính ưu tiên trong chương trình Ưu tiêntrong lập trình logic thường được thể hiện ở chương trình logic phân tầng, các ưutiên trong các chương trình phân tầng được xác định bởi cú pháp của một chươngtrình, và ứng dụng của chúng chỉ giới hạn trong các chương trình có cấu trúc phântầng đơn
Trong những năm gần đây, việc nghiên cứu về chương trình ưu tiên đã đượcnhiều người quan tâm và đã có nhiều công trình nghiên cứu có giá trị Có hai tiếpcận được đề xuất trong thời gian gần đây, trong [9], [10] các tác giả đã nghiên cứutính chất ưu tiên giữa các quy tắc trong chương trình và đã đưa ra nhiều tính chấtquan trọng Mặt khác, trong [2], [7], [8] các tác giả nghiên cứu tính ưu tiên giữa các
vị từ trong chương trình Chương trình logic ưu tiên biểu diễn tri thức tự nhiên hơncác chương trình phân tầng và có thể áp dụng trong nhiều dạng lập luận khác nhaunhư lập luận phỏng đoán, lập luận mặc định,… Việc áp dụng chương trình logic ưutiên đối với vấn đề lập luận cũng đã được nghiên cứu trong [3], [4], [6], [7]
Trang 9Luận văn nghiên cứu về “Tìm hiểu chương trình logic ưu tiên và ứng dụng đốivới việc lập luận” Những nội dung nghiên cứu của luận văn có ý nghĩa về mặt lýthuyết cũng như ứng dụng trong thực tiễn, giải quyết một số bài toán thuộc các lĩnhvực khác nhau trong thực tế.
Cấu trúc luận văn bao gồm phần mở đầu, ba chương nội dung, phần kết luận
và tài liệu tham khảo
Chương 1 trình bày các khái niệm cơ sở, cú pháp, các cách tiếp cận ngữ nghĩacủa chương trình logic Đây là kiến thức cơ sở làm tiền đề để nghiên cứu cácchương tiếp theo
Chương 2 tìm hiểu về chương trình logic ưu tiên - là sự mở rộng của chươngtrình logic bằng cách thêm vào các ưu tiên Các ưu tiên được thêm vào gồm haidạng đó là ưu tiên giữa các quy tắc và ưu tiên giữa các vị từ
Chương 3 trình bày việc áp dụng chương trình logic ưu tiên để lập luận trongchương trình logic phỏng đoán; đồng thời thực hiện cài đặt và thực thi một số bàitoán minh họa các chương trình logic ưu tiên bằng hệ thống DLV và phần mềmECLIPSE
Phần kết luận trình bày những kết quả đã đạt được và hướng phát triển củaluận văn
Trang 10Chương 1 TỔNG QUAN VỀ CHƯƠNG TRÌNH LOGIC
Chương 1 trình bày các khái niệm cơ sở của chương trình logic Hai lớpchương trình logic được xem xét là chương trình logic xác định và chương trìnhlogic thông thường Ngữ nghĩa của các lớp chương trình này cùng với mối quan hệcủa chúng được trình bày chi tiết Đây là những kiến thức cơ sở, làm tiền đề choviệc nghiên cứu ở các chương tiếp theo
1.1 MỘT SỐ KHÁI NIỆM CƠ SỞ
Chương trình logic có nền tảng là ngôn ngữ bậc nhất (FOL), trong phần nàychỉ nêu một số khái niệm cơ sở của FOL
Định nghĩa 1.1 (Bộ ký tự) Bộ ký tự bao gồm các lớp ký hiệu sau:
1 Hằng, thường ký hiệu là các chữ cái thường a, b, c,
2 Biến, thường ký hiệu bởi các chữ cái in hoa X, Y, Z,
3 Các ký hiệu hàm, thường ký hiệu bởi f, g, h,
4 Các ký hiệu vị từ, thường ký hiệu bởi p, q, r,
5 Các hằng vị từ: true, false.
6 Các ký hiệu kết nối ¬(phủ định), ∨(tuyển), ∧(hội), ←(suy ra)
7 Các ký hiệu lượng từ: ∀(với mọi), ∃(tồn tại)
8 Dấu ngoặc đơn trái (, dấu ngoặc đơn phải ), dấu phẩy,
Mỗi ký hiệu hàm, ký hiệu vị từ có kèm theo một số tự nhiên xác định để chỉ
số các đối số tham gia cùng với ký hiệu hàm hoặc ký hiệu vị từ đó, gọi là ngôicủa chúng
Trên cơ sở bộ ký tự đã cho, người ta đưa ra định nghĩa về hạng thức Hạngthức là yếu tố quan trọng của công thức logic, được xây dựng từ các hằng, biến,hàm và được định nghĩa hình thức như sau:
Định nghĩa 1.2 (Hạng thức) Gọi A là bộ ký tự Hạng thức được định nghĩa đệ
quy như sau:
(i) Mỗi hằng trong A là một hạng thức,
(ii) Mỗi biến trong A là một hạng thức,
Trang 11(iii) Nếu f là ký hiệu hàm n-ngôi trong A và t1, ,t n là các hạng thức thì
f(t1 , ,tn) là một hạng thức,
(iv) Hạng thức chỉ được sinh ra bởi các mệnh đề trên
Một hằng được xem là ký hiệu hàm 0-ngôi Hằng và biến là các hạng thức
nguyên tố, hạng thức nền là hạng thức không chứa biến
Định nghĩa 1.3 (Nguyên tố) Một nguyên tố có dạng p(t1,…,t n ), trong đó p là ký hiệu vị từ n-ngôi và các đối t1, ,tn là các hạng thức Nguyên tố nền là nguyên tố
không chứa biến
Ví dụ 1.1 Để chỉ mối quan hệ cha/con ta có thể định nghĩa nguyên tố father(X,Y),
trong đó vị từ father là vị từ 2-ngôi và father(X,Y) để chỉ X là cha của Y
Định nghĩa 1.4 (Literal) Literal là một nguyên tố, gọi là literal dương và literal
âm là phủ định của nguyên tố
Trong phần tiếp theo sẽ trình bày cú pháp và ngữ nghĩa của chương trìnhlogic xác định – đây là lớp chương trình logic đơn giản nhất
trong đó n, m ≥ 0, a và b i , c j là các nguyên tố Trong mệnh đề (1), nếu m = n = 0 thì
nó được gọi là mệnh đề đơn vị, nghĩa là mệnh đề có dạng: a ←, đó là mệnh đề vớithân rỗng, ký hiệu ← có thể không viết
Trang 12Chú ý rằng thân mệnh đề chứa các lietral phủ định not c1,…,not c n Literal not
a sẽ được xem là sai nếu giá trị chân lý của a không được chứng minh một cách hữu
hạn thông qua phép hợp giải SLD Vì vậy phủ định not còn được gọi là phủ định do
thất bại hoặc phủ định mặc định Để ý rằng phép phủ định trong logic cổ điển, còn
gọi là phủ định mạnh, ký hiệu là ¬
Định nghĩa 1.6 (Vũ trụ/Cơ sở) Cho P là chương trình logic xác định.
• Vũ trụ Herbrand của P, ký hiệu U P, là tập các hạng thức nền được xây dựng
từ các hằng và các ký hiệu hàm trong P.
từ các vị từ trong P có đối là các hạng thức nền trong vũ trụ Herbrand U P
Định nghĩa 1.7 (Thể hiện/Mô hình) Cho P là chương trình logic xác định.
Một thể hiện Herbrand (hoặc đơn giản là thể hiện) của P là một tập con tùy ý của
cơ sở Herbrand B P của P.
Một thể hiện I của P là mô hình của P nếu mọi mệnh đề của P là đúng theo thể hiện I.
nghĩa nếu X là số tự nhiên thì ketiep(X) cũng là số tự nhiên.
Vũ trụ Herbrand của P là:
U P = {0, ketiep(0), ketiep(ketiep(0)), ketiep(ketiep(ketiep(0))), }
Cơ sở Herbrand của P là:
B P = {sotunhien(0), sotunhien(ketiep(0)), sotunhien(ketiep(ketiep(0))), }
Trang 13I1 = {sotunhien(0)}
I2 = {sotunhien(0), sotunhien(ketiep(0))}
I3 = {sotunhien(ketiep n (0)) | n ∈ {0, 1, 2,…}}
I4 = B P
Rõ ràng I1 không phải là mô hình của P vì mặc dầu I1 là mô hình của mệnh đề
nền sotunhien(ketiep(0)) ← sotunhien(0) của r2 mà I1 không phải là mô hình của
mệnh đề nền này Cũng vậy, I2 cũng không phải là mô hình của P vì mệnh đề tồn
tại mệnh đề nền:
sotunhien(ketiep(ketiep(0))) ← sotunhien(ketiep(0))
của r2 mà I2 không phải là mô hình của nó.Tuy nhiên, I3 là mô hình của P Ta có I3 là
mô hình của r1 I3 cũng là mô hình của r2 Thật vậy, xét mệnh đề:
sotunhien(ketiep(t)) ← sotunhien(t)
là một mệnh đề nền nào đó của mệnh đề r2, trong đó t∈U P Rõ ràng mệnh đề
sotunhien(ketiep(t)) ← sotunhien(t) đúng vì sotunhien(t) và sotunhien(ketiep(t)) đều thuộc I3 Vậy I3 là mô hình của P Ta cũng có ngay I4 là mô hình của P.
Định nghĩa 1.8 (Mệnh đề nền) Một mệnh đề nền của mệnh đề C là một mệnh đề C’
nhận được từ C bằng cách thay thế các biến trong C bởi các hạng thức nền trong vũ trụ Herbrand U P Ký hiệu ground(C) là tập tất cả mệnh đề nền của C và đặt:ground(P) =
Định nghĩa 1.9 (Mô hình cực tiểu/nhỏ nhất) Cho P là chương trình logic.
1 Thể hiện M của P là mô hình cực tiểu của P nếu không tồn tại tập con thực
sự N của M mà N là mô hình của P.
2 Thể hiện M của P là mô hình nhỏ nhất của P nếu M ⊆ N, với mọi mô hình
N của P.
Trang 141.2.2 Ngữ nghĩa
Đối với chương trình logic không chứa phủ định trong thân các mệnh đề thì nóluôn có duy nhất một mô hình cực tiểu và cũng chính là mô hình nhỏ nhất Tuy
nhiên, khi các mệnh đề của chương trình có chứa phủ định not ở thân thì chương
trình có thể có nhiều mô hình cực tiểu và không có mô hình nhỏ nhất Chẳng hạn,xem ví dụ sau:
Ví dụ 1.3 Xem chương trình logic P gồm các mệnh đề sau:
man(dung) single(X) ← man(X), not husband(X)
husband(X) ← man(X), not single(X)
Dễ dàng kiểm tra P có hai mô hình cực tiểu:
Trước hết chúng ta xem tiếp cận theo ngữ nghĩa mô hình hoàn hảo của chương
trình logic phân tầng.
1.2.2.1 Ngữ nghĩa mô hình hoàn hảo
Phần này xem xét một lớp con hạn chế của chương trình logic thông thường,gọi là chương trình logic phân tầng Trước hết ta cần đến khái niệm đồ thị phụ thuộccủa một chương trình logic thông thường
Trang 15Định nghĩa 1.10 (Đồ thị phụ thuộc) Đồ thị phụ thuộc của một chương trình logic
P, ký hiệu DG(P), là một đồ thị có hướng được xây dựng như sau:
- Ứng với mỗi vị từ p trong P, có một đỉnh được gán nhãn là p.
- Có một cạnh có hướng từ đỉnh q đến đỉnh p nếu có mệnh đề trong P có dạng:
p ← q Lúc đó ta nói cạnh q → p là cạnh dương.
- Có một cạnh có hướng từ đỉnh q đến đỉnh p được gán nhãn "_" nếu có mệnh đềtrong P có dạng:
p ← ¬q
Lúc đó ta nói cạnh q → p là cạnh âm và vị từ p là phụ thuộc âm vào vị từ q.
Định nghĩa 1.11 (Chương trình logic đệ qui) Một chương trình logic P gọi là đệ qui
nếu đồ thị phụ thuộc của nó có chu trình, ngược lại P được gọi là không đệ qui Vị từ
nằm trong chu trình được gọi là vị từ đệ qui, ngược lại gọi là vị từ không đệ qui
Định nghĩa 1.12 (Chương trình logic phân tầng) Chương trình logic P được gọi là
chương trình logic phân tầng nếu đồ thị DG(P) của nó không có chu trình chứa một
hay nhiều cạnh âm, tức là không có đích con phủ định đệ qui
Định nghĩa 1.13 (Tầng của vị từ) Cho P là chương trình logic phân tầng Tầng của
vị từ p trong P được xác định theo quy tắc sau :
(i) Nếu vị từ p là phần đầu của mệnh đề có q là đích con phủ định, nghĩa là p phụ thuộc âm vào q thì tầng của p lớn hơn tầng của q.
(ii) Nếu vị từ p là phần đầu của mệnh đề có q là đích con không phủ định thì tầng của p lớn hơn hoặc bằng tầng của q.
Do DG(P) không có chu trình chứa cạnh âm (tức không có đích con phủ định
đệ qui) nên tầng của tất cả vị từ đều hữu hạn
Thuật toán sau đây cho phép kiểm tra một chương trình logic thông thường cóđược phân tầng hay không
Trang 16Thuật toán 1.1 Kiểm tra và xây dựng các tầng
Vào: Chương trình logic thông thường P.
Ra: Kết luận P có phân tầng được hay không Nếu có thì xây dựng các tầng cho các
vị từ của P
Phương pháp:
Bước khởi đầu: Mọi vị từ của chương trình được gán ở tầng 1.
Bước lặp: Nếu một mệnh đề có đầu là p và có đích con phủ định q, gọi i, j lần lượt
là các tầng tương ứng của p và q Nếu i ≤ j thì gán lại tầng của p là j + 1 Hơn nữa, nếu đầu mệnh đề là p và có đích con không phủ định q thuộc tầng j và i < j thì gán lại p thuộc tầng j
Nếu đến một lúc nào đó mà không còn tầng nào bị thay đổi nữa thì thuật toántạo ra các tầng của các vị từ trong chương trình Còn nếu ta đi đến tình huống trong
đó một vị từ được gán cho một tầng lớn hơn tổng số các vị từ thì chương trình logic
P không được phân tầng.
Chi tiết thuật toán viết theo ngôn ngữ tựa Pascal như sau:
Trang 17rp
qp_p_p
until không còn sự thay đổi nào đối với các tầng hoặc có một tầng của vị từ
nào đó vượt quá số lượng các vị từ
Output trả lời "yes" (chương trình logic P được phân tầng) nếu không còn tầng
nào bị thay đổi, những tầng hiện tại là kết xuất của thuật toán và trả lời "no" (chương trình logic P không được phân tầng) nếu tầng của vị từ nào đó vượt
quá số lượng các vị từ
Ví dụ 1.4 Xem chương trình logic P gồm các mệnh đề:
Đồ thị phụ thuộc DG(P) của chương trình P:
Hình 1.1 Đồ thị DG(P) của chương trình logic ở ví dụ 1.4
Đồ thị này có chu trình chứa cạnh âm, vì vậy chương trình P này không phân tầng.
Trang 19eppp
qp
rp
Đồ thị phụ thuộc DG(P) của chương trình P như sau:
Hình 1.2 Đồ thị DG(P) của chương trình logic ở ví dụ 1.5
Đồ thị này không có chu trình chứa cạnh âm, vì vậy chương trình P phân tầng Mặc dầu vị từ q phụ thuộc âm vào vị từ p nhưng vị từ p không phụ thuộc vào vị từ q Khi một chương trình logic là phân tầng, giả sử có k tầng thì ta có thể tạo nên một phân hoạch P1, , P k của P sao cho P = P 1 ∪ ∪ P k , trong đó P i gồm các
mệnh đề mà vị từ đầu của nó thuộc tầng i, i = 1, , k.
Đối với chương trình logic phân tầng ta cũng có thể định nghĩa toán tử hệ quảtrực tiếp như sau:
Định nghĩa 1.14 (Toán tử hệ quả trực tiếp) Giả sử P là chương trình logic, I là một
thể hiện Herbrand của P Ta ký hiệu I ⊨A nếu A ∈ I và I ⊨ ¬A nếu A ∉ I Toán tử
hệ quả trực tiếp T P đối với chương trình P là ánh xạ
Trang 20được định nghĩa như sau: Với mỗi I ∈ ,
T p (I) = {A ∈B P | ∃A ←L1 ∧ ∧ L m ∈ ground(P) và I ⊨ L1, ,Lm}
trong đó là tập các tập con của cơ sở Herbrand B P
Ký hiệu là giới hạn của dãy:
Định lý 1.1 Giả sử P là chương trình logic phân tầng Lúc đó:
(i) M P = M n là độc lập với phép phân tầng của P.
(ii) M P là mô hình cực tiểu của P.
Định nghĩa 1.15 (Ngữ nghĩa mô hình hoàn hảo) Giả sử P là chương trình logic
phân tầng Ngữ nghĩa mô hình hoàn hảo của P là mô hình cực tiểu MP được xácđịnh bởi Định lý 1.1
Ví dụ 1.6 Xét chương trình logic P gồm các mệnh đề sau:
Trang 22rppp
qp
sp
Đồ thị phụ thuộc DG(P) của chương trình logic này như sau:
Hình 1.3 Đồ thị DG(P) của chương trình logic ở ví dụ 1.6
Đồ thị này không có chu trình chứa cạnh âm, vì vậy chương trình P phân tầng Ta
có p, r, s thuộc tầng 1 và q thuộc tầng 2 Lúc đó P = P1 ∪ P2, trong đó:
Trang 23Định nghĩa 1.16 [5] (Phép biến đổi Gelfond - Lifschitz) Cho P là chương trình
logic và I là một thể hiện của P Phép biến đổi Gelfond - Lifschitz của P theo I sẽ biến đổi P thành chương trình ký hiệu là bằng cách thực hiện:
1 Loại bỏ khỏi P tất cả các mệnh đề chứa literal âm not A, với A ∈ I.
2 Loại bỏ các literal not A trong thân của các mệnh đề còn lại.
Trang 24Để ý rằng nếu A ∈ I thì thân mệnh đề có chứa literal not A không thể trở thành đúng, vì vậy có thể loại bỏ mệnh đề này Mặt khác, nếu A ∉ I thì not A có thể giả sử
là đúng và được loại bỏ khỏi thân mệnh đề chứa nó
Rõ ràng là chương trình không có phủ định, nó là chương trình logic xác định,
vì vậy có mô hình nhỏ nhất, ký hiệu Γ(I).
Ví dụ 1.7 Cho P là chương trình logic gồm các mệnh đề:
Định nghĩa 1.17 [5] (Tập trả lời) Thể hiện I của chương trình logic P được gọi
là tập trả lời của P nếu I là mô hình nhỏ nhất của , nghĩa là Γ(I) = I.
Trang 25Xét M1 = {p, q} Khi đó, gồm các mệnh đề: q và p ← q và mô hình nhỏ nhất của nó
là {p, q} = M1 Vậy M1 là tập trả lời của P.
Xét M2 = {s} Khi đó, gồm các mệnh đề: s và f ← s
Mô hình nhỏ nhất của là {s, f} ≠ M2 Vì vậy M2 không là tập trả lời của P.
Định lý 1.2 [5] Cho P là chương trình logic Lúc đó mọi tập trả lời của P đều là mô
Định nghĩa 1.18 (Ngữ nghĩa tập trả lời) Ngữ nghĩa tập trả lời của chương trình
logic P được xác định bởi tập các tập trả lời của P.
Một nguyên tố nền A của P là đúng dưới ngữ nghĩa tập trả lời nếu A thuộc vào tất
Trang 27Chương 2 NGỮ NGHĨA CHƯƠNG TRÌNH LOGIC ƯU TIÊN
Chương 1 đã trình bày về lớp chương trình logic với ngữ nghĩa của chúng.Qua đó ta thấy rằng có tính ưu tiên giữa các quy tắc trong chương trình logic phântầng nhưng nó thiếu cơ chế biểu diễn rõ ràng và ứng dụng của chúng chỉ giới hạntrong các chương trình có cấu trúc phân tầng Để biểu diễn tri thức một cách tựnhiên hơn, chương 2 trình bày mở rộng chương trình logic bằng cách đưa thêm ưutiên giữa các quy tắc và các vị từ – tương ứng với chương trình logic ưu tiên vàchương trình logic ưu tiên dạng tuyển
2.1 CHƯƠNG TRÌNH LOGIC ƯU TIÊN
- Quan hệ thứ tự bộ phận < trên các tên
- Hàm đặt tên ánh xạ một quy tắc đến một tên
- Ký hiệu ←, được dùng để biểu diễn một quy tắc
- Các ký hiệu phủ định ¬ và not, trong đó ¬ biểu diễn phủ định cổ điển
(phủ định mạnh) và not biểu diễn phủ định mặc định (phủ định yếu).
Ta giả thiết tập các biến, hằng, vị từ và tên là rời nhau
Đối với hàm đặt tên , ta yêu cầu với quy tắc r và r’ bất kỳ trong chương trình logic ưu tiên, (r) = (r’) nếu và chỉ nếu r và r’ chỉ cùng một quy tắc.
Định nghĩa 2.1 (Chương trình logic ưu tiên) Một chương trình logic ưu tiên (PLP)
là một bộ ba , trong đó:
• là một tập hữu hạn các quy tắc có dạng:
Trang 28L0 ← L1,…,Lm , not L m+1 ,…, not L n (2)
trong đó L i (0 ≤ i ≤ n) là các literal L0 là phần đầu của quy tắc,
và {L1, …,Lm , not L m+1 , , not L n} là phần thân của quy tắc
• là hàm đặt tên, hàm này ánh xạ mỗi quy tắc trong đến một tên
• là một quan hệ thứ tự bộ phận trên các tên
Quan hệ < trong đóng vai trò quan trọng trong việc định giá Ta ký hiệu để chỉ tậpcác quan hệ < của Quan hệ < biểu diễn một thứ tự áp dụng các quy tắc trong quá
trình định giá chương trình Nếu (r) < (r’) trong thì quy tắc r’ được ưu tiên áp dụng
so với quy tắc r trong suốt quá trình định giá của
Ví dụ 2.1 Cho chương trình logic ưu tiên 1 :
N’1: p ← not q, not r
Trang 29Định nghĩa 2.2 (Tập <-bao đóng) Cho chương trình Tập <-bao đóng của , ký
hiệu , là tập nhỏ nhất chứa và đóng dưới phépbắc cầu
Ta cũng cần định nghĩa hàm đổi tên như sau:
Định nghĩa 2.3 (Hàm đổi tên) Một hàm đổi tên R n ánh xạ một PLP đến một PLP 𝒫’,
nghĩa là Rn( ) = ’ = (’, 𝒫’, <’) sao cho:
(i) () = 𝒫’( ’),
(ii) Đối với mỗi quy tắc r ∈ 𝒫(), 𝒫(r) = N ∈ () khi và chỉ khi
𝒫’(r) = N’∈ (’ ’) (N và N’ không nhất thiết phải khác nhau),
(iii) Đối với bất kỳ quy tắc r1 và r2 trong , 𝒫(r() 1) = N1, ( r2) = N2∈ )((((((((((((((( , và N2 < N1
∈ 𝒫(<) khi và chỉ khi 𝒫’(r1) = N’1, 𝒫’(r2) = N’2 ∈ ’(𝒫’)(((((((((((((((
và N’2 < N’1 ∈ ’(<’)
Dễ thấy rằng việc áp dụng hàm đổi tên cho một PLP chỉ thay đổi tên của cácquy tắc trong PLP
Định nghĩa 2.4 Hai chương trình logic ưu tiên 𝒫1 và 𝒫2 là đồng nhất khi và chỉ khi tồn
tại một hàm đổi tên R n, ánh xạ 𝒫2 đến ’2 sao cho 𝒫1() = ’2(’), 1((((((((((((((() = 𝒫’2(((((((((((((((’) và 𝒫1(<+) =𝒫’2(<’+)
Thứ tự ưu tiên của các quy tắc được áp dụng trong quá trình định giá củachương trình, nếu trong một chương trình 𝒫 có mối quan hệ 𝒫(r) < ( r’ ) thì quy tắc
r’ sẽ được ưu tiên hơn quy tắc r trong quá trình định giá 𝒫
Ví dụ 2.2 Cho chương trình logic ưu tiên 𝒫3 nhưsau:
Trang 30N1 : fly(X) ← bird(X), not ¬fly(X) N2:ly(X) ← penguin(X), not fly(X)
N3 : bird(tweety) ←
N4 : penguin(tweety) ←
N1 < N2
Rõ ràng, các quy tắc N1 và N2 xung đột nhau vì các đầu của chúng là các literal
bù nhau, việc áp dụng N1 sẽ loại trừ N2 và ngược lại Tuy nhiên, khi N1 < N2, chúng ta
có thể thấy rằng quy tắc N2 được ưu tiên áp dụng trước và loại trừ quy tắc N1 sau khi áp
dụng N2, từ đó chương trình sẽ đưa ra kết luận ¬fly(tweety).
2.1.2 Ngữ nghĩa tập trả lời của chương trình logic ưu tiên
Trong phần này sẽ trình bày về ngữ nghĩa tập trả lời của chương trình logic
ưu tiên Để đơn giản, chúng ta xem các quy tắc r trong chương trình như một tập các thể hiện nền của r được xây dựng từ tập các literal nền của Ta thừa nhận giả
thiết này trong các chương trình logic ưu tiên
Trước hết ta xét thảo luận liên quan đến chương trình 𝒫3 Trong 𝒫3 các quy tắc
N1 và N2 mâu thuẫn nhau Vì N1 < N2, chúng ta thử giải quyết xung đột bằng cách áp
dụng N2 trước và loại trừ N1 Tuy nhiên, trong một số chương trình, ngay cả khi có
một quy tắc được ưu tiên hơn quy tắc kia, hai quy tắc này có thể không ảnh hưởngnhau trong quá trình định giá chương trình Trong trường hợp này, mối quan hệ ưutiên giữa hai quy tắc này không có bất kỳ vai trò nào trong việc định giá và chúng ta
có thể bỏ qua Điều này được minh họa bằng chương trình sau đây:
Ví dụ 2.3 Cho chương trình 𝒫4 như sau:
N1 : p ← not q1
N2 : p ← not q2
Mặc dù các phần đầu của N1 và N2 là các literal bù nhau, việc áp dụng N1 sẽ
Trang 31N1 < N2 trong quá trình định giá của 𝒫4 Định nghĩa sau đây đưa ra một mô tả hìnhthức đối với tình huống này.
Định nghĩa 2.5 Cho là chương trình logic với các quy tắc r có dạng
L0 ← L1, …,Lm , not L m +1 , …, not L n Quy tắc r bị loại trừ bởi khi và chỉ khi đối với bất kỳ tập trả lời Ans() của , tồn tại L i nào đó thuộc Ans(), trong đó
m + 1 ≤ i ≤ n.
Ý tưởng của việc định giá chương trình logic ưu tiên như sau: Nếu có hai quy
tắc r và r’ trong và 𝒫(r) < 𝒫(r’) thì r sẽ bị loại bỏ qua trong quá trình định giá 𝒫, chỉ khi giữ r’ và xóa r trong sẽ dẫn đến việc loại trừ r, tức là r bị loại trừ bởi 𝒫() –{r}.
Bằng cách loại bỏ tất cả các quy tắc như vậy trong , cuối cùng 𝒫 thu về chươngtrình logic trong đó thứ tự từng phần < bị loại bỏ Lúc này, việc định giá đối với 𝒫
sẽ dựa trên chương trình logic này
Quay lại chương trình 𝒫3: Vì N1 < N2 và N1 bị loại trừ bởi 𝒫3 – {N1} (nghĩa làtập trả lời của 𝒫3 – {N1} là {bird(tweety), penguin(tweety), ¬fly(tweety)}, quy tắc N1 bị
bỏ qua trong suốt quá trình định giá 𝒫3 Mặt khác, đối với chương trình 𝒫4, mặc dù N2
< N1, quan hệ N2 < N1 không ảnh hưởng đến việc định giá 𝒫4 bởi vì 𝒫4 – {N2} không
loại trừ N2 (nghĩa là tập trả lời duy nhất của 𝒫4 – {N2} là {p}).
Định nghĩa 2.6 (Thu hẹp của chương trình logic ưu tiên) Cho là một chương trình
logic ưu tiên 𝒫< là thu hẹp của 𝒫 theo quan hệ < nếu và chỉ nếu tồn tại dãy các tập i (i = 0, 1, …) sao cho:
(i) 0 = ;
(ii) i = i-1 − {r 1 ,…,r k | (a) tồn tại r ∈ i-1 sao cho với mỗi j (j = 1, , k), 𝒫(r j) <
𝒫(r) ∈ 𝒫(<+ ) và r 1 ,…,r k bị loại trừ bởi i-1 – {r 1 ,…,r k}, và (b) không tồn tại
một quy tắc r’∈ i-1 sao cho N(r’) < N(r j ) với j nào đó
(j = 1, ,k) và r’ bị loại trừ bởi i-1 − {r’}};
(iii) 𝒫< = i
Trong Định nghĩa này, rõ ràng 𝒫< là một chương trình logic nhận được từ
bằng cách loại bỏ một số quy tắc từ Đặc biệt, nếu N(r’) < N(r) và − {r’} loại trừ r'
Trang 32thì quy tắc r' sẽ được loại bỏ khỏi nếu có ít hơn một quy tắc ưu tiên được loại bỏ
(tức là các điều kiện (a) và (b )) Quy trình này được tiếp tục cho đến khi đạt đến
điểm bất động Lưu ý rằng do tính chất bắc cầu của <, ta cần phải xét mỗi 𝒫(r’) < 𝒫(r) trong tập <-bao đóng của 𝒫.
Ví dụ 2.4 Từ các định nghĩa 2.2 và 2.6 có thể kết luận các chương trình 𝒫1, 3 và 4
lần lượt có các thu hẹp duy nhất là:
= {p ← not q, not r}
= {fly(X) ← penguin(X), not fly(X),
bird(tweety) ←, penguin(tweety) ←} = 𝒫4()
Chú ý rằng thu hẹp của chương trình logic ưu tiên có thể không duy nhất, taxem ví dụ dưới đây
Ví dụ 2.5 Giả sử chương trình logic ưu tiên 𝒫5 như sau:
Sau đây là định nghĩa các tập trả lời của chương trình logic ưu tiên:
Định nghĩa 2.7 (Tập trả lời của chương trình logic ưu tiên) Cho là một chương
trình logic ưu tiên và Lit là tập tất cả các literal nền trong ngôn ngữ của 𝒫 Đối với
Trang 33bất kỳ tập con S của Lit, S là một tập trả lời của 𝒫, ký hiệu là Ans P (𝒫), khi và chỉ
khi S = Ans(𝒫<) đối với thu hẹp 𝒫< nào đó của 𝒫
Ví dụ 2.6 Từ định nghĩa 2.7 và các ví dụ 2.4, 2.5 ta có các tập trả lời sau:
2.1.3 Các tính chất của chương trình logic ưu tiên
Trong phần này sẽ tìm hiểu về một số tính chất của chương trình logic ưu tiên
Cho là một chương trình logic, ký hiệu ANS() là tập tất cả các tập trả lời của
Cho là chương trình logic ưu tiên Từ định nghĩa 2.6 có thể thấy rằng một thu gọn
𝒫< của 𝒫 được tạo ra từ một dãy các chương trình logic: = 0, 1, 2,… được gọi là dãy thu hẹp của 𝒫
Định lý 2.1 [10] Cho là một chương trình logic ưu tiên và {i } (i = 0, 1, 2,…) là một
dãy thu hẹp của 𝒫 Giả sử mỗi i đều có tập trả lời Khi đó, đối với bất kỳ i và j và i <
j thì ANS( j) ⊆ ANS( i)
Định lý 2.1 cho thấy một tính chất quan trọng của dãy thu hẹp của 𝒫: toàn bộtập trả lời của i đều là tập trả lời của i-1 nhưng một số tập trả lời của i-1 lại được loại
bỏ nếu chúng mâu thuẫn với quan hệ thứ tự <
Ví dụ 2.7 Cho chương trình 𝒫9 như sau:
N1 : a ←not b
N2 : b ← not a
N3 : c ← not b, not d
Trang 34Định lý 2.2 [10] Cho là một chương trình logic ưu tiên và S là tập con của Lit Khi
đó, các mệnh đề sau là tương đương nhau:
1 S là một tập trả lời của 𝒫.
2 S là một tập trả lời của mỗi i với {i } (i = 0,1,2…) là dãy thu hẹp của 𝒫.
Trang 35Hệ quả 2.1 Nếu chương trình logic ưu tiên có một tập trả lời S thì S cũng là tập trả
2.2 CHƯƠNG TRÌNH LOGIC ƯU TIÊN DẠNG TUYỂN
Phần trên chúng ta đã tìm hiểu ưu tiên giữa các quy tắc trong chương trìnhlogic Để xem xét một cách tổng quan về ưu tiên giữa các vị từ trong chương trình,phần này ta xét ưu tiên trong một chương trình logic dạng tuyển
2.2.1.Cú pháp
Định nghĩa 2.7 (Chương trình logic dạng tuyển) Chương trình logic dạng tuyển
(DLP) có các quy tắc dạng:
L1|… | L k ← L k +1,…, L m, not L m+1,…, not L n (n ≥ m ≥ k ≥ 0) (3)
Trong đó, Li là literal âm hoặc dương, “|” là một phép tuyển logic (∨) và not là phủ
định mặc định L1|… | L k là đầu quy tắc và L k +1,…, L m, not L m+1,…, not L n là thân quy
tắc Một quy tắc với đầu rỗng được gọi là ràng buộc toàn vẹn
Cho P là chương trình logic dạng tuyển và là tập các literal nền, định nghĩa
Lúc đó quan hệ thứ tự được định nghĩa trên như sau:
Định nghĩa 2.8 (Ưu tiên)
(i) Với mọi phần tử e1 và e2 trong , nếu thì ta nói rằng e2 có ưu tiên cao hơn e1 nghĩa là
và được gọi là một ưu tiên
(ii) Quan hệ trên các phần tử chứa biến được định nghĩa như sau: Đối với các bộ x, y có
chứa biến, có nghĩa là với mọi thể hiện s của x và t của y.
Lưu ý rằng nếu có ưu tiên , thì e 1 và e 2 không có thể hiện chung Chẳng hạn,không có ưu tiên vì
Trang 36Cho Φ là tập các ưu tiên, lúc đó ta định nghĩa bao đóng Φ* là một tập các ưutiên được phản xạ hoặc bắc cầu từ các ưu tiên trong Φ Chẳng hạn,
Φ = {} thì ta có
Định nghĩa 2.9 (Chương trình logic ưu tiên dạng tuyển) Một chương trình logic
ưu tiên dạng tuyển là một cặp (P, Φ) trong đó P là một chương trình logic dạng
tuyển và Φ là tập các ưu tiên trên
Ví dụ 2.8 Cho chương trình logic ưu tiên dạng tuyển như sau:
q | r ←
Φ: p q, q r
2.2.2 Ngữ nghĩa p-tập trả lời của chương trình logic ưu tiên dạng tuyển
Ngữ nghĩa khai báo của chương trình logic ưu tiên dạng tuyển là các tập trả
lời Sau này, với mọi tập và , với literal nền L bất kỳ, L ∈ S \ T nghĩa là L ∈ S và L
∉ T; và not L ∈ S \ T nghĩa là L ∉ S và L ∈ T Trước tiên, ta xem xét ngữ nghĩa tập
trả lời của chương trình logic dạng tuyển
Định nghĩa 2.10 (Tập trả lời của chương trình logic dạng tuyển không chứa ký
hiệu not) Cho P là chương trình logic tuyển không chứa not (tức là m = n) và S ,
trong đó là tập tất cả các literal nền trong ngôn ngữ P Lúc đó, S là một tập trả lời của P nếu S là tập cực tiểu thỏa mãn hai điều kiện sau:
(i) S thỏa mãn mọi quy tắc L1|… | L k ← Lk+1,…, L m (k ≥ 1) trong P, {Lk+1,…, L m} S kéo theo L i nào đó thuộc S (1 ≤ i ≤ k) Đặc biệt, với mỗi ràng
buộc toàn vẹn nền ← L1,…, L m trong P, {L1,…, L m} S,
(ii) Nếu S chứa một cặp literal bù nhau, thì S =.
Định nghĩa 2.11 Cho P là chương trình logic dạng tuyển bất kỳ và S Lúc đó ta có
chương trình logic tuyển không chứa not P S (gọi là một thu hẹp) thu được từ P như
Trang 37sau: một quy tắc L1|… | L k ← Lk+1,…, L m nằm trong P S nếu có một quy tắc nền (3)
của P thỏa mãn {Lm+1,…, L n} ∩ S =.
Định nghĩa 2.12 (Tập trả lời của chương trình logic dạng tuyển) Cho P là một
chương trình logic dạng tuyển S là một tập trả lời của P nếu S là một tập trả lời của P S
Một tập trả lời là nhất quán nếu nó không phải là Tập trả lời là mâu thuẫn Chương trình logic dạng tuyển là nhất quán nếu nó có một tập trả lời nhất quán; ngược lại, chương trình đó không nhất quán Một tập trả lời S của chương trình logic dạng tuyển P là cực tiểu nếu không có tập trả lời S’ nào khác mà S’ S Tập tất
cả các tập trả lời của P được viết là
Định nghĩa 2.10 (Tính ưa thích giữa các tập trả lời) Cho (P, Φ) là một chươngtrình logic ưu tiên dạng tuyển, quan hệ được định nghĩa trên các tập trả lời của P
như sau Với các tập trả lời S1, S2 và S3 bất kỳ của P,
(i)
(ii) nếu
(iii) Nếu và , thì
Nói rằng S2 ưa thích hơn S1 theo Φ nếu Chúng ta viết nếu và
Theo định nghĩa, nếu có một phần tử e2 có độ ưu tiên cao hơn một số phần tử
e1 trong , và không có một phần tử e3 nào khác có độ ưu tiên cao hơn e2 Cụ thể là,điều kiện () trong (ii) tự động thỏa mãn nếu không có ưu tiên trên hơn hai phần tử
khác nhau (tức là, suy ra e 1 = e2 hoặc e2 = e3)
Ví dụ 2.9 Xét chương trình logic ưu tiên dạng tuyển (P, Φ) ở ví dụ 2.8
Lúc đó, {p, r} và {q} là hai tập trả lời của P, và {q} {p, r} Lưu ý rằng {p, r} {q} bởi vì tồn tại q r trong Φ
Trang 38Định nghĩa 2.11 (Tập trả lời ưa thích) Cho (P, Φ) là một chương trình logic ưu
tiên dạng tuyển Lúc đó, tập trả lời S của P được gọi là tập trả lời ưa thích (viết tắt
p-tập trả lời) của (P, Φ) nếu với mọi tập trả lời S’ của P, kéo theo (theo Φ) Tập tất
cả các p-tập trả lời của (P, Φ) được viết là
Các p-tập trả lời là các tập trả lời bao gồm các phần tử có các ưu tiên cao nhấttheo Φ Theo định nghĩa, (P, Φ) có một p-tập trả lời nếu P có hữu hạn
tập trả lời
Khi một chương trình có nhiều tập trả lời và muốn lọc ra theo ý muốn củangười lập luận thì sử dụng một chương trình logic ưu tiên dạng tuyển và các p-tậptrả lời Chẳng hạn, cơ chế ưu tiên của chương trình logic ưu tiên dạng tuyển sẽ làmgiảm thông tin không xác định trong một chương trình logic tuyển
Ví dụ 2.10 Cho chương trình P0 như sau:
Quy tắc đầu tiên nói rằng xe hơi không khởi động có thể do bình điện hỏng hoặcthiết bị đánh lửa hỏng Dựa trên kinh nghiệm người lập luận cho rằng nguyên nhân
do thiết bị đánh lửa ít xảy ra hơn bình điện Tình huống này được thể hiện bằng
ưu tiên sau:
Lúc đó, p-tập trả lời của (P0,Φ) là S = {mo_khoa, ¬khoi_dong, binh_dien_hong}.
Tình huống trên cũng có thể được thể hiện bằng cách sử dụng phủ định mặc
định (NAF) Giả sử chương trình P1 thu được từ P0 bằng cách viết lại quy tắc đầutiên như sau:
Trang 39Lúc đó, S cũng là tập trả lời của chương trình P1 Tuy nhiên, sử dụng phủ định mặcđịnh không phù hợp trong các tình huống thay đổi Giả sử lập luận sau đó phát hiện
ra các radio trên xe hoạt động và đó là ràng buộc toàn vẹn nói rằng radio không hoạtđộng nếu bình điện hư như sau:
Đặt P2 = P1 ∪ {radio_hoat_dong ←} ∪{IC}
Lúc đó không thể xác định nguyên nhân danh_lua_hong trong P2 Ngược lại,
chương trình P3 = P0 ∪ {radio_hoat_dong ←} ∪ {IC} sẽ có p-tập trả lời là {mo_khoa, ¬khoi_dong, radio_hoat_dong, danh_lua_hong}
Như vậy chương trình logic ưu tiên dạng tuyển có thể xác định các tri thứcđược ưu tiên một cách tự nhiên, và có thể lựa chọn các tập trả lời phù hợp với cáctình huống thay đổi Chú ý rằng việc lựa chọn các p-tập trả lời không ảnh hưởngđến bất kỳ tri thức nào Chẳng hạn, xét chương trình P4 thu được từ P0 bằng cáchthay thế quy tắc tuyển đầu tiên bằng quy tắc:
trong đó troi_lanh có ưu tiên hơn hai tuyển còn lại Thì (P4, Φ) có p-tập trả lời
{mo_khoa, ¬khoi_dong, troi_lanh}.
2.2.3 Các tính chất của chương trình logic ưu tiên dạng tuyển
Các p-tập trả lời của chương trình logic ưu tiên dạng tuyển mở rộng tập trả lờicủa chương trình logic dạng tuyển
Mệnh đề 2.1 [8] (Quan hệ giữa các tập trả lời và các p-tập trả lời) Cho (P, Φ) là chương trình logic ưu tiên dạng tuyển Lúc đó, PAS (P,Φ) ⊆ AS P Trường hợp đặc biệt, PAS(P,Φ ) = AS P
Như vậy, các tập trả lời của một chương trình là trường hợp đặc biệt của p-tập trả lời của một chương trình logic ưu tiên dạng tuyển khi không có ưu tiên Rõ
Trang 40ràng nếu một chương trình P có một tập trả lời duy nhất, thì đó cũng là p-tập trả lời duy nhất của (P, Φ) với mọi Φ.
Mệnh đề trên cho thấy khi chúng ta thêm vào các ưu tiên thì sẽ làm giảm sốlượng các giải pháp có thể nói chung Tuy nhiên, việc giảm này không đơn điệu, tức
là, tăng mức độ ưu tiên trong PDLP không phải lúc nào cũng làm giảm số lượng cácp-tập trả lời
Mệnh đề 2.2 [8] (Tính không đơn điệu) Cho hai chương trình logic ưu tiên dạng
tuyển (P, Φ1) và (P, Φ2) Lúc đó, Φ1 ⊆ Φ2 không suy ra ⊆
Ví dụ 2.11 Cho chương trình P như sau:
Tình huống trong ví dụ trên có thể mô tả như sau: Có ba loại thuốc khác
nhau p, q, và r Một bệnh nhân phải dùng p hoặc q, và q hoặc r Ngoài ra, người ta cũng biết rằng uống q và r gây ra các phản ứng phụ (vì thế không nên dùng chung
với nhau) Với các ưu tiên rỗng Φ1, có hai khả năng lấy {p, r} hoặc {q} Ưu tiên Φ2
cho biết thuốc q có hiệu quả hơn p nên sẽ dùng thuốc {q} Ưu tiên Φ3 cho biết thuốc
r là thuốc tốt nhất, cho nên {p, r} là sự lựa chọn tốt nhất.
Trong ví dụ trên, {q} được lựa chọn trong Φ1 và Φ2, trong Φ3 khi ta thêm ưu tiên
thì lựa chọn thay đổi là {p, r} Như vậy, p-tập trả lời thay đổi khi các ưu tiên thay đổi.
Trong chương trình logic ưu tiên dạng tuyển, các mối quan hệ ưu tiên đượcđịnh nghĩa trên các phần tử trong , chúng được sử dụng để thể hiện một cách tổngquát ưu tiên trên các dạng tri thức với các trường hợp ưu tiên như sau:
Trường hợp 1 Ưu tiên giữa các tri thức hội: