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

18 8 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 : 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

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

Hình ảnh liên quan

Xét trạng thái hình trên - 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

t.

trạng thái hình trên Xem tại trang 13 của tài liệu.

Từ khóa liên quan

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

Tài liệu liên quan