Mesterséges intelligencia 3. laborgyakorlat
|
|
- Veronika Orbán
- 9 évvel ezelőtt
- Látták:
Átírás
1 Mesterséges intelligencia 3. laborgyakorlat Kétszemélyes játékok - Minimax A következő típusú játékok megoldásával foglalkozunk: (a) kétszemélyes, (b) determinisztikus, (c) zéróösszegű, (d) teljes információjú. A következő fogalmakat vezetjük be: 1. állapot, kiinduló állapot 2. játékfa 3. végteszt 4. hasznosságfüggvény vagy nyereségfüggvény 5. stratégia 6. lépés - féllépés (ang. ply) 7. MAX, MIN a két játékos. MAX kezd, és a nyereségét próbálja maximizálni; MIN a veszteségét próbálja minimizálni. 8. MAX illetve MIN csomópontok. A minimax algoritmus optimális stratégiát ad MAX kezébe: 1. generáljuk a teljes játékfát a le a végcsomópontokig 2. alkalmazzuk a terminális csúcsokra a hasznosságfüggvényt 3. alulról felfele haladva, annak függvényében, hogy MIN vagy MAX csomóponton vagyunk számítsuk ki a gyerek csúcsok minimumát, vagy maximumát, és ezt az értéket rendeljük hozzá az aktuális csúcshoz. Ez lesz a csúcs minimax értéke. A gyökér minimax értéke megadja, hogy mekkora MAX nyeresége abban az esetben, ha MIN a lehető legjobban játszik. (Ha MIN nem játszik optimálisan, akkor MAX nyeresége ennél nagyobb lesz.)
2 A minimax algoritmus 1 int minimax(state s) 3 if (end_of_game(s)) return utility(s); 4 state * children; 6 int best_value = is_max_node(s)? -INFINITY: +INFINITY; 7 if (is_max_node(s)){ 8 for (int i = 0; i < n; i++){ 9 best_value = max(best_value, minimax(children[i]); 12 else{ 13 for (int i = 0; i < n; i++){ 14 best_value = min(best_value, minimax(children[i]); 15 } 16 } return best_value; Mélységkorlátozott minimax A keresési fa a nemtriviális játékok esetén túl nagy ahhoz, hogy teljes keresést végezzünk rajta. Ezért a keresés csak egy bizonyos előre meghatározott mélységig folyik. 1 int minimax(state s, int depth) 2 if (depth==0 end_of_game(s)) return heuristic_eval(s); 3 state * children; 4 int n = generate_children(s, &children); 5 int best_value = is_max_node(s)? -INFINITY: +INFINITY; 6 7 if (is_max_node(s)){ 8 for (int i = 0; i < n; i++){ 9 best_value = max(best_value, minimax(children[i],depth-1); 12 else{ 13 for (int i = 0; i < n; i++){ 14 best_value = min(best_value, minimax(children[i],depth-1); 15 } 16 } return best_value; Kérdések: 1. Milyen mélységig elemezzük ki a fát? 2. Mit csináljon a heuristic_eval? Iteratívan mélyülő keresés Mivel nem tudjuk, hogy milyen mélységig keressünk és csak korlátozott idő áll a rendelkezésre, ezért keressünk rendre 0, 1, 2, 3, stb. mélységig. Mikor lejárt az idő, térjünk vissza azzal annak a mélységnek a minimax értékével, amelyet még sikerült teljesen kiértékelni.
3 NegaMax A klasszikus minimaxban az egyik játékos maximalizálni, a másik minimizálni akarja ugyanazt az függvényt. Kis módosítással egyszerűsíteni lehet a kódot, úgy, hogy mindkét játékos maximizálni akarjon. Vegyük észre, hogy az algoritmus komplexitása ezzel nem változik. 1 int negamax(state s, int depth) 3 if (depth==0) return heuristic_eval(s); 4 state children; 6 int best_value = -INFINITY; 7 for (int i = 0; i < n; i++){ 8 best_value = max(best_value, -negamax(children[i], depth-1); 9 } 10 return best_value; Feladatok. 1. Minimax algoritmust használva implementálja a Tic-tac-toe játékot. Használja a következő nyereségfüggvényt: +1, ha s nyerő pozíció MAX-nak f (s) = 1, ha s nyerő pozíció MIN-nek 0 ha s döntetlen pozíció Beküldési határidő: március 31, 23:59. Grafikus interfész nem szükséges. Alfa-béta nyesés Ugyanannyi idő alatt nagyobb mélységben járhatjuk be a játékfát, ha bizonyos részfákat nem értékelünk ki. A lenyesendő részfát úgy kell kiválasztani, hogy az ne befolyásolja a keresés minőségét. Az ötlet a következő. Ha egy lépésről már eleve tudjuk hogy rossz, akkor ne töltsünk időt azzal, hogy kiértékeljük, hogy valójában mennyire rossz az illető lépés. Vegyük a következő kifejezést: max(6, min(5, x)) Ennek a kifejezésnek az értéke 6 lesz, függetlenül x értékétől. Ezért az x csomópontot nem kell kifejteni, mert nem fogja befolyásolni az eredményt. x-et tehát lenyeshetjük. Hasonlóan a min(5, max(6, Y )) kifejezés értéke is az x értékétől függetlenül 5 lesz. Tehát az y-al kezdődő részfát is levághatjuk. Nézzünk egy komplexebb példát: A 1 a minimax értékét a hagyományos módon számoljuk ki. Rögtön következik, hogy MAX-nak legalább 3 a minimax értéke, tehát az A 1 alsó korlátot jelent a gyökér minimax értékére (a gyökér minimax értéke háromnál kisebb nem lesz). Lemegyünk A 2 felé, kiszámoljuk A 21 -t, ami 2. Mivel a gyökér minimax értéke legalább 3, és az A 2 legfönnebb 2-t fog felhozni, ezért A 22 -t, és A 23 -at nincs értelme kiértékelni.
4 A feladat tehát, hogy visszatérjünk a csúcs minimax értékével, miközben lenyessük a nem releváns ágakat. A megoldás folyamán két értéket fogunk tárolni, és frissíteni: α - az a legkisebb érték, amelyre MAX számíthat (kezdetben ), illetve β - az a legnagyobb érték, amelyre MIN számíthat (kezdetben + ) 1 int alpha_beta(state s, int depth, int alpha, int beta) 3 if (depth==0 end_of_game(s)) return heuristic_eval(s); 4 state * children; 6 if (max_node(s)){ 7 for (int i = 0; i < n; i++){ 8 alpha = max(alpha, alpha_beta(children[i], depth-1, alpha, beta)); 9 if (alpha >= beta) return alpha; 11 return alpha; 12 } 13 else{ 14 for (int i = 0; i < n; i++){ 15 beta = min(beta, alpha_beta(children[i], depth-1, alpha, beta)); 16 if (alpha >= beta) return beta; 17 } 18 return beta; 20 } Egy csúcs kibontásakor a gyerekek által visszatérített minimax érték alsó (felső) korlátot jelent az aktuális csúcs számára. Az algoritmus a legjobb alsó korlátot folyamatosan α-ban, a legjobb felső korlátot β-ban tárolja. Ha a keresés folyamán egy olyan X állapotba jutunk, ahol α β, akkor ez azt jelenti, hogy az illető pozíciót nem egy olyan játék eredményezte, ahol MIN és MAX is optimálisan játszik, tehát nincs értelme tovább értékelni. Az alfabéta nyesés hatékonysága nagyban függ attól, hogy egy X csúcs gyerek csomópontjai milyen sorrendben követik egymást. Ha például az A 3 ágon a gyerekek a 2-es értékű csomóponttal kezdődtek volna, akkor az A 32 és A 33 ágakat le lehetett volna nyesni. Ideális volna, ha a gyerek csúcsokat rendezni lehetne, s annak függvényében hogy mennyire ígéretesek, sorban kibontani őket. A gyerekeket nem bonthatjuk ki teljes mélységben - így értelmetlenné válna rendezés. A gyakran alkalmazott megoldás az, hogy iteratívan mélyülő kereséssel rendelünk a gyerekekhez értékeket, majd eszerint rendezzük őket.
5 Feladatok. 1. Tesztelje a címen levő appletet. 2. EC + 2 pont. Felhasználva az alfa-béta nyesést, implementálja a malom játékot. GUI nem szükséges. Javasolt könyvészet. 1. Russel & Norvig: Mesterséges intelligencia modern megközelítésben, Panem Kiadó 2000, Budapest
Kockázati modellek (VaR és cvar)
Kockázati modellek (VaR és cvar) BSc Szakdolgozat Írta: Kutas Éva Matematika BSc Alkalmazott matematikus szakirány Témavezet Mádi-Nagy Gergely egyetemi adjunktus Operációkutatási Tanszék Eötvös Loránd
RészletesebbenKezdők és Haladók (I., II. és III. kategória)
ARANY DÁNIEL MATEMATIKAI TANULÓVERSENY 013/014-ES TANÉV Kezdők és Haladók (I., II. és III. kategória) Feladatok és megoldások A verseny az NTP-TV-13-0068 azonosító számú pályázat alapján a Nemzeti Tehetség
RészletesebbenJelöljük az egyes területrészeket A-val, B-vel és C-vel, ahogy az ábrán látható.
1. feladat. 013 pontosan egyféleképpen írható fel két prím összegeként. Mennyi ennek a két prímnek a szorzata? 40 Megoldás: Mivel az összeg páratlan, ezért az egyik prímnek párosnak kell lennie, tehát
RészletesebbenMéretlánc átrendezés elmélete
1. Méretlánc átrendezés elmélete Méretlánc átrendezés elmélete Egyes esetekben szükség lehet, hogy arra, hogy a méretláncot átrendezzük. Ezeknek legtöbbször az az oka, hogy a rajzon feltüntetett méretet
RészletesebbenSzámítások, hivatkozások
Bevezetés Ebben a fejezetben megismerkedünk az Excel programban alkalmazható különböző hivatkozásokkal (relatív, vegyes, abszolút). Képesek leszünk különböző alapszintű számítások elvégzésére, képletek
RészletesebbenP (ξ < 490) = F ξ (490) = Φ( 490 m ) = 0.03 10
Valszám-megoldások. Feladat. Legyen P (A =, 3 és P (B =, 6... Kérdés. Mennyi P (A + B, P (AB, ill. P (A B, ha A és B függetlenek?... Megoldás. Ha A és B függetlenek, akkor A és B, valamint B és A, valamint
RészletesebbenGONDOLKODÁSI MÓDSZEREK
0611. MODUL GONDOLKODÁSI MÓDSZEREK Hány eset van? KÉSZÍTETTE: PINTÉR KLÁRA 0611. Gondolkodási módszerek Hány eset van? Tanári útmutató 2 MODULLEÍRÁS A modul célja Időkeret Ajánlott korosztály Modulkapcsolódási
RészletesebbenKomplex számok algebrai alakja
Komplex számok algebrai alakja Lukács Antal 015. február 8. 1. Alapfeladatok 1. Feladat: Legyen z 1 + 3i és z 5 4i! Határozzuk meg az alábbiakat! (a) z 1 + z (b) 3z z 1 (c) z 1 z (d) Re(i z 1 ) (e) Im(z
RészletesebbenProgramozás I. zárthelyi dolgozat
Programozás I. zárthelyi dolgozat 2013. november 11. 2-es szint: Laptopot szeretnénk vásárolni, ezért írunk egy programot, amelynek megadjuk a lehetséges laptopok adatait. A laptopok árát, memória méretét
RészletesebbenA szöveges feladatok megoldásának nehézségeiről a nyolcadik osztályos diákok körében
A szöveges feladatok megoldásának nehézségeiről a nyolcadik osztályos diákok körében Fülöp Zsolt Szegedi Tudományegyetem Bolyai Intézet, Szeged fulop.zs32@freemail.hu A korszerű matematika oktatás egyik
Részletesebben6. előadás Környezetfüggetlen nyelvtanok/1.
6. előadás Környezetfüggetlen nyelvtanok/1. Dr. Kallós Gábor 2013 2014 1 Tartalom Bevezetés CF nyelv példák Nyelvek és nyelvtanok egy- és többértelműsége Bal- és jobboldali levezetések Levezetési fák A
Részletesebben24. Valószínűség-számítás
24. Valószínűség-számítás I. Elméleti összefoglaló Események, eseménytér A valószínűség-számítás a véletlen tömegjelenségek vizsgálatával foglalkozik. Azokat a jelenségeket, amelyeket a figyelembe vett
RészletesebbenOszthatósági problémák
Oszthatósági problémák Érdekes kérdés, hogy egy adott számot el lehet-e osztani egy másik számmal (maradék nélkül). Ezek eldöntésére a matematika tanulmányok során néhány speciális esetre látunk is példát,
RészletesebbenOPERÁCIÓKUTATÁS. No. 2. Komáromi Éva LINEÁRIS PROGRAMOZAS
OPERÁCIÓKUTATÁS No. 2. Komáromi Éva LINEÁRIS PROGRAMOZAS Budapest 2002 Komáromi Éva: LINEÁRIS PROGRAMOZÁS OPERÁCIÓKUTATÁS No.2 Megjelenik az FKFP 0231 Program támogatásával a Budapesti Közgazdaságtudományi
RészletesebbenSkatulya-elv. Sava Grozdev
Skatulya-elv Sava Grozdev Egy alapvető szabály, azaz elv azt állítja, hogy: ha m testet szétosztunk n csoportba és m > n, akkor legalább két test azonos csoportba fog kerülni. Ezt az elvet különböző országokban
RészletesebbenEuler kör/út: olyan zárt/nem feltétlenül zárt élsorozat, amely a gráf minden élét pontosan egyszer tartalmazza
1) Euler körök és utak, ezek létezésének szükséges és elégséges feltétele. Hamilton körök és utak. Szükséges feltétel Hamilton kör/út létezésére. Elégséges feltételek: Dirac, és Ore tétele. Euler kör/út:
RészletesebbenTranszformátorok tervezése
Transzformátorok tervezése Többféle céllal használhatunk transzformátorokat, pl. a hálózati feszültség csökken-tésére, invertereknél a feszültség növelésére, ellenállás illesztésre, mérőműszerek méréshatárának
RészletesebbenRóka Sándor. 137 számrejtvény. Megoldások
Róka Sándor számrejtvény Megoldások Budapest, 008 A könyv megjelenését a Varga Tamás Tanítványainak Közhasznú Emlékalapítványa támogatta. Róka Sándor, Typotex, 008 ISBN 98 9 9 89 0 Témakör: matematika
RészletesebbenEinhorn Ágnes. FEJLESZTÉS VAGY VIZSGATRÉNING? A fejlesztõ- és a mérõfeladatok különbségei
Einhorn`.qxp 2008.07.03. 6:01 Page 147 147 Einhorn Ágnes FEJLESZTÉS VAGY VIZSGATRÉNING? A fejlesztõ- és a mérõfeladatok különbségei A feladat a tanulási-tanítási folyamat legfontosabb alapegysége, mégis
RészletesebbenMikor vásárolj, és mikor adj el a profit eléréséért?
Mikor vásárolj, és mikor adj el a profit eléréséért? A TŐZSDEI GRAFIKONOK ELEMZÉSE 1. Bevezetés A grafikonok elemzése még sosem volt ennyire népszerű. Ennek az az egyik oka, hogy manapság már olcsón lehet
RészletesebbenSegítenek az egyszerűbb esetek Róka Sándor, Nyíregyháza
Magas szintű matematikai tehetséggondozás Segítenek az egyszerűbb esetek Róka Sándor, Nyíregyháza 1. feladat Igaz-e, hogy 111111222222 két szomszédos egész szám szorzata? A feladat jó példa arra a problémahelyzetre,
RészletesebbenMUNKAANYAG. Gábler Gergely. Befektetési lehetőségek elemzése. A követelménymodul megnevezése: Pénzügyi feladatok
Gábler Gergely Befektetési lehetőségek elemzése A követelménymodul megnevezése: Pénzügyi feladatok A követelménymodul száma: 1969-06 A tartalomelem azonosító száma és célcsoportja: SzT-032-8 BEFEKTETÉSI
RészletesebbenKeresleti és kínálati függvény. Minden piacnak van egy keresleti és egy kínálati oldala, amelyeket a normatív közgazdaságtanban
tehát attól függ, hogy x milyen értéket vesz fel. A függvényeket a közgazdaságtanban is a jól ismert derékszögû koordináta-rendszerben ábrázoljuk, ahol a változók nevének megfelelõen általában a vízszintes
RészletesebbenC# feladatgyűjtemény
Eszterházy Károly Főiskola Matematikai és Informatikai Intézet C# feladatgyűjtemény Dr. Kovács Emőd emod@aries.ektf.hu Radványi Tibor dream@aries.ektf.hu Király Roland serial@aries.ektf.hu Hernyák Zoltán
RészletesebbenMATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI EMELT SZINT Kombinatorika
MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI EMELT SZINT Kombinatorika A szürkített hátterű feladatrészek nem tartoznak az érintett témakörhöz, azonban szolgálhatnak fontos információval az érintett
RészletesebbenMi alapján fogadhatunk el egy elektronikus aláírást? 1
Mi alapján fogadhatunk el egy elektronikus aláírást? 1 Dr. Berta István Zsolt istvan.berta@microsec.hu Microsec Kft. Az elektronikus aláírás elméleti alapjai régóta ismertek. E matematikai, kriptográfiai
Részletesebben4. Számelmélet, számrendszerek
I. Elméleti összefoglaló A maradékos osztás tétele: 4. Számelmélet, számrendszerek Legyen a tetszőleges, b pedig nullától különböző egész szám. Ekkor léteznek olyan, egyértelműen meghatározott q és r egész
RészletesebbenMATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI EMELT SZINT Függvények Analízis
MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI EMELT SZINT Függvények Analízis A szürkített hátterű feladatrészek nem tartoznak az érintett témakörhöz, azonban szolgálhatnak fontos információval az érintett
RészletesebbenBrósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Számelmélet I.
Számelmélet I. DEFINÍCIÓ: (Osztó, többszörös) Ha egy a szám felírható egy b szám és egy másik egész szám szorzataként, akkor a b számot az a osztójának, az a számot a b többszörösének nevezzük. Megjegyzés:
RészletesebbenA termosztát működése
A termosztát működése A termosztát egy beépített mobiltelefonnal rendelkezik Ez fogadja az Ön hívását ha felhívja a termosztát telefonszámát. Érdemes ezt a telefonszámot felírni valahová és figyelemmel
Részletesebben