Bài viết trình bày việc xem xét cú pháp và ngữ nghĩa của ngôn ngữ lập trình logic DLPA cùng các tính chất ngữ nghĩa của ngôn ngữ DLPA, được gọi đơn giản là chương trình logic dạng tuyển kết tập. Bài viết cũng trình bày một số ứng dụng điển hình sử dụng ngôn ngữ DLPA chạy trên hệ thống lập trình DLV.
Journal of Science – Phu Yen University, No.26 (2021), 92-99 92 NGÔN NGỮ DLPA VÀ MỘT SỐ ỨNG DỤNG Võ Thị Như Lý* Trường Cao đẳng Công thương miền Trung Ngày nhận bài: 03/4/2020; Ngày nhận đăng: 08/01/2021 Tóm tắt Trong báo này, xem xét cú pháp ngữ nghĩa ngơn ngữ lập trình logic DLPA tính chất ngữ nghĩa ngơn ngữ DLPA, gọi đơn giản chương trình logic dạng tuyển kết tập Chúng tơi trình bày số ứng dụng điển hình sử dụng ngơn ngữ DLPA chạy hệ thống lập trình DLV Từ khóa: Lập trình logic, ngôn ngữ DLPA, hệ thống DLV Giới thiệu Trong suốt thập kỷ qua, mơ hình lập trình “Lập trình logic” đời Lập trình logic (LP) chủ yếu dựa ý tưởng lập trình khai báo, chương trình khơng tạo từ câu lệnh từ hàm mà tạo chủ yếu dựa tập vị từ Lĩnh vực nghiên cứu LP nhiều nhà khoa học quan tâm áp dụng vào việc biểu diễn xử lý tri thức phức tạp lĩnh vực trí tuệ nhân tạo lĩnh vực lên khác quản trị tri thức tích hợp thơng tin Hiện LP mở rộng theo nhiều hướng khác nhau, ngơn ngữ DLPA – mở rộng LP, cho phép hàm kết tập xuất quy tắc chương trình logic Hàm kết tập có ý nghĩa đáng kể, cho phép mơ hình hóa cách tự nhiên ngắn gọn nhiều vấn đề Nó làm tăng khả diễn đạt thuộc tính, thường nảy sinh ứng dụng giới thực, mã hóa theo cách đơn giản tự nhiên Trong số đó, có thuộc tính u cầu áp dụng toán tử toán học (như sum, times, count ) tập yếu * Email: lyvo2019@gmail.com tố thỏa mãn vài điều kiện, diễn đạt cách dễ dàng tự nhiên ngôn ngữ DLPA Ngôn ngữ DLPA áp dụng để giải nhiều toán thực tế phức tạp, chẳng hạn toán xếp chỗ ngồi, tốn tối ưu hóa lý thuyết đồ thị nhiều dạng suy luận đốn Ngơn ngữ DLPA 2.1 Cú pháp ngôn ngữ DLPA 2.1.1 Tập DLPA (Armi et.,2003) Một tập DLPA tập ký hiệu tập Trong đó: - Tập ký hiệu có dạng {Vars : Conj}, Vars danh sách biến Conj hội literal thơng thường (có thể chứa literal âm) - Tập tập cặp có dạng t : Conj , t danh sách Conj hội literal thông thường 2.1.2 Hàm kết tập/nguyên tố kết tập (Armi et., 2003) a) Một hàm kết tập có dạng f(S), S tập DLPA f số hàm #count, #min, #max, #sum, #times b) Một nguyên tố kết tập có dạng Lg p f S p Rg , f(S) Tạp chí Khoa học – Trường Đại học Phú Yên, Số 26 (2021), 92-99 hàm kết tập, p 1, p 2, , , , , Lg Rg hạng thức (biến hằng) gọi chặn “ Lg p ” “ p Rg ” khơng có 2.1.3 Nguyên tố, literal (Armi et.,2003) a) Một nguyên tố nguyên tố thông thường nguyên tố kết tập b) Một literal L nguyên tố A phủ định nguyên tố A Nếu A nguyên tố kết tập L literal kết tập 2.1.4 Quy tắc DLPA (Faber et., 2011) Một quy tắc DLPA r cấu trúc có dạng: a1 a2 an :−b1 , b2, , bk, not bk+1 , , bm a1 , a2, , an nguyên tố thông thường, b1 , b2, , bm nguyên tố, n , m k , m + n 1, tuyển a1 a2 an đầu r hội b1, b2, , bk, not bk+1 , , bm thân r Ký hiệu H(r) = {a1, , an} B(r) = {b1, b2, , bk, not bk+1, , not bm} Một quy tắc với phần đầu rỗng (nghĩa n = 0) gọi ràng buộc tồn vẹn (hay ràng buộc mạnh) Một quy tắc với thân rỗng (nghĩa k = m = 0) gọi kiện ta thường bỏ qua ký hiệu “:−” 2.1.5 Ràng buộc yếu (Faber et., 2008) Một ràng buộc yếu wc cú pháp có dạng: :~ L1 … Lk [w : l] k Li (i = 1, , n) literal, weight(wc) = w layer(wc) = l biến nguyên dương w, l bỏ qua mặc định Ràng buộc yếu cho phép ta biểu diễn số toán tối ưu theo cách tự nhiên đơn giản Trong ràng buộc chuẩn (ràng buộc toàn vẹn, ràng buộc mạnh) phải thỏa mãn, ràng buộc yếu biểu diễn mức độ mong muốn đó, tức chúng thỏa mãn chúng khơng loại bỏ 93 mơ hình Xét chương trình có ràng buộc yếu sau: a b c :− b :~ a :~ b :~ c Ở đây, mức độ đánh giá độ ưu tiên bỏ qua, giá trị gán ngầm định Nếu ta gọi DLV, ta thu kết sau: Best Model: {a} Chú ý tập trả lời chương trình {a b, c:−b } {a} {b, c} Sự xuất ràng buộc yếu loại bỏ {b, c} mâu thuẫn với ràng buộc yếu (trong {a} mâu thuẫn ràng buộc yếu) 2.1.6 Chương trình DLPA (Faber et., 2008) Một chương trình DLPA tập quy tắc DLPA ràng buộc yếu (nếu có) Để đơn giản khơng tính tổng qt, ta giả sử thân quy tắc gồm nhiều nguyên tố kết tập Biến toàn cục r biến xuất nguyên tố thông thường r, biến cục biến xuất hàm kết tập r 2.2 Ngữ nghĩa ngôn ngữ DLPA 2.2.1 Các khái niệm a) Vũ trụ sở chương trình DLPA P Cho P chương trình DLPA, vũ trụ P, ký hiệu Up tập xuất P, sở P, ký hiệu BP tập nguyên tố thông thường xây dựng từ vị từ P với UP b) Phép hành chương trình DLPA P (James, P D., & Faber, W (2011)) Phép ánh xạ từ tập biến đến tập UP P Phép từ tập biến toàn cục quy tắc r đến tập UP phép toàn cục quy tắc r Phép từ tập biến cục tập 94 Journal of Science – Phu Yen University, No.26 (2021), 92-99 ký hiệu S đến tập UP phép cục S Cho tập ký hiệu S khơng chứa biến tồn cục, S = {Vars: Conj}, hành S, ký hiệu inst(S), tập nền: inst(S) = {𝛾(Vars) : 𝛾(Conj) | 𝛾 phép cục S} Một hành quy tắc r nhận qua bước: (1) Phép toàn cục r áp dụng r (2) Mỗi tập ký hiệu S (r) thay hành inst(S) Hiện hành chương trình DLPA P, ký hiệu Ground(P), tập tất hành có quy tắc P c) Thể phép định giá (Faber et.,2004) Một thể chương trình DLPA P tập nguyên tố thông thường I BP Việc xác định giá trị chân lý A theo thể I, A literal thơng thường hội literal thông thường nền, ký hiệu I(A) định nghĩa theo cách thông thường Bên cạnh việc gán giá trị chân lý cho literal thông thường thể cịn cung cấp ngữ nghĩa cho tập nền, hàm kết tập literal kết tập Ngữ nghĩa tập nền, hàm kết tập, nguyên tố kết tập theo thể hiện, tương ứng đa tập, giá trị giá trị chân lý Phép định giá I(S) tập S theo thể I đa tập phần tử S mà hội chúng theo I Chính xác hơn, đặt SI = { t1 , ,tn t1 , ,tn : Conj S Conj theo I} Phép định giá I(S) S theo thể I đa tập [ t1 | t1 , , tn S I ] Phép định giá I(f(S)) hàm kết tập f(S) theo I kết việc áp dụng hàm f I(S) Nếu đa tập I(S) không nằm miền f I(f(S)) = Một nguyên tố kết tập A = Lg p f(S) p Rg theo thể I nếu: (i) I(f(S)) , (ii) Quan hệ Lg p I ( f ( S )) I ( f ( S )) p Rg thỏa mãn; ngược lại A sai Một literal kết tập hành not A= not f(S) p 2k theo I nếu: (i) I(f(S)) , (ii) I(f(S)) p 2k thoả mãn; cịn ngược lại A sai Một qui tắc r theo I (ký hiệu là: I ⊨ 𝑟) vài nguyên tố phần đầu quy tắc theo I (∃ℎ ∈ 𝐻(𝑟): 𝐼 ⊨ ℎ) tất literal thân quy tắc theo I (∀𝑏 ∈ 𝐵(𝑟): 𝐼 ⊨ 𝑏) (Mô hình chương trình DLPA) Một mơ hình chương trình DLPA P thể M P cho quy tắc r Ground(P) theo M Mơ hình M P mơ hình cực tiểu khơng tồn mơ hình N P cho N tập thực M 2.2.2 Tập trả lời a) Phép biến đổi Gelfond Lifschitz (Faber et.,2008) Phép biến đổi Gelfond Lifschitz chương trình DLPA P theo tập X BP chương trình DLPA dương PX thu từ P cách: - Xoá tất quy tắc r P mà literal phủ định B(r) sai theo X literal kết tập sai theo X, - Xoá literal kết tập, literal phủ định từ quy tắc cịn lại Tạp chí Khoa học – Trường Đại học Phú Yên, Số 26 (2021), 92-99 b) Tập trả lời chương trình DLPA P tập X BP cho X tập trả lời Ground(P)X Cho chương trình DLPA P sau đây: d(1):− a b:− c b:− not a , not c , #count{Y: d(Y)}>0 a c: − not b, #sum{Y: d(Y)}>1 Xét thể I = {b, d(1)}, lúc PI sau: d(1):− a b:− c b:− Ta nhận thấy I tập trả lời PI, nên tập trả lời P Xem thể J = {a, d(1)}, lúc PJ sau: d(1):− a b:−c Ta nhận thấy J tập trả lời PJ, tập trả lời P Xét tập K = {c, d(1)},ta có PK = PJ K tập trả lời PK , quy tắc r: a b:−c, B(r) K H(r) K khơng thoả Thực vậy, có I J tập trả trả lời P Một số ứng dụng 3.1 Bài toán xây dựng đội làm việc cho dự án Một đội làm việc cho dự án xây dựng từ tập nhân viên theo yêu cầu sau đây: P1 Đội phải có số lượng nhân viên cụ thể P2 Trong đội phải có kỹ khác theo yêu cầu P3 Tổng lương nhân viên làm việc đội không vượt ngân sách đề P4 Lương nhân viên nằm giới hạn cho phép P5 Số lao động nữ đội phải đạt mức 95 tối thiểu đưa Giả sử nhân viên cung cấp số kiện có dạng emp(EmpId, Sex, Skill, Salary); Qui mô đội, số lượng tối thiểu kỹ khác nhau, ngân sách, mức lương tối đa số lượng tối thiểu nhân viên nữ qui định nguyên tố nEmp(N), nSkill(N), budget(B), maxSal(M) women(W) Từ thông tin này, thực mã hoá yêu cầu ngơn ngữ DLPA ta nhận chương trình sau: (r1)in(I) out(I) :- emp(I, Sx, Sk, Sa) (r2):- nEmp(N),not #count{I : in(I)} = N (r3):- nSkill(M), not #count{Sk : emp(I, Sx, Sk, Sa), in(I)} M (r4) :- budget(B), not #sum{Sa, I : emp(I, Sx, Sk, Sa), in(I)} B (r5):- maxSal(M), not #max{Sa : emp(I, Sx, Sk, Sa), in(I)} M (r6):- women(W), not #count{I : emp(I, f, Sk, Sa), in(I)} W Quy tắc dạng tuyển (r1) “dự đốn” nhân viên có đội hay khơng, ràng buộc (r2-r6) tương ứng với yêu cầu P1 - P5 Nhờ vào hàm kết tập nên việc chuyển đổi yêu cầu dễ dàng Đây ví dụ làm bật tính hữu ích biểu diễn tập hợp đa tập Việc mã hố u cầu P2 địi hỏi tập ta muốn đếm số kỹ khác nhau; hai nhân viên đội có kỹ giống đếm lần Ngược lại, P3 yêu cầu tính tổng phần tử đa tập; nhân viên có lương giống hai giá trị lương phải cộng tổng hợp cho P3 Điều đạt cách thêm biến I (định danh nhân viên) Vars Việc định giá {Sa, I : emp((I, Sx, Sk, Sa), in(I)} sinh tập S = { Sa, I : Sa lương nhân viên I đội} Hàm 96 Journal of Science – Phu Yen University, No.26 (2021), 92-99 tổng #sum áp dụng đa tập thành phần Sa Sa, I S Giả sử kiện đầu vào là: emp(a, s,2,10) emp(b,s,1,5) emp(c,s,3,3) emp(d,f,4,40) emp(e,f,5,10) nEmp(3) nSkill(2) budget(40) maxSal(40) women(1) Thực thi chương trình hệ thống DLV ta nhận kết hình sau: Hình 1: Kết thực thi chương trình hệ thống DLV Chương trình có tập trả lời sau: có trọng số Tìm khung G có M1 = {emp(a,s,2,10), emp(b,s,1,5), trọng số nhỏ emp(c,s,3,3), emp(d,f,4,40), emp(e,f,5,10), a) Chương trình viết ngôn ngữ DLPA nEmp(3), nSkill(2), budget(40), không sử dụng hàm kết tập: maxSal(40), women(1), out(a), in(b), in(c), root(a) out(d), in(e)} node(a) node(b) node(c) node(d) node(e) edge(a,b,4) edge(a,c,3) edge(c,b,2) edge(c,d,3) M2 = {emp(a,s,2,10), emp(b,s,1,5), edge(b,e,4) edge(d,e,5) emp(c,s,3,3), emp(d,f,4,40), emp(e,f,5,10), in_tree(X,Y,C) v out_tree(X,Y) :nEmp(3), nSkill(2), budget(40), edge(X,Y,C), reached(X) maxSal(40), women(1), in(a), out(b), in(c), :- root(X), in_tree(_,X,C) out(d), in(e)} :- in_tree(X,Y,C), in_tree(Z,Y,C), X != Z M3 = {emp(a,s,2,10), emp(b,s,1,5), reached(X):- root(X) emp(c,s,3,3), emp(d,f,4,40), emp(e,f,5,10), reached(Y):- reached(X), in_tree(X,Y,C) nEmp(3), nSkill(2), budget(40), :- node(X), not reached(X) maxSal(40), women(1), in(a), in(b), out(c), :~ in_tree(X,Y,C) [C:1] out(d), in(e)} Thực thi chương trình hệ thống 3.2 Bài tốn tìm khung nhỏ đồ thị DLV ta nhận kết hình sau: Cho G = đồ thị có hướng Tạp chí Khoa học – Trường Đại học Phú Yên, Số 26 (2021), 92-99 97 Hình Kết thực thi chương trình Bài tốn đồ thị Tập trả lời tìm là: edge(a,b,4) edge(a,c,3) edge(c,b,2) M1 = {root(a), node(a), node(b), node(c), edge(c,d,3) edge(b,e,4) edge(d,e,5) node(d), node(e), edge(a,b,4), in_tree(X,Y,C) v out_tree(X,Y) :edge(a,c,3), edge(b,e,4), edge(c,b,2), edge(X,Y,C) edge(c,d,3), edge(d,e,5), reached(a), %nút gốc khơng có cung đến out_tree(a,b), in_tree(a,c,3), reached(b), :- root(R), not #count{X : in_tree(X,R,C)} reached(c), in_tree(b,e,4), in_tree(c,b,2), = in_tree(c,d,3), reached(e), reached(d), %mỗi nút có cung đến out_tree(d,e)} :- edge(_,Y,_), not #count{X : Cost ([Weight:Level]): in_tree(X,Y,_)} = A b) Chương trình viết ngơn ngữ DLP :~ in_tree(X,Y,C) [C:1] có sử dụng hàm kết tập: Thực thi chương trình hệ thống root(a) DLV ta nhận kết hình sau: node(a) node(b) node(c) node(d) node(e) Hình Kết thực thi chương trình Bài toán đồ thị (dùng hàm kết tập) Tập trả lời tìm là: M1 = {root(a), node(a), node(b), node(c), node(d), node€, edge(a,b,4), edge(a,c,3), edge(b,e,4), edge(c,b,2), edge(c,d,3), edge(d,e,5), reached(a), out_tree(a,b), in_tree(a,c,3), reached(b), reached(c), in_tree(b,e,4), in_tree(c,b,2), in_tree(c,d,3), reached€, reached(d), out_tree(d,e)} Cost ([Weight:Level]): Ta nhận thấy kết chương trình dùng hàm kết tập không dùng hàm kết tập cho tập trả lời Tuy nhiên, dùng hàm kết tập số lượng quy tắc Journal of Science – Phu Yen University, No.26 (2021), 92-99 98 phải dùng rút ngắn, mã hóa cách trực tiếp, tự nhiên sử dụng quan hệ kế thừa nên biểu diễn tri thức tốt Và nghiên cứu Khơng có phủ định (not) Phủ định (not) ∅ co-NP {Ms} co-NP {M} co-NP {As} thêm vào hàm kết tập khơng làm tăng độ phức tạp chương trình logic dạng tuyển (Faber et.,2004) {Ns} 𝑃 ∏ 𝑃 ∏ 𝑃 ∏ 𝑃 ∏ 𝑃 ∏ 2 𝑃 ∏ 𝑃 ∏ {Ms,As, Ns} {A} 𝑃 ∏ 𝑃 ∏ 2 {N} 𝑃 ∏ 𝑃 ∏ 2 𝑃 ∏ 𝑃 ∏ {M,A,N} 𝑃 ∏ 𝑃 ∏ 2 Bảng Sự phức tạp chương trình logic dạng tuyển với hàm kết tập Trong đó: Ms: Kết tập đơn điệu phân tầng M: Kết tập đơn điệu hồn tồn (có thể có đệ qui) As: Kết tập khơng đơn điệu phân tầng A: Kết tập kháng đơn điệu hoàn toàn Ns: Kết tập không đơn điệu phân tầng N: Kết tập khơng đơn điệu hồn tồn Tất dạng kết tập có kết ∏𝑃2 chương trình logic dạng tuyển chuẩn Kết luận - Bài báo biểu diễn tri thức chương trình DLPA thơng qua số tốn thực tế cài đặt toán hệ thống DLV - Việc mở rộng chương trình logic dạng tuyển với hàm kết tập góp phần tạo thêm điểm mạnh việc mơ hình hóa cách tự nhiên tri thức không đầy đủ làm bật đặc tính ngơn ngữ biểu diễn tri thức Ngồi ra, cịn góp phần vào nghiên cứu phương pháp định giá truy vấn chương trình DLPA TÀI LIỆU THAM KHẢO Armi, T D., Faber, W., Ielpa, G., Leone, N., & Pfeifer, G (2003) Aggregate Functions in DLV Messina, Italy: ASP'03, 274 – 288 Armi, T D., Faber, W., Ielpa, G., Leone, N., & Pfeifer, G (2003) Aggregate Functions in Disjunctive Logic Programming: Semantics, Complexity, and Implementation in DLV Acapulco, Mexico: IJCAI 2003, 847-852 Faber, W., Leone, N., & Pfeifer, G (2004) Recursive Aggregates in Disjunctive Logic Programs: Semantics and Complexity J.J Alferes, J Leite (Eds.), Proceedings of the 9th European Conference on Artificial Intelligence (JELIA 2004), Lecture Notes in AI (LNAI), vol 3229, Springer-Verlag, 200–212 Faber, W., Leone, N., & Pfeifer, G (2011) Semantics and complexity of recursive aggregates in answer set programming Contents lists available at Science Direct Artificial Intelligence, 278–298 Tạp chí Khoa học – Trường Đại học Phú Yên, Số 26 (2021), 92-99 99 Faber, W., Pfeifer, G., Leone, N., Armi, T D., & Ielpa, G (February 2008) Design and Implementation of Aggregate Functions in the DLV System Department of Mathematics, University of Calabria 87036 Rende (CS), Italy, 12-20 Faber, W., Eiter, T., Georg, G., Leone, N., Pfeifer, G., Perri, S., & Francesco, S (2006) The DLV System for Knowledge Representation and Reasoning ACM Transactions on Computational Logic, 499-562 James, P D., & Faber, W (2011) Logic Programming and Nonmonotonic Reasoning Vancouver, Canada: 11 th International Conference Logic Programming Language DLPA and its applications Vo Thi Nhu Ly Mientrung Industry And Trade College Email: lyvo2019@gmail.com Received: April 03, 2020; Accepted: January 08, 2021 Abstract In this paper, we summarize some syntax, semantics and semantic properties of the Logic Programming Language DLPA which is also simply called Disjunctive logic program with Aggregate Functions We also demonstrate some applications in using the Logic Programming Language DLPA implemented in the Datalog plus Vel (DLV) system Keywords: Logic Programming, DLPA Language, DLV system ... thường r, biến cục biến xuất hàm kết tập r 2.2 Ngữ nghĩa ngôn ngữ DLPA 2.2.1 Các khái niệm a) Vũ trụ sở chương trình DLPA P Cho P chương trình DLPA, vũ trụ P, ký hiệu Up tập xuất P, sở P, ký... J tập trả trả lời P Một số ứng dụng 3.1 Bài toán xây dựng đội làm việc cho dự án Một đội làm việc cho dự án xây dựng từ tập nhân viên theo yêu cầu sau đây: P1 Đội phải có số lượng nhân viên cụ... trọng số Tìm khung G có M1 = {emp(a,s,2,10), emp(b,s,1,5), trọng số nhỏ emp(c,s,3,3), emp(d,f,4,40), emp(e,f,5,10), a) Chương trình viết ngơn ngữ DLPA nEmp(3), nSkill(2), budget(40), không sử dụng