Tại sao sử dụng logic bậc nhất?• Logic mệnh đề chỉ xử lý trên các sự kiện , có giá trị đúng hoặc sai, ví dụ “trời mưa”, “Tuấn đi xem đá banh”… Ta không thể dùng các biến để đại diện cho
Trang 1Logic bậc nhất
Tô Hoài ViệtKhoa Công nghệ Thông tinĐại học Khoa học Tự nhiên TPHCM
thviet@fit.hcmuns.edu.vn
Trang 3Tại sao sử dụng logic bậc nhất?
• Logic mệnh đề chỉ xử lý trên các sự kiện , có giá trị đúng hoặc sai, ví dụ “trời mưa”, “Tuấn đi xem
đá banh”… Ta không thể dùng các biến để đại diện cho nhiệt độ, con người,…
• Trong logic bậc nhất, các biến giúp ta tham
chiếu đến các sự vật trong thế giới và ta còn có thể lượng hoá chúng: tức là xem xét toàn bộ hay một phần của sự vật.
Trang 4Logic Bậc nhất
• Các câu không thể biểu diễn bằng logic mệnh
đề nhưng có thể bằng logic bậc nhất
– Socrates là người nên socrates chết
– Khi sơn một hộp bằng màu xanh, nó sẽ trở thành hộp xanh
– Một người được cho phép truy cập trang web nếu họ được nếu họ được cấp quyền chính thức hay quen biết với ai được phép truy cập
Trang 5– Một ký hiệu vị từ (predicate) áp dụng cho một hay nhiều term:
Thuoc(Lan, DHKHTN), La-anh-em(Tuan, Lan), cua(Tuan), Lan),…
La-ban-be(anh-– t1= t2
– Nếu v là một biến và là một câu thì x và x là một câu
– Đóng với các toán tử nối câu:
Trang 6Trị đúng trong Logic bậc nhất
• Các câu là đúng ứng với một mô hình và một thể hiện
• Mô hình chứa các đối tượng (các thành phần) và quan hệ giữa
chúng
• Thể hiện xác định các tham chiếu cho
các ký hiệu hằng các đối tượng
các ký hiệu vị từ các quan hệ
• Một câu nguyên tố predicate(term 1 , term 2 ,…term n ) là đúng nếu và
chỉ nếu các đối tượng được tham chiếu bởi term 1 , term 2 ,…term n
Trang 7Lượng từ với mọi
Trang 8Lỗi thường gặp cần tránh
• Thông thường, là phép nối thường đi với
• Lỗi thường gặp: dùng làm phép nối chính đi với :
x Sinh-viên(x,CNTT) Thông-minh(x)
nghĩa là “Mọi người đều là sinh viên CNTT và mọi người đều thông minh”
Trang 10Lỗi thường gặp khác cần tránh
• Thông thường, là phép nối chính với
• Lỗi thường gặp: dùng làm phép nối chính với :
x Sinh-viên(x,CNTT) Thông-minh(x)
đúng nếu có bất kỳ ai không là sinh viên CNTT!
Trang 11Viết FOL như thế nào
• Mèo là động vật có vú [Mèo 1 , Động-vật-có-vú 1 ]
x.Mèo(x) Động-vật-có-vú(x)
• Lan là sinh viên học giỏi [Sinh-viên 1 , Học-giỏi 1 ,Lan]
Sinh-viên(Lan) Học-giỏi(Lan)
• Cháu là con của anh em [Cháu 2 , Anh-em 2 , Con 2 ]
x,y.Cháu(x,y) z.(Anh-em(z,y) Con(x,z))
• Bà ngoại là mẹ của mẹ [các hàm: bà-ngoại, mẹ]
xy x= bà-ngoại(y) z.(x= mẹ(z) z= mẹ(y))
• Mọi người đều yêu ai đó [Yêu 2 ]
x, y.Yêu(x, y)
x, y.Yêu(x, y)
Trang 12Viết FOL như thế nào (tt)
• Không ai yêu Lan
x Yêu(x, Lan) x Yêu(x,Lan)
Trang 13Suy dẫn trong FOL
• KB suy dẫn S: với mọi thể hiện I, nếu KB thoả trong I thì
Trang 15Tam đoạn luận:
Mọi người đều chết Socrates là người Socrates chết
Tương đương theo định nghĩa của phép Suy ra
Thay A vào x, vẫn đúng
khi đó Hợp giải Mệnh đề
Hai vấn đề mới:
• biến đổi FOL thành dạng mệnh đề (clausal form)
• hợp giải với biến
Trang 173 Đổi tên các biến thành phần
x.y.(P(x) x Q(x,y)) x 1 y 2 (P(x 1 ) x 3 Q(x3,y2))
Trang 19Biến đổi thành dạng mệnh đề
5 Bỏ các lượng từ với mọi
y, x Loves(x,y) Loves(x, beloved(x))
6 Phần phối or vào and; trả về các mệnh đề
Trang 20Hợp giải Bậc nhất
x, P(x) Q(x)
P(A)
Q(A)
Tam đoạn luận:
Mọi người đều chết Socrates là người Socrates chết
Thay A vào x, vẫn đúng
Điều chủ yếu là tìm các phép thế đúng đắn cho các biến
Trang 24Đồng nhất tổng quát nhất
• Để đồng nhất Knows(John,x) và Knows(y,z), ta có các
phép thế
θ = {y/John, x/z } hay θ = {y/John, x/John, z/John}
• Phép đồng nhất đầu tiên tổng quát hơn cái thứ hai
Trang 25Đồng nhất tổng quát nhất
• g là phép đồng nhất tổng quát nhất (most general unifier
- MGU) của ω1 và ω2 khi và chỉ khi với mọi phép đồng nhất s, tồn tại s’ sao cho ω1.s = (ω1.g)s’ và ω2.s =
Trang 26Thuật toán đồng nhất
unify(Expr x, Expr y, Subst s){
if s = fail, return fail
else if x = y, return s
else if x là một biến, return unify-var(x, y, s)
else if y là một biến, return unify-var(y, x, s)
else if x là một vị từ hay một hàm,
if y có cùng toán tử,
return unify(args(x), args(y), s)
else return fail
else ; x và y là các danh sách
return unify(rest(x), rest(y), unify(first(x), first(y), s))
return fail;
Trang 27Thủ tục đồng nhất biến
Thế vào var và x khi còn có thể, tiếp đó thêm vào ràng buộc mới
unify-var(Variable var, Expr x, Subst s){
if var đã được gắn với giá trị val trong s,
return unify(val, x, s)else if x được gắn với giá trị val trong s,
return unify(var, val, s)
else if var xuất hiện đâu đó trong x, return fail
else return add({var/x}, s)}
Trang 28Một số ví dụ về đồng nhất
A(x, f(D,x)) A(E, f(D, y)) {x/E, y/E}
A(x, y) A(f(C, y), z) {x/f(C,y), y/z}
P(A, x, f(g(y))) P(y, f(z), f(z)) {y/A, x/f(z), z/f(g(y)}
P(x, g(f(A)), f(x)) P(f(y), z, y) Không có
P(x, f(y)) P(z, g(w)) Không có