TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI BÁO CÁO BÀI TẬP LỚN TRÍ TUỆ NHÂN TẠO Đề tài Tìm hiểu các thuật toán tìm kiếm mù và ứng dụng vào bài toán 3 tu sĩ và 3 con quỷ Giảng viên hướng dẫn ThS Lê Thị Thủy Sin.
TRƯỜNG ĐẠI HỌC NG ĐẠI HỌC I HỌC C CÔNG NGHIỆP P HÀ NỘII BÁO CÁO BÀI TẬP LỚN TRÍ TUỆ NHÂN TẠOP LỚN TRÍ TUỆ NHÂN TẠON TRÍ TUỆP NHÂN TẠI HỌC O Đề tài: tài: Tìm hiểu thuật tốn tìm kiếm mù ứng dụng vào bàiu thuật tốn tìm kiếm mù ứng dụng vào bàit tốn tìm kiếm mù ứng dụng vào bàim mù ứng dụng vào bàing dụng vào bàing vào toán tu sĩ quỷ Giảng viên hướng dẫn:ng viên hướng dẫn:ng dẫn:n: ThS.Lê Thị Thủy Thủyy Sinh viên thực hiệnc hiệnn: ĐặngViệt AnhngViệt Anht Anh Trương Ngọc Đăng 2020600505ng Ngọc Đăng 2020600505c Đăng Đỗ Quốc Ca Quốc Ca c Ca 2020601857 2020600505 2020601695 Mục Lụcc Lục Lụcc LỜNG ĐẠI HỌC I NÓI ĐẦUU CHƯƠNG 1: TỔNG QUAN VỀ CÁC THUẬT TỐN TÌM KIẾM MÙ TRONG ĐỀ TÀI CÓ NG 1: TỔNG QUAN VỀ CÁC THUẬT TỐN TÌM KIẾM MÙ TRONG ĐỀ TÀI CĨ NG QUAN VỀ CÁC THUẬT TỐN TÌM KIẾM MÙ TRONG ĐỀ TÀI CĨ CÁC THUẬP LỚN TRÍ TUỆ NHÂN TẠOT TỐN TÌM KIẾM MÙ TRONG ĐỀ TÀI CĨ M MÙ TRONG ĐỀ CÁC THUẬT TỐN TÌM KIẾM MÙ TRONG ĐỀ TÀI CÓ TÀI CÓ THỂ ÁP DỤNG ÁP DỤNGNG 1.1 Thuật tốn tìm kiếm theo chiều rộng (BFS) 1.1.1 Ý tưởng 1.1.2 Thuật toán .4 1.2 Thuật tốn tìm kiếm theo chiều sâu (DFS) 1.2.1 Ý tưởng 1.2.2 Thuật toán 1.3 Thuật tốn tìm kiếm sâu dần (IDS) 1.3.1 Ý tưởng 1.3.2 Thuật toán .6 CHƯƠNG 1: TỔNG QUAN VỀ CÁC THUẬT TỐN TÌM KIẾM MÙ TRONG ĐỀ TÀI CĨ NG 2: TÌM KIẾM MÙ TRONG ĐỀ TÀI CĨ M THEO CHIỀ CÁC THUẬT TỐN TÌM KIẾM MÙ TRONG ĐỀ TÀI CĨ U RỘING (BFS) TRONG BÀI TỐN TU SĨ VÀ CON QUỶ 2.1 2.2 2.3 Phân tích toán .7 Thuật toán Best-first Search .7 Giải thuật tốn qua sơng áp dụng thuật toán Best-first Search TỔNG QUAN VỀ CÁC THUẬT TỐN TÌM KIẾM MÙ TRONG ĐỀ TÀI CÓ NG KẾM MÙ TRONG ĐỀ TÀI CÓ T 16 1|Trang LỜNG ĐẠI HỌC I NÓI ĐẦUU Ngày với phát triển khoa học kỹ thuật phát triển mạnhi phát triển khoa học kỹ thuật phát triển mạnh phát triểu thuật tốn tìm kiếm mù ứng dụng vào bàin tài: khoa học Đăng 2020600505c kỹ thu ật tốn tìm kiếm mù ứng dụng vào bàit s ự phát triển khoa học kỹ thuật phát triển mạnh phát tri ểu thuật tốn tìm kiếm mù ứng dụng vào bàin m ạnhnh mẽ c a nề tài: n cơng nghệt Anh thơng tin Trong q trình cơng nghi ệt Anhp hóa hi ệt Anhn đ ạnhi hóa đ t nưới phát triển khoa học kỹ thuật phát triển mạnhc cơng nghệt Anh thơng tin khơng thểu thuật tốn tìm kiếm mù ứng dụng vào thiếm mù ứng dụng vào bàiu Cùng v ới phát triển khoa học kỹ thuật phát triển mạnhi s ự phát triển khoa học kỹ thuật phát triển mạnh đ ờii c a ngành khoa học Đăng 2020600505c phụng vào bàic vụng vào cho lợi ích nhu cầu người.Với quái ích nhu cầu người.Với quáu c a ngườii.V ới phát triển khoa học kỹ thuật phát triển mạnhi trình phát triểu thuật tốn tìm kiếm mù ứng dụng vào bàin c a khoa học Đăng 2020600505c kỹ thuật tốn tìm kiếm mù ứng dụng vào bàit cơng nghệt Anh ngành cơng ngh ệt Anh thơng tin đóng vai trị quan trọc Đăng 2020600505ng việt Anhc giải vấn đề khó khăn côngi quyếm mù ứng dụng vào bàit v n đề tài: khó khăn cơng việt Anhc như: kếm mù ứng dụng vào toán, quải vấn đề khó khăn cơngn lý nhân phát triển khoa học kỹ thuật phát triển mạnh, điề tài: u khiểu thuật tốn tìm kiếm mù ứng dụng vào bàin tự phát triển khoa học kỹ thuật phát triển mạnh động hóa… ng hóa… Trên thếm mù ứng dụng vào giới phát triển khoa học kỹ thuật phát triển mạnhi Việt Nam, công nghệ thông tin trở thành ngày Việt Anht Nam, công nghệt Anh thông tin trở Việt Nam, công nghệ thông tin trở thành ngày thành mộng hóa… t ngày cơng nghiệt Anhp mũi nhọc Đăng 2020600505n, mộng hóa… t ngày khoa học Đăng 2020600505c kỹ thuật tốn tìm kiếm mù ứng dụng vào bàit khơng th ểu thuật tốn tìm kiếm mù ứng dụng vào thi ếm mù ứng dụng vào bàiu việt Anhc áp dụng vào bàing vào hoạnht động hóa… ng xã hộng hóa… i khoa h ọc Đăng 2020600505c.N ề tài: n công nghi ệt Anhp hi ệt Anhn mang tính ch t tự phát triển khoa học kỹ thuật phát triển mạnh động hóa… ng hóa cao kèm theo phát triển khoa học kỹ thuật phát triển mạnh địi hỏi việc ứng dụng cơngi tài: việt Anhc ứng dụng vào bàing d ụng vào bàing công nghệt Anh thông tin cho lĩnh vự phát triển khoa học kỹ thuật phát triển mạnhc Vật tốn tìm kiếm mù ứng dụng vào bàiy đểu thuật tốn tìm kiếm mù ứng dụng vào có thểu thuật tốn tìm kiếm mù ứng dụng vào đáp ứng dụng vào bàing tốc Ca t yêu cầu củang yêu cầu người.Với quáu c a ngày cao hơng Ngọc Đăng 2020600505n lĩnh vự phát triển khoa học kỹ thuật phát triển mạnhc tự phát triển khoa học kỹ thuật phát triển mạnh động hóa… ng hóa ngườii ta tiếm mù ứng dụng vào bàin hành lật tốn tìm kiếm mù ứng dụng vào bàip trình cho yêu cầu củang cỗ Quốc Ca máy, yêu cầu củang ngườii máy có thểu thuật tốn tìm kiếm mù ứng dụng vào tư ngườii nhằm giảm bớtm giải vấn đề khó khăn cơngm bới phát triển khoa học kỹ thuật phát triển mạnht gánh nặngViệt Anhng công việt Anhc Việt Anhc ứng dụng vào bàing dụng vào bàing trí tuệt Anh nhân tạnho tạnho mộng hóa… t cuộng hóa… c cách mạnhng l ới phát triển khoa học kỹ thuật phát triển mạnhn vi ệt Anhc tìm hiểu thuật tốn tìm kiếm mù ứng dụng vào bàiu chinh phụng vào bàic yêu cầu củang điề tài: u mà ngườii không dám mơng Ngọc Đăng 2020600505 tới phát triển khoa học kỹ thuật phát triển mạnhi Đó nh ững yêu cầu củang robot thông minh, yêu cầu củang cỗ Quốc Ca máy thơng minh có thểu thuật tốn tìm kiếm mù ứng dụng vào thay th ếm mù ứng dụng vào ng ườii làm vi ệt Anhc yêu cầu củang môi trườing khắc nghiệt hay chinh phục không gian bao la.Và bênc nghiệt Anht hay chinh phụng vào bàic không gian bao la.Và bên cạnhnh việt Anhc ứng dụng vào bàing dụng vào bàing yêu cầu củang thành tự phát triển khoa học kỹ thuật phát triển mạnhu vào lĩnh v ự phát triển khoa học kỹ thuật phát triển mạnhc giải vấn đề khó khăn cơngi trí c a ngườii Đó u cầu củang vật tốn tìm kiếm mù ứng dụng vào bàit robot, yêu cầu củang trò chơng Ngọc Đăng 2020600505i Đó yêu cầu củang ứng dụng vào bàing d ụng vào bàing l ới phát triển khoa học kỹ thuật phát triển mạnhn lao c a trí tuệt Anh nhân tạnho vào c a sốc Ca ng c a ngườii Trong tật tốn tìm kiếm mù ứng dụng vào bàip lới phát triển khoa học kỹ thuật phát triển mạnhn chúng em tìm hiểu thuật tốn tìm kiếm mù ứng dụng vào bàiu thuật tốn tìm kiếm mù ứng dụng vào bàit tồn Tìm kiếm mù ứng dụng vào bàim theo chiề tài: u r ộng hóa… ng (Best-first Search) ứng dụng vào bàing dụng vào bàing vào toán tu sĩ quỷ Đây mộng hóa… t chương Ngọc Đăng 2020600505ng trình nhỏi việc ứng dụng cơng có thểu thuật tốn tìm kiếm mù ứng dụng vào chưa đượi ích nhu cầu người.Với quác hoàn thiệt Anhn quan trọc Đăng 2020600505ng hơng Ngọc Đăng 2020600505n giúp mọc Đăng 2020600505i ngườii hiểu thuật tốn tìm kiếm mù ứng dụng vào bàiu đượi ích nhu cầu người.Với quác vai trò c a việt Anhc ứng dụng vào bàing dụng vào bàing trí tuệt Anh nhân tạnho cuộng hóa… c sốc Ca ng.MặngViệt Anhc dù r t cốc Ca gắc nghiệt hay chinh phục không gian bao la.Và bênng đểu thuật tốn tìm kiếm mù ứng dụng vào hồn thành cơng việt Anhc, xong thờii gian có hạnhn kiếm mù ứng dụng vào bàin thứng dụng vào bàic chưa nhiề tài: u nên việt Anhc chương Ngọc Đăng 2020600505ng trình cịn nhiề tài: u thiếm mù ứng dụng vào bàiu sót cầu người.Với qn đượi ích nhu cầu người.Với quác bổ xung Vì chúng xung Vì vật tốn tìm kiếm mù ứng dụng vào bàiy chúng em mong nhật tốn tìm kiếm mù ứng dụng vào bàin đượi ích nhu cầu người.Với quác yêu cầu củang đóng góp c a thầu người.Với quáy cô bạnhn bè đểu thuật tốn tìm kiếm mù ứng dụng vào chương Ngọc Đăng 2020600505ng trình ngày hoàn thiệt Anhn hơng Ngọc Đăng 2020600505n giúp ích đượi ích nhu cầu người.Với quác nhiề tài: u hơng Ngọc Đăng 2020600505n Xin chân thành cải vấn đề khó khăn cơngm ơng Ngọc Đăng 2020600505n 2|Trang Chương 1: Tổng quan thuật tốn tìm kiếm mù đề tàing 1: Tổng quan thuật tốn tìm kiếm mù đề tàing quan thuật tốn tìm kiếm mù đề tài thuật tốn tìm kiếm mù đề tàit tốn tìm kiếm mù đề tàim mù đề thuật tốn tìm kiếm mù đề tài tài áp dụng áp dục Lụcng 1.1 Thuật tốn tìm kiếm mù đề tàit tốn tìm kiếm mù đề tàim theo chiề thuật tốn tìm kiếm mù đề tàiu rộng (BFS)ng (BFS) Thuật toán duyệt đồ thị ưu tiên chiều rộng (Breadth-first search - BFS) thuật tốn tìm kiếm thiết yếu đồ thị Mà đó, đỉnh gần đỉnh xuất phát duyệt trước Ứng dụng BFS: - Giúp ta giải tốt số tốn thời gian khơng gian tối thiểu - Dùng để tìm thành phần liên thơng đồ thị, kiểm tra đồ thị hai phía, … Hình 1: Thứ tự thăm đỉnh BFS 1.1.1 Ý tưởng.ng Đầu tiên ta thăm đỉnh nguồn s Việc thăm đỉnh s phát sinh thứ tự thăm đỉnh (u1, u2, …, up) kề với s (những đỉnh gần s nhất) Tiếp theo, ta thăm đỉnh u1, thăm đỉnh u1 lại phát sinh yêu cầu thăm đỉnh (v1, v2, …, vq) kề với u1 Nhưng rõ ràng đỉnh v “xa” s đỉnh u nên chúng thăm tất đỉnh u thăm Tức thứ tự thăm đỉnh là: s, u1, u2, …, up, v1, v2, …, vq, … 3|Trang Hình 2: Thứ tự thăm đỉnh 1.1.2 Thuật tốn tìm kiếm mù đề tàit tốn Thuật tốn sử dụng cấu trúc liệu hàng đợi (queue) để chứa đỉnh duyệt theo thứ tự ưu tiên chiều rộng Bước 1: Khởi tạo Các đỉnh trạng thái chưa đánh dấu Ngoại trừ đỉnh nguồn s đánh dấu Một hàng đợi ban đầu chứa phần tử s Bước 2: Lặp lại bước sau hàng đợi rỗng: Lấy đỉnh u khỏi hàng đợi Xét tất đỉnh v kề với u mà chưa đánh dấu, với đỉnh vv đó: o Đánh dấu v thăm o Lưu lại vết đường từ u đến v o Đẩy v vào hàng đợi (đỉnh v chờ duyệt bước sau) Bước 3: Truy vết tìm đường 1.2 Thuật tốn tìm kiếm mù đề tàit tốn tìm kiếm mù đề tàim theo chiề thuật tốn tìm kiếm mù đề tàiu sâu (DFS) Tìm kiếm ưu tiên chiều sâu hay tìm kiếm theo chiều sâu (Depth-first search DFS): Tương tự thủ tục tìm kiếm theo chiều rộng, DFS khác danh sách chứa đỉnh xet Open có kiểu LIFO (thay bổ sung đỉnh vào cuối tập Open ta bổ sung A(n) vào tập đầu Open) Do đó, bổ sung đỉnh lấy đỉnh ta thực đầu 4|Trang 1.2.1 Ý tưởngng DFS đồ thị vô hướng thị vô hướng vô hưới phát triển khoa học kỹ thuật phát triển mạnhng giốc Ca ng khám phá mê cung với phát triển khoa học kỹ thuật phát triển mạnhi mộng hóa… t cuộng hóa… n thùng sơn đỏ để đánh dấu, tránh bị lạc Trong mộng hóa… t thùng sơng Ngọc Đăng 2020600505n đỏi việc ứng dụng công đểu thuật tốn tìm kiếm mù ứng dụng vào đánh d u, tránh bị vơ hướng lạnhc Trong mỗ Quốc Ca i đỉ thùng sơn đỏ để đánh dấu, tránh bị lạc Trong đónh s đồ thị vơ hướng thị vơ hướng tượi ích nhu cầu người.Với quáng trưng cho mộng hóa… t cửa mê cung.a mê cung Ta bắc nghiệt hay chinh phục không gian bao la.Và bênt đầu người.Với quáu từ đỉ thùng sơn đỏ để đánh dấu, tránh bị lạc Trong đónh s, buộng hóa… c đầu người.Với quáu cuộng hóa… n thùng sơn đỏ để đánh dấu, tránh bị lạc Trong vào s đánh đ u đỉ thùng sơn đỏ để đánh dấu, tránh bị lạc Trong đónh "đã thăm" Sau ta đánh d u s đỉ thùng sơn đỏ để đánh dấu, tránh bị lạc Trong đónh hiệt Anhn hành u Bây giời, nếm mù ứng dụng vào bàiu ta theo cạnhnh (u,v) b t kỳ Nếm mù ứng dụng vào bàiu cạnhnh (u,v) dẫn đếnn đếm mù ứng dụng vào bàin đỉ thùng sơn đỏ để đánh dấu, tránh bị lạc Trong đónh "đã thăm" v, ta quay trở Việt Nam, công nghệ thông tin trở thành ngày tài: u Nếm mù ứng dụng vào bàiu đỉ thùng sơn đỏ để đánh dấu, tránh bị lạc Trong đónh v đỉ thùng sơn đỏ để đánh dấu, tránh bị lạc Trong đónh phát triển khoa học kỹ thuật phát triển mạnhi, ta di chuyểu thuật tốn tìm kiếm mù ứng dụng vào bàin đếm mù ứng dụng vào bàin v lăn cuộng hóa… n thùng sơn đỏ để đánh dấu, tránh bị lạc Trong theo Đánh d u v "đã thăm" ĐặngViệt Anht v thành đỉ thùng sơn đỏ để đánh dấu, tránh bị lạc Trong đónh hiệt Anhn hành lặngViệt Anhp lạnhi bưới phát triển khoa học kỹ thuật phát triển mạnhc Cuốc Ca i cùng, ta có thểu thuật tốn tìm kiếm mù ứng dụng vào đếm mù ứng dụng vào bàin mộng hóa… t đỉ thùng sơn đỏ để đánh dấu, tránh bị lạc Trong đónh mà tạnhi t t cải vấn đề khó khăn cơng cạnhnh kề tài: với phát triển khoa học kỹ thuật phát triển mạnhi đề tài: u dẫn đếnn đếm mù ứng dụng vào bàin đỉ thùng sơn đỏ để đánh dấu, tránh bị lạc Trong đónh "đã thăm" Khi đó, ta quay lui bằm giảm bớtng cách cuộng hóa… n ngượi ích nhu cầu người.Với quác cuộng hóa… n thùng sơn đỏ để đánh dấu, tránh bị lạc Trong quay lạnhi cho đếm mù ứng dụng vào bàin trở Việt Nam, công nghệ thông tin trở thành ngày lạnhi mộng hóa… t đỉ thùng sơn đỏ để đánh dấu, tránh bị lạc Trong đónh kề tài: với phát triển khoa học kỹ thuật phát triển mạnhi mộng hóa… t cạnhnh cịn chưa đượi ích nhu cầu người.Với quác khám phá Lạnhi tiếm mù ứng dụng vào bàip tụng vào bàic quy trình khám phá Khi trở Việt Nam, công nghệ thông tin trở thành ngày tài: s khơng cịn cạnhnh kề tài: với phát triển khoa học kỹ thuật phát triển mạnhi chưa bị vơ hướng khám phá lúc DFS dừng 1.2.2 Thuật toánt toán Bước 1: Chèn trạng thái đầu vào ngăn xếp Bước 2: Duyệt trạng thái cao ngăn xếp kiểm tra Nếu trạng thái đích, dừng trình tìm kiếm trả kết Nếu khơng phải trạng thái đích chưa đạt độ sâu tối đa, chèn tất trạng thái di chuyển từ trạng thái duyệt vào ngăn xếp, xóa trạng thái duyệt Nếu khơng phải trạng thái đích đạt độ sâu tối đa, xóa trạng thái duyệt Bước 3: Nếu ngăn xếp không rỗng, quay bước Nếu ngăn xếp rỗng, thơng báo thuật tốn thất bại, khơng tìm đích 1.3 Thuật tốn tìm kiếm mù đề tàit tốn tìm kiếm mù đề tàim sâu dần (IDS)n (IDS) Kỹ thuật tìm kiếm sâu dần thực việc tìm kiếm với độ sâu mức giới hạn d Nếu khơng tìm nghiệm ta tăng độ sâu lên d+1 lại tìm kiếm theo độ sâu tới mức d+1 Quá trình lặp lại với d 1, 2, đến độ sâu max Kỹ thuật tìm kiếm sâu dần thường thực tìm kiếm chứa nhánh vơ hạn, sử dụng tìm kiếm theo độ sâu ta mắc kẹt nhánh (thuật tốn khơng dừng) khơng tìm nghiệm 1.3.1 Ý tưởngng Đầu tiên ta thăm đỉnh nguồn s 5|Trang Việc thăm đỉnh s phát sinh thứ tự thăm đỉnh (u1, u2, …, up) kề với s (những đỉnh gần s nhất) Tiếp theo, ta thăm đỉnh u1, thăm đỉnh u1 lại phát sinh yêu cầu thăm đỉnh (v1, v2, …, vq) kề với u1 Nhưng không giống BFS, ta tiếp tục thăm đỉnh v1 Giả dụ độ sâu tối đa 2, tức từ s đến u1 đến v1 mà chưa tìm đích, thuật tốn khơng phát sinh thêm đỉnh v1 mà quay ngược lên u1 duyệt tiếp u1 v1, v2, …, vq Tức thứ tự thăm đỉnh độ sâu là: s, u1, v1, v2, …, vq, u2, t1, t2, …, tr, u3, Nếu duyệt hết đỉnh với độ sâu tối đa mà chưa tìm đích, thuật tốn tự động tăng độ sâu quay lại đỉnh v1, sinh đỉnh duyệt đỉnh 1.3.2 Thuật tốnt tốn Bước 1: Chèn trạng thái đầu vào ngăn xếp Bước 2: Duyệt trạng thái cao ngăn xếp kiểm tra Nếu trạng thái đích, dừng q trình tìm kiếm trả kết Nếu trạng thái đích chưa đạt độ sâu tối đa, chèn tất trạng thái di chuyển từ trạng thái duyệt vào ngăn xếp, xóa trạng thái duyệt khỏi ngăn xếp Nếu trạng thái đích đạt độ sâu tối đa, lưu trạng thái duyệt vào nhớ tạm, xóa trạng thái duyệt khỏi ngăn xếp Bước 3: Nếu ngăn xếp không rỗng, quay bước Nếu ngăn xếp rỗng, lấy trạng thái từ ô nhớ tạm, tặng độ sâu, quay bước 6|Trang Chương 1: Tổng quan thuật tốn tìm kiếm mù đề tàing 2: Tìm kiếm mù đề tàim theo chiề thuật tốn tìm kiếm mù đề tàiu rộng (BFS)ng (BFS) toán tu sĩ quỷ 2.1 Phân tích tốn a) Phát biểu tồn Tại bến sơng có thầy tu quỷ muốn qua sông Tại thời điểm thuyền chở tối đa khách Nếu bờ nào, bên bên số quỷ phải bé số thầy tu, ngược lại quỷ ăn thịt thầy tu Tìm cách để giải tốn Giải tốn thuật tốn Best-first Search để tìm trạng thái cuối b) Mơ tả tốn Bài tốn qua sơng có input thầy tu quỷ, điều kiện có người qua số thầy tu bờ khơng số quỷ Mục tiêu đưa thầy tu quỷ sang bên sơng Dựa vào điều kiện có trường hợp đưa từ bờ trái sang bờ phải có trường hợp đưa lại bờ trái Khi đó, tốn qua sơng trở thành tốn tìm kiếm lựa chọn tốt 2.2 Thuật tốnt tốn Best-first Search a) Giới thiệu thuật tồn Trong khoa học máy tính, thuật tốn Best-first Search thuật tốn tìm kiếm theo bề rộng (Breadth First Search) hướng dẫn hàm đánh giá Tư tưởng thuật tốn việc tìm kiếm bắt đầu nút gốc tiếp tục cách duyệt nút có giá trị hàm đánh giá thấp so với nút lại nằm hàng đợi b) Mơ tả thuật tốn tốn - Bài tốn có hai trạng thái: ● Trạng thái bờ trái {số thầy tu, số quỷ} ● Trạng thái bờ phải {số thầy tu, số quỷ} Mỗi trạng thái có cách thay đổi: ● Trạng thái bờ trái: Di chuyển thầy tu quỷ qua bờ phải ● Trạng thái bờ phải: Di chuyển thầy tu quỷ lại bờ trái Mỗi cách thay đổi trạng thái có cách thay đổi cụ thể: ● Di chuyển thầy tu quỷ qua bờ phải có ba trường hợp thay đổi trạng thái: + Đưa thầy tu qua bờ phải 7|Trang - 2.3 + Đưa quỷ qua bờ phải + Đưa thầy tu quỷ qua bờ phải ● Di chuyển thầy tu quỷ lại bờ trái có hai trường hợp thay đổi trạng thái: + Đưa quỷ bờ trái + Đưa thầy tu quỷ bờ trái Mỗi lần thực thay đổi trạng thái cần phải kiểm tra trạng thái có thay đổi hay không? ● Số thầy tu phải lớn số quỷ số thầy tu trạng thái Giải thuật tốn qua sơng áp dụng thuật tốn Best-first Searchi thuật tốnt tốn qua sơng áp dụng thuật toán Best-first Searchng thuật toánt toán Best-first Search Cài đặt thuật tốn - Viết ngơn ngữ C++ Chương trình giải tốn qua sông #include #include using namespace std; int brinkLeft[2]; int brinkRight[2]; static int count = 0; void init(int n) { // brinkLeft[0]: monk, brinkLeft[1]: devil // brinkRight[0]: monk, brinkRight[1]: devil brinkLeft[0] = n; brinkLeft[1] = n; brinkRight[0] = 0; 8|Trang brinkRight[1] = 0; } bool check(int monkLeft, int devilLeft, int monkRight, int devilRight, char mode) { if(monkLeft == && devilLeft == && monkRight == && devilRight == && mode == 'Q') return false; else if((monkLeft >= devilLeft || monkLeft == 0) && (monkLeft >= && devilLeft >= 0) && (monkRight >= devilRight || monkRight == 0) && (monkRight >= && devilRight >= 0)) return true; return false; } void brinkLeftToRight(int n) { int tempLeft[2], tempRight[2]; for(int i = 0; i < 3; i++) { tempLeft[0] = brinkLeft[0]; tempLeft[1] = brinkLeft[1]; tempRight[0] = brinkRight[0]; tempRight[1] = brinkRight[1]; switch(i) { case 0: { tempLeft[0] -= 2; 9|Trang tempRight[0] += 2; break; } case 1: { tempLeft[1] -= 2; tempRight[1] += 2; break; } case 2: { tempLeft[0] ; tempLeft[1] ; tempRight[0]++; tempRight[1]++; break; } default: break; } if(check(tempLeft[0], tempLeft[1], tempRight[0], tempRight[1], 'Q')) { count++; brinkLeft[0] = tempLeft[0]; brinkLeft[1] = tempLeft[1]; brinkRight[0] = tempRight[0]; brinkRight[1] = tempRight[1]; switch(i) { case 0: { cout