1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài tập lớn môn trí tuệ nhân tạo thuật toán a ứng dụng trong bài toán ghép tranh

23 24 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 23
Dung lượng 1,21 MB

Nội dung

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG - BÀI TẬP LỚ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 Sinh viên thực : Lê Đình Cường (Các thành viên khác) : …………………… Mã số sinh viên : 20080370 Nhóm: HÀ NỘI 04-2013 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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 toá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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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 ! LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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 tố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à 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 tốn Phần mềm viết 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 vng 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 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 trạng thái Mỗi trạng thái bảng số hoán vị n2 phần tử Ở ta mở rộ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, ô xếp ngẫu nhiên, nhiệm vụ người chơi tìm cách đưa chúng 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 toán, ta giả định ô trống di chuyển bảng di chuyển đến vị trí khác Như trạng thái có tối đa cách di chuyển đến trạng thái khác(trái, phải, lên, xuống) LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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 tốn Thuật tốn A* mơ tả lần năm 1986 Peter Hart, Nils Nilson Bertram Raphael Trong báo cáo họ, thuật toán gọi thuật LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com toán A, sử dụng thuật toán với hàm đánh giá heuristic thích hợp 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( 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 tuyến đường tố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 toá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 đích Để biết tuyến đường có khả dẫn tới đích, A* sử dụng hàm đánh giá heuristic khoảng cách từ điểm đí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* tìm kiếm theo lựa chọn tốt cịn tính đến khoảng cách qua Điều làm cho A* đầy đủ tối ưu, nghĩa A* ln tìm thấy đường ngắn tồn đường A* khơng đảm bảo 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 để đến đích trước hết phải 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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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 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 tố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 phần tử tố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 ni: danh sách lưu trữ trạng thái nk ni cho chi phí đến nk thơng qua ni từ trạng thái ban đầu thấp 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 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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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 gặp điều kiện dừng 2.a Nếu OPEN rỗng: tốn vơ nghiệm, thoát 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 ni Gọi trạng thái nk Vớ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 nk vào OPEN LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com III- CÀI ĐẶT BÀI TOÁN Trạng thái xuất phát Rất dễ thấy trạng thái bảng số hoán vị n2 phần tử( với n kích thước cạnh), khơng gian trạng thái n2!, 8-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 tăng lên nhanh, điều khiến cho việc giải 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 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 11 10 12 14 13 15 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 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 trạng thái ni LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com • 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 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 không tồn trạng thái trùng với trạng thái tập CLOSE Việc loại bỏ tránh việc kiểm tra bước 2.b.3.3 gây tốn 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 toán 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 bị cắt giảm, q 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, lần lặ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 ngưỡng 10 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Minh họa A* 1.1.4: Minh họa A* 11 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Hàm ước lượng heuristic 3.1 Các hàm ước lượng heuristic 3.1.1 heuristic1 = tổng khoảng cách dịch chuyển (←,→,↑,↓) ngắn để dịch chuyển sai vị trí nó(khoảng cách Manhattan) 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 để di chuyển vị trí h1 = ∑d Trong bảng số 3x3 trên, để di chuyển ô số vị trí cần lần, để di chuyển số 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 để di chuyển ô số 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 12 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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 để dịch chuyển sai vị trí cộng thêm số phạt cặp hàng xóm với nằm ngược vị trí 1.1.6a: Đích 1.1.6b: Minh họa 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ị trí cần dịch chuyển 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 7 10 11 10 11 12 14 12 13 14 15 13 1.1.7a: Đích 15 1.1.7b: Minh họa Xét nằm sai vị trí: d = |rows – rowđ|2 + |cols – colđ|2 Đặt d3 = ∑d 13 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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 Đặ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 14 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com III- KẾT QUẢ 1- Giao diện Các lựa chọn Khung so sánh kết Khung hình 15 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 2- So sánh Với trạng thái bắt đầu trạng thái hình trên: Thuật tố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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com + heuristic2 Số bước thực hiện: 37 Số nút xét: 25950 Tổng số nút cây: 52228 Thời gian giải quyết: 19370ms 17 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com + heuristic3: Số bước thực hiệ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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com + heuristic4 Số bước thực hiện: 41 Số nút xét: 475 Tổng số nút cây: 939 Thời gian giải quyết: 20ms 19 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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 20 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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 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 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 - 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* 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 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 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ể hoàn thành 21 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com IV- KẾT LUẬN Thơng qua việc tìm hiểu nghiên cứu đề tài giúp có nhìn tồn diện việc ứng dụng trí tuệ nhân tạo vào giải 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, chưa có cách giải 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 tăng lên nhanh Hy vọng nghiên cứu đánh giá chúng tơi góp phần bổ sung thêm hướng giải 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 22 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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/ Hà Nội, ngày 15 tháng 04 năm 2013 Tác giả BTL Lê Đình Cường 23 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ... tả lần năm 1986 Peter Hart, Nils Nilson Bertram Raphael Trong báo cáo họ, thuật toán gọi thuật LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com toán A, sử dụng thuật tốn với hàm đánh... giá thầy Xin chân thành cảm ơn ! LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com I- BÀI TỐ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... A* Việc cài đặt thuật toán A* toán N-Puzzle 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 trạng thái ni LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com

Ngày đăng: 01/11/2022, 14:58

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w