1. Trang chủ
  2. » Công Nghệ Thông Tin

UD thuật toán a sao vào bài toán 8 puzzle

18 1,9K 10

Đ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 18
Dung lượng 1,54 MB

Nội dung

thuật toán A Trong khoa học máy tính, A (đọc là A sao) là một thuật toán tìm kiếm trong đồ thị. Thuật toán này tìm một đường đi từ một nút khởi đầu tới một nút đích cho trước (hoặc tới một nút thỏa mãn một điều kiện đích). Thuật toán này sử dụng một đánh giá heuristic để xếp loại từng nút theo ước lượng về tuyến đường tốt nhất đi qua nút đó. Thuật toán này duyệt các nút theo thứ tự của đánh giá heuristic này. Do đó, thuật toán A là một ví dụ của tìm kiếm theo lựa chọn tốt nhất (bestfirst search). Thuật toán A được mô tả lần đầu vào năm 1968 bởi Peter Hart, Nils Nilsson, và Bertram Raphael. Trong bài báo của họ, thuật toán được gọi là thuật toán A; khi sử dụng thuật toán này với một đánh giá heuristic thích hợp sẽ thu được hoạt động tối ưu, do đó mà có tên A. Thuật toán A là thuật toán tìm kiếm có tính heuristic trên không gian trạng thái dựa vào hàm f, được định nghĩa như sau: f=g(n)+h’(n) g(n): chi phí thực sự đi từ nút đầu đến nút n h’(n): chi phí ước lượng đi từ nút n đến trạng thái đích   Để cài đặt giải thuật A ta dùng hai danh sách để chứa các trạng thái, danh sách Open chứa các trạng thái chưa xét, danh sách Close chứa các trạng thái đã xét.

Nhóm em xin chào cô bạn • Trần Ngọc Huấn • Nguyễn Ngọc Hưng • Nguyễn Quý Hưng • Khiếu Xuân Phú ĐỀ TÀI Ứng dụng thuật toán A* vào toán 8Puzzle Nội Dung : Thuật Toán A* UD thuật toán A* vào toán 8-puzzle Giới thiệu toán 8-puzzle Bài Toán Thuật toán A* - Trong khoa học máy tính, A* (đọc A sao) 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 (hoặ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 toán duyệt nút theo thứ tự đánh giá heuristic Do đó, thuật toán A* ví dụ tìm kiếm theo lựa chọn tốt (best-first search) - Thuật toán A* mô tả lần đầu vào năm 1968 Peter Hart, Nils Nilsson, Bertram Raphael Trong báo họ, thuật toán gọi thuật toán A; sử dụng thuật toán với đánh giá heuristic thích hợp thu hoạt động tối ưu, mà có tên A* Thuật toán A* Thuật toán A* thuật toán tìm kiếm có tính heuristic không gian trạng thái dựa vào hàm f, định nghĩa sau: f=g(n)+h’(n) g(n): chi phí thực từ nút đầu đến nút n h’(n): chi phí ước lượng từ nút n đến trạng thái đích Để cài đặt giải thuật A* ta dùng hai danh sách để chứa trạng thái, danh sách Open chứa trạng thái chưa xét, danh sách Close chứa trạng thái xét Giới thiệu toán 8-puzzle Một bảng 3x3 với ô có số từ 1->8 ô trống , ô đặt vị trí ngẫu nhiên, ô trống ô đổi chỗ cho , tìm cách di chuyển ô số đổi chỗ cho , 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 Giới thiệu toán 8-puzzle Trạng thái đích có trường hợp xảy : Và Với trạng thái ban đầu tìm trạng thái đích đạt tới Điều cần 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 Vậy trạng thái đích xác định nào? Giới thiệu toán 8-puzzle Đầu tiên tính có số bé sau ô chứa giá trị kết nhận (những ô màu vàng ) Làm tương tự với ô có giá trị Dễ thấy ô (4,7,5) có giá trị nhỏ (4,5) Giới thiệu toán 8-puzzle Làm từ ô (2) tới ô cuối (5) cộng dồn giá trị nhận N = 1+ + + + + + + = 11 Nếu N số lẻ có đáp án trạng thái A , ngược lại trạng thái B A B Chúng ta xác định trạng thái đích cần đạt , bắt đầu tìm kiếm giải thuật để tìm đích Các thuật toán giải toán 8-puzzle Tìm kiếm theo chiều rộng (Breadth-first search algorithm) Tìm kiếm theo chiều sâu (Depth-first search algorithm) Tìm kiếm lặp sâu dần (cải tiến từ giải thuật tìm kiếm theo chiều sâu) 4 A* (a sao) (cải tiến từ thuật toán Dijkstra) (minh họa giải thuật này) Áp dụng giải thuật A* cho toán 8-puzzle Trò chơi số mức độ khó vừa phải nên trò chơi thú vị , giải pháp điển hình gồm 20 bước , số thay đổi dựa vào trạng thái ban đầu Hệ số rẽ nhánh khoảng (khi ô giữa, có khả di chuyển ; góc có khả di chuyển cạnh , có khả di chuyển ) Để giải toán ta cần tìm hàm Heuristic tốt Ta có hàm ước lượng : H1= số lượng số sai vị trí H2= tổng số khoảng cách số so với vị trí mục tiêu, tổng khoảng cách theo chiều ngang chiều dọc Bài toán 8-puzzle giải thuật toán A* thực bước sau: Từ trạng thái ban đầu ta xác định trạng thái đích - Gọi G số bước di chuyển ô trống - H hàm Heuristic , ước tính số hao tổn để tới trạng thái đích , tính tổng quãng đường ô vị trí sai vị trí F= G+H Có danh sách Open Close , Open chứa trạng thái chưa xét, Close chứa danh sách trạng thái xét Áp dụng giải thuật A* cho toán 8-puzzle Ban đầu ta thêm trạng thái khởi đầu vào Open, sau chọn trạng thái có f = g + h nhỏ nhất, lúc danh sách Open chứa trạng thái khởi đầu nên ta lấy trạng thái khởi đầu khỏi Open, đưa vào danh sách Close trạng thái xét Từ trạng thái xét ta xác định trạng thái tiếp theo, dựa vào hướng di chuyển ô trống Đưa tất trạng thái mà chưa có Close Open vào danh sách Open Ta tiếp tục chọn trạng thái có f = g + h nhỏ khỏi Open bước tìm trạng thái đích dừng lại Từ trạng thái đích vừa tìm ngược lại danh sách ta tìm đường từ trạng thái khởi đầu đến trạng thái đích Ví dụ: cho hình sau N= 1+6+1+2+1=11 nên trạng thái đích Các bước giải toán sau: Áp dụng giải thuật A* cho toán 8-puzzle Đầu tiên ta xác định trạng thái toán trên: Có ba trường hợp xảy Đối với trường hợp có g= 1, h= 4,f= h+g=5 Đối với trường hợp có g= 1, h= 5,f= h+g=6 Đối với trường hợp có g= 1, h= 6,f= h+g=7 So sánh f với ta thấy f trường hợp nhỏ nên trạng thái trạng thái Áp dụng giải thuật A* cho toán 8-puzzle Từ ta có ba trạng thái: 1.1 1.2 1.3 Đối với trường hợp 1.1 có g= 2, h= 3,f= h+g=5 Đối với trường hợp 1.2 có g= 2, h= 5,f= h+g=7 Đối với trường hợp 1.3 có g= 2, h= 5,f= h+g=7 So sánh f với ta thấy f trường hợp nhỏ nên trạng thái trạng thái 1.1 Áp dụng giải thuật A* cho toán 8-puzzle Từ 1.1 có hai trạng thái: 1.1.1 1.1.2 Đối với trường hợp 1.1.1 có g= 3, h= 2,f= h+g=5 Đối với trường hợp 1.1.2 có g= 3, h= 4,f= h+g=7 So sánh f với ta thấy f trường hợp nhỏ nên trạng thái trạng thái 1.1.1 : Áp dụng giải thuật A* cho toán 8-puzzle Từ 1.1.1 có trạng thái Từ trạng có: g= 4, h=1, f= Ta có trạng thái đích Nguồn: http://doc.edu.vn/tai-lieu/bai-tap-lon-tim-hieu-thuat-a-ap-dung-cho-tro-choi-8-so-53232/ https://tranhoangminh.wordpress.com/2012/04/01/ap-d%E1%BB%A5ng-gi%E1%BA %A3i-thu%E1%BA%ADt-a-cho-bai-toan-tacanh/ http://text.123doc.org/document/2346098-bao-cao-mon-tri-tue-nhan-tao-bai-toan-npuzzle-su-dung-thuat-toan-a.htm [...]... nhau ta thấy f c a trường hợp 1 nhỏ nhất nên trạng thái tiếp theo là trạng thái 1.1.1 : Áp dụng giải thuật A* cho bài toán 8- puzzle Từ 1.1.1 có một trạng thái Từ trạng này có: g= 4, h=1, f= 5 Ta có trạng thái đích Nguồn: http://doc.edu.vn/tai-lieu/bai-tap-lon-tim-hieu-thuat -a- ap-dung-cho-tro-choi -8- so-53232/ https://tranhoangminh.wordpress.com/2012/04/01/ap-d%E1%BB %A5 ng-gi%E1%BA %A3 i-thu%E1%BA%ADt -a- cho-bai-toan-tacanh/... ở vị trí sai về vị trí đúng F= G+H Có 2 danh sách Open và Close , Open ch a các trạng thái ch a xét, Close ch a danh sách các trạng thái đã xét Áp dụng giải thuật A* cho bài toán 8- puzzle Ban đầu ta thêm trạng thái khởi đầu vào Open, sau đó chọn trạng thái có f = g + h nhỏ nhất, lúc này danh sách Open ch a duy nhất trạng thái khởi đầu nên ta lấy trạng thái khởi đầu khỏi Open, và đ a vào danh sách Close... dụ: cho hình sau N= 1+6+1+2+1=11 nên trạng thái đích là Các bước giải bài toán như sau: Áp dụng giải thuật A* cho bài toán 8- puzzle Đầu tiên ta xác định trạng thái tiếp theo c a bài toán trên: Có ba trường hợp xảy ra 1 2 3 Đối với trường hợp 1 có g= 1, h= 4,f= h+g=5 Đối với trường hợp 2 có g= 1, h= 5,f= h+g=6 Đối với trường hợp 3 có g= 1, h= 6,f= h+g=7 So sánh các f với nhau ta thấy f c a trường hợp... thái 1 Áp dụng giải thuật A* cho bài toán 8- puzzle Từ 1 ta có ba trạng thái: 1.1 1.2 1.3 Đối với trường hợp 1.1 có g= 2, h= 3,f= h+g=5 Đối với trường hợp 1.2 có g= 2, h= 5,f= h+g=7 Đối với trường hợp 1.3 có g= 2, h= 5,f= h+g=7 So sánh các f với nhau ta thấy f c a trường hợp 1 nhỏ nhất nên trạng thái tiếp theo là trạng thái 1.1 Áp dụng giải thuật A* cho bài toán 8- puzzle Từ 1.1 có hai trạng thái: 1.1.1... giải thuật A* cho bài toán 8- puzzle Trò chơi 8 số ở mức độ khó v a phải nên là một trò chơi thú vị , một giải pháp điển hình gồm 20 bước , con số này sẽ thay đổi d a vào trạng thái ban đầu Hệ số rẽ nhánh khoảng bằng 3 (khi ô ở gi a, có 4 khả năng di chuyển ; khi nó ở góc có 2 khả năng di chuyển và khi nó ở trên các cạnh , có 3 khả năng di chuyển ) Để giải bài toán này ta cần tìm 1 hàm Heuristic tốt Ta... các số sai vị trí H2= tổng số khoảng cách c a các số so với vị trí mục tiêu, là tổng khoảng cách theo chiều ngang hoặc chiều dọc Bài toán 8- puzzle khi được giải bằng thuật toán A* sẽ thực hiện các bước sau: Từ trạng thái ban đầu ta xác định được trạng thái đích - Gọi G là số bước đã di chuyển ô trống - H là hàm Heuristic , ước tính số hao tổn để tới trạng thái đích , tính bằng tổng quãng đường c a các... http://doc.edu.vn/tai-lieu/bai-tap-lon-tim-hieu-thuat -a- ap-dung-cho-tro-choi -8- so-53232/ https://tranhoangminh.wordpress.com/2012/04/01/ap-d%E1%BB %A5 ng-gi%E1%BA %A3 i-thu%E1%BA%ADt -a- cho-bai-toan-tacanh/ http://text.123doc.org/document/23460 98- bao-cao-mon-tri-tue-nhan-tao-bai-toan-npuzzle-su-dung-thuat-toan -a. htm ... thái đã xét Từ trạng thái đang xét ta xác định được trạng thái tiếp theo, d a vào các hướng di chuyển c a ô trống Đ a tất cả các trạng thái mới mà ch a có trong Close và Open vào danh sách Open Ta tiếp tục chọn trạng thái có f = g + h nhỏ nhất khỏi Open như bước đầu tiên cho đến khi tìm ra trạng thái đích thì dừng lại Từ trạng thái đích v a tìm được đi ngược lại danh sách ta sẽ tìm được đường đi từ

Ngày đăng: 26/10/2016, 19:28

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w