Cùng với nó là sự ra đời của các ới thiệu về bài toán n-puzzle ự phát triển về khoa học và kỹ thuật là sự phát triển mạnh mẽ ời của cácngành khoa h c ph c v cho l i ích và nhu c u c a co
Trang 1
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI BÁO CÁO BÀI TẬP LỚN TRÍ TUỆ NHÂN TẠO Đề tài: Tìm hiểu giải thuật A* , ứng dụng giải bài toán 8-puzzle Giảng viên hướng dẫn: Thầy Phạm Văn Hải Sinh viên thực hiện: Nguyễn Hải Đăng 20090713
Đỗ Hà Anh 20090073
Lê Khánh Dương 20090591
Mai Văn Quân 20092116
Bùi Việt Anh 20090051
Nguyễn Văn Chinh 20096374
Hà Nội 7/2013
Trang 2M c l c ục lục ục lục
L i nói đ u ời nói đầu ầu 2
I Gi i thi u v bài toán n-puzzle ới thiệu về bài toán n-puzzle ệu về bài toán n-puzzle ề bài toán n-puzzle 3
1 Phân tích bài toán 3
2 Ph ương pháp ng pháp 4
II Tìm hi u v gi i thu t A* ểu về giải thuật A* ề bài toán n-puzzle ải thuật A* ật A* 5
1 Gi i thi u v A* ới thiệu về bài toán n-puzzle ệu về bài toán n-puzzle ề bài toán n-puzzle 5
2 Mô t thu t toán ải thuật A* ật A* 6
3 S d ng gi i thu t A* vào bài toán ử dụng giải thuật A* vào bài toán ục lục ải thuật A* ật A* 8
a Ý t ưởng v hàm l ng ề bài toán n-puzzle ượng giá ng giá 9
III Bi u di n không gian tr ng thái bài toán ểu về giải thuật A* ễn không gian trạng thái bài toán ạng thái bài toán 11
IV Công ngh và ngôn ng l p trình s d ng ệu về bài toán n-puzzle ữ lập trình sử dụng ật A* ử dụng giải thuật A* vào bài toán ục lục 12
V Tri n khai cài đ t thu t toán A* ểu về giải thuật A* ặt thuật toán A* ật A* 14
VI Giao di n ệu về bài toán n-puzzle 22
VII H ưới thiệu về bài toán n-puzzle ng c i thi n ch ải thuật A* ệu về bài toán n-puzzle ương pháp ng trình 24
VIII Tài li u tham kh o ệu về bài toán n-puzzle ải thuật A* 27
Trang 3L I NÓI Đ U ỜI NÓI ĐẦU ẦU
Ngày nay cùng v i s phát tri n v khoa h c và kỹ thu t là s phát tri n m nh mẽới thiệu về bài toán n-puzzle ự phát triển về khoa học và kỹ thuật là sự phát triển mạnh mẽ ểu về giải thuật A* ề bài toán n-puzzle ọc và kỹ thuật là sự phát triển mạnh mẽ ật A* ự phát triển về khoa học và kỹ thuật là sự phát triển mạnh mẽ ểu về giải thuật A* ạng thái bài toán
c a n n công ngh thông tin Trong quá trình công nghi p hóa và hi n đ i hóa đ tề bài toán n-puzzle ệu về bài toán n-puzzle ệu về bài toán n-puzzle ệu về bài toán n-puzzle ạng thái bài toán ất
nưới thiệu về bài toán n-puzzlec thì công ngh thông tin là không th thi u Cùng v i nó là s ra đ i c a cácệu về bài toán n-puzzle ểu về giải thuật A* ếu Cùng với nó là sự ra đời của các ới thiệu về bài toán n-puzzle ự phát triển về khoa học và kỹ thuật là sự phát triển mạnh mẽ ời của cácngành khoa h c ph c v cho l i ích và nhu c u c a con ngọc và kỹ thuật là sự phát triển mạnh mẽ ục lục ục lục ợng giá ầu của con người.Với quá trình phát ười của các ới thiệu về bài toán n-puzzlei.V i quá trình pháttri n c a khoa h c kỹ thu t và công ngh thì ngành công ngh thông tin đóng vaiểu về giải thuật A* ọc và kỹ thuật là sự phát triển mạnh mẽ ật A* ệu về bài toán n-puzzle ệu về bài toán n-puzzletrò quan tr ng trong vi c gi i quy t các v n đ khó khăn trong công vi c nh : kọc và kỹ thuật là sự phát triển mạnh mẽ ệu về bài toán n-puzzle ải thuật A* ếu Cùng với nó là sự ra đời của các ất ề bài toán n-puzzle ệu về bài toán n-puzzle ư ếu Cùng với nó là sự ra đời của cáctoán, qu n lý nhân s , đi u khi n t đ ng hóa… ải thuật A* ự phát triển về khoa học và kỹ thuật là sự phát triển mạnh mẽ ề bài toán n-puzzle ểu về giải thuật A* ự phát triển về khoa học và kỹ thuật là sự phát triển mạnh mẽ ộng hóa…
Trên th gi i cũng nh Vi t Nam, công ngh thông tin đã tr thành m t ngày côngếu Cùng với nó là sự ra đời của các ới thiệu về bài toán n-puzzle ư ởng ệu về bài toán n-puzzle ệu về bài toán n-puzzle ởng ộng hóa… nghi p mũi nh n, nó là m t ngày khoa h c kỹ thu t không th thi u trong vi c ápệu về bài toán n-puzzle ọc và kỹ thuật là sự phát triển mạnh mẽ ộng hóa… ọc và kỹ thuật là sự phát triển mạnh mẽ ật A* ểu về giải thuật A* ếu Cùng với nó là sự ra đời của các ệu về bài toán n-puzzle
d ng vào các ho t đ ng xã h i và khoa h c.N n công nghi p hi n nay mang tínhục lục ạng thái bài toán ộng hóa… ộng hóa… ọc và kỹ thuật là sự phát triển mạnh mẽ ề bài toán n-puzzle ệu về bài toán n-puzzle ệu về bài toán n-puzzle
ch t t đ ng hóa cao kèm theo đó là s đòi h i v vi c ng d ng công ngh thôngất ự phát triển về khoa học và kỹ thuật là sự phát triển mạnh mẽ ộng hóa… ự phát triển về khoa học và kỹ thuật là sự phát triển mạnh mẽ ỏi về việc ứng dụng công nghệ thông ề bài toán n-puzzle ệu về bài toán n-puzzle ứng dụng công nghệ thông ục lục ệu về bài toán n-puzzletin cho lĩnh v c này V y đ có th đáp ng t t nh ng yêu c u c a ngày càng caoự phát triển về khoa học và kỹ thuật là sự phát triển mạnh mẽ ật A* ểu về giải thuật A* ểu về giải thuật A* ứng dụng công nghệ thông ốt những yêu cầu của ngày càng cao ữ lập trình sử dụng ầu của con người.Với quá trình phát
h n trong lĩnh v c t đ ng hóa ngơng pháp ự phát triển về khoa học và kỹ thuật là sự phát triển mạnh mẽ ự phát triển về khoa học và kỹ thuật là sự phát triển mạnh mẽ ộng hóa… ười của cáci ta đã ti n hành l p trình cho nh ng c máy,ếu Cùng với nó là sự ra đời của các ật A* ữ lập trình sử dụng ỗ máy,
nh ng ngữ lập trình sử dụng ười của cáci máy có th t duy nh con ngểu về giải thuật A* ư ư ười của cáci nh m gi m b t các gánh n ng côngằm giảm bớt các gánh nặng công ải thuật A* ới thiệu về bài toán n-puzzle ặt thuật toán A*
vi c.ệu về bài toán n-puzzle
Vi c ng d ng trí tu nhân t o đã t o ra m t cu c cách m ng l n trong vi c tìmệu về bài toán n-puzzle ứng dụng công nghệ thông ục lục ệu về bài toán n-puzzle ạng thái bài toán ạng thái bài toán ộng hóa… ộng hóa… ạng thái bài toán ới thiệu về bài toán n-puzzle ệu về bài toán n-puzzle
hi u và chinh ph c nh ng đi u mà con ngểu về giải thuật A* ục lục ữ lập trình sử dụng ề bài toán n-puzzle ười của cáci không dám m t i Đó là nh ng robotơng pháp ới thiệu về bài toán n-puzzle ữ lập trình sử dụngthông minh, nh ng c máy thông minh có th thay th con ngữ lập trình sử dụng ỗ máy, ểu về giải thuật A* ếu Cùng với nó là sự ra đời của các ười của cáci làm vi c trongệu về bài toán n-puzzle
nh ng môi trữ lập trình sử dụng ười của cácng kh c nghi t hay chinh ph c không gian bao la.Và bên c nh đó làắc nghiệt hay chinh phục không gian bao la.Và bên cạnh đó là ệu về bài toán n-puzzle ục lục ạng thái bài toán
vi c ng d ng nh ng thành t u đó vào lĩnh v c gi i trí c a con ngệu về bài toán n-puzzle ứng dụng công nghệ thông ục lục ữ lập trình sử dụng ự phát triển về khoa học và kỹ thuật là sự phát triển mạnh mẽ ự phát triển về khoa học và kỹ thuật là sự phát triển mạnh mẽ ải thuật A* ười của cáci Đó là nh ngữ lập trình sử dụngcon v t robot, nh ng trò ch i Đó là nh ng ng d ng l n lao c a trí tu nhân t oật A* ữ lập trình sử dụng ơng pháp ữ lập trình sử dụng ứng dụng công nghệ thông ục lục ới thiệu về bài toán n-puzzle ệu về bài toán n-puzzle ạng thái bài toán vào c a s ng c a con ngốt những yêu cầu của ngày càng cao ười của cáci
Trong bài t p l n này chúng em tìm hi u gi i thu t A* áp d ng cho trò ch i 8-ật A* ới thiệu về bài toán n-puzzle ểu về giải thuật A* ải thuật A* ật A* ục lục ơng pháppuzzle Đây là m t chộng hóa… ương phápng trình nh có th nó ch a đỏi về việc ứng dụng công nghệ thông ểu về giải thuật A* ư ượng giác hoàn thi n nh ng quanệu về bài toán n-puzzle ư
tr ng h n đó là giúp m i ngọc và kỹ thuật là sự phát triển mạnh mẽ ơng pháp ọc và kỹ thuật là sự phát triển mạnh mẽ ười của cáci hi u đểu về giải thuật A* ượng giác vai trò c a vi c ng d ng trí tu nhânệu về bài toán n-puzzle ứng dụng công nghệ thông ục lục ệu về bài toán n-puzzle
t o trong cu c s ng.M c dù r t c g ng đ hoàn thành công vi c, xong th i gian cóạng thái bài toán ộng hóa… ốt những yêu cầu của ngày càng cao ặt thuật toán A* ất ốt những yêu cầu của ngày càng cao ắc nghiệt hay chinh phục không gian bao la.Và bên cạnh đó là ểu về giải thuật A* ệu về bài toán n-puzzle ời của các
h n và ki n th c ch a nhi u nên vi c chạng thái bài toán ếu Cùng với nó là sự ra đời của các ứng dụng công nghệ thông ư ề bài toán n-puzzle ệu về bài toán n-puzzle ương phápng trình còn nhi u thi u sót c n đề bài toán n-puzzle ếu Cùng với nó là sự ra đời của các ầu của con người.Với quá trình phát ượng giác
Trang 4b xung Vì v y chúng em mong nh n đật A* ật A* ượng giác nh ng đóng góp c a th y cô và b n bèữ lập trình sử dụng ầu của con người.Với quá trình phát ạng thái bài toán
đ chểu về giải thuật A* ương phápng trình ngày càng hoàn thi n h n và giúp ích đệu về bài toán n-puzzle ơng pháp ượng giác nhi u h n.ề bài toán n-puzzle ơng pháp
Xin chân thành c m nải thuật A* ơng pháp
I Gi i thi u ới thiệu ệu bài toán n-puzzle :
Bài toán (hay game) n-puzzle có lẽ r t quen thu c v i chúng ta cũng nh nh ngất ộng hóa… ới thiệu về bài toán n-puzzle ư ữ lập trình sử dụng
người của cáci m i b t đ u ti p c n v i môn trí tu nhân t o Nó đới thiệu về bài toán n-puzzle ắc nghiệt hay chinh phục không gian bao la.Và bên cạnh đó là ầu của con người.Với quá trình phát ếu Cùng với nó là sự ra đời của các ật A* ới thiệu về bài toán n-puzzle ệu về bài toán n-puzzle ạng thái bài toán ượng giác bi t đ n v i nhi uếu Cùng với nó là sự ra đời của các ếu Cùng với nó là sự ra đời của các ới thiệu về bài toán n-puzzle ề bài toán n-puzzlephiên b n và tên g i khác nhau nh 8-puzzle, 15-puzzle, Gem puzzle, Boss puzzle,ải thuật A* ọc và kỹ thuật là sự phát triển mạnh mẽ ưGame of Fifteen, Mystic Square,… m c đ đ n gi n tôi xin nói v 8-puzzle Ở mức độ đơn giản tôi xin nói về 8-puzzle ứng dụng công nghệ thông ộng hóa… ơng pháp ải thuật A* ề bài toán n-puzzle
Bài toán g m m t b ng 3×3 v i các ô s đ! ộng hóa… ải thuật A* ới thiệu về bài toán n-puzzle ốt những yêu cầu của ngày càng cao ượng giác đánh t 1->8 và m t ô tr ng tr ngừ 1->8 và một ô trống Ở trạng ộng hóa… ốt những yêu cầu của ngày càng cao Ở mức độ đơn giản tôi xin nói về 8-puzzle ạng thái bài toán thái b t đ u, các ô đắc nghiệt hay chinh phục không gian bao la.Và bên cạnh đó là ầu của con người.Với quá trình phát ượng giá ắc nghiệt hay chinh phục không gian bao la.Và bên cạnh đó làc s p đ t ng u nhiên, và nhi m v c a ngặt thuật toán A* ẫu nhiên, và nhiệm vụ của người giải là tìm cách ệu về bài toán n-puzzle ục lục ười của cáci gi i là tìm cáchải thuật A*
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ểu về giải thuật A* ốt những yêu cầu của ngày càng cao ề bài toán n-puzzle ứng dụng công nghệ thông ự phát triển về khoa học và kỹ thuật là sự phát triển mạnh mẽ ặt thuật toán A* ởng
phương phápng án t i u sao cho s l n di chuy n là ít nh t.ốt những yêu cầu của ngày càng cao ư ốt những yêu cầu của ngày càng cao ầu của con người.Với quá trình phát ểu về giải thuật A* ất
Tr ng thái đ u (hình 1) Tr ng thái đíchạng thái bài toán ầu của con người.Với quá trình phát ạng thái bài toán
1. Phân tích bài toán :
Đ đ n gi n trong cách ti p c n gi i bài toán, ngểu về giải thuật A* ơng pháp ải thuật A* ếu Cùng với nó là sự ra đời của các ật A* ải thuật A* ười của cáci ta gi đ nh ch có ô tr ng trongải thuật A* ịnh chỉ có ô trống trong ỉ có ô trống trong ốt những yêu cầu của ngày càng cao
b ng là di chuy n đ n nh ng v trí khác Nh v y t i m t tr ng thái thì ch có t i ải thuật A* ểu về giải thuật A* ếu Cùng với nó là sự ra đời của các ữ lập trình sử dụng ịnh chỉ có ô trống trong ư ật A* ạng thái bài toán ộng hóa… ạng thái bài toán ỉ có ô trống trong ốt những yêu cầu của ngày càng cao
đa 4 cách đi đ chuy n sang tr ng thái khác (trái, ph i, lên, xu ng) ểu về giải thuật A* ểu về giải thuật A* ạng thái bài toán ải thuật A* ốt những yêu cầu của ngày càng cao
V i tr ng thái đ u nh hình trên thì có ba tr ng thái đích có th x y ra :ới thiệu về bài toán n-puzzle ạng thái bài toán ầu của con người.Với quá trình phát ư ạng thái bài toán ểu về giải thuật A* ải thuật A*
Trang 5A B C
Đ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.ề bài toán n-puzzle ầu của con người.Với quá trình phát ầu của con người.Với quá trình phát ải thuật A* ểu về giải thuật A* ải thuật A* ịnh chỉ có ô trống trong ạng thái bài toán
Tr ng thái đích đạng thái bài toán ượng giác xác đ nh d a trên tr ng thái đ u V y tr ng thái đích định chỉ có ô trống trong ự phát triển về khoa học và kỹ thuật là sự phát triển mạnh mẽ ạng thái bài toán ầu của con người.Với quá trình phát ật A* ạng thái bài toán ượng giác xác
đ nh nh th nào.ịnh chỉ có ô trống trong ư ếu Cùng với nó là sự ra đời của các
2. Ph ương pháp: ng pháp:
Cho tr ng thái đ u tiên nh hình dạng thái bài toán ầu của con người.Với quá trình phát ư ưới thiệu về bài toán n-puzzlei, duy t qua t ng ô theo th t t trái qua vàệu về bài toán n-puzzle ừ 1->8 và một ô trống Ở trạng ứng dụng công nghệ thông ự phát triển về khoa học và kỹ thuật là sự phát triển mạnh mẽ ừ 1->8 và một ô trống Ở trạng
t trên xu ng, m i ô s duy t đ n, b n hãy đ m xem có bao nhiêu ô s có giá trừ 1->8 và một ô trống Ở trạng ốt những yêu cầu của ngày càng cao ởng ỗ máy, ốt những yêu cầu của ngày càng cao ệu về bài toán n-puzzle ếu Cùng với nó là sự ra đời của các ạng thái bài toán ếu Cùng với nó là sự ra đời của các ốt những yêu cầu của ngày càng cao ịnh chỉ có ô trống trong
Trang 6Làm tương phápng t v i các ô còn l i ta l n lự phát triển về khoa học và kỹ thuật là sự phát triển mạnh mẽ ới thiệu về bài toán n-puzzle ạng thái bài toán ầu của con người.Với quá trình phát ượng giát có k t qu : 4; 0; 0; 1; 0; 0;ếu Cùng với nó là sự ra đời của các ải thuật A*
C ng d n các giá tr nh n động hóa… ! ịnh chỉ có ô trống trong ật A* ượng giá ừ 1->8 và một ô trống Ở trạngc t n1 -> n8 có :
N= 0+ 3 +4+ 0 +0 +1 +0 +0 = 8
V i s N này ta ch c n bi t 1 thông tin là nó có chia h t cho 2 hay không (l hayới thiệu về bài toán n-puzzle ốt những yêu cầu của ngày càng cao ỉ có ô trống trong ầu của con người.Với quá trình phát ếu Cùng với nó là sự ra đời của các ếu Cùng với nó là sự ra đời của các ẻ hay
ch n) N u N là s ch n thì chúng ta ch có th có đáp án là tr ng thái đích là A' ếu Cùng với nó là sự ra đời của các ốt những yêu cầu của ngày càng cao ' ỉ có ô trống trong ểu về giải thuật A* ạng thái bài toán
ho c B, ngặt thuật toán A* ượng giá ạng thái bài toán c l i là tr ng thái C B i vì khi di chuy n ô tr ng v i hạng thái bài toán ởng ểu về giải thuật A* ốt những yêu cầu của ngày càng cao ới thiệu về bài toán n-puzzle ưới thiệu về bài toán n-puzzleng đi b t kìấtthì giá tr N mod 2 cũng không thay đ i T c là t tr ng thái đích b n có th xáoịnh chỉ có ô trống trong ứng dụng công nghệ thông ừ 1->8 và một ô trống Ở trạng ạng thái bài toán ạng thái bài toán ểu về giải thuật A*
tr n b ng cách di chuy n ô tr ng nhi u l n thì giá tr N v n là s ch n.ộng hóa… ằm giảm bớt các gánh nặng công ểu về giải thuật A* ốt những yêu cầu của ngày càng cao ề bài toán n-puzzle ầu của con người.Với quá trình phát ịnh chỉ có ô trống trong ẫu nhiên, và nhiệm vụ của người giải là tìm cách ốt những yêu cầu của ngày càng cao '
Lý do : Do tr t t ta qui đ nh trật A* ự phát triển về khoa học và kỹ thuật là sự phát triển mạnh mẽ ịnh chỉ có ô trống trong ưới thiệu về bài toán n-puzzlec là t trái sang ph i , t trên xu ng dừ 1->8 và một ô trống Ở trạng ải thuật A* ừ 1->8 và một ô trống Ở trạng ốt những yêu cầu của ngày càng cao ưới thiệu về bài toán n-puzzlei ,qui
đ nh nó nh là m t t p không có th t các s , r i xét các kh năng hoán v c a ôịnh chỉ có ô trống trong ư ộng hóa… ật A* ứng dụng công nghệ thông ự phát triển về khoa học và kỹ thuật là sự phát triển mạnh mẽ ốt những yêu cầu của ngày càng cao ! ải thuật A* ịnh chỉ có ô trống trong
tr ng và cu i cùng k t lu n là ho c là b o toàn , ho c là tăng gi m theo 2.ốt những yêu cầu của ngày càng cao ốt những yêu cầu của ngày càng cao ếu Cùng với nó là sự ra đời của các ật A* ặt thuật toán A* ải thuật A* ặt thuật toán A* ải thuật A*
Chúng ta đã xác đ nh định chỉ có ô trống trong ượng giác tr ng thái đích c n đ t đạng thái bài toán ầu của con người.Với quá trình phát ạng thái bài toán ượng giác, bây gi b t đ u tìm ki mời của các ắc nghiệt hay chinh phục không gian bao la.Và bên cạnh đó là ầu của con người.Với quá trình phát ếu Cùng với nó là sự ra đời của các
gi i thu t đ tìm ra đích đây có nhi u gi i thu t nh m tìm ra đáp án đây tôiải thuật A* ật A* ểu về giải thuật A* Ở mức độ đơn giản tôi xin nói về 8-puzzle ề bài toán n-puzzle ải thuật A* ật A* ằm giảm bớt các gánh nặng công Ở mức độ đơn giản tôi xin nói về 8-puzzle
gi i thi u 4 gi i thu t tìm ki m: ới thiệu về bài toán n-puzzle ệu về bài toán n-puzzle ải thuật A* ật A* ếu Cùng với nó là sự ra đời của các
1 Tìm ki m theo chi u r ng (Breadth-first search algorithm)ếu Cùng với nó là sự ra đời của các ề bài toán n-puzzle ộng hóa…
2 Tìm ki m theo chi u sâu (Depth-first search algorithm)ếu Cùng với nó là sự ra đời của các ề bài toán n-puzzle
3 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)ếu Cùng với nó là sự ra đời của các ặt thuật toán A* ầu của con người.Với quá trình phát ải thuật A* ếu Cùng với nó là sự ra đời của các ừ 1->8 và một ô trống Ở trạng ải thuật A* ật A* ếu Cùng với nó là sự ra đời của các ề bài toán n-puzzle
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)ải thuật A* ếu Cùng với nó là sự ra đời của các ừ 1->8 và một ô trống Ở trạng ật A* ọc và kỹ thuật là sự phát triển mạnh mẽ ằm giảm bớt các gánh nặng công ải thuật A* ật A*
II Tìm hi u gi i thu t A* ểu giải thuật A* ải thuật A* ật A* :
1 Gi i thi u A* : ới thiệu ệu
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ớimộ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ánnà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).
Trang 7Thuật toán A* được mô tả lần đầu vào năm 1968 bởi Peter Hart, Nils Nilsson, và BertramRaphael 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ậttoá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*.
Năm 1964, Nils Nilsson phát minh ra một phương pháp tiếp cận dựa trên khám phá đểtăng tốc độ của thuật toán Dijkstra Thuật toán này được gọi là A1 Năm 1967 BertramRaphael đã cải thiện đáng kể thuật toán này, nhưng không thể hiển thị tối ưu Ông gọithuật toán này là A2 Sau đó, trong năm 1968 Peter E Hart đã giới thiệu một đối sốchứng minh A2 là tối ưu 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 Chứng minh của ông về thuật toán cũng bao gồm một phầncho thấy rằng các thuật toán A2 mới là thuật toán tốt nhất có thể được đưa ra các điềukiện Do đó ông đặt tên cho thuật toán mới là A *(A sao, A-star)
3 Mô t thu t toán : ải thuật A* ật A*
A* lưu giữ một tập các lời giải chưa hoàn chỉnh, nghĩa là các đường đi qua đồ thị, bắt đầu
từ nút xuất phát Tập lời giải này được lưu trong một hàng đợi ưu tiên (priority queue).
Thứ tự ưu tiên gán cho một đường đi được quyết định bởi hàm
f(x) = g(x) + h(x)
Trong đó:
các cạnh đã đi qua
Ví dụ, nếu "chi phí" được tính là khoảng cách đã đi qua, khoảng cách đường chim baygiữa hai điểm trên một bản đồ là một đánh giá heuristic cho khoảng cách còn phải đi tiếp
Hàm f(x) có giá trị càng thấp thì độ ưu tiên của càng cao (do đó có thể sử dụng một cấu
trúc heap tối thiểu để cài đặt hàng đợi ưu tiên này) :
function A*(đi m_xu t_phát,đích)ểu về giải thuật A* ất
var đóng := t p r ng ập rỗng ỗng
var q := t o_hàng_đ i(t o_đạng thái bài toán ợng giá ạng thái bài toán ười của cácng_đi(đi m_xu t_phát))ểu về giải thuật A* ất
Trang 8while q không ph i t p r ng ải tập rỗng ập rỗng ỗng
var p := l y_ph n_t _đ u_tiên(q)ất ầu của con người.Với quá trình phát ử dụng giải thuật A* vào bài toán ầu của con người.Với quá trình phát
var x := nút cu i cùng c a p ối cùng của p ủa p
if x in đóng
continue
if x = đích
return p
b sung x vào t p đóng ổ sung x vào tập đóng ập rỗng
foreach y in các_đười của cácng_đi_ti p_theo(p)ếu Cùng với nó là sự ra đời của các
return failure
A*- search _ Các đ c đi m : ặc điểm : ểu giải thuật A*
N u ếu Cùng với nó là sự ra đời của các không gian các tr ng thái là h u h n ạng thái bài toán ữ lập trình sử dụng ạng thái bài toán và có gi iải thuật A* pháp đ tránh vi c xétểu về giải thuật A* ệu về bài toán n-puzzle(l p) l i các tr ng tháiặt thuật toán A* ạng thái bài toán ạng thái bài toán , thì gi iải thuật A* thu t A* là hoàn ch nh (tìm đật A* ỉ có ô trống trong ượng giá ời của cácc l i gi i) –ải thuật A*
nh ng khôngư đ m b o là t i uải thuật A* ải thuật A* ốt những yêu cầu của ngày càng cao ư
N u ếu Cùng với nó là sự ra đời của các không gian các tr ng thái là h u h n ạng thái bài toán ữ lập trình sử dụng ạng thái bài toán và không có gi i pháp đ tránhải thuật A* ểu về giải thuật A*
vi c xét (l p) l i các tr ng tháiệu về bài toán n-puzzle ặt thuật toán A* ạng thái bài toán ạng thái bài toán , thì gi iải thuật A* thu t A* là không hoàn ch nh (khôngật A* ỉ có ô trống trong
đ m b o tìm đải thuật A* ải thuật A* ượng giá l i gi i)c ời của các ải thuật A*
N u ếu Cùng với nó là sự ra đời của các không gian các tr ng thái là vô h nạng thái bài toán ạng thái bài toán , thì gi i thu t A*ải thuật A* ật A* là không hoàn ch nhỉ có ô trống trong(không đ m b o tìm đải thuật A* ải thuật A* ượng giá ời của cácc l i gi i)ải thuật A*
M t ộng hóa… ưới thiệu về bài toán n-puzzle ượng giác l ng (heuristic) h(n) đượng giác xem là ch p nh nất ật A* đượng giác n u đ i v i m iếu Cùng với nó là sự ra đời của các ốt những yêu cầu của ngày càng cao ới thiệu về bài toán n-puzzle ọc và kỹ thuật là sự phát triển mạnh mẽ
nút n: 0 ≤ h(n) ≤ h*(n), trong đó h*(n) là chi phí th t (th c t ) đ đi t nút ật A* ự phát triển về khoa học và kỹ thuật là sự phát triển mạnh mẽ ếu Cùng với nó là sự ra đời của các ểu về giải thuật A* ừ 1->8 và một ô trống Ở trạng n
đ n đíchếu Cùng với nó là sự ra đời của các
Gi i thuat A v i hàm heuristic h(n) luôn luôn giá tr th c đi t n đ n goal.ải thuật A* ới thiệu về bài toán n-puzzle ịnh chỉ có ô trống trong ự phát triển về khoa học và kỹ thuật là sự phát triển mạnh mẽ ừ 1->8 và một ô trống Ở trạng ếu Cùng với nó là sự ra đời của các
Tính t i u c a A* - Ch ng minh : ối ưu của A* - Chứng minh : ư ủa A* - Chứng minh : ứng minh :
Trang 9Gi s có m t đích không t i u (suboptimal goal) ải thuật A* ử dụng giải thuật A* vào bài toán ộng hóa… ốt những yêu cầu của ngày càng cao ư G2 đượng giác sinh ra và l u trong c uư ất
trúc fringe G i ọc và kỹ thuật là sự phát triển mạnh mẽ n là m t nút ch a xét trong c u trúcộng hóa… ư ất fringe sao cho n n m trênm tằm giảm bớt các gánh nặng công ộng hóa…
đười của cácng đi ng n nh t đ n m t đích t iắc nghiệt hay chinh phục không gian bao la.Và bên cạnh đó là ất ếu Cùng với nó là sự ra đời của các ộng hóa… ốt những yêu cầu của ngày càng cao u (optimal goal) ư G.
T 4)+8) suy ra: f(G2) > f(n) T c là, gi i thu t A* không bao gi xét ừ 1->8 và một ô trống Ở trạng ứng dụng công nghệ thông ải thuật A* ật A* ời của các G2
Đ c đi m : ặc điểm : ểu giải thuật A*
Tính hoàn ch nh?ỉ có ô trống trong
Có (tr khi có r t nhi u các nút có chi phí f ừ 1->8 và một ô trống Ở trạng ất ề bài toán n-puzzle ≤ f(G) )
Đ ph c t p v th i gian?ộng hóa… ứng dụng công nghệ thông ạng thái bài toán ề bài toán n-puzzle ời của các
B c c a hàm mũ – S lật A* ốt những yêu cầu của ngày càng cao ượng giáng các nút đượng giác xét là hàm mũ c a động hóa… dài đười của cácng đi
c a l i gi iời của các ải thuật A*
Đ ph c t p v b nh ?ộng hóa… ứng dụng công nghệ thông ạng thái bài toán ề bài toán n-puzzle ộng hóa… ới thiệu về bài toán n-puzzle
Trang 10 L u gi t t c các nút trong b như ữ lập trình sử dụng ất ải thuật A* ộng hóa… ới thiệu về bài toán n-puzzle
Tính t i u?ốt những yêu cầu của ngày càng cao ư
4 S d ng gi i thu t A* vào bài toán : ử dụng giải thuật A* vào bài toán : ụng giải thuật A* vào bài toán : ải thuật A* ật A*
Nh đã gi i thi u trong bài trư ới thiệu về bài toán n-puzzle ệu về bài toán n-puzzle ưới thiệu về bài toán n-puzzlec, có nh ng tr ng thái c a b ng s khôngữ lập trình sử dụng ạng thái bài toán ải thuật A* ốt những yêu cầu của ngày càng cao
th chuy n v tr ng thái đích, ta g i là ểu về giải thuật A* ểu về giải thuật A* ề bài toán n-puzzle ạng thái bài toán ọc và kỹ thuật là sự phát triển mạnh mẽ c u hình h p l ấu hình hợp lệ ợp lệ ệu và không h p l Tợng giá ệu về bài toán n-puzzle ỉ có ô trống trong
l gi a chúng là ½, đi u này có th nh n ra d dàng t phệu về bài toán n-puzzle ữ lập trình sử dụng ề bài toán n-puzzle ểu về giải thuật A* ật A* ễn không gian trạng thái bài toán ừ 1->8 và một ô trống Ở trạng ương phápng pháp tínhxem bài toán có th đ a v tr ng thái đích hay không.ểu về giải thuật A* ư ề bài toán n-puzzle ạng thái bài toán
R t d th y là m i tr ng thái c a b ng s là m t hoán v c a m x m ph n tất ễn không gian trạng thái bài toán ất ỗ máy, ạng thái bài toán ải thuật A* ốt những yêu cầu của ngày càng cao ộng hóa… ịnh chỉ có ô trống trong ầu của con người.Với quá trình phát ử dụng giải thuật A* vào bài toán(v i m là c nh), nh v y ới thiệu về bài toán n-puzzle ạng thái bài toán ư ật A* không gian tr ng thái ạng thái c a nó là (m x m)!, v iới thiệu về bài toán n-puzzle 8-puzzle là 9! = 362880 (m = 3) và 15-puzzle là 16! = 20922789888000(m =4) B n có th khi m tăng lên 1 đ n v thì không gian tr ng thái tăng lênạng thái bài toán ểu về giải thuật A* ơng pháp ịnh chỉ có ô trống trong ạng thái bài toán
r t nhanh, đi u này khi n cho vi c gi i quy t các phiên b n m>3 ít khi đất ề bài toán n-puzzle ếu Cùng với nó là sự ra đời của các ệu về bài toán n-puzzle ải thuật A* ếu Cùng với nó là sự ra đời của các ải thuật A* ượng giác
áp d ng.ục lục
Đ áp d ng thu t toán A* gi i bài toán này, b n c n m t hàm heuristic ểu về giải thuật A* ục lục ật A* ải thuật A* ạng thái bài toán ầu của con người.Với quá trình phát ộng hóa… h đểu về giải thuật A*
ưới thiệu về bài toán n-puzzle ượng giá ịnh chỉ có ô trống trong ỗ máy, ạng thái bài toán ải thuật A* ốt những yêu cầu của ngày càng cao ộng hóa… ốt những yêu cầu của ngày càng cao ạng thái bài toán ểu về giải thuật A*
đã bi t t i nh tính d a vào kho ng cách sai l ch c a các ô s v i v trí đúng,ếu Cùng với nó là sự ra đời của các ới thiệu về bài toán n-puzzle ư ự phát triển về khoa học và kỹ thuật là sự phát triển mạnh mẽ ải thuật A* ệu về bài toán n-puzzle ốt những yêu cầu của ngày càng cao ới thiệu về bài toán n-puzzle ịnh chỉ có ô trống trong
ho c đ n gi n là đ m xem có bao nhiêu ô sai v trí,… đây tôi ch n theoặt thuật toán A* ơng pháp ải thuật A* ếu Cùng với nó là sự ra đời của các ịnh chỉ có ô trống trong Ở mức độ đơn giản tôi xin nói về 8-puzzle ọc và kỹ thuật là sự phát triển mạnh mẽcách th nh t, t c là tính t ng s ô sai l ch c a các ô s so v i v trí đúng c aứng dụng công nghệ thông ất ứng dụng công nghệ thông ốt những yêu cầu của ngày càng cao ệu về bài toán n-puzzle ốt những yêu cầu của ngày càng cao ới thiệu về bài toán n-puzzle ịnh chỉ có ô trống trong
nó Đây là cách tính thười của cácng đượng giá ử dụng giải thuật A* vào bài toán ục lụcc s d ng và nó có tên g i là ọc và kỹ thuật là sự phát triển mạnh mẽ Manhattan.
a Ý t ưởng: ng:
G i G là s bọc và kỹ thuật là sự phát triển mạnh mẽ ốt những yêu cầu của ngày càng cao ưới thiệu về bài toán n-puzzlec đã di chuy n ô tr ngểu về giải thuật A* ốt những yêu cầu của ngày càng cao
H là hàm heuristic, ưới thiệu về bài toán n-puzzlec tính s hao t n đ t i tr ng thái đích, tính b ng t ng ốt những yêu cầu của ngày càng cao ểu về giải thuật A* ới thiệu về bài toán n-puzzle ạng thái bài toán ằm giảm bớt các gánh nặng côngcác quãng đười của cácng c a các ô v trí sai đ v t i v trí đúngởng ịnh chỉ có ô trống trong ểu về giải thuật A* ề bài toán n-puzzle ới thiệu về bài toán n-puzzle ịnh chỉ có ô trống trong
F(n)=G(n)+H(n)
Trang 11Có hai danh sách Open và Close, Open ch a các tr ng thái ch a xét, danh sách Closeứng dụng công nghệ thông ạng thái bài toán ư
ch a các tr ng thái đã xét ứng dụng công nghệ thông ạng thái bài toán
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ầu của con người.Với quá trình phát ạng thái bài toán ởng ầu của con người.Với quá trình phát ọc và kỹ thuật là sự phát triển mạnh mẽ ạng thái bài toán
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ỏi về việc ứng dụng công nghệ thông ất ứng dụng công nghệ thông ất ạng thái bài toán ởng ầu của con người.Với quá trình phát ất
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ạng thái bài toán ởng ầu của con người.Với quá trình phát ỏi về việc ứng dụng công nghệ thông ư ạng thái bài toán ừ 1->8 và một ô trống Ở trạng
tr ng thái đang xét ta xác đ nh đạng thái bài toán ịnh chỉ có ô trống trong ượng giác các tr ng thái ti p theo d a vào các hạng thái bài toán ếu Cùng với nó là sự ra đời của các ự phát triển về khoa học và kỹ thuật là sự phát triển mạnh mẽ ưới thiệu về bài toán n-puzzleng dichuy 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ểu về giải thuật A* ốt những yêu cầu của ngày càng cao ư ất ải thuật A* ạng thái bài toán ới thiệu về bài toán n-puzzle ư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ếu Cùng với nó là sự ra đời của các ục lục ọc và kỹ thuật là sự phát triển mạnh mẽ ạng thái bài toán ỏi về việc ứng dụng công nghệ thông ất ỏi về việc ứng dụng công nghệ thông ư
bưới thiệu về bài toán n-puzzlec đ 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ầu của con người.Với quá trình phát ếu Cùng với nó là sự ra đời của các ạng thái bài toán ừ 1->8 và một ô trống Ở trạng ạng thái bài toán ừ 1->8 và một ô trống Ở trạng ạng thái bài toán ừ 1->8 và một ô trống Ở trạngtìm đượng giác đười của cácng đi t tr ng thái kh i đ u đ n tr ng thái đích.ừ 1->8 và một ô trống Ở trạng ạng thái bài toán ởng ầu của con người.Với quá trình phát ếu Cùng với nó là sự ra đời của các ạng thái bài toán
b Cách tính kho ng cách sai l ch c a các ô s v i v trí đúng(hàm l ải thuật A* ệu ủa A* - Chứng minh : ối ưu của A* - Chứng minh : ới thiệu ị trí đúng(hàm lượng ượp lệ ng
giá h) :
Trong b ng s 3×3 trên, đ di chuy n ô s 5 vào đúng v trí ta c n di chuy n nó 1ải thuật A* ốt những yêu cầu của ngày càng cao ểu về giải thuật A* ểu về giải thuật A* ốt những yêu cầu của ngày càng cao ịnh chỉ có ô trống trong ầu của con người.Với quá trình phát ểu về giải thuật A*
l n, đ di chuy n ô s 7 v đúng v trí ta c n c n 4 l n (qua 4 ô khác) Đ có đầu của con người.Với quá trình phát ểu về giải thuật A* ểu về giải thuật A* ốt những yêu cầu của ngày càng cao ề bài toán n-puzzle ịnh chỉ có ô trống trong ầu của con người.Với quá trình phát ầu của con người.Với quá trình phát ầu của con người.Với quá trình phát ểu về giải thuật A* ượng giác
k t qu này ta làm phép tính đ n gi n: l y t ng kho ng cách c a dòng và c t gi aếu Cùng với nó là sự ra đời của các ải thuật A* ơng pháp ải thuật A* ất ải thuật A* ộng hóa… ữ lập trình sử dụnghai v trí (ví d v i ô s 7):ịnh chỉ có ô trống trong ục lục ới thiệu về bài toán n-puzzle ốt những yêu cầu của ngày càng cao
- L y t a đ c a ô s 7 ta có row1 = 0 và column1 = 2ất ọc và kỹ thuật là sự phát triển mạnh mẽ ộng hóa… ốt những yêu cầu của ngày càng cao
- L y t a đ c a ô s 7 khi v trí đúng, ta có ất ọc và kỹ thuật là sự phát triển mạnh mẽ ộng hóa… ốt những yêu cầu của ngày càng cao ởng ịnh chỉ có ô trống trong row2 = 2 và column2 = 0
| row1 - row2| + |column1 – column2| = |0 – 2| + |2 – 0| = 4
Trang 12Nh v y tr ng thái đích thì b ng s sẽ có giá tr th p nh t là 0.ư ật A* ởng ạng thái bài toán ải thuật A* ốt những yêu cầu của ngày càng cao ịnh chỉ có ô trống trong ất ất
T ừ 1->8 và một ô trống Ở trạng giá tr c a m t ô s ta tính v trí dòng và c t c a nó nh sau:ịnh chỉ có ô trống trong ộng hóa… ốt những yêu cầu của ngày càng cao ịnh chỉ có ô trống trong ộng hóa… ư
Ví d ô s 7 có th t trong b ng là 6 (tính t 0 v i m là c nh) ta có row = 6 / 3 = 2,ục lục ốt những yêu cầu của ngày càng cao ứng dụng công nghệ thông ự phát triển về khoa học và kỹ thuật là sự phát triển mạnh mẽ ải thuật A* ừ 1->8 và một ô trống Ở trạng ới thiệu về bài toán n-puzzle ạng thái bài toán
RowIndex = Index / m
ColIndex = Index %
Trang 13III Bi u di n không gian tr ng thái: ểu giải thuật A* ễn không gian trạng thái: ạng thái
Trang 14III Công c và ngôn ng l p trình s d ng : ụng giải thuật A* vào bài toán : ữ lập trình sử dụng : ật A* ử dụng giải thuật A* vào bài toán : ụng giải thuật A* vào bài toán :
1. Ngôn ng l p trình C# : ữ lập trình sử dụng : ật A*
Ngôn ng C# khá đ n gi n, ch kho ng h n 80 t khóa và h n mữ lập trình sử dụng ơng pháp ải thuật A* ỉ có ô trống trong ải thuật A* ơng pháp ừ 1->8 và một ô trống Ở trạng ơng pháp ười của cáci m y ki u dất ểu về giải thuật A* ữ lập trình sử dụng
li u đệu về bài toán n-puzzle ượng giác d ng s n Tuy nhiên, ngôn ng C# có ý nghĩa to l n khi nó th c thi nh ngự phát triển về khoa học và kỹ thuật là sự phát triển mạnh mẽ ' ữ lập trình sử dụng ới thiệu về bài toán n-puzzle ự phát triển về khoa học và kỹ thuật là sự phát triển mạnh mẽ ữ lập trình sử dụngkhái ni m l p trình hi n đ i C# bao g m t t c nh ng h tr cho c u trúc, thànhệu về bài toán n-puzzle ật A* ệu về bài toán n-puzzle ạng thái bài toán ! ất ải thuật A* ữ lập trình sử dụng ỗ máy, ợng giá ất
ph n component, l p trình hầu của con người.Với quá trình phát ật A* ưới thiệu về bài toán n-puzzleng đ i tốt những yêu cầu của ngày càng cao ượng giáng Nh ng tính ch t đó hi n di n trongữ lập trình sử dụng ất ệu về bài toán n-puzzle ệu về bài toán n-puzzle
m t ngôn ng l p trình hi n đ i H n n a ngôn ng C# động hóa… ữ lập trình sử dụng ật A* ệu về bài toán n-puzzle ạng thái bài toán ơng pháp ữ lập trình sử dụng ữ lập trình sử dụng ượng giác xây d ng trên n nự phát triển về khoa học và kỹ thuật là sự phát triển mạnh mẽ ề bài toán n-puzzle
t ng hai ngôn ng m nh nh t là C++ và Java.ải thuật A* ữ lập trình sử dụng ạng thái bài toán ất
- C# là ngôn ng đ n gi nữ lập trình sử dụng ơng pháp ải thuật A*
- C# là ngôn ng hi n đ iữ lập trình sử dụng ệu về bài toán n-puzzle ạng thái bài toán
- C# là ngôn ng hữ lập trình sử dụng ưới thiệu về bài toán n-puzzleng đ i tốt những yêu cầu của ngày càng cao ượng giáng
- C# là ngôn ng m nh mẽ và m m d oữ lập trình sử dụng ạng thái bài toán ề bài toán n-puzzle ẻ hay
- C# là ngôn ng hữ lập trình sử dụng ưới thiệu về bài toán n-puzzleng module
- C# sẽ tr nên ph bi n.ởng ếu Cùng với nó là sự ra đời của các
Trang 15JavaScript là ngôn ng k ch b n (scripting language) thông d ng nh t trên internet ữ lập trình sử dụng ịnh chỉ có ô trống trong ải thuật A* ục lục ất
và nó ho t đ ng trên t t c các trình duy t thông d ng nh Internet Explorer, ạng thái bài toán ộng hóa… ất ải thuật A* ệu về bài toán n-puzzle ục lục ưFirefox, Chrome, Opera và Safari
3. Công c l p trình Microsoft Visual Studio 2010 : ụng giải thuật A* vào bài toán : ật A*
Visual Studio là công c phát tri n ng d ng (IDE) m nh c a Microsoft IDE này ục lục ểu về giải thuật A* ứng dụng công nghệ thông ục lục ạng thái bài toán cung c p môi trất ười của cácng tr c quan giúp l p trình viên có th d dàng nhanh chóng xây ự phát triển về khoa học và kỹ thuật là sự phát triển mạnh mẽ ật A* ểu về giải thuật A* ễn không gian trạng thái bài toán
d ng giao di n cũng nh vi t mã lênh d a trên n n t ng Net, Winform và ự phát triển về khoa học và kỹ thuật là sự phát triển mạnh mẽ ệu về bài toán n-puzzle ư ếu Cùng với nó là sự ra đời của các ự phát triển về khoa học và kỹ thuật là sự phát triển mạnh mẽ ề bài toán n-puzzle ải thuật A*
Webform
Trang 16IV Tri n khai thu t toán A* ểu giải thuật A* ật A* :
Class Form và Board thu c ph n giao di n, l p Board đ hi n th b ng s lên trênộng hóa… ầu của con người.Với quá trình phát ệu về bài toán n-puzzle ới thiệu về bài toán n-puzzle ểu về giải thuật A* ểu về giải thuật A* ịnh chỉ có ô trống trong ải thuật A* ốt những yêu cầu của ngày càng caoform B n có th d dàng s a l i l p này đ thay đ i cách hi n th mà không làmạng thái bài toán ểu về giải thuật A* ễn không gian trạng thái bài toán ử dụng giải thuật A* vào bài toán ạng thái bài toán ới thiệu về bài toán n-puzzle ểu về giải thuật A* ểu về giải thuật A* ịnh chỉ có ô trống trong
ải thuật A* ười của các ếu Cùng với nó là sự ra đời của các ạng thái bài toán ộng hóa… ương pháp