1. Trang chủ
  2. » Luận Văn - Báo Cáo

ứng dụng thuật tóa A*

14 196 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

ứng dụng thuật toán A* cho game Puzzle

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG - - TIỂU LUẬN TRÍ TUỆ NHÂN TẠO Đề tài: ỨNG DỤNG CỦA THUẬT TOÁN A* TRONG TRÒ CHƠI GHÉP TRANH Giảng viên hướng dẫn Học viên thực : PGS.TS Từ Minh Phương : Hoàng Văn Hoãn Lớp Nguyễn Minh Vương : M15CQCS02 Hà nội, tháng 05 năm 2016 Tiểu luận “Thuật toán A* với trò chơi ghép tranh” Lớp: M15CQCS02 MỤC LỤC MỤC LỤC LỜI NÓI ĐẦU Hà Nội, ngày 11 tháng năm 2016 Học viên thực I BÀI TOÁN GHÉP TRANH Giới thiệu toán ghép tranh Mô tả toán 8-puzzle II THUẬT TOÁN A* Giới thiệu thuật toán .6 Mô tả thuật toán III CÀI ĐẶT THUẬT TOÁN Trạng thái xuất phát Cài đặt thuật toán A* 10 IV DEMO CHƯƠNG TRÌNH 10 11 12 KẾT LUẬN 13 Nhóm 5: Hoàng Văn Hoãn; Nguyễn Minh Vương trang Tiểu luận “Thuật toán A* với trò chơi ghép tranh” Lớp: M15CQCS02 LỜI NÓI ĐẦU Trong khoa học trí tuệ nhân tạo, mô hình phương pháp biểu diễn tri thức bước ngoặc quan trọng việc thiết kế hệ sở tri thức hệ chuyên gia Ngày nay, có nhiều phương pháp biểu diễn tri thức đề xuất ứng dụng Tri thức hệ chuyên gia biểu diễn theo nhiều phương pháp khác Tùy theo hệ chuyên gia người ta sử dụng đồng thời nhiều phương pháp Mục tiêu biểu diễn tri trức máy tính phục vụ cho việc thu nhận tri thức vào máy tính, truy xuất tri thức thực phép suy luận dựa tri thức lưu trữ Biểu diễn tri thức ứng dụng nhiều toán thực tế, có đến hàng trăm giải thuật Một phương pháp biểu diễn tri thức áp dụng rộng rãi biểu diễn tri thức dựa luật dẫn, có tìm kiếm heuristics Trong tiểu luận em xin trình bày sơ lược phương pháp biểu diễn tri thức ứng dụng giải thuật A* có sử dụng tìm kiếm Heuristics để giải toán ghép tranh Thuật toán A* là thuật toán có tính định hướng cao, hàm lượng giác của thuật toán sẽ dễ dàng xây dựng nếu bản chất bài toán có tính định hướng Hàm ước lượng sẽ khó xây dựng rất nhiều nếu thông tin về “chiều” của bài toán là trừu tượng Trong thực tế, thuật toán A* và các biến thể của nó được sử dụng rất rộng rãi Một những lĩnh vực ứng dụng thuật toán này nhiều nhất là các trò chơi chiến lược/xây dựng, tiêu biểu là “Age of Empires” của Microsoft, hậu duệ của trò chơi này là “Age of Kings” và một loạt các trò chơi cạnh tranh cùng kiểu được xây dựng nền một biến thể tinh vi của thuật toán A*, đó là thuật toán RA* Thuật toán A* dùng cho các ứng dụng thời gian thực A* không phải chỉ dành cho các trò chơi ứng dụng mà còn là một thay thế hiệu quả cho thuật toán Dijsktra nhiều trường hợp Nó cũng được xem một thuật toán tìm kiếm theo chiều rộng hiệu quả Các thuật toán tìm đường song song mạng (intranet/internet), bài toán tìm kiếm thông tin tri thức, trò chơi đều là các biến thể hoặc dựa tư tưởng của thuật toán A* Trên sở thuật toán A* nhóm chúng em tìm hiểu ứng dụng thuật toán giải toán: “Trò chơi ghép tranh”, thời gian có hạn nên nhóm chúng Nhóm 5: Hoàng Văn Hoãn; Nguyễn Minh Vương trang Tiểu luận “Thuật toán A* với trò chơi ghép tranh” Lớp: M15CQCS02 em chưa tối ưu toàn không gian trạng thái toán Trong trình thực tiểu luận không tránh khỏi thiếu sót, nhóm chúng em mong nhận bảo thầy góp ý học viên khác lớp Xin chân thành cảm ơn! Hà Nội, ngày 11 tháng năm 2016 Học viên thực Nhóm lớp KHMT Nhóm 5: Hoàng Văn Hoãn; Nguyễn Minh Vương trang Tiểu luận “Thuật toán A* với trò chơi ghép tranh” Lớp: M15CQCS02 I BÀI TOÁN GHÉP TRANH Giới thiệu toán ghép tranh Bài toán (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 đặ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 Để giải toán trên, nhóm chúng em sử dụng thuật toán A* để tìm lời giải cho toán Mô tả toán 8-puzzle Với toán N-puzzle Yêu cầu xây dựng bảng ô vuông n hàng, n cột Bảng gồm ô trống n2 – ô 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 Khi bắt đầu trò chơi, ô trống nằm vị trí Mỗi trạng thái bảng số hoán vị n2 phần tử Với toán 8-puzzle bảng 3x3 với ô có số từ ->8 ô trống, ô đặt vị trí ngẫu nhiên, ô trống ô số đổi chỗ cho nhau, tìm cách di chuyển ô cho số thứ tự, toán đặt tìm phương án tối ưu cho số lần di chuyển Ở 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) Trạng thái bắt đầu Trạng thái kết thúc A Trạng thái kết thúc B Hình 1: Trạng thái bắt đầu kết thúc trò chơi Nhóm 5: Hoàng Văn Hoãn; Nguyễn Minh Vương trang Tiểu luận “Thuật toán A* với trò chơi ghép tranh” Lớp: M15CQCS02 Giả sử, ô trống di chuyển bảng di chuyển đến vị trí khác nhau, 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) Xuống Lên Phải Trái Hình 2: Cách di chuyển ô bước Có trạng thái bảng số chuyển trạng thái đích, ta gọi cấu hình hợp lệ không hợp lệ Tỉ lệ chúng 1/2, điều nhận dễ dàng từ phương pháp tính xem toán đưa trạng thái đích hay không Với trạng thái ban đầu, tìm trạng thái đích đạt tới, điều cần phải quan tâm để giải toán xác định trạng thái đích Trạng thái đích xác định dựa trạng thái ban đầu Trạng thái đích xác định sau: + Đầu tiên thử tính có số bé sau ô chứa giá trị Kết nhận (những ô màu vàng) Nhóm 5: Hoàng Văn Hoãn; Nguyễn Minh Vương trang Tiểu luận “Thuật toán A* với trò chơi ghép tranh” Lớp: M15CQCS02 + Làm tương tự với ô có giá trị Dễ thấy ô (4,7,5) có giá trị nhỏ 4,5 Hình 3, 4: Xác định trạng thái đích Làm từ ô (2) tới ô cuối (5) cộng dồn giá trị nhận được: N = 1+6+1+0+2+0+1+0=11 Nếu N số lẻ có đáp an trạng thái A, ngược lại trạng thái B, Nếu số chẵn chắn chuyển trạng thái đích từ trạng thái Bởi di chuyển ô trống với hướng giá trị N mod không thay đổi Tức từ trạng thái đích bạn xáo trộn cách di chuyển ô trống nhiều lần giá trị N số chẵn Để áp dụng thuật toán A* giải toán này, ta cần hàm heuristic h để ước lượng giá trị trạng thái bảng số Có số cách bạn biết tới tính dựa vào khoảng cách sai lệch ô số với vị trí đúng, đơn giản đếm xem có ô sai vị trí II THUẬT TOÁN A* Giới thiệu thuật toán 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 Nhóm 5: Hoàng Văn Hoãn; Nguyễn Minh Vương trang Tiểu luận “Thuật toán A* với trò chơi ghép tranh” Lớp: M15CQCS02 thuật toán với hàm đánh giá heuristic thích hợp thu hoạt động tối ưu, có tên A* Trong khoa học máy tính, A* thuật toán tìm kiếm đồ thị Thuật toá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 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 A* duyệt nút theo thứ tự đánh giá heuristic Do đó, thuật toán A* ví dụ toán tìm kiếm theo lựa chọn tốt (best-first search) - Xét toán tìm đường, thuật toán 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 toá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á co thể khoảng cách đường chim bay – đánh giá xấp xỉ thường dùng cho khoảng cách đường giao thông - Điểm khác biệt A* với tìm kiếm theo lựa chọn tốt tính đến khoảng cách qua Điều làm cho A* đầy đủ tối ưu, nghĩa A* tìm thấy đường ngắn tồn đường A* không đảm bảo chạy nhanh thuật toá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 Mô tả thuật toán - Giả sử n lầ 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 Nhóm 5: Hoàng Văn Hoãn; Nguyễn Minh Vương trang Tiểu luận “Thuật toán A* với trò chơi ghép tranh” Lớp: M15CQCS02 + 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: 0[...]... Minh Vương trang 10 Tiểu luận Thuật toán A* với trò chơi ghép tranh” Lớp: M15CQCS02 + Chương trình thiết kế trên Visual studio Express 2013 trong môi trường C#, được áp dụng giải thuật A* Hình 6: Giao diện của chương trình 2 Một số chức năng của chương trình Hình 7: Một số chức năng của chương trình Nhóm 5: Hoàng Văn Hoãn; Nguyễn Minh Vương trang 11 Tiểu luận Thuật toán A* với trò chơi ghép tranh” Lớp:... ghép tranh” Lớp: M15CQCS02 + New Puzzle: là chức năng chơi lượt mới + Solve: là chức năng thực hiện thuật toán A* tìm ra kết quả của trò chơi, khi chọn chức năng này chương trình sẽ thông báo số bước thực hiện của chương trình Nhóm 5: Hoàng Văn Hoãn; Nguyễn Minh Vương trang 12 Tiểu luận Thuật toán A* với trò chơi ghép tranh” Lớp: M15CQCS02 KẾT LUẬN Việc nắm bắt các giải thuật là rất quan trọng,...Tiểu luận Thuật toán A* với trò chơi ghép tranh” Lớp: M15CQCS02 tăng lên rất nhanh, điều này khiến cho việc giải quyết với các phiên bản n>3 là ít được áp dụng + Để tạo ra một trạng thái ban đầu của trò chơi ta dùng mảng 1 chiều và sinh ngẫu nhên một mảng trạng thái là hoán vị của n... đầu của chò trơi N-puzzle 2 Cài đặt thuật toán A* + PRINGE: là tập chứa các trạng thái đã được sinh ra nhưng chưa được xét đến + M là tập các trạng thái tiếp theo của trạng thái ni + KQ tập trạng thái kết quả, lưu các trạng thái từ trạng thái hiện tại tới đích Input: Trạng thái hiện tại, trạng thái đích Output: Tập các trạng thái hiện tại tới đích Điều kiện dừng thuật toán: tìm thấy kết quả hoặc giới... trước khi xây dựng các ứng dụng như vậy, chúng ta cùng thử sức với 8-pzzule và với N-pzzule Có thể có nhiều phương pháp để giải quyết các bài toán kể trên, ở đây chúng ta sử dụng thuật toán A* Ta có thể mở rộng bài toán và giải được những bảng số có dạng nxn, cách làm cũng tương tự tuy nhiên ta cần kiểm tra lại cách thức để kiểm tra xem trạng thái của bảng số có hợp lệ không Chương trình

Ngày đăng: 25/05/2016, 08:55

Xem thêm: ứng dụng thuật tóa A*

TỪ KHÓA LIÊN QUAN

w