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 trong bài toán ghép tranh

20 15 0
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 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

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 : download by : skknchat@gmail.co Mục lục Lời mở đầu I BÀI TOÁN GHÉP TR 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 BI 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 10 IV KẾT QUẢ 1.Giao diện 12 2.Một số code b 3.Nhận xét ưu nhược V KẾT LUẬN download by : skknchat@gmail.co Lời nói đầu Trong khoa học máy tính, trí tuệ nhân tạo thể máy móc, trái ngược với trí thơng minh tự nhiên người Lĩnh vực thành lập dựa tuyên bố 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 toá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 ! download by : skknchat@gmail.co 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 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 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) download by : skknchat@gmail.co 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 download by : skknchat@gmail.co 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 tố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 toá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 đí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 download by : skknchat@gmail.co 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 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 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 download by : skknchat@gmail.co 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, 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 III- CÀI ĐẶT BÀI TỐ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 n !, 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- download by : skknchat@gmail.co 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 12 13 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 n i • 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 download by : skknchat@gmail.co 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 n i Khi ni có tối đa trạng thái con, trạng thái n i có trạng thái trùng với trạng thái cha n i 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 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 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 Minh họa A* download by : skknchat@gmail.co 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 download by : skknchat@gmail.co 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ó: row s = 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 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 để 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 download by : skknchat@gmail.co 12 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 + heuristic1 = + + + + + + + = 14 + heuristic2 = heuristic1 + = 16 (a = 2) + d34 = + + + + + + + 1=22 12 download by : skknchat@gmail.co + heuristic3 = d34 – [0.15*d34] + = 21 + heuristic4 = d34 + = 24 III -KẾT QUẢ 1.Giao diện 13 download by : skknchat@gmail.co Một số code 14 download by : skknchat@gmail.co 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 tìm kiếm chiều sâu, tìm kiếm chiều rộng ngun 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 download by : skknchat@gmail.co 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 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 em hồn thiện đề tài 16 download by : skknchat@gmail.co 17 download by : skknchat@gmail.co ... đầu I BÀI TOÁN GHÉP TR II THUẬT TỐN A* Giới thiệu thuật tốn Mơ tả thuật tốn Cài đặt thuật tốn BI 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Ả 1.Giao diện... download by : skknchat@gmail.co Thuật toá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... download by : skknchat@gmail.co 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

Ngày đăng: 06/04/2022, 06:05

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

Tài liệu liên quan