Tiểu luận môn Thuật Toán và Phương Pháp Giải Quyết Vấn Đề TÌM HIỂU VÀ ỨNG DỤNG THUẬT TOÁN A SAO VÀ BÀI TOÁN TÌM KIẾM ĐƯỜNG ĐI TRÊN ĐỒ THỊ

24 1.2K 8
Tiểu luận môn Thuật Toán và Phương Pháp Giải Quyết Vấn Đề TÌM HIỂU VÀ ỨNG DỤNG THUẬT TOÁN A SAO VÀ BÀI TOÁN TÌM KIẾM ĐƯỜNG ĐI TRÊN ĐỒ THỊ

Đ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

    !"#  #$ %&'()* %+!,-     !"#$%&&% ).) &'()"*)+,)- /0)"1)- *%+!,- /*"., 0/01234562789:9;<5=;;>:2;?@ABC23AD;EF2AG;<H 2+)-345"./65785"9 :,;5+<)7=>)-7;)-?))"@5) 8)7*)3,:,;5+<)5A$ $B57=>)-7;-;C1"1;7D)"E1+#"+5F)-#<#52G)-EH#I1#<##J)"5J+)0)7=>)-7; 7K3,)"L)"@5&9)")-"M1$B5#<#""A)"5"N# #"+52=O#$B5785"9#K52G)-EHP)-"M1 3,$B55Q!7D)" $B55Q!#J)"R S,$B5",$52+)-EH#K-;<5295"T#URVWX #"+ 52=O#$B57D)"S5".B# 5A$$B57=>)-7;5YS5O;$';7D)"SZ5".B#E1+#"+ 3,)"L)"@552+)-5@5#[#<#7=>)-)H;5YS5O;SZ&\,;5+<)7=>)-7;)-?) )"@5-;C1$G;#]!7D)"3,$B5:,;5+<)5=*)-5T 52+)-7K51!"[;5A$#<#7=>)-7; )-?))"@5#"+$G;#]!7D)"SS,SZ&  &'()"*)+,)- /0)"1)- A)"&=>)-7;52+)-5"T#56 <#5".Q55+<)^.1)52G)-)"@5-;[;^./65:,;5+<)),/3, ".Q55+<);_`E521a-;[;:,;5+<)) 8)7*))6.5@5#[#<#52G)-EH7b.`"c)-d$& ".Q55+<)),/#K5"e5f)"5+<)5@5#[#<#7=>)-7;)-?))"@55Y$B57D)"g.@5!"<5 #"+52=O#E5O;$G;7D)"`"<#$,`"c)-3,$5()-5">;-;1)#"J/& ".Q55+<)\h33$1)i+2ja-;[;:,;5+<)) 8)7*)52+)-52=>)-"k!52G)-EH#K5"e #K-;<529d$& ;[;5".Q55A$`;6$l-;[;:,;5+<)) 8)7*)Emjn)-"h.2;E5;#E7e5()-5H#7B5A$ `;6$ ".Q55+<)i3+/jo12E"133a-;[;:,;5+<)7=>)-7;)-?))"@5#"+$G;#]!7D)"& ".Q55+<)p+")E+)a-;[;:,;5+<)7=>)-7;)-?))"@5#"+$G;#]!7D)" #K5"e )"1)""*)5".Q55+<)i3+/jo12E"133520)#<#785"95"=1& q45"./65)";r.Ph25.2:15;+)5"h+2/Xs5A$7=>)-7;)-?))"@5791!"=*)-P52+)- 52=>)-"k!g@.)"@5X % &'()"*)+,)- /0)"1)- B5:,;5+<)#K3;0)^.1)3,:,;5+<))-=>;:<)",)-:,;5+<)5A$7=>)-7;)-?))"@5 7;^.15@5#[#<#7D)" $';7D)"7t)-$B53u) S,52vSb7D)"g.@5!"<5&d/3,:,; 5+<)7u/7I j+7K`"K#K`"[)()-58)5J;$B5#<#"-;[;";w.^.[& 2+)-5=j./#I1)-,)"$J)-"1/S;r)5"c)- :,;5+<)7=>)-7;)-?))"@57c;`"; 7=k#-G;3,:,;5+<)7=>)-7;#K7B52r)"L)"@5P$;)jh31/!15"!2+:3h$XS,5"=>)- 7=k#-?)SO;$B5:,;5+<)7=>)-7;2B)-)"@5Px;jhE5!15"!2+:3h$X&Sfjn7=>)-7; 2B)-)"@552+)-#<#7=>)-7;)-?))"@5P7B52r)"L)"@5X"1/7=>)-7;)-?))"@552+)- #<#7=>)-7;2B)-)"@5& 0/IJDK6>L<MD9N2AO2;<5=;;>:2*P <#5".Q55+<)#F7;e))"=;_`E5217=k#gd/jT)-520)#<#$c"A)"5".u)5.434 5"./65 52+)-7K785"97=k#gh$3,5Q!"k!#<#7D)"S,#.)-)H;-;C1#<#7D)"7K  )-+,;21 `"c)-#K:@5`A5"c)-5;)-A:FE.)-#"+:,;5+<)&O;$c"A)"345"./65 5".u)5.4)"=SQ/ 520)$B5785"9#K5"e58)5J;)"C)-7]#7;e$f5`";g[/2152+)- 5"T#56 #"y)-"J)#K5"e58)5J;$B5#.)-#K52G)-EH3O)"*)5F)-52G)-EH#I15@5#[ #<##.)-#z)3J;520)785"9 "+]#$B5785"9#"y)-#K#.)-),+&{.1/3J;SO;#d."L; #I1#"t)-51|J;E1+!"[;#u)76)l}~ #d.52[3>;5"Q57*)-;[)|7e-;[;^./65#<# :,;5+<)5A$7=>)-52+)-5"T#56•~& 0/Q123562;<5=;;>:2* 2+)-`"+1"G#$</5f)" lP7G#3,E1+X3,$B55".Q55+<)5A$`;6$52+)-785"9& ".Q55+<)),/5A$$B57=>)-7;5Y$B5)t5`"v;7u.5O;$B5)t57f#"#"+52=O#P"+]# 5O;$B5)t55"L1$€)$B57;b.`;w)7f#"X&".Q55+<)),/Emjn)-$B5•7<)"-;< "h.2;E5;#•7eg6!3+J;5Y)-)t55"h+=O#3=k)-Sb5./6)7=>)-5H5)"@57;^.1)t57K& ".Q55+<)),/j./w5#<#)t55"h+5"N5T#I17<)"-;<"h.2;E5;#),/&+7K 5".Q55+<) l3,$B5Sfjn#I15A$`;6$5"h+3T1#"G)5H5)"@5P:hE5U;2E5Eh12#"X& ".Q55+<)l7=k#$c5[3u)7u.S,+)($‚ƒ:v;h5h2125 ;3E;3EE+)  S,\h2521$W1!"1h3&2+)-:,;:<+#I1"G 5".Q55+<)7=k#-G;3,5".Q55+<)s`";Em jn)-5".Q55+<)),/SO;$B57<)"-;<"h.2;E5;#5"f#""k!E„5".7=k#"+J57B)-5H;=.  j+7K$,#K50)l& … &'()"*)+,)- /0)"1)- ($‚% ;3E;3EE+)!"<5$;)"21$B5!"=*)-!"<!5;6!#Q)jT1520)`"<$!"<7e 5()-5H#7B#I15".Q55+<);_`E521&".Q55+<)),/7=k#-G;3,&($‚†\h2521$ W1!"1h37€#[;5";w)7<)-`e5".Q55+<)),/ )"=)-`"c)-5"e";e)5"95H;=.&‡)--G; 5".Q55+<)),/3,&1.7K 52+)-)($‚ƒh5h2R&1257€-;O;5";w.$B57H;EH #"N)-$;)"3,5H;=.`";Emjn)-5".Q55+<)),/SO;$B57<)"-;<"h.2;E5;#5"f#" "k!E„5".7=k#"+J57B)-5H;=.&"N)-$;)"#I1c)-Sb5".Q55+<)#ˆ)-:1+-8$ $B5!"u)#"+5"@/2‰)-#<#5".Q55+<)$O;3,5".Q55+<)5H5)"@5#K5"e7=k#7=121 #<#7;b.`;w)&+7Kc)-7]550)#"+5".Q55+<)$O;3,lPE1+ E512X& 0/RS;BT23;EU94562;<5=;;>:2* Š‹5:,;5+<)5A$7=>)-:,;5+<)$,l5"=>)-7=k#jŒ)-7e-;[;&lgd/jT)-5()- ju)5@5#[#<#5./6)7=>)-5Y7;e$g.@5!"<5#"+5O;`";)K5A$5"@/$B57=>)-7; #"J$5O;7f#"&./)";0) #ˆ)-)"=5@5#[#<#5".Q55+<)5A$`;6$#K5"c)- 5;)P;)U+2$hj5A$`;6$5".Q55+<)X )K#"Dgd/jT)-#<#5./6)7=>)-•#KS••jŽ)Sb !"f17f#"& e:;65)"C)-5./6)7=>)-),+#K`"[)()-E„jŽ)5O;7f#" lEmjn)-$B5•7<)" -;<"h.2;E5;#•Sb`"+[)-#<#"5Y7;e$:@5`•#"+52=O#5O;7f#"&2+)-52=>)-"k!5A$ 7=>)-7; 7<)"-;<),/#K5"e3,`"+[)-#<#"7=>)-#";$:1/$B57<)"-;<g@!gD 5"=>)-jŒ)-#"+`"+[)-#<#"#I17=>)--;1+5"c)-& ;e$`"<#:;w5#I1l7H;SO;5A$`;6$5"h+3T1#"G)5H5)"@53,)K#z)5f)"76) `"+[)-#<#"7€7;^.1&;b.7K3,$#"+l•7u/7I•S,•5H;=.• )-"M13, lE„3.c) 3.c)5A$5"@/7=>)-7;)-?))"@5)6.58)5J;$B57=>)-7;)"=5"6&l`"c)-7[$:[+ E„#"J/)"1)""*)#<#5".Q55+<)5A$`;6$7*)-;[)"*)&2+)-$B5$c;52=>)-jJ)- $0#.)- #<#"j./)"@57e76)7f#"#K5"e3,52=O#"65!"[;7;Sb!"f1g17f#"S,#.H; #Œ)-$O;^.1/3J;&2+)-52=>)-"k!7K S;w#5"m#<#)t55"h+5"N5T•-u)7f#""*)5"A 7=k#5"m52=O#•#K5"e-d/5H)5">;-;1)& 0/VW;M;<5=;;>:2* l3=.-;C$B55Q!#<#3>;-;[;#"=1"+,)#"D)" )-"M13,#<#7=>)-7;^.1785"9 :?5 7u.5Y)t5g.@5!"<5&Q!3>;-;[;),/7=k#3=.52+)-$B5",)-7k;=.5;0)P!2;+2;5/ ‚ &'()"*)+,)- /0)"1)- ^.h.hX&"N5T=.5;0)-<)#"+$B57=>)-7; 7=k#^./6579)":v;",$ XYZ[\3YZ[]<YZ[ 2+)-7K -PgX3,#";!"f#I17=>)-7;#"+76)5">;7;e$";w)5J; )-"M13,5F)-52G)- EH#I1#<##J)"7€7;^.1& PgX3,",$7<)"-;<"h.2;E5;#Sb#";!"f)"L)"@57e76)7f#"5Y &fjn )6.•#"; !"f•7=k#5f)"3,`"+[)-#<#"7€7;^.1 `"+[)-#<#"7=>)-#";$:1/-;C1"1;7;e$ 520)$B5:[)783,$B57<)"-;<"h.2;E5;##"+`"+[)-#<#"#z)!"[;7;5;6!& ,$UPgX#K-;<529#,)-5"@!5"A7B=.5;0)#I1 #,)-#1+Pj+7K#K5"eEmjn)-$B5 #@.52t#"h1!5H;5";e.7e#,;7]5",)-7k;=.5;0)),/X €-;[ function A*(điểm_xuất_phát,đích) var đóng:= tập rỗng var q:= tạo_hàng_đợi(tạo_đường_đi(điểm_xuất_phát)) while q không phải tập rỗng var p:= lấy_phần_tử_đầu_tiên(q) var x:= nút cuối cùng của p if x in đóng continue if x = đích return p bổ sung x vào tập đóng foreach y in các_đường_đi_tiếp_theo(p) đưa_vào_hàng_đợi(q, y) return failure 2+)-7K #<#7=>)-7;5;6!5"h+P!X52[Sb5Q!"k!#<#7=>)-7;5J+:v;S;w#`‹+ j,;!5"0$$B5)t5`b#J)"&;[5";652‰)-",)-7k;7=k#E?!g6!5T7B)-:v;-;<529#I1 ",$ & † &'()"*)+,)- /0)"1)- •Q!"k!7K)-•P7K)-X3=.-;C5@5#[#<#)t5#.H;#Œ)-#I1!P#<#)t5$,#<#7=>)-7; $O;7€7=k#$v2B)-5J;7KX7e52<)"S;w#3]!3J;#<##".52A)"PS;w#),/#"+215".Q5 5+<)5A$`;6$5"h+785"9X&c;`";",)-7k;7=k#-G;$B5#<#"5=*)-N)-3,•5Q!$v•& Q!7K)-#K5"e7=k#:L^.1P515".7=k#5".Q55+<)5A$`;6$5"h+#d/X)6.517[$ :[+7=k#2‰)-58)5J;$B53>;-;[;"+]#)6.",$#<#•7=>)-•7;•5;6!•5"h+7=k##"D)" 7e3+J;:L#<##".52A)" 0/^:9;_2<9<`;;<5=;;>:2* ˆ)-)"=5A$`;6$5"h+#";b.2B)-P:2h1j5"U;2E5Eh12#"X l3,5".Q55+<)7u/ 7IP#+$!3h5hX5"h+)-"M12‰)-)KE„3.c)3.c)5A$5"@/$B53>;-;[;)6.:,;5+<)#K3>; -;[;& 6.",$"h.2;E5;# #K5f)"#"@55".)J!7=k#P1j$;EE;:3hX )-"M13,)K`"c)-:1+-;> 7<)"-;<#1+"*)#";!"f)"L)"@55"T#ET#I1S;w#7;5O;7f#" 5"A:[)5"d)l#K5f)" #"@55".)J!7=k#P"1/5H;=.X)6.Emjn)-$B55Q!7K)-&6.`"c)-Emjn)-5Q!7K)- 5"A",$ !"[;#K5f)"#"@57*)7;w.P"1/)"@5^.<)X5"Al$O;#K5f)"#"@55H;=.& -"M13,)K`"c)-:1+-;>7<)"-;<#";!"f7;5Y$B5)t55O;$B5)t5`b)K#1+"*)#"; !"f5"T#&"<5:;e.$B5#<#""A)"5"N# SO;$G;)t5 52+)-7K 3,)t55;6!5"h+ #I1  l#z)#K5f)"#"@5";w.^.[$B5#<#"5H;=.P+!5;$133/hUU;#;h)5XSO;$G;",$ "h.2;E5;# #K)-"M13,`"c)-#K5".Q55+<)),+#ˆ)-Emjn)-",$"h.2;E5;#7K$,#"D !"[;$v2B)-f5)t5"*)l 52Y`";#K$B5EH3>;-;[;#"=17u/7I$,5J;7K jT7+<) #"f)"g<##";!"f#I17=>)-7;5H;=.& {.1)"wSO;5A$`;6$#";!"f7b.P.);U+2$#+E5Eh12#"X‘Em1’Em1$€) 8)“ ".Q55+<);_`E5213,$B552=>)-"k!7]#:;w5#I1l52+)-7K7<)"-;<"h.2;E5;#3, $B5",$"‰)- SO;$G; 0/abL<c9;JL;<5=;;>:2 ƒ &'()"*)+,)- /0)"1)- B!"N#5J!5">;-;1)#I1l!"n5".B#S,+7<)"-;<"h.2;E5;#&2+)-52=>)-"k!g@. )"@5 EH)t57=k#$v2B)-5"h+",$$ˆ#I17Bj,;3>;-;[; )"=)-)KE„3,",$71 5"N#`";",$"h.2;E5;#"5"L1$€)7;b.`;w)E1. 52+)-7K 3,"h.2;E5;#5H;=. )-"M13,",$#"+`65^.[3,#";!"f#"f)"g<#7e7;5Y  5O;7f#"&K;#<#"`"<# E1;EH#I1"`"c)-)0)5()-)"1)""*)3c-12;5#I1•"h.2;E5;# "+,)"[+• ",$52[Sb`"+[)-#<#"5"T#5Yg5O;7f#"PW.EEh33S,+2S;- 52& X& @)7bEmjn)-:B)"O#I1l#z)2?#2H;"*)7B!"N#5J!5">;-;1)&2+)-52=>)- "k!g@.)"@5 l!"[;-";)"OEH3=k)-)t55()-5"h+",$$ˆ&B5EH:;6)5"e#I1l 7€7=k#!"<552;e)7e7H;!"KSO;";w)5=k)-),/ $B552+)-EH7K3,l3]!Ed.ju) P;5h215;Shjhh!h);)-lX l:B)"O-;O;"J)P$h$+2/:+.)jhjllXS,l:B )"O-;O;"J)7*)-;[)PE;$!3;U;hj$h$+2/:+.)jhjlX& B55".Q55+<)5A$`;6$#K5"c)-5;)`"<##ˆ)-#K5f)"#"@55H;=.S,7u/7I)6.7<)" -;<"h.2;E5;##I1)K3,5".)J!7=k#P1j$;EE;:3hX&K3,5A$`;6$7w^./5"h+3T1#"G) 5H5)"@5P2h#.2E;Sh:hE5U;2E5Eh12#"W\iX& 0/de>K:2<;<5=;;>:2*7fD9:9;<5=;;>:2g<:9 ".Q55+<)5A$7=>)-;_`E5217z;"L;#";!"fSb5">;-;1)3,P)  X#"+S;w#5A$7=>)- 7;-;C1"1;#]!7D)":@5`As5".Q55+<)i3+/\h33$1)7z;"L;#";!"fP)X)"=)-3J;:?5 :.B#!"[;5A$7=>)-7;-;C1$G;#]!7D)"52+)-785"9 jŽ)76)5F)-#";!"f5">;-;1) #I1#[5".Q55+<)3,P)  X )"=SQ/)"C)-5".Q55+<)),/5"f#""k!SO;#<#785"9 `"c)-^.<3O)P5YS,;52($5O;`"c)-^.<S,;)-,)7D)"X&2+)-`";7K :,;5+<)5A$ 7=>)-52+)-5"T#565"=>)-3,$S;w#SO;785"9#KS,;#"n#)-,)7D)"s:Œ3J; #<#:,; 5+<))"=SQ/3J;#K5"0$5"c)-5;)!"n-;t!#"t)-5179)""=O)-5H5"*)52+)-^.< 52A)"5A$3>;-;[;&@)7bv7d/3,Emjn)-#<#5"c)-5;)79)""=O)-7K)"=5"6),+&f jn520):,;5+<)5A$7=>)- #"t)-51#u)5A$7=>)-7;5Y,B;S,+&8"f ;)" $G;)-=>;7b.#Kg."=O)-7;Sb!"f11$ SA&8"f;)"v!"f11$ ,B; `"c)-$@/1;)-"M76)#"./w)7;30)qJ)-*)28;5A$7=>)-Sb&8"f  &'()"*)+,)- /0)"1)- ;)"P5"h+#<#"5A$`;6$$Œ#I15".Q55+<);_`E521X&B5:,;5+<)`"<# 52+)-#<#52z #"*;#";6)5".Q55">;-;1)5"T# #u)7;5Y7;e$76)7;e$\&”7d/`"c)-5"e<! jn)-#<#5".Q55+<)5A$7=>)-5"c)-5"=>)-SA:[)78#I152z#"*;7c;`";#K`f#" 5"=O#30)76)…g…c 5=*)-7=*)-SO;$B5785"95"=1#K‚&%%7D)"s)"K$ ^.d)5"=>)-#Kg."=O)-7;5"y)-Sb"=O)-\S,)6.-]!#"=O)-)-J;SQ55"A$h) 5"h+#"=O)-)-J;SQ5& "c)-5;)79)""=O)-`"c)-)"@55";65#"D3,5"c)-5;)Sb|"=O)-~)"="1;Sfjn520)& 2+)-5Y)-:,;5+<) 5"c)-5;)),/v)"C)-"A)"5"N#`"<#)"1. #"t)-5"1/7F;$.c) "A)"$.c)S• :[)5"d)S;w#Emjn)-#<#5"c)-5;)),/)"=5"6),+7egd/jT)-",$ 3=k)--;<#ˆ)-3,S@)7b3O)S,5"tS9& "=7€7b#Q!v520) l3,5".Q55+<)jT1520);_`E521 SASQ/#ˆ)-)"=;_`E521 5= 5=v)-5A$7=>)-#I1ljT1520)#";6)3=k#5A$`;6$5"h+#";b.2B)-&u))"=#KET 5=*)-7=*)--;C1#<#:=O#5"T#";w)#I1#["1;5".Q55+<)&2=O#`";gh$g‹5 5".Q55+<) 51^./=O##"+:,;5+<)5A$7=>)-7;)-?))"@5520)785"9 <5=;;>:2(DhgK;E6 j‘;“•–∝∀;⇒‘&&)“ #3+Eh•‘.  “s+!h)•‘&&)“‘.  “s`•.  2h!h15 —Em17F;=O#3=k)-$;)˜ ∀;⇒ +!h) j‘;“•$;)—j‘;“ j‘`“–3‘` ;“˜ —$v2B)-5Q!#3+Eh˜ #"G)`⇒ +!h)7e∀;⇒ +!h) #Kj‘`“≤j‘;“ +!h)•+!h)‘`“ #3+Eh•#3+Eh–‘`“ .)5;3-+13⇒ #3+Ehs  [...]... thì thuật toán A* có độ phức tạp thời gian là tuyến tính Ta xem 2 ví dụ sau để biết được rằng việc tìm kiếm đường đi trong thuật toán A* dễ dàng hơn nhiều so với thuật toán Dijsktra Ví dụ 1: Tìm kiếm đường đi thông thường trong đồ thị Hình 4 .Tìm kiếm đường đi trong thuật toán Dijsktra 11 GVHD:PGS.TS Đỗ Văn Nhơn HVTH:Hoàng Nguyên Khang-CH1301092 Hình 5 .Tìm kiếm đường đi trong thuật toán A* Ví dụ 2: tìm. .. tìm kiếm đường đi trong đồ thị nếu có chướng ngại vật Hình 6 .Tìm kiếm đường đi nếu có chướng ngại vật trong thuật toán Dijsktra 12 GVHD:PGS.TS Đỗ Văn Nhơn HVTH:Hoàng Nguyên Khang-CH1301092 Hình 7 .Tìm kiếm đường đi nếu có chướng ngại vật trong thuật toán A* Rõ ràng ta thấy thuật toán A* có đường đi rất tối ưu và tiết kiệm chi phí tốt hơn nhiều so với thuật toán Dijsktra 1.9 Tối ưu h a thuật toán A* 1... HVTH:Hoàng Nguyên Khang-CH1301092 2.2 XÂY DỰNG CHƯƠNG TRÌNH TÌM KIẾM TRÊN ĐỒ THỊ (VIẾT BẰNG C#) Mục tiêu, nội dung Thuật toán được cài đặt để giải quyết các bài toán tìm kiếm đường đi bằng thuật toán A* , cụ thể trong chương trình này là để giải quyết bài toán cho đi m bắt đâukết thúc và sau đó thể hiện việc tìm đường đi ngắn nhất Sau khi xây dựng các hàm cũng như thuật toán A* , bắt đầu thêm giao diện để được... toán tìm đường đi trong đồ thị, ta chỉ cần định ngh a thêm 2 lớp là: một lớp kế th a lớp Information, định ngh a lại các hàm cho phù hợp với dữ liệu c a bài toán mới; một lớp kế th a lớp A* , thêm vào những hàm lấy kết quả mà bài toán mới đặt ra Trong khi thuật toán A* đã cài đặt ban đầu vẫn không thay đổi o Nếu có một thuật toán mới thay thế thuật toán A* thì ta chỉ cần tạo thêm một lớp mới kế th a. .. các đi m được xét đến - Ưu tiên dùng Heap cho tập Open (Hãy nhớ rằng các hoạt động c a tìm nút với f thấp nhất (x) trong Open?) - Cây nhị phân tìm kiếm, Cây cân bằng 14 GVHD:PGS.TS Đỗ Văn Nhơn HVTH:Hoàng Nguyên Khang-CH1301092 II HIỆN THỰC THUẬT TOÁN A* Trong bài tiểu luận môn học thuật toán và phương pháp giải quyết vấn đề , em xin đ a ra 2 hiện thực thuật toán A* như sau:  Áp dụng thuật toán A* ... như sau:  Áp dụng thuật toán A* đối với bài toán 8-puzzle  Xây dựng chương trình tìm kiếm trên đồ thị (viết bằng C#) 2.1 Áp dụng thuật toán A* đối với bài toán 8-puzzle Mục tiêu, nội dung Thuật toán được cài đặt để giải quyết các bài toán tìm kiếm mù bằng phương pháp A* , cụ thể trong chương trình này là để giải quyết bài toán 8puzzle Cài đặt và hướng dẫn sử dụng  Cài đặt - Mô tả cấu trúc dữ liệu... “Run” và xem kết quả đường đi ngắn nhất III KẾT LUẬN CHUNG Vì tính quan trọng c a thuật toán A* nên hầu hết hiện nay các giải thuật đường đi cho game đều thực hiện bởi thuật toán này Qua bài tiểu luận này, em xin chân thành cảm ơn thầy PGS.TS Đỗ Văn Nhơn đã hướng dẫn cũng như truyền đạt kiến thức để em hoàn thành bài tiểu luận Vì thời gian có hạn nên em chỉ dừng ở mức xây dựng và đánh giá thuật toán A* ,... là hàm Run() c a lớp AStar), Information cung cấp 1 số hàm truy xuất dữ liệu cần thiết mà một thuật toán tìm kiếm mù yêu cầu (cụ thể là thuật toán A* ) o Data8puzzle cài đặt tất cả các hàm mà nó kế th a từ Information, những hàm này được cài đặt d a vào cách thức lưu trữ dữ liệu c a lớp Data8puzzle Data8puzzle ch a đầu vào và đầu ra c a bài toán 8puzzle (kiểu int, ma trận 3x3 để mô tả trạng thái đã được... c a một trạng thái thông qua biến m_Info c a lớp BlindSearch - 16 Các ý tưởng “đặc biệt” trong quá trình cài đặt GVHD:PGS.TS Đỗ Văn Nhơn HVTH:Hoàng Nguyên Khang-CH1301092 o Chương trình được thiết kế theo hướng đối tượng để giải quyết các bài toán tìm kiếm mà có thể áp dụng thuật toán A* mà không cần phải viết lại thuật toán A* cho phù hợp với đi u kiện bài toán Khi có một bài toán khác, ví dụ như bài. .. chính sau: MinPriorityQueue AVLTree Information BlindSearch AStar 15 Data8puzzle 8puzzle GVHD:PGS.TS Đỗ Văn Nhơn HVTH:Hoàng Nguyên Khang-CH1301092 o MinPriorityQueue là một hàng đợi ưu tiên được cài đặt bằng cấu trúc heap, được sử dụng cho tập trạng thái OPEN trong thuật toán A* o AVLTree là một cấu trúc cây AVL, được sử dụng cho tập trạng thái CLOSE trong thuật toán A* o Lớp Information và AStar là . #,)-#1+Pj+7K#K5"eEmjn)-$B5 #@.52t#"h1!5H;5";e.7e#,;7]5",)-7k;=.5;0)),/X €-;[ function A* (đi m_xuất_phát,đích) var đóng:= tập rỗng var q:= tạo_hàng_đợi(tạo _đường_ đi( điểm_xuất_phát)) while q không phải tập rỗng var p:= lấy_phần_tử_đầu_tiên(q) var x:= nút cuối cùng c a p . in đóng continue if x = đích return p bổ sung x vào tập đóng foreach y in các _đường_ đi_ tiếp_theo(p) đ a_ vào_hàng_đợi(q, y) return failure 2+)-7K #<#7=>)-7;5;6!5"h+P!X52[Sb5Q!"k!#<#7=>)-7;5J+:v;S;w#`‹+ j,;!5"0$$B5)t5`b#J)"&;[5";652‰)-",)-7k;7=k#E?!g6!5T7B)-:v;-;<529#I1 ",$. /0)"1)- A) "…& A$ `;6$7=>)-7;52+)-5".Q55+<)l fjn 5A$ `;6$7=>)-7;52+)-785"9)6.#K#"=O)-)-J;SQ5 A) "‚& A$ `;6$7=>)-7;)6.#K#"=O)-)-J;SQ552+)-5".Q55+<);_E`521  &'()"*)+,)-

Ngày đăng: 23/05/2015, 21:04

Từ khóa liên quan

Mục lục

  • I. THUẬT TOÁN A* VÀ CÁC TÍNH CHẤT LIÊN QUAN

    • 1.1 Tổng quan về các thuật toán tìm đường đi trên đồ thị

    • 1.2 Tại sao phải cần đến thuật toán A*?

    • 1.3 Tổng Quan thuật toán A*

    • 1.4 Ý tưởng trực quan thuật toán A*

    • 1.5 Mô tả thuật toán A*

    • 1.6 Các tính chất thuật toán A*

    • 1.7 Độ phức tạp thuật toán

    • 1.8 So sánh thuật toán A* với các thuật toán khác

    • 1.9 Tối ưu hóa thuật toán A*

    • II. HIỆN THỰC THUẬT TOÁN A*

      • 2.1 Áp dụng thuật toán A* đối với bài toán 8-puzzle

        • Mục tiêu, nội dung

        • Cài đặt và hướng dẫn sử dụng

        • Thử nghiệm

        • Kết luận

        • 2.2 XÂY DỰNG CHƯƠNG TRÌNH TÌM KIẾM TRÊN ĐỒ THỊ (VIẾT BẰNG C#)

          • Mục tiêu, nội dung

          • Hướng dẫn sử dụng:

          • III. KẾT LUẬN CHUNG

          • IV.TÀI LIỆU THAM KHẢO

Tài liệu cùng người dùng

Tài liệu liên quan