Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 18 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
18
Dung lượng
1,34 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG Đại học Kinh Doanh Công Nghệ Hà Nội Khoa Công nghệ thông tin BÁO CÁO KHỞI NGHIỆP MƠN: TRÍ TUỆ NHÂN TẠO Cài đặt thuật giải A* Ứng dụng toán ghép tranh Giảng viên: Phạm Trọng Tuấn Sinh viên thực hiện: Nguyễn Xuân Tuấn Anh – 19170223(NT) Vũ Chiển Chiêu – 19170479 Hồng Anh Tùng – 19125826 Nhóm : TH24.36 Mục lục Lời mở đầu I BÀI TOÁN GHÉP TRANH II THUẬT TOÁN A* Giới thiệu thuật tốn Mơ tả thuật tốn 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 10 IV KẾT QUẢ Giao diện 12 12 Một số code bài 13 Nhận xét ưu nhược điểm 15 V KẾT LUẬN 16 Lời nói đầu Trong khoa học máy tính, trí tuệ nhân tạo được thể bằng máy móc, trái ngược với trí thơng minh tự nhiên của người Lĩnh vực thành lập dựa tuyên bố rằng trí thơng minh người "có thể mơ tả xác đến mức cỗ máy chế tạo để mơ nó" Vâ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* em chúng 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 tập khởi nghiệp 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 chúng em mong nhận góp ý đánh giá thầy Xin chân thành cảm ơn ! 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 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à chưa có thuật toá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 toá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 ô vuông n hàng, n cột Bảng gồm ô trống no-1 ô chứa số phạm vi [1, n-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ị n” 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 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 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 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 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. 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 n 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 mọ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 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 n i 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 n i: 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. 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ì thêm nk vào OPEN 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ị n phần tử( với n kích thước cạnh), khơng gian trạng thái n 2!, 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 có thể trộn ngẫu nhiên trạng thái đích đến trạng thái bất kì. 1 2 3 7 4 5 11 10 3 9 12 14 6 8 13 2 1 7 4 15 6 8 5 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 được xét đến. • M tập trạng thái 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 hoặc 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 nào trùng với trạng thái tập CLOSE Việc loại bỏ tránh được 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*) là biến thể thuật tốn tìm kiếm A* IDA* giúp loại bỏ hạn chế nhớ của 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 khi trạng thái đích có tổng chi phí khơng vượt q ngưỡng tại. Minh họa A* 1.1.4: Minh họa A* Hàm ước lượng heuristic 3.1Cá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đ| 10 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 = 0 Lấy tọa độ số vị trí : rowđ = 1/3 = 0; cols = 1%3 = 1 Vậy khoảng cách ngắn để di chuyển ô số vị trí đúng: d1 = |rows – rowđ| + |cols – colđ| = |1 – 0| + |0 – 1| = 2 Tương tự, tính tất khoảng cách d ô sai lại ta được h1 = 1+0+2+1+1+0+1+1 = 7 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í nhau. 1 2 2 3 4 5 6 7 8 6 7 3 1.1.6a: Đích 1 5 8 4 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 = 4. 3.1.3 heuristic3 10 11 14 1 10 11 12 12 13 14 15 13 11 15 1.1.7a: Đích 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 Đặt d4 = ∑d h4 = d4 + a 1.2 Ví dụ so sánh hàm heuristic Xét trạng thái hình trên + heuristic1 = + + + + + + + = 14 + heuristic2 = heuristic1 + = 16 (a = 2) + d34 = + + + + + + + = 22 12 + heuristic3 = d34 – [0.15*d34] + = 21 + heuristic4 = d34 + = 24 III -KẾT QUẢ 1.Giao diện 13 Một số code 14 3.Nhận xét ưu, nhược điểm Ưu điểm Một thuật giải linh động, tổng quát, hàm chứa cả tìm kiếm chiều sâu, tìm kiếm chiều rộng và nguyên lý Heuristic khác Nhanh chóng tìm đến lời giải với định hướng hàm Heuristic Chính mà người ta thường nói A* thuật giải tiêu biểu cho Heuristic Nhược điểm A* linh động gặp khuyết điểm - giống chiến lược tìm kiếm chiều rộng - tốn nhiều nhớ để lưu lại trạng thái qua 15 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 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 em góp phần bổ sung thêm hướng giải cho toá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 em hoàn thiện đề tài 16 17 ... 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? ?toán A, sử dụng thuật toán với...Mục lục Lời mở đầu I BÀI TOÁN GHÉP TRANH II THUẬT TOÁN A* Giới thiệu thuật tốn Mơ tả thuật tốn Cài đặt thuật tốn III CÀI ĐẶT BÀI TỐN Trạng thái xuất phát Cài đặt A* Hàm ước lượng heuristic ... 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*) là biến thể thuật tốn tìm kiếm A* IDA* giúp loại bỏ hạn chế nhớ c? ?a? ? A* mà ko hy sinh giải