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 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 để con khỉ 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
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...
Nội dung trích xuất từ tài liệu:
Tìm hiểu về bài toán con khỉ và quả chuối
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 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 để con khỉ 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
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 ?
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à con khỉ 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) con khỉ 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) con khỉ 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).