Tìmhiểuvềbàitoán con khỉvàquảchuối :
Bài toán :Một conkhỉ đang đứng trước cửa một căn phòng,trong phòng ở
chính giữa có treo một quả chuối,con khỉquá đói tìm cách để ăn quả
chuối,nhưng quảchuối lại quá cao đối với nó, ở cạnh cửa sổ có đặt một cái
hộp để conkhỉ có thể trèo nên,con khỉ có thể thực hiện các động tác như sau:
Bước đi trong phòng nhảy nên cái hôp, di chuyển cái hộp(nếu conkhỉ đứng
cạnh cái hộp ) và với lấy quảchuối nếu conkhỉ đứng trên cái hộp đặt đúng
chỗ quảchuối . Hỏi conkhỉ có với được quảchuối không ?
Phân tích đệ quy của bài toán:
Chương trình được xây dựng theo kiểu đệ quy theo 2 quan sát sau:
+ Với mỗi trạng thái(trangthai1) mà conkhỉ lấy được quảchuối vị từ
layduoc là true không cần một di chuyển nào khác nữa. Điều này tương ứng
với sự kiện
layduoc(trangthai(_,_,_,chiemduoc)).
+ Với trường hợp cần thực hiện nhiều hoặc một di chuyển. Xuất phát từ
trạng thái(trangthai1) conkhỉ lấy được quảchuối nêu tồn tại số lần di
chuyển M nào đó từ trạng thái (trangthai1) đến một trạng thái (trangthai2)
sao cho(trangthai2) conkhỉ có thể lấy được quả chuối. được biểu diễn như
sau: layduoc(Trangthai1):-dichuyen(Trangthai1,chuyen,Trangthai2),
layduoc(Trangthai2).
Bài toán được thể hiện đầy đủ như sau:
dichuyen(trangthai(giua,trenhop,giua,kobat),
tumlay,trangthai(giua,trenhop,giua,chiemduoc)).
dichuyen(trangthai(P,trannha,P,H),treo,trangthai(P,trenhop,P,H)).
dichuyen(trangthai(P1,tranha,P1,H),
day(P1,P2),
trangthai(P2,trannha,P2,H)).
dichuyen(trangthai(P1,trannha,G,H),
dibo(P1,P2),
trangthai(P2,trannha,G,H)).
day(cuaso,giua).
dibo(cuachinh,cuaso).
layduoc(trangthai(_,_,_,chiemduoc)).
layduoc(Trangthai1):-dichuyen(Trangthai1,chuyen,Trangthai2),
layduoc(Trangthai2).
. Tìm hiểu về bài toán con khỉ và quả chuối :
Bài toán :Một con khỉ đang đứng trước cửa một căn phòng,trong phòng ở
chính giữa có treo một quả chuối ,con. hộp(nếu con khỉ đứng
cạnh cái hộp ) và với lấy quả chuối nếu con khỉ đứng trên cái hộp đặt đúng
chỗ quả chuối . Hỏi con khỉ có với được quả chuối không