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

Tìm hiểu thuật A sao áp dụng cho trò chơi 8 số

9 1,2K 13
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Thuật A* áp dụng cho trò chơi 8 số
Chuyên ngành Khoa học máy tính
Thể loại Bài tập lớn
Định dạng
Số trang 9
Dung lượng 1,69 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

LỜI MỞ ĐẦU Trí tuệ nhân tạo là một ngành của khoa học máy tính_ nghiên cứu xử lý thông tin bằng máy tính , do đó trí tuệ nhân tạo đặt ra mục tiêu nghiên cứu: làm thế nào thể hiện được các hành vi thông minh bằng thuật toán, rồi nghiên cứu các phương pháp cài đặt các chương trình có thể thực hiện được các hành vi thông minh bằng thuật toán, tiếp theo chúng ta chỉ cần chỉ ra tính hiệu quả, tính khả thi của thuật toán thực hiện một nhiệm vụ và đưa ra các phương pháp cài đặt. Trong bài tập lớn lần này chúng em tìm hiểu thuật A* áp dụng cho trò chơi 8 số. Ngôn ngữ chúng em lựa chọn để cài đặt thuật toán này là Visual C#.Trong quá trình tìm hiểu còn nhiều vấn đề thiếu sót, mong thầy và các bạn góp ý.

Trang 1

LOI MO DAU

Trí tuệ nhân tạo là một ngành của khoa học máy tính nghiên cứu xử lý thông

tin băng máy tính, do đó trí tuệ nhân tạo đặt ra mục tiêu nghiên cứu: làm thê nào thê hiện được các hành vi thông minh băng thuật toán, rỗi nghiên cứu các phương pháp cài đặt các chương trình có thê thực hiện được các hành vi thông

minh băng thuật toán, tiệp theo chúng ta chỉ cân chỉ ra tính hiệu qua, tinh kha thi

của thuật toán thực hiện một nhiệm vụ và đưa ra các phương pháp cài đặt

Trong bài tập lớn lần này chúng em tìm hiểu thuật A* áp dụng cho trò chơi 8 số Ngôn ngữ chúng em lựa chọn để cài đặt thuật toán này là Visual C#

Trong quá trình tìm hiểu còn nhiều vấn đề thiếu sót, mong thầy và các bạn góp ý

Trang 2

Giới thiệu bài toán

Một bảng 3x3 với các ô trong đó có số từ 1 ->8§ và 1 ô trống, các ô được

đặt ở các vị trí ngẫu nhiên, ô trồng 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 đi chuyển là ít nhất

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

L1 ||?

B

L7 HLS J

Với mỗi trạng thái ban đầu, chỉ tìm được l trạng thái đích có thé dat toi

| ƠI

4

sl[r

Điều đầu tiên cần phải quan tâm để giải bài toán này 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

Đâu tiên hãy thử 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)

Trang 3

Làm tương tự như vậy với ô có giá tri 6 Dé thay trong 3 6 (4,7,5)

có 2 giá trị nhỏ 6 là 4,5

Làm như trên từ ô đầu tiên (2) tới ô cuối cùng (5) và cộng đồ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

là trạng thái B

L1 ||? |

Sit

oo +

Chúng ta đã xác định được trạng thái đích cần đạt được, bây giờ bắt đầu

tìm kiêm giải thuật đê tìm ra đích

Trang 4

1 Các thuật toán giải quyết bài toán

° 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 băng giải thuật này)

2 Giới thiệu 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 phi 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

@"

a(Ti) = 345 =8 Ỏ ở

h'TD = 6 h' : ước lượng chỉ

@ * clu plo fad? su daho ra

TẾ : trạng thái đích

@ chostitt tee air)

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

3 Giải thuật A* cho bài toán ta canh

Trang 5

Trò chơi 8 số ở mức độ khó vừa phải nên là một trò chơi rất thú vị

một giải pháp điển hình gồm khoảng 20 bước, mặc dù con số này biến đôi phụ thuộc vào trạng thái đầu Hệ số rẽ nhánh khoảng bằng 3 (khi ô trồng 0 giữa, có bốn khả năng di chuyên; khi nó ở góc có hai khả năng di chuyên; và khi nó ở trên các cạnh, có ba khả năng đì) Để giải bài toán này ta cần tìm một hàm Heuristic tốt Ta có hai hàm ước lượng:

HI =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 và theo chiều đọc

Bài toán tacanh khi được giải bằng thuật toán A* sẽ thực hiện theo các

bước sau:

Tw trang thai 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 các quãng đường của các 6 ở vị trí sai dé về tới vị trí đúng

F=G+H

Có hai danh sách Open và Close, 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

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:

HIHIB

EMIRIIER

N= 1+6+1+2+1=11 nén trang thái đích là

Trang 6

17 HI 6 |i| 5 |

Các bước giải bài toán như sau:

Đầ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:

2 lÍ| 8 |Í| 3 2 lÍ| 8 {il 3 2 || 8 lI 3

1 4 1 ||| 6 lI[ 4 1 |Í| 6 || 4

7 WH 6 ||| 5 7 |Í| 5 7 lÍ| 5

Đối với trường hợp 1 có g= 1, h= 4,f= ht+g=5

Đối với trường hợp 2 có g= 1, h= 5,f= h+g=6

Đối với trường hop 2 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 thai 1

Từ 1 ta co ba trang thai:

2 3 2 ||| & |] 3 2 ||] 8 l|| 3

1 || 8 |I[ 4 1 ||| 4 1 ||| 4

7 6 5 # ||| 6 ||| 5 7 lÌ| 6 ||| 5

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

Trang 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 la trang thai 1.1

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

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

1 lI| 2 |i] 3

8 ||| 4

yy 6 |Í| 5

Từ trang nay co: g= 4, h=1, f= 5

Ta co trang thai dich:

Trang 8

Cai dat thuat toan:

Ta tiến hành cài đặt thuật toán trên ngôn ngữ Visual Cứ

Ta xây dựng các class sau:

e© Class Node: xác định thuộc tính mỗi trạng thái của bài toán Trong

lớp này ta xây dựng hàm HeuristicEunction() đề xác định độ ước lượng h

e Class Puzzles: cé cdc thanh phần là các danh sách Open và Close kiêu LinkedNode<Node>: ngoài ra lớp này còn có các phương

thức đê thực hiện thuật toán A*:

- Hàm GetSmailListNodeQ: để lấy trạng thái nhỏ nhất khỏi danh sách Open

- Ham Open.Remove(SmallestNode): dé xóa trạng thái nhỏ

nhât vừa được chọn khỏi Open

- Ham Close.AddFirst(SmallestNode) để thêm trạng thái nhỏ

nhât đã được xét vao Close

-_ Hàm AddNodeToOpen(Q): thêm các trạng thái chưa được xét

vào Open

Ta dùng vòng lặp while(Open!= null) đề duyệt danh sách Open và chọn ra trạng thái nhỏ nhât Danh sách Open được duyệt đên khi tìm được trạng thái

đích

Ngoài ra chương trình còn có class giao diện dùng để xây dựng giao diện trực quan cho bài toán

Trang 9

§ Puzzle

Ngày đăng: 03/12/2013, 15:50

HÌNH ẢNH LIÊN QUAN

Giới thiệu bài toán. - Tìm hiểu thuật A sao áp dụng cho trò chơi 8 số
i ới thiệu bài toán (Trang 2)
Một bảng 3x3 với các ô trong đó có số từ 1 -&gt;8§ và 1ô trống, các ô được - Tìm hiểu thuật A sao áp dụng cho trò chơi 8 số
t bảng 3x3 với các ô trong đó có số từ 1 -&gt;8§ và 1ô trống, các ô được (Trang 2)
một giải pháp điển hình gồm khoảng 20 bước, mặc dù con số này biến đôi phụ  thuộc  vào  trạng  thái  đầu - Tìm hiểu thuật A sao áp dụng cho trò chơi 8 số
m ột giải pháp điển hình gồm khoảng 20 bước, mặc dù con số này biến đôi phụ thuộc vào trạng thái đầu (Trang 5)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w