BÁO CÁO ĐỒ ÁN NGUYÊN LÝ VÀ PHƯƠNG PHÁP LẬP TRÌNH NHỮNG ÔNG CHỒNG GHEN TUÔNG

7 304 10
BÁO CÁO ĐỒ ÁN NGUYÊN LÝ VÀ PHƯƠNG PHÁP LẬP TRÌNH  NHỮNG ÔNG CHỒNG GHEN TUÔNG

Đang tải... (xem toàn văn)

Thông tin tài liệu

Ba cặp vợ chồng muốn qua sông bằng một chiếc xuồng. Bất cứ ai trong số họ cũng có thể chèo xuồng. Tuy nhiên, chiếc xuồng chỉ có thể chở tối đa hai người (nghĩa là xuồng có thể chở một hoặc hai người). Do ba ông chồng đều rất ghen nên có điều kiện ràng buộc là: mỗi ông chồng đều phải luôn ở cạnh bà vợ của mình trừ khi ở đó không có người đàn ông nào khác (nghĩa là ông chồng chỉ có thể rời khỏi bà vợ nếu như không có người đàn ông nào khác ở đó).

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN - - BÁO CÁO ĐỒ ÁN MÔN NGUYÊN PHƯƠNG PHÁP LẬP TRÌNH Đề tài: Trình bày phương pháp viết chương trình ngơn ngữ Prolog để giải tốn “Những ơng chồng ghen tng” (“Jealous husbands problem”) trí tuệ nhân tạo Lớp: CS221.J12 Giảng viên hướng dẫn: PGS TS Nguyễn Tuấn Đăng Thành viên nhóm thực hiện: 1, Lê Thanh Tiềm – 16521214 2, Nguyễn Đăng Thịnh – 16521177 Tp Hồ Chí Minh, tháng 01 năm 2019 Lời cám ơn Đầu tiên chúng em xin gửi lời cám ơn sau sắc đến thầy Nguyễn Tuấn Đăng tận tình giảng dạy giúp đỡ chúng em kiến thức ý tưởng cần thiết để hồn thành đề tài Do nhiều yếu tố khác với hiểu biết hạn chế thành viên nên đề tài nhiều thiếu sót Mong thầy xem xét đưa đánh giá để nhóm chúng em hồn thiện tương lai I, Giới thiệu tốn: Ba cặp vợ chồng muốn qua sơng xuồng Bất số họ chèo xuồng Tuy nhiên, xuồng chở tối đa hai người (nghĩa xuồng chở hai người) Do ba ông chồng ghen nên có điều kiện ràng buộc là: ông chồng phải cạnh bà vợ trừ khơng có người đàn ông khác (nghĩa ông chồng rời khỏi bà vợ khơng có người đàn ông khác đó) I, Phương pháp giải toán: 1, Định nghĩa trạng thái: - Trạng thái ban đầu: Tất ông chồng bà vợ bờ bên trái Tương ứng: [1, 1, 1, 1, 1, 1, 0] - Trạng thái mục tiêu: Tất ông chồng bà vợ bên bờ bên phải Tương ứng: [0, 0, 0, 0, 0, 0, 1] - vị trí đầu tương ứng với ơng chồng bà vợ đứng xen kẽ - vị trí cuối thuyền, thuyền chở tối đa hai người 2, Các thao tác chuyển trạng thái: - Chuyển cặp vợ chồng thứ từ bờ bên trái sang bờ bên phải - Chuyển cặp vợ chồng thứ hai từ bờ bên trái sang bờ bên phải - Chuyển cặp vợ chồng thứ ba từ bờ bên trái sang bờ bên phải - Chuyển ông chồng thứ từ bờ bên trái sang bờ bên phải - Chuyển ông chồng thứ hai từ bờ bên trái sang bờ bên phải - Chuyển ông chồng thứ ba từ bờ bên trái sang bờ bên phải - Chuyển bà vợ thứ từ bờ bên trái sang bờ bên phải - Chuyển bà vợ thứ hai từ bờ bên trái sang bờ bên phải - Chuyển bà vợ thứ ba từ bờ bên trái sang bờ bên phải - Chuyển ông chồng thứ ông chồng thứ hai từ bờ bên trái sang bờ bên phải - Chuyển ông chồng thứ ông chồng thứ ba từ bờ bên trái sang bờ bên phải - Chuyển ông chồng thứ hai ông chồng thứ ba từ bờ bên trái sang bờ bên phải - Chuyển bà vợ thứ bà vợ thứ hai từ bờ bên trái sang bờ bên phải - Chuyển bà vợ thứ bà vợ thứ ba từ bờ bên trái sang bờ bên phải - Chuyển bà vợ thứ hai bà vợ thứ ba từ bờ bên trái sang bờ bên phải - Chuyển cặp vợ chồng thứ từ bờ bên phải sang bờ bên trái - Chuyển cặp vợ chồng thứ hai từ bờ bên phải sang bờ bên trái - Chuyển cặp vợ chồng thứ ba từ bờ bên phải sang bờ bên trái - Chuyển ông chồng thứ từ bờ bên phải sang bờ bên trái - Chuyển ông chồng thứ hai từ bờ bên phải sang bờ bên trái - Chuyển ông chồng thứ ba từ bờ bên phải sang bờ bên trái - Chuyển bà vợ thứ từ bờ bên phải sang bờ bên trái - Chuyển bà vợ thứ hai từ bờ bên phải sang bờ bên trái - Chuyển bà vợ thứ ba từ bờ bên phải sang bờ bên trái - Chuyển ông chồng thứ ông chồng thứ hai từ bờ bên phải sang bờ bên trái - Chuyển ông chồng thứ ông chồng thứ ba từ bờ bên phải sang bờ bên trái - Chuyển ông chồng thứ hai ông chồng thứ ba từ bờ bên phải sang bờ bên trái - Chuyển bà vợ thứ bà vợ thứ hai từ bờ bên phải sang bờ bên trái - Chuyển bà vợ thứ bà vợ thứ ba từ bờ bên phải sang bờ bên trái - Chuyển bà vợ thứ hai bà vợ thứ ba từ bờ bên phải sang bờ bên trái 3, Các ràng buộc: Các ông chồng phải cạnh bà vợ trừ khơng có người đàn ơng khác: + Ơng chồng thứ cạnh bà vợ thứ ( vợ mình) trừ khơng có người đàn ơng khác + Ơng chồng thứ hai cạnh bà vợ thứ ( vợ mình) trừ khơng có người đàn ơng khác + Ơng chồng thứ ba ln cạnh bà vợ thứ ( vợ mình) trừ khơng có người đàn ơng khác 4, Phương pháp cài đặt: Biểu diễn trạng thái dạng [A, B, C, D, E, F, G] ứng với: + vị trí A, B ơng chồng thứ nhất, bà vợ thứ + vị trí B, C ông chồng thứ hai, bà vợ thứ hai + vị trí E, F ông chồng thứ ba, bà vợ thứ ba + vị trí G thuyền Nếu G thuyền bờ bên trái, thuyền bờ bên phải Trạng thái ban đầu: [1,1,1,1,1,1,0] Trạng thái mục tiêu: [0,0,0,0,0,0,1] II, Chương trình prolog: goal([0,0,0,0,0,0,1]) %chuyen cap vo chong thu nhat trans([1,1,C,D,E,F,0],[0,0,C,D,E,F,1]) trans([0,0,C,D,E,F,1],[1,1,C,D,E,F,0]) %chuyen cap vo chong thu hai trans([A,B,1,1,E,F,0],[A,B,0,0,E,F,1]) trans([A,B,0,0,E,F,1],[A,B,1,1,E,F,0]) %chuyen cap vo chong thu ba trans([A,B,C,D,1,1,0],[A,B,C,D,0,0,1]) trans([A,B,C,D,0,0,1],[A,B,C,D,1,1,0]) %chuyen ong chong thu nhat voi ong chong thu hai trans([0,B,0,D,E,F,1],[1,B,1,D,E,F,0]) trans([1,B,1,D,E,F,0],[0,B,0,D,E,F,1]) %chuyen ong chong thu nhat vo ong chong thu ba trans([0,B,C,D,0,F,1],[1,B,C,D,1,F,0]) trans([1,B,C,D,1,F,0],[0,B,C,D,0,F,1]) %chuyen ong chong thu hai va ong chong thu ba trans([A,B,0,D,0,F,1],[A,B,1,D,1,F,0]) trans([A,B,1,D,1,F,0],[A,B,0,D,0,F,1]) %chuyen ba vo thu nhat va ba vo thu hai trans([A,1,C,1,E,F,0],[A,0,C,0,E,F,1]) trans([A,0,C,0,E,F,1],[A,1,C,1,E,F,0]) %chuyen ba vo thu nhat voi ba vo thu ba trans([A,1,C,D,E,1,0],[A,0,C,D,E,0,1]) trans([A,0,C,D,E,0,1],[A,1,C,D,E,1,0]) %chuyen ba vo thu hai va ba vo thu ba trans([A,B,C,1,D,1,0],[A,B,C,0,D,0,1]) trans([A,B,C,0,D,0,1],[A,B,C,1,D,1,0]) %chuyen ong chong thu nhat trans([1,A,B,C,D,E,0],[0,A,B,C,D,E,1]) trans([0,A,B,C,D,E,1],[1,A,B,C,D,E,0]) %chuyen ba vo thu nhat trans([A,1,B,C,D,E,0],[A,0,B,C,D,E,1]) trans([A,0,B,C,D,E,1],[A,1,B,C,D,E,0]) %chuyen ong chong thu hai trans([A,B,1,C,D,E,0],[A,B,0,C,D,E,1]) trans([A,B,0,C,D,E,1],[A,B,1,C,D,E,0]) %chuyen ba vo thu hai trans([A,B,C,1,D,E,0],[A,B,C,0,D,E,1]) trans([A,B,C,0,D,E,1],[A,B,C,1,D,E,0]) %chuyen ong chong thu ba trans([A,B,C,D,1,E,0],[A,B,C,D,0,E,1]) trans([A,B,C,D,0,E,1],[A,B,C,D,1,E,0]) %chuyen ba vo thu ba trans([A,B,C,D,E,1,0],[A,B,C,D,E,0,1]) trans([A,B,C,D,E,0,1],[A,B,C,D,E,1,0]) %cac trang thai nguy hiem dangerous([1,0,0,_,_,_,_]) dangerous([1,0,_,_,0,_,_]) dangerous([0,1,1,_,_,_,_]) dangerous([0,1,_,_,1,_,_]) dangerous([0,_,1,0,_,_,_]) dangerous([_,_,1,0,0,_,_]) dangerous([1,_,0,1,_,_,_]) dangerous([_,_,0,1,1,_,_]) dangerous([0,_,_,_,1,0,_]) dangerous([_,_,0,_,1,0,_]) dangerous([1,_,_,_,0,1,_]) dangerous([_,_,1,_,0,1,_]) dfs(X,P,[X|P]):-goal(X),! dfs(X,P,L):-trans(X,Y),X\=Y,\+dangerous(Y),\+member(Y,P),dfs(Y,[X|P],L) III, Kết thử nghiệm: X = [[0, 0, 0, 0, 0, 0, 1], [0, 1, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 1| ], [0, 1, 0, 1, 0| ], [0, 1, 0, 0| ], [1, 1, 0| ], [0, 0| ], [0| ], [ | ]| ] Action? [write] X = [[0, 0, 0, 0, 0, 0, 1], [0, 1, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 1, 1], [0, 1, 0, 1, 0, 1, 0], [0, 1, 0, 0, 0, 1, 1], [1, 1, 0, 0, 1, 1, 0], [0, 0, 0, 0, 1, 1, 1], [0, 0, 1, 1, 1, 1, 0], [0, 0, 1, 1, 0, 0, 1], [1, 1, 1, 1, 0, 0, 0], [1, 1, 0, 0, 0, 0, 1], [1, 1, 1, 0, 1, 0, 0], [1, 0, 1, 0, 1, 0, 1], [1, 0, 1, 1, 1, 1, 0], [0, 0, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 0]] ... dangerous([1,0,0,_,_,_,_]) dangerous([1,0,_,_,0,_,_]) dangerous([0,1,1,_,_,_,_]) dangerous([0,1,_,_,1,_,_]) dangerous([0,_,1,0,_,_,_]) dangerous([_,_,1,0,0,_,_]) dangerous([1,_,0,1,_,_,_]) dangerous([_,_,0,1,1,_,_])... thu hai va ong chong thu ba trans([A,B,0,D,0,F,1],[A,B,1,D,1,F,0]) trans([A,B,1,D,1,F,0],[A,B,0,D,0,F,1]) %chuyen ba vo thu nhat va ba vo thu hai trans([A,1,C,1,E,F,0],[A,0,C,0,E,F,1]) trans([A,0,C,0,E,F,1],[A,1,C,1,E,F,0])... dangerous([_,_,0,1,1,_,_]) dangerous([0,_,_,_,1,0,_]) dangerous([_,_,0,_,1,0,_]) dangerous([1,_,_,_,0,1,_]) dangerous([_,_,1,_,0,1,_]) dfs(X,P,[X|P]):-goal(X),! dfs(X,P,L):-trans(X,Y),X=Y,+dangerous(Y),+member(Y,P),dfs(Y,[X|P],L)

Ngày đăng: 26/02/2019, 19:29

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan