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.

Trang 1

Nhóm em xin chào cô và

cá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ú

Trang 2

Ứng dụng thuật toán

A* vào bài toán 8-

Puzzle

ĐỀ TÀI

Trang 3

Thuật Toán

A*

Giới thiệu bài toán 8-puzzle

UD thuật toán

A*

vào bài toán 8-puzzle

Nội Dung :

Bài Toán

Trang 4

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 (best-first 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*

Trang 5

Thuật toá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

Trang 6

Giới thiệu bài toán 8-puzzle.

Một bảng 3x3 với các ô trong đó có các số từ 1->8 và một ô trống , các ô được đặt ở các vị trí ngẫu nhiên, ô trống và các ô có thể đổi chỗ cho nhau , tìm cách

di chuyển các ô và số có thể đổi chỗ cho nhau , tìm cách di chuyển các ố sao cho các con số về đúng thứ tự , bài toán đặt ra ở đây là tím phương án tối ưu sao cho

số lần di chuyển là ít nhất

Trạng thái ban đầu

Trang 7

Giới thiệu bài toán 8-puzzle.

Trạng thái đích có thể có 2 trường hợp có thể xảy ra :

Với mỗi trạng thái ban đầu chỉ tìm được 1 trạng thái đích có thể đạt tới

Điều cần tâm để giải bài toán là xác định trạng thái đích Trạng thái đích được xác định dựa trên trạng thái ban đầu

Vậy trạng thái đích được xác định như thế nào?

Trang 8

Giới thiệu bài toán 8-puzzle.

Đầu tiên hãy tính có bao nhiêu

số bé hơn 8 ở sau ô chứa giá trị 8 kết

quả nhận được là 6 (những ô màu vàng )

Làm tương tự như vậy với ô có giá trị 6 Dễ thấy trong 3 ô (4,7,5) có 2 giá

trị nhỏ hơn 6 là (4,5)

Trang 9

Giới thiệu bài toán 8-puzzle.

Làm như trên từ ô đầu tiên (2) tới ô cuối cùng (5) và cộng dồn các giá trị nhận được

N = 1+ 6 + 1 + 0 + 2 + 0 + 1 + 0 = 11

Nếu N là số lẻ thì chúng ta chỉ có thể có đáp án là trạng thái A , ngược lại trạng thái

là B

Chúng ta đã xác định được trạng thái đích cần đạt , bây giờ bắt đầu tìm kiếm giải thuật để tìm ra đích

Trang 10

Các thuật toán giải quyết bài toán 8-puzzle.

search algorithm)

algorithm)

tìm kiếm theo chiều sâu) 4

(minh họa bằng giải thuật này)

Trang 11

Áp dụng 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ó 2 hàm ước lượng :

H1= số lượng 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 ô ở 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

Trang 12

Á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 các trạng 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ừ 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 là Các bước giải bài toán như sau:

Trang 13

Á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

Đố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 1 nhỏ nhất nên trạng thái tiếp theo là trạng thái 1

Trang 14

Áp dụng giải thuật A* cho bài toán 8-puzzle

Từ 1 ta có ba trạng thái:

Đố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

Trang 15

Áp dụng giải thuật A* cho bài toán 8-puzzle

Từ 1.1 có hai trạng thái:

Đố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 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.1 :

Trang 16

Áp dụng giải thuật A* cho bài toán 8-puzzle

Từ trạng này có: g= 4, h=1, f= 5

Ta có trạng thái đích

Từ 1.1.1 có một trạng thái

Trang 17

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-n-puzzle-su-dung-thuat-toan-a.htm

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