báo cáo chuyên đề học phần môn nhập môn trí tuệ nhân tạo đề tài thuật toán a ứng dụng trong bài toán ghép tranh

24 12 0
báo cáo chuyên đề học phần môn nhập môn trí tuệ nhân tạo đề tài thuật toán a ứng dụng trong bài toán ghép tranh

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO CHUN ĐỀ HỌC PHẦN MƠN NHẬP MƠN TRÍ TUỆ NHÂN TẠO ĐỀ TÀI: Thuật toán A* ứng dụng toán ghép tranh Sinh viên thực : KHỔNG VĂN PHONG NGUYỄN VĂN HẠNH Giảng viên hướng dẫn : PHẠM HỒNG ĐỨC Ngành : CÔNG NGHỆ THÔNG TIN Chun ngành : CƠNG NGHỆ PHẦN MỀM Lớp Khóa : D14CNPM6 : 2019-2024 Hà nội, tháng 12 năm 2021 PHIẾU CHẤM ĐIỂM Sinh viên thực hiện: Họ tên Chữ ký Ghi Khổng Văn Phong Nguyễn Văn Hạnh Giảng viên chấm: Họ tên Điểm Chữ ký Ghi Giảng viên chấm 1: Giảng viên chấm 2: MỤC LỤC Lời nói đầu I- BÀI TOÁN GHÉP TRANH II- THUẬT TOÁN A* 1- Giới thiệu thuật toán 2- Mơ tả thuật tốn 3- Cài đặt thuật toán III- CÀI ĐẶT BÀI TOÁN Trạng thái xuất phát Cài đặt A* Hàm ước lượng heuristic 12 3.1 Các hàm ước lượng heuristic 12 3.2 Ví dụ so sánh hàm heuristic 14 III- KẾT QUẢ 15 1- Giao diện 15 2- So sánh 16 3- Nhận xét 21 IV- KẾT LUẬN 22 Tài liệu tham khảo 23 PHIẾU GIAO NHIỆM VỤ BÀI TẬP LỚN Error! Bookmark not defined Lời nói đầu Đây tài liệu dùng để biểu diễn thiết kế giải tốn “Trị chơi ghép tranh” sử dụng thuật tốn A* tơi thiết kế lập trình Tài liệu giúp ta có nhìn tồn vẹn chức phần mềm ứng dụng thuật toán A* để giải toán Do thời gian có hạn nên đồ án khơng thể tối ưu tồn khơng gian trạng thái tốn Tuy nhiên, nhóm nghiên cứu hồn thiện thời gian sớm Nhóm thực đề tài nhằm mục đích xây dựng hệ thống giải tốn thực tế dựa chiến lược tìm kiếm heuristic xây dựng trị chơi ứng dụng giải trí Trong q trình thực đề tài khơng tránh khỏi sai sót, nhóm tơi mong nhận góp ý đánh giá thầy Xin chân thành cảm ơn ! I- BÀI TOÁN GHÉP TRANH Game ghép tranh(N-Puzzle) trị chơi hay trí tuệ, biếết đếến với nhiếều phiên tên gọi khác như: 8-puzzle, 15-puzzle, Gem puzzle, Boss puzzle Bài toán N-puzzle v ấến đếề cổ điển cho mơ hình thuật tốn liên quan đếến trí tuệ nhân tạo Bài tốn đặt phải tìm đường từ trạng thái tới trạng thái đích Và vấẫn chưa có thuật tốn tốếi ưu để giải toán Phấền mếềm N-Puzzle chương trình xây dựng trị chơi giải quyếết toán Phấền mếềm viếết nếền Java, sử dụng giao diện đốề họa để mơ trị chơi thuật tốn A* để tìm đường Người dùng sử dụng chuột/bàn phím chơi với kích thước khác với hình ảnh khác sử dụng chức tìm lời giải nhờ thuật tốn A* u cấều xây dựng bảng vuông n hàng, n cột Bảng gốềm ô trốếng n2-1 ô chứa sốế phạm vi [1, n2-1] Xuấết phát từ cách xếếp bấết kì, di chuyển ô trốếng lên trên, xuốếng dưới, sang phải, sang trái để đưa vếề trạng thái đích Sử dụng chuột hay phím chức để di chuyển trốếng Chương trình có chức tự động chơi bấết kì trạng thái Mốẫi trạng thái bảng sốế hoán vị n2 phấền tử Ở ta mở rộng băềng việc thêm hình ảnh vào game găến sốế vào hình ảnh để gợi ý cho người chơi Ở trạng thái ban đấều, ô săếp xếếp ngấẫu nhiên, nhiệm vụ người chơi tìm cách đưa chúng vếề trạng thái đích (ơ đấều trốếng, khác theo thứ tự tăng dấền từ trái qua phải, từ xuốếng dưới) Để đơn giản cách tiếếp cận tốn, ta giả định trốếng di chuyển bảng di chuyển đếến vị trí khác Như trạng thái bấết kì có tốếi đa cách di chuyển đếến trạng thái khác (trái, phải, lên, xuốếng) 1.1.1: Trạng thái băết đấều đích Bước di chuyển trốếng: 1.1.2: Bước di chuyển trốếng II- THUẬT TỐN A* 1- Giới thiệu thuật toán Thuật toán A* mô tả lấền đấều tiên năm 1986 Peter Hart, Nils Nilson Bertram Raphael Trong báo cáo c họ, thuật toán gọi thuật toán A, sử dụng thuật toán với hàm đánh giá heuristic thích h ợp sẽẫ thu hoạt động tốếi ưu, mà có tên A* Trong khoa học máy tính, A* thuật tốn tìm kiếếm đốề thị Thuật tốn tìm đường từ nút khởi đấều tới nút đích cho trước (hoặc tới nút thỏa mãn điếều kiện đích) Thuật toán sử dụng đánh giá heuristic để xếếp loại nút theo ước lượng vếề tuyếến đường tốết nhấết qua nút Thuật tốn duyệt nút theo thứ tự đánh giá heuristic Do đó, thuật tốn A* ví dụ tìm kiếếm theo lựa chọn tốết nhấết (best-first search) Xét tốn tìm đường – tốn mà A* thường dùng để giải A* xây dựng tăng dấền tấết tuyếến đường từ điểm xuấết phát tìm thấếy đường chạm tới đích Tuy nhiên, tấết thuật tốn tìm kiếếm có thơng tin xây dựng tuyếến đường dấền vếề đích Để biếết tuyếến đường có khả sẽẫ dấẫn tới đích, A* sử dụng hàm đánh giá heuristic vếề khoảng cách từ điểm bấết kỳ đích Trong trường hợp tìm đường đi, đánh giá khoảng cách đường chim bay đánh giá xấếy xỉ thường dùng cho khoảng cách đường giao thông Điểm khác biệt A* đốếi với tìm kiếếm theo lựa chọn tốết nhấết cịn tính đếến khoảng cách qua Điếều làm cho A* đấềy đủ tốếi ưu, nghĩa A* sẽẫ ln tìm thấếy đường ngăến nhấết nếếu tốền đường thếế A* không đảm bảo sẽẫ chạy nhanh thuật tốn tìm kiếếm đơn giản Trong mơi trường dạng mê cung, cách nhấết để đếến đích trước hếết phải vếề phía xa đích cuốếi quay trở lại Trong trường hợp đó, việc thử nút theo thứ tự “gấền đích thử trước” gây tốến thời gian 2- Mơ tả thuật tốn Giả sử n trạng thái đạt tới (có đường từ trạng thái ban đấều n0 tới n) Ta xác định hàm đánh giá: f(n) = g(n) + h(n) • g(n) chi phí từ nút gốếc n0 tới nút n • h(n) chi phí ước lượng từ nút n tới đích • f(n) chi phí tổng thể ước lượng đường qua nút n đếến đích Một ước lượng heuristic h(n) xem chấếp nhận nếếu với nút n: ≤ h(n) ≤ h*(n) Trong h*(n) chi phí thật (thực tếế) để từ nút n đếến đích 3- Cài đặt thuật toán OPEN(FRINGE): tập chứa trạng thái sinh chưa xét đếến OPEN hàng đợi ưu tiên mà phấền tử có độ ưu tiên cao nhấết phấền tử tốết nhấết CLOSE: tập chứa trạng thái xét đếến Chúng ta cấền lưu trữ trạng thái nhớ để phòng trường hợp có trạng thái tạo lại trùng với trạng thái mà ta xét đếến trước Khi xét đếến trạng thái ni OPEN bên cạnh việc lưu trữ giá trị g, h, f để phẩn ánh độ tốết trạng thái đó, A* cịn lưu trữ thêm hai thơng sốế sau: • Trạng thái cha trạng thái ni (ký hiệu Cha(ni)): cho biếết trạng thái dấẫn đếến trạng thái ni • Danh sách trạng thái tiếếp theo ni: danh sách lưu trữ trạng thái kếế tiếếp nk ni cho chi phí đếến nk thông qua ni từ trạng thái ban đấều thấếp nhấết Thực chấết danh sách tính từ thuộc tính Cha trạng thái lưu trữ Tuy nhiên việc tính tốn mấết nhiếều thời gian (khi tập OPEN, CLOSE mở rộng) nên người ta thường lưu trữ danh sách riêng Thuật toán A*: Function Astar (n0, ngoal) Đặt OPEN n0 Đặt g(n0) = h(n0) = f(n0) = Đặt CLOSE tập rốẫng Lặp lại bước sau cho đếến gặp điếều kiện dừng 2.a Nếếu OPEN rốẫng: tốn vơ nghiệm, 2.b Ngược lại, chọn ni OPEN cho f(ni) cho f(ni)min 2.b.1 Lấếy ni khỏi OPEN đưa ni vào CLOSE 2.b.2 Nếếu ni đích ngoal thơng báo lời giải ni 2.b.3 Nếếu ni khơng phải đích Tạo danh sách tấết trạng thái kếế tiếếp ni Gọi trạng thái nk Với mốẫi nk, làm bước sau: 2.b.3.1 Tính g(nk) = g(ni) + cost(ni, nk); h(nk); f(nk) = g(nk) + h(nk) 2.b.3.2 Đặt Cha(nk) = ni 2.b.3.3 Nếếu nk chưa xuấết OPEN CLOSE thêm n k vào OPEN III- CÀI ĐẶT BÀI TOÁN Trạng thái xuấết phát Rấết dếẫ thấếy mốẫi trạng thái bảng sốế hốn vị n2 phấền tử (với n kích thước cạnh), khơng gian trạng thái n2! -puzzle 9! = 362880(n = 3) 15-puzzle 16! = 20922789888000(n = 4),….Khi m t ăng lên đơn vị khơng gian trạng thái sẽẫ tăng lên rấết nhanh, điếều khiếến cho việc giải quyếết với phiên n > áp dụng Để tạo trạng thái ban đấều trò chơi ta dùng mảng chiếều sinh ngấẫu nhiên mảng trạng thái hoán vị n2 phấền tử đoạn (0; n2-1) Với việc sinh ngấẫu nhiên sẽẫ tạo trạng thái không hợp lệ (trạng thái không dấẫn tới trạng thái đích tốn), ta c ấền phải kiểm tra xem trạng thái có dấẫn tới đích hay khơng trước khởi tạo giao diện Ngồi ta trộn ngấẫu nhiên trạng thái đích đếến trạng thái bấết kì 12 8 13 10 1.1.3: Trạng thái băết đấều 15-puzzle 8-puzzle Cài đặt A* Việc cài đặt thuật toán A* toán N-Puzzle c ũng giốếng phấền nêu: • FRINGE tập chứa trạng thái sinh chưa xét đếến • M tập trạng thái tiếếp theo trạng thái ni • KQ tập trạng thái kếết quả, lưu trạng thái từ trạng thái tới đích Đấều vào: trạng thái tại, trạng thái đích Đấều ra: tập trạng thái từ trạng thái tới trạng thái đích Điếều kiện dừng thuật tốn: tìm thấếy kếết giới hạn thời gian người dùng cho phép dừng Trong tốn ta cải tiếến băềng việc bỏ tập CLOSE Ta thấếy bước 2.b.3 sau tìm trạng thái trạng thái ni Khi ni có tốếi đa trạng thái con, trạng thái ni có trạng thái trùng với trạng thái cha ni Vì ta loại bỏ trạng thái để tránh việc xét lặp Khi loại bỏ trạng thái sẽẫ không tốền trạng thái trùng với trạng thái tập CLOSE Việc loại bỏ sẽẫ tránh việc kiểm tra bước 2.b.3.3 gây tốến rấết nhiếều thời gian Ngồi ra, game cịn cài đặt thêm thuật toán A* sâu dấền (IDA*) biếến thể thuật tốn tìm kiếếm A* IDA* giúp loại bỏ hạn chếế nhớ A* mà ko hy sinh giải pháp tốếi ưu Mốẫi lấền lặp thuật tốn q trình tìm kiếếm theo chiếều sâu, f(n) = g(n) + h(n), t ạo nút Khi nút tạo có chi phí vượt q ngưỡng cutoff nút sẽẫ bị căết giảm, trình tìm kiếếm backtracks trước tiếếp tục Các ngưỡng chi phí khởi tạo ước lượng heuristic trạng thái ban đấều, mốẫi lấền lặp kếế tiếếp làm tăng tổng chi phí nút có chi phí th ấếp căết tỉa trước Thuật tốn chấếm dứt trạng thái đích có tổng chi phí khơng vượt q ngưỡng 11 Minh họa A* 1.1.4: Minh họa A* Hàm ước lượng heuristic 3.1 Các hàm ước lượng heuristic 3.1.1heuristic1 = tổng khoảng cách dịch chuyển (←,→ ,↑,↓) ngăến nhấết để dịch chuyển sai vếề vị trí nó(khoảng cách Manhattan) 12 1.1.5: Minh họa Giả sử: + rowđ, colđ tọa độ (dịng cột) vị trí +rows , cols tọa độ (dịng cột) vị trí sai + xd = |cols – colđ| +yd= |rows – rowđ| d = xd+ yd khoảng cách ngăến nhấết để di chuyển vếề vị trí h1 = ∑d Trong bảng sốế 3x3 trên, để di chuyển ô sốế vếề vị trí cấền lấền, để di chuyển ô sốế vếề vị trí cấền lấền(qua ô khác) Để thu kếết ta làm phép tính đơn giản: lấếy tổng khoảng cách dịng cột hai vị trí(vị trí vị trí đúng) - Lấếy tọa độ sốế vị trí ta có: rows = 1, cols = - Lấếy tọa độ ô sốế vị trí : rowđ = 1/3 = 0; cols = 1%3 = - Vậy khoảng cách ngăến nhấết để di chuyển ô sốế vếề vị trí đúng: d1 = | rows – rowđ| + |cols – colđ| = |1 – 0| + |0 – 1| = Tương tự, tính tấết khoảng cách d sai cịn lại ta h1 = 1+0+2+1+1+0+1+1 = 3.1.2 heuristic2= tổng khoảng cách dịch chuyển (←,→,↑,↓) ngăến nhấết để dịch chuyển sai vếề vị trí cộng thêm sốế phạt cặp hàng xóm với năềm ngược vị trí 13 6 1.1.6b: Minh họa 1.1.6a: Đích h2 = ∑d + a Trong a sốế phạt cặp hàng xóm năềm ngược vị trí Cặp (2, 1) muốến vếề vị trí cấền dịch chuyển nhấết bước(không để ý tới ô khác), bước tính ∑d nên a = Vì 1.1.6b có cặp hàng xóm năềm ngược vị trí nên a = 2+2 = 3.1.3 heuristic3 10 11 12 13 14 15 1.1.7a: Đích 10 11 12 14 13 15 1.1.7b: Minh họa Xét năềm sai vị trí: d = |rows – rowđ|2 + |cols – colđ|2 Đặt d3 = ∑d h3 = d3 – [0.15*d3] + a 3.1.4 heuristic4 Xét ô sai năềm sai vị trí: d = |rows – rowđ|2 + |cols – colđ|2 14 Đặt d4 = ∑d h4 = d4 + a 3.2 Ví dụ so sánh hàm heuristic Xét trạng thái hình + heuristic1 = + + + + + + + = 14 + heuristic2 = heuristic1 + = 16 (a = 2) + d34 = + + + + + + + = 22 + heuristic3 = d34 – [0.15*d34] + = 21 + heuristic4 = d34 + = 24 15 III- KẾẾT QUẢ 1- Giao di ện Các l ựa chọn Khung so sánh kếết Khung hình 2- So sánh Với trạng thái băết đấều trạng thái hình trên: Thuật toán A* + heuristic 1: Sốế bước thực hiện: 37 Sốế nút xét: 36819 Tổng sốế nút cây: 73742 Thời gian giải quyếết: 38598ms 16 17 c thực hi ệđ ốế + heuristic2 Sốế bước n: 37 Sốế nút xét: 25950 Tổng số nút cây: 52228 Thời gian giải quyếết: 19370ms + heuristic3: Sốế bước n: 37 Sốế nút xét: 400 Tổng số nút cây: 809 Thời gian giải quyếết: 17ms 18 c thực hi ệđ ốế 19 c thực hi ệđ ốế + heuristic4 Sốế bướ n: 41 Sốế nút ã xét: 475 Tổng s nút cây: 939 Thời gian giải quyếết: 20ms 20 Thuật toán IDA* + heuristic1 Sốế bước thực hiện: 37 Sốế nút xét: 77849 Tổng sốế nút cây: 156896 Thời gian giải quyếết: 9760ms + heuristic2 Sốế bước thực hiện: 37 Sốế nút xét: 48304 Tổng sốế nút cây: 97311 Thời gian giải quyếết: 4081ms + heuristic3 Sốế bước thực hiện: 37 Sốế nút xét: 404 Tổng sốế nút cây: 811 Thời gian giải quyếết: 4ms + heuristic4 Sốế bước thực hiện: 43 Sốế nút xét: 4834 Tổng sốế nút cây: 9622 Thời gian giải quyếết: 41ms 21 3- Nhận xét Ta thấếy heuristic2 = heuristic1 + a, nên h1(n) ≤ h2(n) ≤ h*(n) Hàm h2(n) giúp sốế nút duyệt thời gian duyệt nhanh h1(n) Vì h2(n) hiệu h1(n) Hai hàm heuristic1 heuristic2 t ỏ hiệu kích thước trạng thái toán tăng lên, dấẫn đếến mấết nhiếều thời gian tốến nhớ Nguyên nhân ước lượng chi phí heuristic1 heuristic2 nh ỏ so với chi phí thực tếế h*(n) Hàm heuristic3 ước lượng chi phí tốếi ưu, khơng gian trạng thái thời duyệt giảm đáng kể so với hai hàm ước lượng Nguyên nhân hàm ước lượng chi phí heuristic3 ≈ h*(n) (gấền với chi phí thực tếế) Hàm heuristic4 hiệu vếề mặt nhớ thời gian duyệt, heuristic4 khơng đưa đường tốếi ưu heuristic4 ước lượng chi phí lớn chi phí thưc tếế Có thể nói, hàm ước lượng heuristic3 làm hàm hiệu nhấết Tính tốếi ưu thuật toán A* phụ thuộc nhiếều vào hàm ước lượng h(n) phù hợp với không gian trạng thái nhỏ Nếếu không gian trạng thái hữu hạn có giải pháp tránh việc xét lặp lại trạng thái giải thuật A* hồn chỉnh(tìm lời giải)- ko đảm bảo tính tốếi ưu Nếếu khơng có giải pháp để tránh việc xét lặp A* khơng hồn chỉnh(khơng đảm bảo tìm lời giải) Nếếu khơng gian trạng thái vơ hạn giải thuật A* khơng hồn chỉnh(khơng đảm bảo tìm lời giải) IDA* hiệu A* vếề mặt nhớ thời gian Nói chung IDA* nhanh A*, IDA* khơng đảm bảo tính tốếi ưu Trong tốn ta cân nhăếc việc tìm đường tốếi ưu sẽẫ mấết nhiếều thời gian với việc tìm đường khơng tốếi ưu với thời gian nhanh Hàm heuristic3 hi ệu không mở rộng với không gian trạng thái A* xét nút ph ải tính tốn heuristic gây 22 tốến nhiếều thời gian Nhóm nghiên cứu phương pháp tính trước hàm heuristic thời gian có hạn nên chưa thể hồn thành IV- KẾẾT LUẬN Thơng qua việc tìm hiểu nghiên cứu đếề tài giúp chúng tơi có nhìn tồn diện việc ứng dụng trí tuệ nhân tạo vào giải quyếết vấến đếề thực tếế Đây tốn cổ điển trí tuệ nhân tạo cho thuật tốn mơ hình hóa liên quan đếến tìm kiếếm có tri thức bổ sung Đếề tài nhiếều người nghiên cứu giải quyếết, cho đếến vấẫn chưa có cách giải quyếết tốếi ưu cho tấết khơng gian trạng thái trị chơi kích thước tăng khơng gian trạng thái sẽẫ tăng lên rấết nhanh Hy vọng nghiên cứu đánh giá chúng tơi sẽẫ góp phấền bổ sung thêm hướng giải quyếết cho tốn Do thời gian có hạn nên đếề tài khơng tránh khỏi sai sót, mong thấềy góp ý, đánh giá giúp chúng tơi hồn thi ện đếề tài 23 Tài liệu tham khảo - Bộ thư viện chuẩn Sun MicroSystem http://www.oracle.com/us/technologies/java/index.html - Bài giảng Nhập mơn trí tuệ nhân tạo – Nguyếẫn Nhật Quang - http://en.wikipedia.org/wiki/A*_search_algorithm - http://en.wikipedia.org/wiki/Fifteen_puzzle - http://yinyangit.wordpress.com/2010/12/16/algorithm-phan-tich-vagi %E1%BA%A3i-bai-toan-n-puzzle/ 24 ... trốếng II- THUẬT TỐN A* 1- Giới thiệu thuật tốn Thuật tốn A* mơ tả lấền đấều tiên năm 1986 Peter Hart, Nils Nilson Bertram Raphael Trong báo cáo c họ, thuật toán gọi thuật toán A, sử dụng thuật tốn... thành cảm ơn ! I- BÀI TOÁN GHÉP TRANH Game ghép tranh( N-Puzzle) trị chơi hay trí tuệ, biếết đếến với nhiếều phiên tên gọi khác như: 8-puzzle, 15-puzzle, Gem puzzle, Boss puzzle Bài toán N-puzzle... BÀI TOÁN GHÉP TRANH II- THUẬT TOÁN A* 1- Giới thiệu thuật toán 2- Mơ tả thuật tốn 3- Cài đặt thuật toán III- CÀI ĐẶT BÀI

Ngày đăng: 07/06/2022, 21:23

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

  • Đang cập nhật ...

Tài liệu liên quan