CHƯƠNG 1: TỔNG QUAN VỀ LẬP TRÌNH ĐỘNG 1.1 Giớithiệuchung 1.1 Kháiniệmvềquyhoạchđộng Lậptrìnhđộng(DynamicProgramming)làmộtphươngphápđượcsửdụngtrong toánhọcvàkhoahọcmáytínhđểgiảiquyếtcácvấnđềphứctạpbằngcáchchia chúngthànhnhữngbàitoánconđơngiảnhơn.Bằngcáchgiảimỗibàitoánconchỉ mộtlầnvàlưutrữkếtquả,nótránhđượccácphéptínhdưthừa,dẫnđếngiảipháp hiệuquảhơnchonhiềubàitoán.2 Lậptrìnhđộnghoạtđộngnhưthếnào? Xácđịnhcácvấnđềphụ:chiavấnđềchínhthànhcácvấnđềphụnhỏhơn,độc lập. Lưutrữgiảipháp:giảiquyếttừngbàitoánconvàlưutrữgiảiphpastrongmột bảnghoặcmảng. Xâydựnggiảipháp:sửdụngcácgiảiphápđượclưutrữđểxâydựnggiảiphápcho vấnđềchính. Tránhdưthừa:bằngcáchlưutrữlờigiải,quyhoạchđộngđảmbảorằngmỗibài toánconchỉđượcgiảimộtlần,giảmthờigiantínhtoán.
Ví dụ về lập trình động:XétbàitoántìmdãyFibonacci Hình1:DãyFibonacci ChuỗiFibonaccisửdụnglậptrìnhđộng: Cácbàitoáncon:F(0),F(1),F(2),F(3),…. Giảipháplưutrữ:TạomộtbảngđểlưutrữcácgiátrịcủaF(n)khichúng đượctínhtoán. Xâydựnglờigiải:ĐốivớiF(n),hãytracứuF(n-1)vàF(n-2)trongbảngvà cộngchúnglại. Tránhdưthừa:Bảngđảmbảorằngmỗibàitoáncon(vídụF(2))chỉđược giảimộtlần.
Bằngcáchsửdụnglậptrìnhđộng,chúngtacóthểtínhtoándãyFibonaccimột cáchhiệuquảmàkhôngcầnphảitínhtoánlạicácbàitoáncon.3 Khinàosửdụnglậptrìnhđộng Lậptrìnhđộnglàmộtkỹthuậttốiưuhóađượcsửdụngkhigiảiquyếtcácvấnđề baogồmđặcđiểmsau: 1.1 Cấutrúctốiưu: Cấutrúctốiưucónghĩalàchúngtakếthợpcáckếtquảtốiưucủacácbàitoán conđểđạtđượckếtquảtốiưucủabàitoánlớnhơn. Vídụ: Xétvấnđềtìmđườngdẫnchiphítốithiểutrongbiểuđồcótrọngsốtừnút nguồnđếnnútđích.Chúngtachiabàitoánnàythànhcácbàitoánconnhỏ hơn: Tìmđườngđicóchiphítốithiểutừnútnguồnđếnmỗinúttrung gian. Tìmđườngđicóchiphítốithiểutừmỗinúttrunggianđếnnútđích.2 Cácbàitoánconchồngchéo Cácbàitoáncongiốngnhauđượcgiảilặpđilặplạiởcácphầnkhácnhaucủa bàitoán. Vídụ:XétbàitoántínhdãyFibonacci.ĐểtínhsốFibonaccitạichỉsốn,chúng tacầntínhsốFibonaccitạichỉsốn-1vàn-2.Điềunàycónghĩalàbàitoáncon tínhsốFibonaccitạichỉsốn-1đượcsửdụnghailầntronglờigiảichobàitoán lớnhơnlàtínhsốFibonaccitạichỉsốn 1.4 Cácphươngpháplậptrìnhđộng Lậptrìnhđộngcóthểđạtđượcbằnghaicáchtiếpcận: 1.1 Cáchtiếpcậntừtrênxuống(Top-Down) Trongcáchtiếpcậntừtrênxuống,cònđược gọilàghinhớ(memoization), chúngtabắtđầuvớilờigiảicuốicùngvàchianóthànhcácbàitoánconnhỏ hơnmộtcáchđệquy.Đểtránhtínhtoándưthừa,chúngtôilưutrữkếtquả củacácbàitoánconđãgiảitrongbảngghinhớ.
Phântíchcáchtiếpcậntừtrênxuống: Bắtđầuvớilờigiảicuốicùngvàchiathànhcácbàitoánconnhỏhơn. Lưutrữlờigiảicủacácbàitoáncontrongmộtbảngđểtránhtínhtoán dưthừa. Thíchhợpkhisốlượngbàitoánconlớnvànhiềubàitoánconđượcsử dụnglại.2 Cáchtiếpcậntừdướilên(Bottom-Up) Trongcáchtiếpcậntừdướilên,cònđượcgọilàlậpbảng( tabulation),chúng tabắtđầuvớicácbàitoánnhỏnhấtvàdầndầnxâydựngđếnlời giảicuối cùng.Chúngtalưutrữukếtquảcủacácbàitoánconđãgiảitrongmộtbảngđể tránhtínhtoándưthừa. Phântíchcáchtiếpcậntừdướilên: Bắtđầuvớinhữngbàitoánnhỏnhấtvàdẫndầnxâydựnglờigiảicuối cùng.
Điềnvàibảngcácgiảiphápchocácbàitoáncontheocáchtừdướilên. Thíchhợpkhisốlượngbàitoánconnhỏvàlờigiảitốiưucóthểđược tínhtrựctiếptừlờigiảicủabàitoánconnhỏhơn.5 Ứngdụngcủalậptrìnhđộng Lậptrìnhđộngcónhiềuứngdụng,baogồm: Tốiưuhóa:bàitoánbalo,đườngđingắnnhất,mảngcontốiđa. Khoahọcmáytính:dãyconchungdàinhất,chỉnhsửakhoảngcách,khớp chuỗi. Nghiêncứuhoạtđộng:quảnlýhàngtồnkho,lậpkếhoạch,phânbổnguồn lực.2 Đặcđiểmcủalậptrìnhđộng Lậptrìnhđộnglàmộttrongnhữngkỹthuậtmạnhmẽnhấtđểgiảiquyếtmộtloạivấn đềnhấtđịnh.
Cómộtcáchhayđểhìnhthànhcáchtiếpcậnvàquytrìnhtưduyrấtđơngiản,đồng thờiphầnmãhóacũngrấtdễdàng. Vềcơbản,đólàmộtlýtưởngđơngiản,saukhigiảiquyếtmộtvấnđềvớimộtđầu vàonhấtđịnh,lưujeetsquảlàmtàiliệuthamkhảođểsửdụngchotươnglai. Lờigiảicủacácbàitoánconđượclưutrữutrongmộtbảnghoặcmảng(ghinhớ)hoặc theocáchtừdướilên(lậpbảng)đểtránhtínhtoándưthừa. Lờigiảibàitoáncóthểđượcxâydựngtừlờigiảicủacácbàitoáncon.
Lậptrìnhđộngcóthểđượctriểnkhaibằngthuậttoánđệquy,trongđógiảiphápcho cácbàitoánconđượctìmthấyđệquyhoặcsửdụngthuậttoánlặp,giảiphápđược tìmthấybằngcáchgiảiquyếtcácbàitoáncontheomộtthứutựcụthể.3 Lậptrìnhđộngdựatrêncácnguyêntắc Đặctrungcấutrúccủalờigiảitốiưu,tứclàxâydựngmôhìnhtoánhọccủalờigiải. Xácđịnhđệquygiátrịcủagiảipháptốiưu. Sửdụngphươngpháptiếpcậntừdướilên,tínhtoángiátrịcủalờigiảitốiưucho từngbàitoánconcóthểxảyra. Xâydựnggiảipháptốiưuchobàitoánbanđầubằngcáchsửdụngthôngtinđược tínhtoánởbướctrước.4 Cácbướcgiảibàitoánbằnglậptrìnhđộng Bước1:xemxétbàitoáncóthểchiathànhcácbàitoánconthảomãnnguyênlý Bellmankhông.
Bước2:Xácđịnhhệthứctruyhồichobàitoántốiưu. Bước 3: Tìm nghiệmtối ưu của bài toán bằng haiphương pháp Top-Down hoặc Bottom-Up.1 Xemxétbàitoán Xácđịnhxembàitoáncóthểchiathànhcácbàitoánconnhỏhơnkhông,cóthể giảiquyếtđộclậpvớinhau. KiểmtraxembàitoáncóthỏamãnnguyênlýBellmanhoặccácđặcđiểmcủaquy hoạchđộnghaykhông.Nhữngđặcđiểmbaogồmbàitoánconchồngchéovàcấu trúctốiưuphụthuộc.2 Xácđịnhhệthứcxãhội Xâydựngmộthệthốngtruyhồiđểtínhtoángiátrịtốiưucủabàitoántừcácbài toánconnhỏhơn. Địnhnghãicáchbiểudiễncáctrạngtháivàcáchchuyểnđổigiữachúng.
Xácđịnhcôngthứchoặcquytắcđểtínhtoángiátrịtốiưudựatrêncácgiátrịcủa cáctrạngtháicon.3 Tìmnghiệmtốiưu Cóhaiphươngphápchínhđểtìmnghiệmtốiưucủabàitoán:Top-Down(Đệquy vớighinhớ)vàBottom-Up(Lậpbảng). TrongphươngphápTop-Down,chúngtasửdụngđệquyvàlưutrữcácgiátrịđã tínhtoántrướcđóđểkhôngphảitínhlại. TrongphươngphápBottom-Up,chúngtasửdụngmộtbảngđểlưutrữcácgiátrị tốiưuvàđiềnvàobảngtheothứtựcáctrườnghợpcơbảnđếnphứctạp.5 Mộtsốkỹthuậtgiảibàitoánlậptrìnhđộng Cóhaihướngtiếpcậnđểgiảiquyếtmộtbàitoánbằnglậptrìnhđộng 1.1Top-Down(Từtrênxuống–Ghinhớ) TheohướngtiếpcậnTop-Downchúngtasẽbắtđầubằngbàitoánlớnnhấthaybài toánởmứctrêncùngsauđódùngphươngphápđệquyđểgọilờigiảichocácbài toánconởmứcthấphơntiếptheo.Quátrìnhtiếptụcchođếnkhigặpbàitoánnhỏ nhất.Đệquysẽtựđộngtổhợpkếtquảcácbàitoánconđểđượckếtquảbàitoánban đầu.Cáchnàyđòihỏitốnnhiềuthờinguyênđểghinhớtấtcảkếtquảcủacácbài toáncon. Việcthựchiệncácloạighinhớphụthuộcvàocácthamsốthayđổichịutráchnhiệm giảiquyếtvấnđề.Cónhiềukíchthuốckhác nhaucủa bộnhớđệmđược sửdụng trongkỹthuậtghinhớ.Dướiđâylàmộttrongsốđó: Ghinhớ1D:Hàmđệquychỉcómộtđốisốcógiátrịkhôngđổisaumỗilầngọihàm.
Ghinhớ2D:Hàmđệquychỉcóhaiđốisốcógiátrịkhôngđổisaumỗilầngọihàm. Ghinhớ3D:Hàmđệquychỉcóbađốisốcógiátrịkhôngđổisaumỗilệnhgọihàm. Kếtluận:Ghinhớlàmộtkháiniệmlậptrìnhvàcóthểđượcápdụngchobấtkỳngôn ngữnào.Mụctiêutuyệtđốicủanólàtốiưuhóachươngtrình.Thôngthườngvấnđề nàyxuấthiệnkhicácchươngtrìnhthựchiệncácphéptínhnặng.Kỹthuậtnàyđược lưutrữtátcảkếtquảđượctínhtoántrướcđóđểkhôngphảitínhtoánlạichocùng mộtvấnđề.2Bottom-Up(Từdướilên–Lậpbảng) HướngtiếpcậnBottom-Upđầutiênchúngtagiảicácbàitoánconởmứcthấpnhất sauđódùngcáckếtquảnàyđểtínhbàitoánởmứctrên.Quátrìnhtiếptụcchođến khichúngtatìmđượckếtquảbàitoánmứccaonhất.Hướngnàykhôngđòihỏiphải lưulạikếtquảcủatấtcảcácbàitoáncon. Chiếnlượctừdướilêntronglậptrìnhđộnglàlậpbảng Kếtquảcủacácbàitoánconđượclưutrữtrongmộtbảng,thườnglàmộtmảng Sosánhviệclậpbảngvớiviệcghinhớvềđộphứctạpvềthờigian,việclậpbảng thườngsẽhiệuquảhơn.
Việclậpbảngđượcthựchiệntheocácbướcsau: Xácđịnhcácyếutốcầntốiưuvàxácđịnhrõràngvấnđềcầngiảiquyết. Tạomộtbảngđểchứakếtquảcủacácbàitoáncon(thườnglàmộtmảng).Sự cốxácđịnhkíchthướccủabảng. Tạotrườnghợpcơsởhoặcgiátrịbanđầuchobảng.Nhữngconsốnàyđại diệnchocâutrảlờichocácbàitoánconnhỏnhất. Điềnvàobảngtừcácbàitoánconnhỏnhấtđếnbàitoánlớnnhấtbằngcáchsử dụngphéplặp(thườnglàcácvònglặp).Dựatrêncácbàitoánconđãtínhtoán trướcđó,hãyxácđịnhlờigiảichotừngbàitoáncon.
Khibảngđượcđiềnđầyđủ,kếtquảcuốicùngthườngđượctìmthấyởmục cuốicùngcủabảng. Kếtluận:Lậpbảnglàmộtkỹthuâthmạnhmẽtrongquyhoạchđộngđểgiảiquyết cácvấnđềphứctạpmộtcáchhiệuquảbằngcáchlưutrữkếtquảcácbàitoáncon trongmảng.2 Sosánhlậpbảngvàghinhớ Ghinhớ:Cáchtiếpcậntừtrênxuống Lưutrữkếtquảcủalệnhgọi Hàmtriểnkhaiđệquy Rấtphùhợpchocácbàitoáncótậphợpđầuvàotươngđốinhỏ Đượcsửdụngkhicácbàitoánconcócácbàitoánconchồngchéo. Lậpbảng:Cáchtiếpcậntừdướilên Lưutrữkếtquảcủacácbàitoáncontrongmộtbảng Triểnkhailặplại Phùhợpchoáccbàitoáncótậphợpđầuvàolớn Đượcsửdụngkhicácbàitoánconkhôngtrùngnhau. Lậpbảng Ghinhớ Tìnhtrạng Quan hệ chuyển trnagj thái rất Quanhệchuyểntrạngtháidễnghĩ khónghĩ Mãsố Mã trở nên phứuc tạp khi yêu Mãdễdàngvàítphứctạphơn cầunhiềuđiềukiện Tốcđộ Nhanh chóng, vì truy cập trực Chậmdocónhiềulệnhgọiđệquy tiếpvàocác trạngthái trước đó vàbáocáotrảvề từbảng Giải quyết vấn Nếu một số bài toán con trong đềphụ khônggianbài Các mục trong bảng Tiếpcận Lập bảng là một cách tiếp cận Ghi nhớlà một cách tiếpcận đệ lặpđilặplại quy Bảng1:Sosánhlậpbảngvàghinhớ CHƯƠNG 2: TÌM HIỂU VỀ LÝ THUYẾT TRÒ CHƠI 2.1Cáckháiniệmchung Lýthuyếttròchơilàmộtmôhìnhtoánhọcđượcsửdụngđểraquyếtđịnh.Nócóứng dụngtrong mọilĩnh vực khoahọc xã hội,cũng nhưlogic vàkhoa họcmáy tính.Lý thuyếttròchơingàycàngđóngmộtvaitròquantrọngtronglogicvàkhoahọcmáytính.
Đểđượcxácđịnhđầyđủ,mộttròchơiphảixácđịnhrõcácyếutốsau:ngườichơitrong tròchơi,thôngtinhànhđộngcósẵnchomỗingườichơitạimỗithờiđiểmquyếtđịnhvà phầnthưởngchomỗikếtquả.Hầuhếtcáctròchơihợptácđượctrìnhbàydướidạnghàm đặctrưng,trongkhidạngmởrộngvàthôngthườngđượcsửdụngđểxácđịnhcáctrò chơikhônghợptác. Tronglýthuyếttròchơi,dạngthôngthườnghaycònđượcgọilàdạngchiếnlượclàsự môtảvềmộttròchơi.Tròchơithôngthườngthườngđượcthểhiệnbằngmộtmatrận hiểnthịngườichơi,chiếnlượcvàphầnthưởng.Khimộttròchơiđượctrìnhbàyởdạng bìnhthường,ngườitachorằngmỗingườichơihànhđộngđồngthờihoặcítnhấtlàkhông biếthànhđộngcủangườikia. Lýthuyếttròchơilàmộtchủđềtronglậptrìnhcạnhtranhliênquanđếnmộtloạivấnđề nhấtđịnh,trongđócómộtsốngườichơitròchơidựatrêncácnguyêntắcnhấtđịnhvà nhiệmvụthườnglàtìmrangườichiếnthắnghoặcnướcđichiếnthắng Mụctiêulýthuyếttròchơicholậptrìnhcạnhtranh Ởđâychúngtasẽtậptrungvàocáctròchơihaingườichơikhôngchứacácyếutố ngẫunhiên Mụctiêucủachúngtalàtìmramộtchiếnlượcmàchúngtacóthểápdụngđể dànhchiếnthắngtrongtròchơibấtkểđốithủcólàmgìnếuchiếnlượcđótồntại Lýthuyếttròchơihoặclýthuyếttròchơitổhợptrongđóchúngtacóthôngtin hoànhảo(khôngcósựngẫunhiênnhưtungđồngxu)chẳnghạnnhưluậytròchơi, lượtcủangườichơi,mứctốithiểuvàtốiđaliênquanđếncácphátbiểuvấnđề cũngnhưmộtsốđiềukiệnvàràngbuộc Sẽcóbatrườnghợpcóthểxảyralàthắng,thuahoặchòa Điềukiệnđầucuốiđượcxácđịnhrõràng Ngườitachorằngtròchơisẽkếtthúcvàomộtthờiđiểmnàođósaumộtsốnước đicốđịnh.Khônggiốngnhưcờvua,nơibạncóthểcóvôsốnướcđi 2.2Trạngtháitròchơi Chúngtacùngxemxétmộttròchơikhibanđầucóngậy.NgườichơiAvàBdi chuyểnluânphiên,vàngườichơiAbắtđầu.Mốilầnđi,ngườichơiphảiloạibỏ1,2 hoặc3câygậycuốicùngsẽchiếnthắngtròchơi. Vídụ:n=10thìtròchơisẽđượctiếnhànhnhưsau NgườiAloạibỏ2câygậy(còn8câygậy) NgườiBloạibỏ3câygậy(còn5câygậy) NgườiAloạibỏ1câygậy(còn4câygậy) NgườiBloạibỏ2câygậy(còn2câygậy) NgườiAloạibỏ2câycònlạivàchiếnthắng.
Tròchơinàybaogồmcacstrạngthái0,1,2,…,nsốlượngtrạngtháiphụthuộcvàosố gậycònlại. Cáctrạngtháichiếnthắngvàthuacuộc(Winning-Losing) Trạngtháichiếnthắnglàtrạngtháikhingườichơisẽthắngtròchơinếuhọchơitối ưu,vàtrạngtháithualàtrạngtháikhingườingườichơisẽthuatròchơinếuđốithủ tốiưu.Chúngtacóthểphânloạitấtcảcáctrạngtháicủatròchơisaochomỗitrạng tháicócảtrạngtháithắngvàtrạngtháithua. Trongtròchơitrên,trạngthái0làtrạngtháithuacuộcvìngườichơikhôngthểthực hiệnbấtkỳnướcđinào. Trạngthái1,2và3làtrạngtháichiếnthắngvìchúngtacóthểloạibỏ1,2hoặc3 gậyvàgiànhchiếnthắngtrongtròchơi Ngượclại,trạngthái4làtrạngtháithua,vìbấtkỳnướcđinàocũngdẫnđếntrạng tháithắngcủađốiphương.
Tổngquáthơn,nếucómộtđộngtháidẫnđếntừtrạngtháihiệntạisangtrạngthái thuacuộcthùtrạngtháihiệntạilàtrạngtháithắng,cònngượclạilàthìtrạngtháithua cuộc. Bằngcáchsửdụngquansátnày,chúngtacóthểphânloạitấtcảcáctrạngtháicủa mộttròchơibắtđầubằngnhữngtrạngtháithuakhikhôngcónướcđinàocóthểthực hiệnđược. Cáctrạngthái0,1,2,…9củatròchơitrêncóthểđượcphânloạinhưsau(W-Thắngvà L-Thua) Trạng 0 1 2 3 4 5 6 7 8 9 thái Kết L W W W L W W W L W quả Bảng2:TrạngtháiW-L Từcáchphânloạinày,chúngtacóthểrútramộtchiếnlượctốiưu:luônđểlạisốgậy chiahếtcho4.Chiếnthuậtnàyđảmbảorằngđốithủluônrơivàotìnhtrạngthua cuộc,vớiđiềukiệnsốgậybanđầukhôngchiahếtcho4.3Đồthịtrạngtháicủatròchơi(Stategraph) Xétmộttròchơigậykhác,khitrongmỗitrạngtháik,tađượcphéploạibỏsốlượngx gậybấtkỳnàosaochoxnhỏhơnkvàchiahếtchok Vídụtrongtrạngthái8chúngtacóthểbỏ1,2hoặc4gậy,nhưngtrongtrạngthái7 chúngtachỉđượcloạibỏ1gậy. Hìnhsauchỉracáctrạngthái1…9củatròchơibằngđồthịtrạngthái,khimỗiđỉnhlà mộttrạngtháivàcáccạnhlàcácđườngđigiữachúng. Hình2:Trạngtháicủatròchơitrênđồthịtrạngthái Trạngtháicuốicùngtrongtròchơinàyluônlàtrạngthái1,làtrạngtháithuavìkhông cónướcđihợplệ.Việcphânloạicáctrạngthái1…9nhưsau: Trạn 1 2 3 4 5 6 7 8 9 gthái Kết L W L W L W L W L quả Bảng3:TrạngtháiL-Wcủađồthịtrạngthái Trongtròchơinày,tấtcảcáctrạngtháisỗchẵnlàcáctrạngtháisốchẵnđềulàtrạng tháithắngvàtấtcảcáctrạngtháisốlẻlàtrạngtháithua.4Tròchơitổhợpcânbằng 2.1Môtả Trò chơi tổ hợplàtròchơigồm:hai người chơi (ở đây gọi người chơi trước là 𝐴 và người chơi sau là 𝐵),mộttập hữu hạn các trạng thái𝑆(viếttắtcủaState)cóthểđạt đượccủatròchơi.Mỗingườichơi có mộttập các bước di chuyển hợp lệ𝑄 đểdi chuyểntừtrạngtháinàysangtrạngtháikhác(gọilàluậtchơi)vàmộttậpcáctrạng thái kết thúc gọi là𝑇⊂𝑆(viết tắt của Terminal).
Hai người chơi sẽ luân phiên di chuyểntừtrạngtháinày sangtrạngtháikhác.Ngườiđếnđượctrạngtháikếtthúc trướcsẽlàngườichiếnthắng. Tròchơitổhợpcânbằnglàtròchơiđốikhángthỏamãnnhữngđiềukiệnsau: Có2ngườichơi Cómộttậphữuhạncácvịtrícóthểxảyra(cáctrạngthái)củatròchơi Cóquy luậtchơi ápdụngchohaingườichơilà cân bằng,nghĩalà mỗi ngườichơiđếnlượtmìnhđềucóquyềnchọnmộtphépdichuyểnhợplệtùy ý Haingườichơilầnlượt,mỗilầnthựchiệnmộtphépdichuyểnhợplệ Tròchơikếtthúckhiđạttớivịtríkếtthúc.Thôngthườngquyđịnhngười chơidichuyểnđượccuốicùnglàngườichiếnthắng,ngườinàođếnlượtmà kdichuyểnđượcnữathìthua Nếutròchơikhôngbaogiờkếtthúcsẽcómộtthôngbáorútthăm.Cóthể bổsungthêmđiềukiệnnàođóđểtròchơikếtthúckhoongcângthôngbáo rútthămnhưPtròchơisẽkếtthúckhiđãcóđủsốlầndichuyểnnhấtđịnh màkhôngaithắngthìhaiđấuthủhòa.2TậpP,tậpNvàcáchtìm Đểthuậntiệnchoviệcxâydựngthuậttoán(giànhthắng)củatròchơi,ngườitađưara kháiniệmtậpPvàtậpN.Đólàhaitậpthỏamãncáctínhchấtsau: N:tậpcáctrạngtháixSsaochonếutrạngtháibanđầucủatròchơilà xthìngười chơi trướcluônchiếnthắng P:tậpcáctrạngtháixSsaochonếutrạngtháibanđầucủatròchơilà xthìngười chơi sauluônởtrạngtháithắng. Từđịnhnghĩatrên,NvàPsẽthỏamãnbatínhchấtsau: TậpPphảichứatoànbộtrạngtháikếtthúc VớimỗitrạngtháisthuộctậpN,tồntạiítnhấtmộttrạngtháis’đếnđượctừsmà thuộctậpP VớimỗitrạngtháisthuộctậpP,tấtcảcáctrạngtháis’đếnđượctừsphảithuộcN Ràngbuộcđầutiênxácđịnhtrườnghợpcơbảnnhất.Hairàngbuộcsausẽgiúpchúng taliêntụcđệquytừtrườnghợpcơbảnđểxâydựngđượctậpPvàNhoànchỉnh.Ta sẽthấyrõđiềunàyởphầnThuật toán xác định tập P vI N. KhixâydựngđượctậpPvàNtheocácràngbuộctrên,tacóthểdễdàngxâydựng chiếnthuậtthắngchongườichơiAnhưsau(dođâylàtròchơitổhợpcânbằngnên chiếnthuậtthắngcủaBcũngsẽtươngtự): 1.
Nếu𝐴bắt đầu ở trạng thái thuộc N,luôn đi tới trạng thái thuộc Pđể épBđivàotrạngtháithuộcN.Dongườithắnglàngườiđivàotrạngtháikết thúc,màtrạngtháikếtthúclạithuộcPnênchắcchắnAsẽthắng. NếuAbắtđầuởtrạngtháithuộcP,Achỉcóthểkéodàivánđấuvàđợisơ hởcủaB(BđivàovịtríthuộcN)vàdùngchiếnthuậtthắngởtrườnghợp đầu.TuynhiênnếuBcũngchơitốiưuthìchắcchắnAsẽthua.3TổngNimvàtròchơiNim Tổng Nim: TổngNimcủahaisốnguyênkhôngâmlàkếtquảcủaphépcộngkhôngnhớcủahai sốđótronghệcơsố2(còngọilàcộngtheomodun2). Vídụ: Số 3 hệthập phân viết dưới dạng 11 cơsố2là Số 5 hệthập phân viết dưới dạng 101 cơsố2là Số 8 hệthập phân viết dưới dạng 1000 cơsố2là TổngNimcủachúnglà: 1110(là14tronghệthậpphân) Vậytacó:358=14 Phéptoán(tínhtổngNim)làxorcótínhchấtkếthợp,giaohoán.Đặcbiệt: 0a=a,aa=0,dođónếuab=acthìb=c Trò chơi Nim: Tròchơi Nimlà một trò chơiđơn giảnnhưng cómột vaitrò quantrọng tronglý thuyếttròchơi,vìnhiềutròchơikháccóthểđượcchơibằngchiếnlượctươngtự. Đầutiênchúngtasẽtậpchungvàonim,sauđóchúngtasẽtạorachiếnlượcchocác tròchơikhác. Cónđốnggậytrongnim,vàmỗiđốngbaogồmmộtsốcâygậy.
Ngườichơilầnlượtdichuyểnvàởmỗilượt,ngườichơichọnmộtđốngcònchứa gậyvàloạibỏsốlượnggậybấtkỳkhỏiđó Ngườichiếnthắnglàngườiloạibỏcâygậycuốicùng. Chúngtacóthểdễdàngphânloạibấtkỳtrạngtháinimnàobằngcáchtínhtổngnims =x1x2…xn,trongđólàphéptoánxor. Cáctrạngtháicótổngnim=0làtrạngtháithuavàtấtcảcáctrạngtháikháclàtrạng tháithắng. Trạng thái thua:trạngtháicuốicùng[0,0,…0]làtrạngtháithua,vàtổngnimcủa nólà0.
Trongcáctrạngtháithuakhác,baogồmbấtkỳnướcđinàodẫnđếntrạngtháithắng, vìkhigiátrịxkthayđổi,tổngnimcũngthayđổi,dođótổngnimkhác0saunướcđi. Trạng thái thắng:chúngtacóthểdichuyểnđếntrạngtháithuanếucómộtđốngbất kỳmàxks<xk. Trongtrườnghợpnày,chúngtacóthểloạibỏgậytừđốngksaochonócònchứaxk sgậy,cáinàysẽdẫnđếntrạngtháithua. Vídụ:xéttrạngthái[10,12,5] Trạngtháinàylàtrạngtháithắngvìtổngnimcủanólà3 Nhưvậy,phảicómộtbướcdẫnđếntrạngtháithua. Tổngnimcủatrạngtháinhưsau: 10 1010 12 1100 5 0101 3 0011 Trongtrườnghợpnày,đốngcó10gậylàđốngduynhấtcómộtbitởvịtríbitngoài cũngbêntráicủatổngnim: 10 1010 12 1100 5 0101 3 0011 Kíchthướcmớicủagậyphảilà103=9,vìvậychúngtasẽchỉloạibỏmộtgậy. Sauđó,trạngtháisẽlà[9,12,5]làmộttrạngtháithua: 9 1001 12 1100 5 0101 0 0000 2.5ĐịnhlýBouton ĐịnhlýBoutonlàtrạngtháicủatròchơiNim(x1,x2,…,xn)thuộcPkhivàchỉkhi tổngnimbằng0. Vídụ: Trạngthái[5,7,9]tươngứngvới579=11>0nênnólàvịtríN Trạngthái[4,12,8]tươngứngvới4128=0nênnólàvịtríP TừđịnhlýsuyrachiếnthuậtgiànhthắngtrongtròchơiNimchuẩnnhưsau: Giảsửhiệntạilà(x1,x2,…,xn)tươngứngvớitổngNimlà: g=x1x2…xn>0 Cóthểchứngminhsẽtồntạithànhphầnximàxi’=g xixi.Cáchđểgiànhchiến thắnglàgiảmxithànhx’i.
Trạngtháimới(x1,x2,…,x(i-1),x’i,x(i+1),…,xn)cótổngNimlàg’=0vì: g’=x1x2…x(i-1)x(i+1)…xn =x1x2…x(i-1)[gx]x(i+1)…xn =(x1x2…x(i-1)xix(i+1)…xn)g=gg=0 QuađịnhlýBouton,chúngtacómộtcáchxácđịnhPvàNdựatrêntổngNim,vàtừ việcchứngminhđịnhlýBouton,takhôngchỉbiếtđượctrạngtháithắng–thuacủa tròchơimàcòncóthểxâydựngđượcmộtchiếnthuậtthắngcụthể.6Tròchơitrênđồthị Mộtsốđồchơicóthểmôtảbằngđồthịcóhướng.Mỗivịtrícủatròchơiđượccoi nhưmộtđỉnhcủađồthịvàmỗiphépdichuyểnhợplệđượcxemnhưmộtcũngdẫntừ đỉnhnàysangđỉnhkhác.ChúngtasẽđinhjnghĩahàmSprague–Grundy(SG)đểxác địnhđượccácvịtríPhoặcNcủatròchơitrênđồthị. ĐồthịtròchơilàđồthịcóhướngG=(X,F)vớiXlàtậpđỉnhkhôngrỗng–làtậpcác vịtrícủatròchơivàFlàhàmtrêntậpXsaochovớimỗix XthìF(x)làmộttập conthuộcXtứclàxXF(x)X.CácđỉnhthuộcF(x)đượcgọilàcácđỉnhcó thểtớitừđỉnhx.NếuF(x)rỗngthìxlàđỉnhkếtthúc.Mộtphépdichuyểnhợplệlàđi từđỉnhxtớimộtđỉnhthuộcF(x). Tròchơitổhợpcânbằngcó2ngườiđượcmôphỏngtrênđồthịG=(X,F)vớiđỉnh xuấtphátx0Xvàtuântheocácquytắcsau: (1) Ngườichơithứunhấtđitrướcvàbắtđầutừđỉnhx0 (2) Haingườichơilầnlượtthựchiệnphépdichuyểntrênđồthị (3) Tạivịtríx,ngườichơiđượcdichuyểnđếnbấtkìyF(x) (4) Ngườichơinàođếnlượtphảinhậnđỉnhkếtthúclàngườithua.7ĐịnhlýSprague–Grundy ĐịnhlýSprague–Grundyphátbiểurằng:mọitròchơitổhợpcânbằngkếtthúctrong hữuhạnbướcđềutươngđươngvớitròchơiNimmộtcột,trongđótrạngtháixcủatrò chơihiệntạitươngứngvớitrạngtháitròchơiNimmộtcộtcóg(x)viênsỏi,trongđó g(x)làgiátrịcủaSprague–Grundycủax. Giảsửcómộttròchơitổnghợp(nhiềuhơnmộttròchơiphụ)gồmcóNtròchơiphụ vàhaingườichơiAvàB.KhiđóĐịnhlýSprague-GrundynóirằngnếucảAvàB đềuchơitốiưu(tứclàhọkhôngmắcbấtkỳsailầmnào),thìngườichơibắtđầutrước đượcđảmbảogiànhchiếnthắngnếuXORcủasốvịtríkhóhiểutrongmỗitròchơi phụkhibắtđầutròchơikhác0.Ngượclại,nếuXORđánhgiábằng0thìngườichơi Achắcchắnsẽthua,bấtkểthếnàođichăngnữa.
CácbướccơbảnkhichúngtaápdụngđịnhlýSprague–Grundytrongbấtkỳtròchơi nào: 1. Chiatròchơitổnghợpthànhcáctròchơiphụ 2. Sauđó,mỗitròchơiphụ,hãytínhsốGrundyởvịtríđó 3. SauđótínhxorcủatấtcảcácsốGrundyđượctínhtoán 4.
Nếugiá trị xorkhác0thìngười chơisắpđến lượt(người chơi đầutiên)sẽ thắng 2.8CáchtínhGrundyNumbers Cách tính Grundy Numbers TrướckhitínhGrundyNumberschúngtacầntìmhiểuvềmộtsốthuậtngữkhác– Mex. Mex lI gì? Mexlàsốloạitrừtốithiểucủamộttậphợpsốkhôngâmnhỏnhấtkhôngcótrong tậphợpđó. GiảsửtacómộttậphợpcácsốnguyênkhôngâmS.MexcủatậphợpS-kýhiệu làmex(S),làsốnguyênnhỏnhấtkhôngcótrongS Mex(S)=min{kN{0}:kS} Vídụ,mex({0,1,3})=2.NếukhôngdichuyểntrongmộttrạngtháisốGrundycủa nólà0,vìmex()=0.Vídụtrongđồthịtrạngthái Hình3:Đồthịtrạngthái CócácsốGrundynhưsau: Hình4:ĐồthịtrạngtháicócácsốGrundy SốGrundycủatrạngtháithualà0,vàsốGrundycủatrạngtháithắnglàsốdương. SốGrundycủamộttrạngtháitươngứngvớisốlượnggậytrongmộtđốngnim. NếuGrundylà0chúngtachỉdichuyểnđếncáctrạngtháicósốGrundylàsố dương,nếuGrundylàx>0chúngracóthểdichuyểnđếncáctrạngtháicósố Grundylàcácsố0,1,…,x-1.
Vídụ,xemxétmộttròchơimàngườichơidichuyểnnhânvật(figure)trongmột mêcung(maze).Mỗiôvuôngtrongmêcungcóthểlàsànhoặctường.Mỗilầnđi, ngườichơiphảidichuyểnnhânvậtmộtsốbướcsangtráihoặclên.Ngườithắng tròchơilàngườithựchiệndichuyểncuốicùng. Hìnhsauminhhọamộttrạngtháikhởiđầucóthểcủatròchơi,khi@kýhiệunhân vậtvà*kýhiệucácôvuôngmànócóthểdichuyển. Hình5:Trạngtháikhởiđầucủatròchơimêcung Cáctrạngtháicủatròchơilàtấtcảcácôsàncủamêcung.Trongmêcungtrêncác sốGrundylànhưsau: Hình6:TrạngtháicủatròchơimêcungcócácsốGrundy Vìthế,mỗitrạngtháicủamêcungtươngứngvớimộtđốngtrongtròchơinim.Ví dụ,sốGrundycủaôdướicùngbênphảilà2,vìnólàmộttrạngtháithắng.Chúng tacóthểđiđếnmộttrạngtháithuavàchiếnthắngtròchơibằngcáchdichuyển4 bướcbêntráihoặctiếnlên2bước.9Tròchơiphụ Chúngtasẽgiảđịnhrằngtròchơicủachúngtabaogồmnhiềutròchơiphụ,và mỗilượtđi,đầutiênngườichơichọnmộttròchơiphụvàsauđódichuyểntrong tròchơiphụnày.Tròchơikếtthúckhikhôngthểthựchiệnbấtkỳdichuyểnnào trongcáctròchơiphụ. Trongtrườnghợpnày,sốGrundycủatròchơilànimsumcácsốGrundycủacác tròchơiphụ.Tròchơicóthểđượcchơinhưtròchơinim,bằngcáchtínhtấtcảcác sốGrundychocáctròchơiphụvàsauđónimsumchúng.
Vídụ,xemxéttròchơicó3mêcung.Trongtròchơinày,mỗilượtđi,ngườichơi chọnmộtmêcungvàsauđódichuyểnnhânvậttrongmêcungnày.Giảthiếtrằng trạngtháibanđầucủatròchơilànhưsau: Hình7:Trạngtháibanđầucủatròchơiphụ SốGrundycủacácmêcunglànhưsau: Hình8:TrạngtháicủatròchơiphụcócácsốGrundy Trongtrạngtháibắtđầu,nimsumcủacácsốGrundylà2 3 3=2,vìthế ngườichơiđầutiêncóthểchiếnthắngtròchơi.Mộtdichuyểntốiưulàdichuyển 2bướctrongmêcungđầutiên,đểtạoranimsumlà033=0. Vídụ:banđầu,cómộtđốngchứangậy.Mỗilượtđi,ngườichơichọnmộtđống vàchianóvào 2đốngkhôngrỗngsaochocácđốngcókíchthướckhácnhau. Ngườichơinàothựchiệndichuyểncuốicùnglàngườichiếnthắngtròchơi. Chof(n)làsốGrundycủađốngcóngậy.SốGrundycóthểđượctínhbằngcách duyệtquatấtcảcáccáchđểchiamộtđốngthành2đống.Vídụ,khin=8,cáckhả năngcóthểlà1+7,2+6và3+5,vìthế:f(8)=mex({f(1)f(7),f(2)f(6), f(3)f(5)}).
Trongtròchơinày,giátrịcủaf(n)đượcdựatrêncácgiátrịcủaf(1),…,f(n-1). Trườnghợpcơbảnlàf(1)=f(2)=0,vìkhôngthểchiamộtđốngcó1và2gậy. côngthứctínhf(n)đượctínhnhưsau:f(n)=mex({f(n-1),f(n-2),f(n-3),…}) Vd:f(3)=mex({f(2),f(1)})=mex({0,0})=1 TươngtựcócácsốGrundylà: f(1)=0 f(2)=0 f(3)=1 f(4)=0 f(5)=2 f(6)=1 f(7)=0 f(8)=2 SốGrundycủan=8là2,vìvậycókhảnăngchiếnthắngtròchơi.Mộtdichuyển tốiưulàtạoracácđống1+7,vìf(1)f(7)=0.5Tròchơihaingườicótổngđiểmbằng0 2.1ĐịnhlýMinimax ĐịnhlýMinimaxlàmộtlýthuyếtcơbảntronglĩnhvựctròchơivàtrítuệnhân tạo,đặcbiệtlàtrongcáctròchơihaingườicótínhcạnhtranhvàcóthôngtinhoàn toàn(zero-sumgames).Địnhlýnàynóivềmốiquanhệgiữahaingườichơitrong tròchơinàyvàmôtảcáchtốiưuhóachiếnlượccủamỗingườichơi. Các yếu tố chính của định lý Minimax lI: Zero-sum game (trò chơi tổng điểm bằng 0):ĐịnhlýMinimaxápdụngchocác tròchơizero-sum,nghĩalàtổngsốđiểmcủacácngườichơilàkhôngđổisaumỗi nướcđi.Nếumộtngườichơiđạtđượclợiích,thìngườichơicònlạisẽchịuthiệt hạitươngứng.
Tối ưu hóa chiến lược: ĐịnhlýMinimaxchobiếtcáchmỗingườichơinênlựa chọnnướcđitốiưunhấtdựatrêncáclựachọncósẵncủađốiphương.Mụctiêulà tốiđahóalợiíchcủangườichơihiệntại,đồngthờitốithiểuhóalợiíchtốiđacủa đốiphương. Cây quyết định (game tree):ĐịnhlýMinimaxđượcápdụngtrêncâyquyếtđịnh củatròchơi,trongđómỗinútđạidiệnchomộttìnhhuốngtròchơisaumỗinước đi.Cácnútláđạidiệnchocáctrạngtháikếtthúccủatròchơi. ĐịnhlýMinimaxlàmộtkháiniệmquantrọngtronglýthuyếttròchơi,đặcbiệtlà trongcáctròchơitổng-không(zero-sumgame)giữahaingườichơi,nơilợiích củamộtngườichínhlàtổnthấtcủangườikia.Địnhlýnàyđượcpháttriểnbởi JohnvonNeumann,vànóđặtnềntảngchohiểubiếtvềchiếnlượctốiưutrongcác tìnhhuốngcạnhtranh. Giải thích Định lý Minimax: ĐịnhlýMinimaxkhẳngđịnh rằngtrongmộttròchơitổng-khôngvớithôngtin hoànchỉnh,cómộtgiátrịcụthể(gọilàgiátrịMinimax)màtạiđó: Ngườichơithứnhất(gọilà"Maximizer")cóthểđảmbảorằng,vớichiếnlượctối ưucủamình,ítnhấtsẽthuđượcgiátrịnàybấtkểchiếnlượccủangườichơithứ hai.
Ngườichơithứhai(gọilà"Minimizer")cóthểngănchặnngườichơithứnhấtthu đượcnhiềuhơngiátrịnàyvớichiếnlượctốiưucủamình. Công thức: maxx∈X miny∈Y f(x,y)=miny∈Y maxx∈X f(x,y) Trongđó: xvàylàcácchiếnlượccủahaingườichơi. f(x,y)làhàmchitrả,đolườngkếtquảcủatròchơidựatrênsựlựachọnchiếnlược củacảhaingườichơi. Ngườichơi"Maximizer"tìmcáchtốiđahóagiátrịtốithiểumàhọcóthểbịép nhận.
Ngườichơi"Minimizer"tìmcáchtốithiểuhóagiátrịtốiđamàđốithủcóthểđạt được. Ý nghĩa: Địnhlýnàycungcấpcơsởchochiếnlượctốiưukhicácngườichơiđốiđầunhau vớimụctiêuhoàntoànđốilập.Nóchophépmỗingườichơixácđịnhcáclựachọn tốiưucủahọkhibiếtđốithủcũngsẽchơimộtcáchtốiưu.Điềunàyđặcbiệtquan trọngtronglậpkếhoạchchiếnlượcvàraquyếtđịnh,từtròchơicờtớiđàmphán kinhdoanh,vàthậmchílàtronglĩnhvựcquânsự. Trong các trò chơi thực tế như trò chơi chọn đồng xu, việc áp dụng định lý Minimaxgiúpngườichơixácđịnhnhữnglựachọnmanglạilợiíchtốithiểuan toànnhấttrongkịchbảnxấunhất,từđóđảmbảokếtquảtốtnhấtcóthểkhicảhai bêncạnhtranhđềuchơitốiưu. Cách áp dụng công thức Minimax trong bIi toán: Công thức cập nhật dp[i][j]: dp[i][j]=max(min(A,B),min(C,D)) Trongđó: A =coins[i]+dp[i+2][j]:Điểmsốkhingườichơichọnđồngxui,vàsauđó đốithủchọnđồngxui+1.
B =coins[i]+dp[i+1][j−1]:Điểmsốkhingườichơichọnđồngxui,vàđối thủchọnđồngxuj. C =coins[j]+dp[i+1][j−1]:Điểmsốkhingườichơichọnđồngxuj,vàđối thủchọnđồngxui. D =coins[j]+dp[i][j−2]:Điểmsốkhingườichơichọnđồngxuj,vàsauđó đốithủchọnđồngxuj-1. Minimax trong công thức: Maximization:Ngườichơichọngiữahailựachọn(chọnđồngxuihoặcj) đểtốiđahóađiểmsốtốithiểumàhọcóthểthuđược.Điềunàythểhiệnvai tròcủa"Maximizer"trongMinimax.
Minimization:Đốithủsẽcốgắngtốithiểuhóađiểmsốmàngườichơicó thểthuđượctronglượttiếptheobằngcáchchọnđồngxutốiưucủahọ. Điềunàythểhiệnvaitròcủa"Minimizer". Chiến lược tối ưu:Chiếnlượcnàyđảmbảorằngdùđốithủcólựachọnnhưthế nào,ngườichơicũngđãchọnđượclựachọntốtnhấtcóthểdựatrêngiảđịnhđối thủchơitốiưu.2CânbằngNash Cân bằng Nash:Trạngtháitrongđókhôngcóngườichơinàocóđộngcơđểthay đổichiếnlượccủamìnhmộtcáchđơnphương. Cân bằng Nashlàmộtkháiniệmquantrọngtronglý thuyết trò chơi mang lại kết quả tối ưutrongtrườnghợpngườichơikhông đi chệchkhỏichiếnlượcban đầucủahọ.Điềunàyđượcthựchiệnđểđáplạiviệckhôngcóđộngcơnàocung cấpchongườichơivềsựsailệchnhưvậy.TròchơinàyđượcđặttheotêncủaNhà toánhọcJohnNash,ngườixácđịnhlờigiảicủamộttròchơikhônghợptáccósự thamgiacủahaingườichơitrởlên.
Bởivìchiếnlượcvẫntốiưuvàngườidùngkhôngnhậnđượcbấtkỳưuđãinào cũngbiểuthịrằngnhữngngườichơiđãbiếtvềchiếnlượccủanhauvàdođósẽ khôngđichệchhướngchútnào. Vìngười chơikhác vẫnkhôngthay đổichiếnlược của mìnhnênmột cá nhân khôngthểnhậnđượclợiíchgiatăngnàotừsựsailệchđó.Một trò chơi có thể có nhiều hoặc không có điểm cân bằng Nash. Những điểm chính CânbằngNashcungcấpmộtgiải pháp tối ưuđểđạtđượckếtquảmong muốnbằngcáchkhôngđichệchkhỏichiếnlượcbanđầucủahọ. Vìcáccánhânđãbiếtvềchiếnlượccủanhaunêncả hai người chơi đều giInh chiến thắngkhimọingườiđềunhậnđượckếtquảmàhọnghĩra.
Mộtvídụđiểnhìnhlàtình thế tiến thoái lưỡng nan của người tù. Vìngười chơimong muốngiànhchiến thắngnên họsẽ thựchiệnchiến lượcđóđểdẫnhọđếntrạngtháinhưvậy.Vìvậy,chiếnlượcđượclựachọn làgiảipháptốtnhấtvàtốiưunhấtmàhọcóthểsửdụng.Điềunàycũng kếthợp với chiến lược thống trị. Hơnnữa,nhưđãnêu,khôngthểcóbấtkỳtrạngtháicânbằngNashnào trongtròchơi.Vìvậy,không phải lúc nIo chiến lược được chọn cũng lI chiến lược tối ưu. Cách tìm điểm cân bằng Nash ĐểtìmđiểmcânbằngNash,trướctiênngườitaphảiđưaratấtcảcáctìnhhuống cóthểxảyratrongmộttròchơivàsauđótìmratìnhhuốngtốiưutrongsốđó.
Trongtròchơicóhaingườichơi,họsẽphảivượtquatấtcảcáccáchchơimàmột ngườicóthểchơi.Trongtrườnghợpkhôngaitrongsốhọđichệchkhỏichiếnlược củamìnhthìchúngtacóthểnói,trạngtháicânbằngNashđãđến. Vídụ:bàitoánMatchingPennies Trongtròchơinày,cóhaingườichơiAvàB,mỗingườicóhailựachọnHead(H) hoặcTail(T).Kếtquảcủatròchơiphụthuộcvàosựkhớpgiữalựachọncủa2 ngườichơinhưsau: Nếucảhaingườichơichọncùngmặt(cùngHhoặccùngT),NgườichơiAthắng vàNgườichơiBthua. Nếuhaingườichơichọnkhácmặt(mộtchọnHvàmộtchọnT),NgườichơiA thuavàNgườichơiBthắng. Matrậnlợiích(PayoffMatrix) MatrậnlợiíchchotròchơiMatchingPenniesđượcbiểudiwwnxnhưsau: BchọnH BchọnT AchọnH (1,-1) (-1,1) AchọnT (-1,1) (1,-1) Trongmatrậnnày: CặpsốđầutiêntrongmỗiôlàlợiíchcủangườichơiA CặpsốthứhaitrongmỗiôlàlợiíchcủangườichơiB NếuAchọnHvàBchọnH,lợiíchcủaAlà1vàlợiíchcủaBlà-1 NếuAchọnHvàBchọnT,lợiíchcủaAlà-1vàlợiíchcủaBlà1 Chiếnlượctốiưu:Chiếnlượctốiưuchomỗingườichơidựatrênmụctiêutốiđa hóathưởnghoặctốithiểuhóarủiro.
CHƯƠNG 3: ỨNG DỤNG LẬP TRÌNH ĐỘNG TRONG LÝ THUYẾT TRÒ CHƠI N ĐỒNG XU 3.1Giớithiệuvềtròchơinđồngxu Bốicảnh:cónđồngxutrênbàn,mỗiđồngxucógiátrịkhácnhau.Haingườichơi thaynhauchọnmộtđồngxutừmộttronghaiđầucủadãyxu Mụctiêu:mỗingườicốgắngthuthậpsốtiềnnhiềunhấtcóthể.Ngườichiếnthắng làngườicótổngsốtiềnnhiềuhơnkhitấtcảcácđồngxuđềuđãđượcchọn. Chiếnlược:sửdụnglậptrìnhđộngđẻxácđịnhchiếnlượctốiưucủamỗingười chơi.Mỗiquyếtđịnhsedựavàotrạngtháihiệntạicủatròchơivàgiátrịdựkiến củacácnướcđitươnglai.2Cáckhíacạnhcủalýthuyếttròchơitrongbàitoánnày Chiến lược Tối ưu:Trongbàitoánnày,mỗingườichơicầnphảixemxétchiến lượctốiưukhôngchỉdựatrêngiátrịhiệntạimàcòndựatrêncáclựachọntiếp theocủađốithủ.Chiếnlượcnàydựatrênviệcdựđoánvàphảnứnglạihànhđộng củađốithủ,điểnhìnhcholýthuyếttròchơi. Dự đoán hInh động của đối thủ:Ngườichơikhôngchỉtínhtoánlựachọndựa trêngiátrịtrựctiếpcủađồngxumàcòncầnphảidựđoánlựachọntốiưucủađối thủđểtốiđahóakếtquảcủamìnhtrongtươnglai.Điềunàyđòihỏiviệcxemxét tấtcảcáckhảnăngvàlựachọnphảnứngtốtnhất. Minimax Algorithm:Côngthứctínhgiátrịdp[i][j]trongtròchơichọnđồngxu phảnánhthuậttoánMinimax,nơimỗingườichơicốgắngtốiđahóalợiíchtối thiểumàhọcóthểnhậnđượcdựatrênsựlựachọntốiưucủađốithủ.Trongđó, ngườichơisẽchọnđộngtháimàtốiđahóalợiíchtốithiểucóthểđạtđược,dựa trêngiảđịnhrằngđốithủcũngchơitốiưu.
Nash Equilibrium:Trongbốicảnhnày,mỗingườichơichọnđồngxusaocho khôngcólựachọntốthơnnếubiếttrướclựachọncủađốithủ,đạtđếnđiểmcân bằngNash,nơikhôngaicóthểcảithiệnvịthếcủamìnhbằngcáchthayđổiđơn phươnglựachọncủahọ.3 BIi toán VớitròchơiNđồngxu,chúngtacóthểmôphỏngchiếnlượcsửdụnglậptrình độngthôngquamộtvídụcụthể.Giảsửcó4đồngxucógiátrịlầnlượtlà2,4, 6và8.Chúngtasẽtìmchiếnlượctốiưuchongườichơiđầutiên,ngườicố gắngthuthậpsốtiềnnhiềunhất. Bước 1: Xác định các trạng thái vI giá trị Mỗitrạngtháicủatròchơiđượcbiểudiễnbởicácđồngxucònlạitrênbàn.Chúng tasẽxâydựngmộtmatrậndptrongđódp[i][j]làsốtiềntốiđamàngườichơiđầu tiêncóthểthuđượckhichỉcòncácđồngxutừvịtríiđếnj. Bước 2: Xây dựng bảng lập trình động Cáchtínhtoándp[i][j] sẽdựatrênviệcngườichơiđólựachọnđồngxuởđầu i hoặccuốij Nếungườichơichọnđồngxui,đốithủsẽtốiưuhóasốtiềnmàhọcóthểthuđược từđoạn[i+1,j],vìvậysốtiềnngườichơinàythuđượcsẽlàcoins[i]+(tổngđoạn -dp[i+1][j]). Tươngtự,nếuchọnđồngxuj,sốtiềnsẽlàcoins[j]+(tổngđoạn-dp[i][j-1]).
Trongđótổngđoạnlàtổnggiátrịcủađồngxutừiđếnj. Bước 3: Tính toán bảng giá trị Giảsửcácđồngxucógiátrịnhưđãđềcập:[1,2,3,4].Tasẽxâydựngbảngdp dựatrêncáctrườnghợpcơbản: Khii==j,tứcchỉcómộtđồngxu,dp[i][j]=coins[i]vìngườichơisẽchọnđồng xuđó. Giảithíchtừngbiến: 1. Biến a:Đâylàtrườnghợpsaukhingườichơihiệntạichọnđồngxuởvịtríi,đối thủcóthểchọnđồngxutiếptheoởi+1.Nếuđiềunàyxảyra,lựachọntiếptheo củangườichơihiệntạisẽlàtrongphạmvitừ i+2 đến j.Biến a lưugiátrịcủa dp[i+2][j],tứcsốtiềntốiđamàngườichơihiệntạicóthểthuđượctừđoạncònlại nếuđốithủchọnđồngxuởi+1.Nếui+2lớnhơnj,tứclàkhôngcònđồngxunào đểchọn,giátrịcủaasẽlà0,vìkhôngcònlựachọnnàokhảthi.
Biến b:Đâylàtrườnghợpngườichơihiệntạichọnđồngxuởivàđốithủchọn đồngxuởjhoặcngượclại.Sauđó,lựachọntiếptheocủangườichơihiệntạisẽlà trongphạmvitừi+1đếnj-1.Biếnblưugiátrịcủadp[i+1][j-1],tứcsốtiềntốiđa màngườichơihiệntạicóthểthuđượctừđoạncònlại.Nếui+1lớnhơnj-1,không cònđồngxunàogiữahaivịtrínày,giátrịcủabsẽlà0. Biến c:Đâylàtrườnghợpsaukhingườichơihiệntạichọnđồngxuởvịtríj,đối thủcóthểchọnđồngxutiếptheoởj-1.Sauđó,lựachọntiếptheocủangườichơi hiệntạisẽlàtrongphạmvitừi đến j-2.Biến clưugiátrịcủadp[i][j-2],tứcsố tiềntốiđamàngườichơihiệntạicóthểthuđượctừđoạncònlạinếuđốithủchọn đồngxuởj-1.Nếuilớnhơnj-2,tứclàkhôngcònđồngxunàođểchọn,giátrịcủa csẽlà0.4 Khởi tạo vI Định nghĩa 3.1Khởitạomatrậndp Mộtmatrậnkíchthước4x4vớitấtcảcácgiátrịkhởitạolà0. Các trường hợp cơ bản:Đốivới dp[i][i] vớimọi i,giátrịsẽbằnggiátrịcủa đồngxutạivịtríđó,vìchỉcómộtđồngxuđểchọn.2Cậpnhậtmatrận Khitínhdp[i][j],chúngtađangcốgắngtìmsốtiềntốiđamàngườichơihiệntại cóthểthuđượcnếuhọbắtđầuchơitrongphạmvitừđồngxu i đếnđồngxu j. Trongcôngthứcnày: dp[i][j]=max(coins[i]+min(dp[i+2][j],dp[i+1][j-1]),coins[j]+min(dp[i+1][j- 1],dp[i][j-2])) Ngườichơiđầutiên(lượtchọni): Chọnđồngxu i,sauđóđốithủsẽchọntốiưu(nghĩalà min(dp[i+2][j], dp[i+1][j-1])).
Ngườichơithứhai(lượtchọnj): Chọnđồngxuj,sauđóđốithủsẽchọntốiưu(nghĩalà min(dp[i+1][j-1], dp[i][j-2])). Cácgiátrịa,b,vàcđượcsửdụngđểtínhcáctrườnghợpkhácnhaumàđốithủcó thểchọnsaulượtcủangườichơihiệntại: a=dp[i+2][j]:Đâylàsốtiềntốiđamàngườichơihiệntạicóthểthuđượcsaukhi họchọnđồngxuởvịtríivàđốithủchọnđồngxuởvịtríi+1. Vídụ,nếui=0vàj=3,vàngườichơichọnđồngxuởvịtrí0(i),đốithủchọnđồng xuởvịtrí1(i+1),thìasẽlàgiátrịcủadp[2][3],làsốtiềntốiđamàngườichơicó thểthuđượctừhaiđồngxucònlại(6và8). Vídụ,bsẽlàgiátrịcủadp[1][2]nếungườichơichọnđồngxuởvịtrí0vàđốithủ chọnđồngxuởvịtrí3. c=dp[i][j-2]:Đâylàsốtiềntốiđamàngườichơihiệntạicóthểthuđượcnếuhọ chọnđồngxuởvịtríjvàđốithủchọnđồngxuởvịtríj-1. Vídụ,csẽlàgiátrịcủadp[0][1]nếungườichơichọnđồngxuởvịtrí3vàđốithủ chọnđồngxuởvịtrí2.3Tínhgiátrịtốiưuchocácđoạnđồngxucóđộdàilớnhơn1 Xétcáckhoảngcó2đồngxu(length=2) Vớii=0,j=1 a=dp[2][1]=0(vìkhôngtồntại) b=dp[1][0]=0(vìkhôngtồntại) c=0 dp[0][1]=max(coins[0]+min(a,b),coins[1]+min(b,c))=max(2+0,4+0)= 4 Xétcáckhoảngcó3đồngxu(length=3) Vớii=0,j=2 a=dp[2][2]=6 b=dp[1][1]=4 c=dp[0][0]=2 dp[0][2]=max(coins[0]+min(a,b),coins[2]+min(b,c))=max(2+4,6+2)= 8 Vớii=1,j=3 a=dp[3][3]=8 b=dp[2][2]=6 c=dp[1][1]=4 dp[1][3]=max(coins[1]+min(a,b),coins[3]+min(b,c))=max(4+6,8+4)= 12 Xétkhoảngtừ0đến3(length=4) Vớii=0,j=3 a=dp[2][3]=8 b=dp[1][2]=6 c=dp[0][1]=4 dp[0][3]=max(coins[0]+min(a,b),coins[3]+min(b,c))=max(2+6,8+4)= 12 Giátrịtốiưucủatròchơilàdp[0][3]=12.
Code: Giảibàitoántròchơinđồngxubằngphươngphápđệquy Sosánhlậptrìnhđộngvàđệquy 3.1 Đệquy Ưuđiểm: Dễhiểuvàtriểnkhai Giảipháptrựctiếpdựatrênđịnhnghĩacủabàitoán Phùhợpvớicácbàitoáncókíchthướcnhỏhoặcgiảithuật đơngiản Nhượcđiểm Cóthểgặphiệntượngtrùnglặptínhtoánvìmộtsốtrượng hợpconđượctínhtoánnhiềulần Hiệusuấtkhôngtốtđốivớicácbàitoáncókíchthướclớn.2 Lậptrìnhđộng Ưuđiểm: Loạibỏhiệntượngtrùnglặpbằngcáchlưutrữcáckếtquả củacácbàitoánconđãđượctínhtoán Cảithiệnhiệusuấtnhờbộnhớlưutrữ Phùhợpvớicácbàicókíchthướclớn Nhượcđiểm: Phứctạphơnsovớitriểnkhaiđệquyđơnthuần Yêucầunhiềubộnhớhơn. TÀI LIỆU THAM KHẢO 1.Pub_Tai-Lieu-Giao-Khoa-Chuyen-Tin-Quyen-3-3.com/file/d/1fGOSJgBkO7H_Ae2Hm0SqkR6rZXXyXxt/view? fbclid=IwZXh0bgNhZW0BMQABHQIKKZ0Ausqrk8ahM2itaPjVxQpG2AsK7ci5nKe WfAUOrPWQAUTA69NqJg_aem_AWJEtwlneb275WJ5PLpYF5xhX- 7HZLZRGfmlFThmYkKxXoEu0fk_SDfyv9mHkjjuyt0 2.Antti Laaksonen,Competitive Programmer’s Handbook,DraftOctober15,2017. An introduction to dynamic games. Dynamic Programming-Quy hoạch động trong lập trình.What are the most effective ways to use dynamic programming in game theory? (2024, February27).Game Theory and Strategy.
The Mathematical Association of America.OntheTheoryofGamesofStrategy.Contributions to the Theory of Games.Theory of Games and Economic Behavior.TrươngMinhHuyVũ.Lý thuyết trò chơi và chính trị quốc tế.