Szakdolgozat. Miskolci Egyetem. Logikai játékok nyerő stratégiáinak keresése. Készítette: Dorgai Attila Programtervező informatikus szak

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "Szakdolgozat. Miskolci Egyetem. Logikai játékok nyerő stratégiáinak keresése. Készítette: Dorgai Attila Programtervező informatikus szak"

Átírás

1 Szakdolgozat Miskolci Egyetem Logikai játékok nyerő stratégiáinak keresése Készítette: Dorgai Attila Programtervező informatikus szak Témavezető: Dr. Körei Attila, egyetemi docens Miskolc, 2017

2 Miskolci Egyetem Gépészmérnöki és Informatikai Kar Alkalmazott Matematikai Tanszék Szám: Szakdolgozat Feladat Dorgai Attila (FEDI1K) programtervező informatikus jelölt részére. A szakdolgozat tárgyköre: Mesterséges intelligencia A szakdolgozat címe: Logikai játékok nyerő stratégiáinak keresése A feladat részletezése: Kétszemélyes, teljes információjú játékok vizsgálata. A játékfa bejárására, elemzésére, levágására alkalmas módszerek bemutatása (minimax tétel, alfabéta algoritmus). A nyerő stratégia létezésének kérdése. Egy konkrét logikai játékot játszó program elkészítése, tesztelése. Témavezető: Dr. Körei Attila, egyetemi docens. A feladat kiadásának ideje: szeptember szakfelelős 2

3 Eredetiségi Nyilatkozat Alulírott Dorgai Attila; Neptun-kód: FEDI1K a Miskolci Egyetem Gépészmérnöki és Informatikai Karának végzős Programtervező informatikus szakos hallgatója ezennel büntetőjogi és fegyelmi felelősségem tudatában nyilatkozom és aláírásommal igazolom, hogy Logikai játékok nyerő stratégiáinak keresése című szakdolgozatom/diplomatervem saját, önálló munkám; az abban hivatkozott szakirodalom felhasználása a forráskezelés szabályai szerint történt. Tudomásul veszem, hogy szakdolgozat esetén plágiumnak számít: szószerinti idézet közlése idézőjel és hivatkozás megjelölése nélkül; tartalmi idézet hivatkozás megjelölése nélkül; más publikált gondolatainak saját gondolatként való feltüntetése. Alulírott kijelentem, hogy a plágium fogalmát megismertem, és tudomásul veszem, hogy plágium esetén szakdolgozatom visszautasításra kerül. Miskolc, év hó nap Hallgató 3

4 1. A szakdolgozat feladat módosítása szükséges (módosítás külön lapon) nem szükséges dátum témavezető(k) 2. A feladat kidolgozását ellenőriztem: témavezető (dátum, aláírás): konzulens (dátum, aláírás): A szakdolgozat beadható: dátum témavezető(k) 4. A szakdolgozat szövegoldalt program protokollt (listát, felhasználói leírást) elektronikus adathordozót (részletezve) egyéb mellékletet (részletezve) tartalmaz dátum témavezető(k) 5. bocsátható A szakdolgozat bírálatra nem bocsátható A bíráló neve: dátum szakfelelős 6. A szakdolgozat osztályzata a témavezető javaslata: a bíráló javaslata: a szakdolgozat végleges eredménye: Miskolc, a Záróvizsga Bizottság Elnöke 4

5 Tartalomjegyzék 1. Bevezetés 7 2. Logikai játékok Kétszemélyes játékok Nyerő stratégiák A játékfa Minimax algoritmus Kiértékelő függvények Alfa-béta nyesés A Deep Blue és az AlphaGo programok összehasonlítása A sakk és a go összehasonlítása A Deep Blue működése Az AlphaGo működése A Deep Blue és AlphaGo működésének összehasnolítása Jövőbeli lehetőségek az AlphaGo megközelítésének alapján Az amőba története Az amőba szabályai Fejlesztői dokumentáció Használt programozási eszközök A választott eszközök A programok egyesítése A játéktér felépítése A gép lépésének kiválasztása A getvalue() A calcbestmoves() A compmovesmm() A gép játékstílusa A játék vége Játék a fal közelében A probléma a fal melletti játékkal A megoldása A heurisztika A heurisztika megvalósítása Első példa a heurisztikára Második példa a heurisztikára A játékmódok Nehézségi fokozatok sorrendisége

6 3.8. A grafikai működés A tábla megvalósítása Kattintás a táblán Kattintás a menüben Az indikátor működése A menü A játékos elleni mód Kísérletezések, jövőbeli tervek Összefoglalás 33 Irodalomjegyzék 34 Adathordozó használati útmutató 35 6

7 1. fejezet Bevezetés A szakdolgozatom témájának azért választottam a logikai játékok nyerő stratégiáinak vizsgálatát, mert nagy hatással voltak rám a közelmúltban elért sikerek ezen a területen, különösen, hogy a go is beállt a számítógép által meghódított játékok sorába, amikor 2016 márciusában 4:1-re legyőzte a google AlphaGo programja a játék világbajnokát. Az eredmény azért is volt kimagasló, mivel a játék sokkal komplexebb a sakknál, ezért csak jóval későbbre merték volna megjósolni a kutatók a számítógép sikerét. Mivel a minimaxos alfa-béta nyeséses megvalósításból már sok amőba program született, ezért úgy gondoltam, hogy sajátosabb úton közelítem majd meg a feladatot. Mindig is érdekelt, hogy ha teljesen koncentrálva hiba nélkül tudok játszani a meglévő tudásommal, akkor mennyire vagyok jó játékos. Ezen a szálon elindulva jutottam arra az elhatározásra, hogy az én gondolkodásmódom szeretném átadni a programomnak. A súlyokat saját játékokból meghatározva, kikövetkeztetve határoztam meg, ami leginkább illik a játékstílusomhoz. Korábban, egyetemi tanulmányaim alatt már készítettem egy hasonló programot, ami sudoku rejtvényeket oldott meg heurisztikával, szintén saját tudásom felhasználásával. Már akkor is meglepett az eredmény, hogy hiába tartottam magam jó sudoku fejtőnek, mégis voltak olyan táblák ahol elakadt. Vissza kellett nyúlnom a gépi megközelítéshez és betippelni, egy számot, lehetőleg olyat amire % esély van, és azokkal végig haladni tovább megnézni, hogy a tábla helyes marad-e. A legtöbb újságban található példákban nem volt szükség tippelésre, a nehezebb feladatoknál pedig egy-két tipp elég volt. 7

8 2. fejezet Logikai játékok 2.1. Kétszemélyes játékok A mesterséges intelligencia eléggé szétágazó tudományág még a logikai játékokon belül is, ám a váltott lépésű determinisztikus zérusösszegű kétszemélyes teljes információjú játékokra a tudományos MI is figyelmet szentel. Ide tartoznak azok a játékok, amelyek megfelelnek a következő feltételeknek: A két játékos felváltva lép (néhány esetben van kivétel amikor az ellenfél nem tud lépni, pl.: Reversi) Véges számú lépés létezik Nincs szerepe a véletlennek a játékban Mindkét játékos birtokában van minden információnak a játékkal kapcsolatban, azaz a szabályoknak, az összes lehetséges lépésnek az adott helyzetben, és az eddigi lépéseknek, ugyanis néhány játéknál fontosak az előző lépések a szabályok szempontjából (pl.: A sakkban az en passant csak az ellenfél egy bizonyos lépése után léphető.) Zérusösszegű Tehát ha a győztesként kikerülő játékos értéke +1, akkor a vesztesnek -1-nek kell lennie. Fontossága abban rejlik, hogy a többszemélyes játékoknál, megjelenhetnek szövetségek, és abban az esetben nem a saját értékünk maximalizására törekszünk feltétlenül. (Pl.: Rizikó) [1] 2.2. Nyerő stratégiák Amikor azzal foglalkozunk, hogy létezik-e egyes játékokhoz biztos stratégia, akkor azt vizsgáljuk, hogy van-e olyan kényszerítőág a játék kezdetétől fogva, amiből az ellenfél nem tud fordítani az álláson és győztesként kijönni, bármit is lép. Ilyen stratégia minden kétszemélyes teljes információjú logikai játéknál létezik az egyik fél számára, amennyiben a játék nem végződhet döntetlennel. Abban az esetben ha mégis, akkor nem-vesztő stratégiáról beszélünk. Ezt mondja ki Zermelo-tétele. 8

9 2.3. A játékfa Ha Zermelo tételét alkalmazzuk a sakkra vagy az amőbára, akkor azt a következtetést vonhatjuk le, hogy: Vagy fehérnek létezik nyerő stratégiája. Vagy feketének létezik nyerő stratégiája. Vagy mindkettőnek létezik nem-vesztő stratégiája. Amennyiben nincs lehetőség döntetlenre egy játékban, akkor ha az egyik játékosnak nincs nyerő stratégiája, a másik játékos nem-vesztő stratégiája egy nyerő stratégia lesz A játékfa A játékfa úgy épül fel, hogy a csúcsok egy-egy játékállást tartalmaznak, az élek pedig a szabályos lépéseket jelképezik, amelyek a következő játékálláshoz vezetnek. Tehát a gyökérben a kezdő állapot (többnyire az üres tábla) fog szerepelni, míg a levelekben a játék végét tartalmazó állás lesz. Biztosan csak akkor tudjuk megállapítani egy állásról, hogy létezik-e hozzá nyerő stratégia, ha az álláshoz tartozó játékfának az alatta levő részfájában az ellenfél nem tudja elkerülni semmilyen esetben sem, hogy az ellenfele olyan levélre vezesse amiben az ő győzelmével ér véget a játék. A fentiek miatt az ilyen fajta feladatokat visszavezethetjük egy játékfán alkalmazott keresési problémára. 9

10 2.4. Minimax algoritmus 2.1. ábra. A Tic-Tac-Toe játékfája Néhány játéknál ez a fa teljes egészében felírható, (ilyen például a Tic-Tac-Toe játék), azonban a legtöbb esetben (azaz a bonyolultabb játékoknál) a fa robbanásszerűen, exponenciálisan növekszik a lehetséges lépesek, és a játék megnyeréséhez szükséges lépések számának a függvényében. Ezekben az esetekben már nem tudunk valós időben biztos stratégiát mondani, habár azt meg tudjuk állapítani, hogy nyerő vagy nem vesztő stratégia létezik-e egy játékhoz. A kezelhető méretű játékfával rendelkező játékokra nagyon jó megoldás lehet a minimax algoritmus használata Minimax algoritmus Az algoritmus a játékállásokhoz rendel 1, 0 vagy -1 értéket attól függően, hogy melyik játékosnak létezik nyerő stratégiája abban az állásban. 1, ha MAX-nak van nyerő stratégiája. 0, ha MAX-nak csak döntetlent elérő stratégiája van. -1, ha MAX vesztes ágon van, és az ellenfelének létezik nyerő stratégiája az adott helyzetből. Az algoritmus azonban jóval több, mint egy egyszerű keresési feladat, ugyanis feltételeznünk kell, hogy az ellenfél (MIN) minden esetben minimalizálni próbálja nekünk ezeket az értékeket a saját győzelmének érdekében. Ezért MAX-nak szükséges lesz egy 10

11 2.5. Kiértékelő függvények stratégia, ami figyelembe veszi MIN-nek a lehetséges lépéseit is, majd újra a sajátjait, egészen addig amíg a helyzetnek megfelelő végállapotba nem érünk. Tehát a stratégiának feltételeznie kell, hogy az ellenfél minden helyzetben optimálisan dönt ábra. A van MAX szerepében, és B MIN szerepében. Az algoritmus működését láthatjuk egy egyszerűsített esetben, a játék végéhez közelítve. Azokban az esetekben, ahol a túl nagy számítási igény miatt nincs lehetőségünk egészen a levelekig vizsgálni a teljes játékfát, megjelentek az igények a koncepció továbbfejlesztésére. Ennek egyik lehetséges módja a kiértékelő függvények alkalmazása Kiértékelő függvények A kiértékelő függvények bevezetésével lehetővé vált, hogy ne kelljen a teljes játékfát vizsgálni. Ezt úgy oldják meg, hogy egy bizonyos mélységben (ahogy a számítási kapacitás engedi) elvágják a fát, és heurisztikákra támaszkodva, egy jósági vagy hasznossági értéket rendelnek az adott álláshoz. Ehhez általában az adott játék alapos ismerete szükséges. Az a célja a kiértékelő függvénynek, hogy értékeket rendeljen a csúcsokhoz, attól függően, hogy ki áll éppen nyerésre. Minél nagyobb ez az érték, annál esélyesebb, hogy MAX fog nyerni, viszont a kisebb értékek MIN-nek kedveznek. Így már nem csak 1,0 vagy -1 értékeink lesznek, és már nem a biztos győzelmet, vagy a hiányát fogják jelenteni, hanem csak becsült értékek arra, hogy ki áll jobban az adott helyzetben. 11

12 2.6. Alfa-béta nyesés 2.3. ábra. Az ábra a minimax algoritmus működésére a kiértékelő függvényekkel kombinálva. Az algoritmus a lehető legjobb lépéshez tartozó operátort adja vissza, vagyis ahhoz a lépéshez tartozó operátort, amelyik a legnagyobb hasznossági értékkel rendelkező eredményre vezet, feltételezve, hogy az ellenfél úgy játszik, hogy minimalizálja a hasznossági értéket. A MAX-ÉRTÉK és MIN-ÉRTÉK függvények végigmennek a teljes játékfán, le egészen a levélcsomópontokig, hogy meghatározzák a csomópont felfelé terjesztett értékét. [2] (2.3.) 2.6. Alfa-béta nyesés A minimax algoritmuson még ezen felül is lehet javítani, és szükség is van erre a lehetőségre, mivel a lépések száma exponenciálisan növekszik ahogy haladunk egyre mélyebben a fában. A lehetséges lépések miatt a fa egyre jobban szerteágazódik. Viszont az elágazások között vannak olyan esetek is, amelyekről már korábbi szinteken kiderülhetett, hogy nem fogunk azon a részfán tovább haladni, mégis vizsgáljuk őket. Az ilyen esetek elhagyására alkalmazható az alfa-béta nyesés. 12

13 2.6. Alfa-béta nyesés 2.4. ábra. Ábra az alfa-béta nyesés működéséről egy példában. Ugyanarra a részfára alkalmazva nyeséssel és nyesés nélkül is ugyanazt a levelet fogja visszaadni a minimax algoritmus, azonban nyesve jóval kevesebb területet kell bejárnunk és tovább vizsgálnunk. Abban az esetben, hagyhatunk el részfákat, ha azon a szinten, vagy korábbi szinteken, amelyek nem ehhez a lépéshez vezetnek, már találtunk az adott lépésnél jobbat. Ebben az esetben megállapíthatjuk, hogy ezt a lépést nem fogjuk választani, így az ezt követő részfát se, tehát nyugodtan lenyeshetjük ezt az ágat. Az ilyen ágak vizsgálata felesleges, mivel nem befolyásolják érdemben a minimax algoritmussal hozott döntést. 13

14 2.7. A Deep Blue és az AlphaGo programok összehasonlítása 2.5. ábra. Ábra az alfa-béta nyeséssel kiegészített kiértékelő függvényes minimax algoritmus megvalósításának a módjáról A Deep Blue és az AlphaGo programok összehasonlítása A sakk és a go összehasonlítása A címben szereplő programok a sakkot és a go játékot játszó programoknak az első olyan változatai, amelyek győzedelmeskedni tudtak a saját játékaikban a világbajnokok felett, versenykeretek között. A sakkban 1997-ben győzte le Garry Kaszparovot az IBM által tervezett Deep Blue nevű program, viszont ekkor a go-ban még csak erős amatőr szinten játszó programok léteztek, és csak 2016-ban sikerült eljutni arra a szintre, hogy a világbajnokok szintjén tudjon játszani a játékban egy program. Ettől a ponttól kezdve a fejezet hátralevő részét a Christopher Burger munkája alapján dolgoztam fel. [3] 14

15 2.7. A Deep Blue és az AlphaGo programok összehasonlítása 2.6. ábra. Az esemény ahol győzedelmeskedett az AlphaGo. A játékok komplexitásának összehasonlítása A közel 20 évnyi időeltérés oka a számítási igényekben és a játék komplexitásában rejlik. Hiába egyszerűbbek a go szabályai a sakktól, ez teret hagy több lépésnek, míg a sakkban átlagosan 35 lehetséges lépés létezik az éppen következő játékos számára, addig a go-ban 250 körül mozog ez az érték. A go-játszmák általában hosszabb ideig is tartanak, átlagosan 150 lépésből áll egy játék, a sakk esetében pedig csak 80 lépés a partik átlagos hossza. A játékfák A számítási és tárolási igények kiszámításakor és összehasonlításakor tehát azt kell figyelembe vennünk, hogy a go-ban , míg a sakkban darab lehetséges játék létezik. A teljes játékfa ismerete lehetővé tenné, hogy mindig a legjobb lépést válasszuk egy helyzetben. A játékfa bejárásának egyik eszköze a minimax algoritmus, melynek az a feladata, hogy minimalizálja a legrosszabb esetet, tehát az ellenfél ideális lépéseivel is számol. Ehhez szüksége van a teljes játékfára egészen a játékot megnyerő lépésekig. Így ez az algoritmus tökéletes eszköz a Tic-tac-toe-hoz és más feldolgozható méretű játékfával rendelkező játékokhoz, azonban a sakkhoz és a go-hoz a játékfa mérete miatt többre van szükség. 15

16 2.7. A Deep Blue és az AlphaGo programok összehasonlítása A Deep Blue működése A minimax A Deep Blue működése a minimax algoritmuson és a kiértékelő függvényeken alapul. Az alapvető koncepció az volt, hogy előre megvizsgál annyi lehetséges lépést amennyit tud, (ez általában legalább 6 lépés volt a Deep Blue esetében), majd az állásra alkalmazta a kiértékelő függvényt, mely egy jósági értéket rendelt az álláshoz, ezzel helyettesítve a lépések alatt lévő részfákat. Ezen értékek felhasználásával a minimax algoritmust már lehetett alkalmazni a teljes gráf ismerete nélkül is. A kiértékelő függvény A kiértékelő függvény valamilyen formájú heurisztikára támaszkodik. Minél közelebb kerülünk a játék végéhez, annál könnyebb jó kiértékelő függvényeket gyártani, ugyanis ha belegondolunk, könnyebben meg tudjuk állapítani egy állásról, hogy ki áll nyerésre, ha már közeledik a befejező lépés, azonban a játék elején még nagyon nehéz megmondani, hogy ki fog nyerni. Valószínűleg közel lehetetlen tökéletes kiértékelő függvényt tervezni, azonban egy jobb függvény egy erősebb játékost eredményez. Viszont amíg egy másikhoz képest fele olyan jó kereső függvény kétszer annyi idő alatt járja be a fát, addig egy fele olyan jó kiértékelő függvény klasszisokkal gyengébben teljesít. Két meghatározó tényezője van a mesterséges intelligencia erősségének: A számítási erő. Ha több számítást tud elvégezni adott idő alatt, akkor az mélyebb keresésnek nyit teret a fában, ami végül jobb becslésekhez vezet a kiértékelő függvényt alkalmazva. A Deep Blue szuperszámítógépen futott, ezért nagy számítási kapacitás állt a rendelkezésére. A kiértékelő függvény minősége. Az IBM óriási figyelmet fordított a kiértékelő függvény tervezésére. A függvény több mint 8000 darab alfüggvényből állt, rengeteg speciális eset kezelésére felkészítve. Több mint 4000 nyitási pozíciót dolgozott fel, nagymesteri játékot vizsgálva. A program sakktudásának finomhangolását nagymesterek végezték el. Összességében a Deep Blue nagymértékben támaszkodott a nyers erőre, és a hosszas, nagy erőfeszítések árán megírt heurisztikára. A go-ra viszont ugyanezt a megközelítést nem lehetett alkalmazni a játékfa hatványozott szétágazása miatt, valamint amiatt, mivel a végjátékban a játék sokkal bonyolultabbá válik, így nehezebb jó kiértékelő függvényeket írni rá. 16

17 2.7. A Deep Blue és az AlphaGo programok összehasonlítása Az AlphaGo működése A Monte Carlo Tree Search Ennek tudatában egy új megközelítéssel próbálkoztak, és ez a Monte Carlo (MCTS) keresési módszer. Az elképzelés mögött az áll, hogy a játék aktuális állásából szimulációkat indítanak, amíg el nem érnek egy végpontot valamelyik játékos győzelmével. Először a szimulációkban teljesen véletlenek a lépések mindkét fél részéről. Azonban minden szimulációban letárolnak néhány adatot, például, hogy melyik állást hányszor választották, és ezek hányszor vezettek győzelemhez. Ezek az adatok fogják később befolyásolni a választásokat, és egyre kevésbé lesznek véletlenszerűek a lépések. Minél több szimulációt futtatunk le az algoritmus annál jobban ki tudja választani a győzelemhez vezető lépéseket. Érzékelhető, hogy a szimulációk gyarapodásával az algoritmus egyre jobban közelít az optimális játékhoz ábra. Ábra a bejárandó fáról. A felfedezés és kihasználás Az MCTS egyik fontos tényezője a felfedezés és kihasználás (exploration/exploitation) egyensúlya. Ez azt jelenti, hogy az MCTS hajlamos túl kevés szimuláció után következtetéseket levonni arra vonatkozóan, hogy az adott lépés tényleg nyerő álláshoz vezet-e, ezért érdemesebb egy új komponens behozatala, amely hatására a jól bevált lépések helyett esetleg újakkal is próbálkozhat, hátha talál jobb megoldást. Az eddigi megközelítések Az MCTS érdekessége az, hogy kezdetben nem szükséges megadnunk semmilyen taktikát a játékra vonatkozóan. A Deep Blue bonyolult kiértékelő függvényeket használt, ezzel ellentétben az MCTS-nek csak néhány számot kell követnie, és a szimulációkat. Ennek ellenére meglehetősen sok szimuláció lefuttatására van szükség ahhoz, hogy az algoritmusunk pontos legyen. 17

18 2.7. A Deep Blue és az AlphaGo programok összehasonlítása Az AlphaGo előtti legerősebb go programok (Fuego, Pachi, Zen és Crazy Stone) mind MCTS-t használtak, azonban kézzel írott szabályokat is írtak a jobb lépésválasztás érdekében. Ezek mind egy erős amatőr szintjén játszottak. Az AlphaGo újszerű megközelítése viszont kiaknázta a gépi tanulás által nyújtott eszközöket, hogy ne legyen szükség kézzel írt szabályok használatára. A program három különböző neurális hálót használ egy fa kereséssel összekötve. Működésének megismerése érdekében azonban néhány fogalmat tisztáznunk kell. Gépi tanulás A gépi tanulás egy adaptív eljárás, amely a rendszerben olyan változásokat hoz létre, hogy a következő ciklusban megjelenő azonos problémát a rendszer már helyesebben oldja meg. A tanulási folyamat paraméterek beállítását, illetve csoportosítást, osztályozást, statisztikailag szignifikáns szabályszerűségek feltárását teszi lehetővé a rendszer számára. [4] Neurális hálózatok A mesterséges neurális hálózatokat gyakran használják gépi tanulásban a nagy adatmennyiséget feldolgozó képességük miatt. A neurális hálók több réteget tartalmaznak, és ezek több paramétert, melyeknek értékeit a tanuló adatokra kell hangolni. A neurális hálók rétegei neuronokat tartalmaznak, ezeknek a bementi értékük az előző réteg kimeneti értéke, majd ezeket az értékeket együtt figyelik. Ez a fajta viselkedés tényleges biológiai neuronok viselkedése alapján lett tervezve, ahonnan a nevük is ered. Konvolúciós neurális hálózatok A neurális hálók egyik típusa a konvolúciós neurális hálózat, amely kifejezetten jól használható képfeldolgozási feladatokban, például az arc, vagy rendszámtábla felismerésnél. A konvolúciós hálózatok jól használhatóak az emberek által könnyen, ösztönösen megoldható feladatokra, ami a go-nál is kifejezetten hasznos. Az AlphaGo megvalósítása Az AlphaGo működése két fő komponensre bontható fel. Egy fakeresési eljárásra, és a konvolúciós hálózatokra, amely a fa keresést irányítja. A konvolúciós hálózatok lényegében nagyon hasonlóak a Deep Blue kiértékelő függvényeihez, abban viszont eltérnek, hogy ezeket nem tervezték, hanem maguktól tanulták meg a játékot, egyfajta ösztönösséget biztosítva így a működéshez. Összesen három konvolúciós hálózatot tanít be a rendszer, két különböző típusból. Két irányválasztó hálózat, és egy értékhálózat. Mindkét fajta hálózatnak a bemeneti értékei képek a jelenlegi játékállásról. Az érték hálózat Az értékhálózat megbecsüli a játék állásának az értékét. Az input a teljes játék tábla, az output egyetlen szám, amely a nyerési esélyt takarja. 18

19 2.7. A Deep Blue és az AlphaGo programok összehasonlítása Az irány hálózat Az irányhálózatok útmutatást adnak arra nézve, hogy milyen lépést válasszon a program az adott tábla alapján. Az output egy valószínűségi érték, hozzárendelve az összes lehetséges lépéshez. A nagyobb valószínűségi értékekkel rendelkező lépések nagyobb eséllyel vezetnek győzelemhez. Az irány hálózatok pontossága Az irányító hálózat 30 millió pozícióból lett betanítva profi go játékosok meccsei alapján, melyek elérhetőek voltak egy nyílt go szerveren. Az AlphaGo csapata végzett egy tesztet ennek a hálózatnak az alkalmazásával, amely során 57% pontossággal meg tudták jósolni, hogy a két játékos közül ki fogja megnyerni a játszmát. Egy kisebb, de gyorsabb irányító hálózatot is létrehoztak. Ennek pontossága csak 24% volt, azonban a döntéshozatal 3 milliszekundum helyett 2 mikromásodperc alatt zajlott le. Ez egy 1500-szoros gyorsításnak felel meg. Az irány hálózatok további tanítása Mindeddig az irányító hálózatokat csak az ember által játszott játszmák kimenetelének megjóslására használták, azonban a fő célja nem ez, hanem hogy optimális döntéseket hozzon, amelyek segítenek megnyerni a játékot. Innentől az irányító hálózatokat már úgy fejlesztették tovább, hogy egymás ellen játszatták őket, ezeket a meccseket pedig felhasználták a további tanuláshoz. Ez a fajta megközelítés nem tekinthető teljesen újnak, ugyanis már használták az 1992-es TD-Gammon-ban. Ez egy ostábla játékot játszó program, amit szintén az IBM fejlesztett, akárcsak a Deep Blue-t, és abban az időben elérte a korában legjobban teljesítő emberi játékos szintjét. Az irány hálózat teljesítménye Az AlphaGo csapata kipróbálta, hogy egyedül ezekre az irányító hálózatokra támaszkodva, mindig a legnagyobb eséllyel rendelkező lépést választva- ami így csak 3 ezredmásodpercet vett igénybe- milyen eredményeket érhet el. A legjobban teljesítő irányító hálózatukat játszatták, az akkori legjobb nyílt forráskódú go program, a Pachi ellen, mely MCTS szimulációval számolt minden körben. Az eredmény 85%-ban az AlphaGo irányító hálózatának a javára dőlt el. Ez azért is kiemelkedő, mert egy gyors, előrecsatolt rendszer képes volt túlteljesíteni egy erősen keresésre épülő rendszert. Ez is mutatja, hogy a go-ban mennyire szükséges is az ösztönösség. Az érték hálózat szintén 30 millió játék pozíció alapján lett betanítva, de ezeket az alatt szerezte, amíg az irányító hálózat saját maga ellen játszott. Emlékeztetőül, az érték hálózat a jelenlegi álláshoz rendeli hozzá a nyerési esélyt, amely nagy mértékben hasonlít a kiértékelő függvényekhez, annyi kivétellel, hogy ezek tanultak, nem pedig terveztek. Azonban a tendencia, hogy a játék vége felé könnyebb pontosabb értékeket mondani itt is észrevehető. 19

20 2.7. A Deep Blue és az AlphaGo programok összehasonlítása A technikák összeállása Ha összerakjuk az eddig megismert technikákat akkor megkapjuk, hogy hogyan is játszik az AlphaGo. A keresési eljárása hasonló az MCTS-hez, azonban itt az eddig megismert három hálózat alapján hozza a döntéseket. A Deep Blue-hoz hasonlóan az AlphaGo is kiértékeli az állást, viszont ez az eredmény a keveréke az érték hálózatnak és a gyors irányító hálózat által lejátszott, saját maga elleni szimulációnak. A csapat tesztelte külön-külön is ezeket, azonban mégis a kombinációjuk adta ki a legjobb eredményt, tehát mindkettő ugyanannyira fontos. A lassú irányító hálózat is hozzájárult a fában való kereséshez. Ez a rész felelős többnyire a felfedezés és kihasználás egyensúlyáért. A hálózat visszaad egy értéket minden egyes lehetséges lépéshez, majd leosztja ezeket annak a számával, hogy hányszor lépte már ezt a lépést. Ezzel hátrányba helyezi egy kicsit a túl gyakran választott lépéseket, teret hagyva az új lépések kipróbálásának A Deep Blue és AlphaGo működésének összehasnolítása Összegezve a legnagyobb különbségeket a Deep Blue és az AlphaGo között, arra a következtetésre juthatunk, hogy a sakkban elég volt egyedül a kézzel írott heurisztikára, és egy egyszerű keresésre támaszkodni, és a sakk esetén a játékfa, még hatalmas mérete ellenére is kezelhető volt. A go-nál nem lehetett ugyanezt a megközelítést alkalmazni, hiába jelentett azonban nagy előrelépést az MCTS megoldás, egyedül erre támaszkodva még nem lehetett volna áttörést elérni. Az AlphaGo sajátosságai Ami az AlphaGo-t rendkívülivé teszi az a tanulási komponens, ami kiváltja a kézzel írt heurisztikákat. Azzal, hogy saját maga ellen játszatják egyre csak erősebb és erősebb lesz, ami reményt nyújt, hogy talán más mesterséges intelligenciabeli problémákra is használható lehet ez a módszer. Ami még szintén említésre méltó, hogy a Deep Blue által vizsgált pozíciók mennyiségének csak a töredéke is elég az AlphaGo-nak, azonban ezek minőségükben sokkal precízebbek, és összességében így jobb játéktudást eredményeznek Jövőbeli lehetőségek az AlphaGo megközelítésének alapján Az AlphaGo-nak szüksége volt egy hatalmas mennyiségű minta játékra először, ami szerencsére ebben az esetben adott volt, azonban más problémák esetén nem biztos, hogy mindig alkalmunk lesz hozzáférni ilyenekhez. Abból kifolyólag, hogy kezdetben emberi játékokból indult ki, a program gondolkozása túlzottan hasonlíthat az emberi gondolkozáshoz, így kiszorítva a lehetőséget, hogyha csak saját maga ellen játszana, akkor új megközelítéssel, stratégiákkal próbálna meg nekikezdeni a játéknak. A TD-Gammon esetében ez merült fel, ugyanis az csak saját maga elleni játékból merítette az adatait, és így felfedezett olyan stratégiákat amelyeket az emberek azelőtt nem használtak, így fejlesztve az ostábla játék elméletét. 20

21 2.8. Az amőba története A tény, hogy egymástól függetlenül tanult a neurális hálózat és a fa keresés, lehetséges, hogy létezik egy, a jelenleginél jobb kombinációja a két komponens összekapcsolásának. A konvolúciós hálózatok egy speciális fajtái a neurális hálóknak, ezért nem feltétlenül használhatóak más játékokhoz, problémákhoz Az amőba története Az amőba egy körülbelül ezeréves játék, amit Japánban játszottak először. Amőbaként csak Magyarországon ismert, eredeti elnevezése a gomoku, de 5 in-a-row néven is szokták emlegetni. A játékot eredetileg a 19x19-es go táblán játszották és a rácsvonalakra tették le a játékosok a jeleket, de később ezt lecsökkentették 15x15-ösre. A hétköznapokban nyugodtan lehet tollal és papírral játszani az amőbát, hiszen a lerakott jeleket nem mozdíthatjuk már el miután letettük őket, bár eredetileg a játékban kő lerakása után a játék átváltott a lerakott jelek szabad mezőkre való mozgatására felváltva. Mivel 1994-ben L. Victor Allis bebizonyította algoritmusával, hogy létezik nyerő stratégia 15x15-ös pályára, ezért bevezettek megkötéseket a kezdésekre, mint pl.: a Renju, Pente és a Swap. [5] Az amőba szabályai 2009 óta elkezdték újra megrendezni két évente az amőba világbajnokságot, ezeken a kezdő megkötésre a swap2 -t használják. A swap2 nyitás úgy korlátozza a játékosokat, hogy a kezdő játékos 3 követ rak le, 2 feketét, és 1 fehéret, ezután az ellenfele választhat, hogy folytatja, vagy a fehérrel vagy a feketével, vagy dönthet úgy is, hogy lehelyez még 1-1 követ, viszont ekkor az ellenfél köteles színt választani már. Még fontos megkötés az is, hogy az ötnél hosszabb azonos alakzatok nem számítanak győzelemnek. Ezek a megkötések kiegyenlítetté teszik a kezdést, és a kezdő játékosnak már nem ad leküzdhetetlen előnyt a másik játékossal szemben. A magyar játékosok kiemelkedően jól szerepelnek, hiszen a 2009 óta megrendezett négy világbajnokságból hármat magyarok nyertek, Demján Attila és Dupszki Rudolf. A programomban nem tettem megkötéseket a nyitásra, ugyanis nem nyer minden esetben nyitó játékosként a program, szóval a körülmények a mezei játékosoknak sokkal hétköznapibbak, ezért közelebbi, élvezhetőbb lehet számukra a játék. 21

22 3. fejezet Fejlesztői dokumentáció 3.1. Használt programozási eszközök A választott eszközök A programkód elkészítéséhez a C nyelvet, a grafikus ábrázoláshoz pedig az OpenGL-t választottam. A grafikai rész alatt néhány helyen C++ is alkalmazásra került a kód során. A programkód implementálása Először a C program került leimplementálásra egy konzolos verzióval a könnyebb debuggolás és fejlesztés érdekében, ebben látszik a gondolkodása, hogy miért azokat a lépéseket választotta, és mely lehetőségekből. A grafika implementálása Miután a kód az általam eltervezettként működött, hozzáláttam a grafika elkészítéséhez. Itt a Számítógépi grafika tárgyon megismert Glut, Soil és glfw könyvtárakat használtam. Tábla feletti mozgást és forgatást is megvalósítottam, hogy jobb élményt nyújthasson. Ennek érdekében viszont az egér kattintását és mozgását le kellett képeznem, hogy átszámolja a táblán való pozíciókra. Így nem közvetlenül a táblán kell kattintani, hanem az ablakon, viszont ezzel nyerünk az ablak reszponzivitását illetően, hisz így átméretezhetjük ahogy szeretnénk, valamint mozoghatunk és forgathatjuk, hogy más szögből lássuk, ami sokkal emberközelibb mintha csak a teljes statikus tábla foglalná el az ablak egészét. A látvány és élménybeli löket pedig úgy gondoltam, hogy megéri azt az áldozatot, hogy rövid idő alatt meg kell szokni a leképzéssel való korrigálást A programok egyesítése A grafika és a C program összeollózásával nem volt probléma, kihasználva a C++ visszafelé kompatibilitását. Kisebb átalakításokra szükség volt a GlutMainLoop() szükségessége miatt, így a display() függvényben került elhelyezésre a kód érdemleges része a következő lépést illetően. 22

23 3.2. A játéktér felépítése 3.3. A gép lépésének kiválasztása A játéktér egy const Size hosszúságú négyzet. Ezek értéke alapból inicializálódik 0 - ra. A teljes játékteret körbeveszi egy 4-es vastagságú fal minden irányból, melyek az inicializáció során 3 -as értékkel kerülnek feltöltésre, később a fal menti számolásoknál lesz majd jelentősége ennek a fajta megoldásnak. A falak értékeit a játékosok nem írhatják át, és csak a súlyokat kiosztó algoritmus veszi figyelembe azokban a speciális esetekben, amikor a játék a fal közelébe kerül már. A játéktéren a cellák tartalma 0;1;2 értéket vehet fel, reprezentálva az üres, a O és az X állapotokat rendre A gép lépésének kiválasztása A gép először végighalad az összes mezőn, és a 0 -t tartalmazó mezőkre meghívja a getvalue() függvényt. A függvény a mezőkhöz egy értéket rendel, mely megadja, hogy a lépés mennyire lenne hasznos a számára A getvalue() A függvényen belül más függvényhívások történnek, melyek megvizsgálják a mezőhöz tartozó szomszédos mezőket minden irányból, ezek a calcvaluerow() és calcvaluedial() és a tábla elforgatásával, és tükrözésével történnek. A két előbbi függvényt egybe is vonhattam volna, azonban úgy véltem, hogy ez az érthetőség rovására menne. Ezek a függvények tartalmazzák ugyanis a súlyokat, és ezek fognak lefutni a legtöbbször a program során, így szerettem volna elkerülni a felesleges indexléptetéseket és számolást. Folyamatosan tárolásra kerül a három legmagasabb mező értéke, és indexe ábra. Az ábrán az algoritmus kódja, és hozzárendelt súlyok működése látható, valamint, hogy melyik helyzetben hívódna meg a hozzájuk tartozó kódrészlet A calcbestmoves() A táblán végighaladva a kapott értékeket folyamatosan vizsgáljuk, ha olyan értéket kapunk ami nagyobb az eddigi harmadik legnagyobbtól, akkor annak a helyére letárolja. 23

24 3.3. A gép lépésének kiválasztása 3.2. ábra. Diagram a lépéshozatalról. A sorthighestvalues() Amikor talál ilyet, meghívja a sorthighestvalues() függvényt, ami a legnagyobb értékeket összehasonlítja, és egy tömbbe rendezi, és cseréli a hozzájuk tartozó értéket és indexeket A compmovesmm() Miután megkaptuk a teljes iteráció után a három legnagyobb értéket ezeket összehasonlítva eldöntjük, hogy érdemes-e foglalkozni a második és harmadik legjobb lépéssel. Amennyiben legalább fele olyan jónak ítéljük meg a lépéseket mint az elsőt, akkor számolunk velük is. A használhatónak vélt helyekre megnézzük, hogy a saját algoritmusunk szerint az ellenfélnek mennyire lenne jó lépése, és ezekből választjuk ki a legkisebbet. Kivételként kezelendő az az eset, amikor az ellenfél az utolsó lépését helyezné le, mert akkor alapvetően azt akadályozza meg. Ez alól természetesen kivétel, ha nekünk lenne esélyünk megnyerni a játékot, de azt az esetet nem szükséges leimplementálnunk, mert az összehasonlítós előszűrés kiküszöböli A gép játékstílusa A legjobb mezőkre való szűrés miatt az algoritmusunk továbbra is agresszív stílusban játszik, de a minimalizáció miatt, mégis a védekezőbb lépéseket választja közülük, egy 24

25 3.5. Játék a fal közelében rugalmas játékost szimulálva. Az ellenfél lépésének meghatározása is ugyanazzal a kóddal történik, mint a gép lépésének a meghatározása, csak a táblát invertáljuk, hogy a kódot egészében alkalmazhassuk rá, majd ha végeztünk ezzel visszavesszük mindkét lépést és visszainvertáljuk a táblát a következő iteráció előtt A játék vége A játék végéért az isover() függvény felelős. Megvizsgálja, hogy van-e öt darab egyes vagy kettes, és attól függően, hogy melyik játékoshoz tartozik leállítja a játékot. Ez minden lépésváltás közben lefut. A tábla megvizsgálása a lépéshez hasonlóan elforgatással, és tükrözéssel történik Játék a fal közelében A probléma a fal melletti játékkal Az előbbiekben, mint már említésre került, a játékteret egy a játékosok számára láthatatlan négyes vastagságú fal veszi körbe. A kiértékelő algoritmus jól kezeli a falak és üres mezők közötti különbséget, azonban önmagában ez nem elég ahhoz, hogy teljesen elkerülje a fal felé való terjeszkedést A megoldása A fal menti értékeket a kiértékelés közben leosztja hárommal vagy kettővel attól függően, hogy közvetlenül a fal mellett vagy annak közvetlen szomszédjában. Ez az apró korrigálás elég ahhoz, hogy eltántorítsa a falhoz közel eső lépések választásától, viszont, ha nyerő pozíció alakul ki (mint a két oldalt nyitott négyesre lehetőség, vagy a tényleges győzelem a fal mentén), az osztott értékek még mindig jóval jobb lépésnek bizonyuljanak. Fontossága abban is rejlik, hogy ne legyen túl szigorú az értékek osztása, hiszen az ellenfél nyerő helyzeteit is le kell tudni zárni. 25

26 3.6. A heurisztika 3.6. A heurisztika A jó kiértékelő függvény nagyban befolyásolja mesterséges intelligenciánk teljesítményét a mesterséges intelligenciánknak ahogy azt a Deep Blue és AlphaGo esetében is láthattuk. Ezért döntöttem úgy, hogy erre nagyobb figyelmet szeretnék szentelni, és konkrét állásokat lekezelni, egy egyszerűbb környezetében lévő jelek számolásán alapuló algoritmus helyett A heurisztika megvalósítása A lehetséges játékállásokat letároltam, majd összehasonlítás alapján megnézem melyikre illeszkedik, és egy általam tapasztalati úton meghatározott súlyt rendelek hozzá. Folyamatosan a tábla i és j indexszel rendelkező eleméhez képest viszonyítva nézzük a játékállásokat, erre már nem kell kikötést tennünk, hiszen, csak akkor jut el ide az algoritmus, ha az a mező üres, hiszen egyébként nem érdemes vele foglalkoznunk. Ebben az esetben csak a sorban nézi a lehetőségeket, tehát még háromszor meg kell majd hívnunk a függvényt a forgatások és tükrözések után, és a currentvalue változót, azaz a mezőhöz tartozó értéket ennek a négy hívásnak az összegéből kapjuk meg, miután minden irányból megkaptuk a helyzet hasznosságát ábra. Az első kielemzett mintalépés Első példa a heurisztikára Az ábrán az algoritmus lépésválasztási döntése látható, ehhez készítettem egy illusztrációt, mely segíthet megérteni a működését. A barna bekeretezett lépésére, a program 26

27 3.6. A heurisztika a bekeretezett kék csillaghoz tartozó mezőt vélte jobbnak. Ránézésre a fekete csillag se lenne rossz lépés, azonban az algoritmus mégis eldobja, hiszen fele olyan jónak se ítéli meg. A fekete csillag értéke A fekete csillaghoz tartozó mező értéke a forráskód segítségével megállapítható. Ez az érték pedig 15. A kettes számmal ellátott fekete kerethez tartozó mintázatot a zárt hármasok csoportjába soroltam be, hiszen ha a másik oldalról zárjuk le, akkor abból az ellenfél már nem tud több lehetőséget kihozni, hiába mégis egy nyitott hármasra emlékeztet az alakja, de a nem közvetlen távolabbi környezete miatt, mégis lekorlátozható és zártnak tekinthető. A súlya így jóval kevesebbet ér, mint egy nyitott hármas, hiszen azokat már nem lehet túlzottan figyelmen kívül hagyni. Mindezek függvényében tehát általánosságban véve nem éri meg azokat a lépéseket választani, hiszen az alakzat teljes lezárása később még egy lépést igénybe fog venni, amit megelőzhetnénk. A kék csillag értéke A kék keretbe foglalt lépés tehát azért kedvezőbb, mert az előbbi indokok alapján a súlya így jóval nagyobb mértékű a nyitott hármas lezárása miatt. Ennek eléréséhez a környezetében tartózkodó cellák értékét kellett vizsgálni, beleértve azokat is, amelyek nem feltétlenül az alakzat két végén szerepelnek. A döntés Tehát a program a három legkedvezőbb lépés helyett csak a legjobbat veszi figyelembe, mivel a többi meg se közelíti az értékét, így nincs más, amiből minimalizálni lehetne. Ezért lépte meg a kék csillagot a lépésének anélkül, hogy más lépésen komolyabban gondolkozott volna. 27

28 3.6. A heurisztika Második példa a heurisztikára Ebben az esetben látható, hogy a két lépés közül a kedvezőtlenebbet választja ki, mivel az ellenfélnek a lépése (enemyvalue) kisebb eredményhez vezetne. A saját értékeit látható, ahogyan több irányból összeadódó kisebb értékekből teszi össze ábra. A második kielemzett mintalépés. A csillagok értékei A kék csillagnál három irányból értékek teszik ki a tízet. A fekete csillagnál a nyitott hármas értéke, mivel még könnyű lenne megállítani, ezért csak tíz. Azért ajánlja fel az alakzat azon oldalát második legjobb lépésnek, mert ahhoz az oldalhoz tartozik már egy nyitott kettes, így plusz kettővel megdobja az értékét. A döntés Látható, hogy szándékosan a rosszabb lépést választja, hiszen a jobb lépés az ellenfélnek kedvezőbb alakzat lezárására kényszerítené rá. Mivel a legjobb lépésekből történik a szűrés, ezért előbb-utóbb az algoritmus meg fogja lépni az itt kedvezőbb lépést is. Előbb azonban megvárja, amíg több hasonló fenyegetéssel kecsegtető más lépésre is esély tárul, így azokat láncba szedve fogja meglépni őket. Ennek következtében nagyobb kényszerítőlépés-láncot tud majd végrehajtani, ami nagyobb eséllyel vezet győzelemhez. 28

29 3.7. A játékmódok 3.7. A játékmódok A nehézségi fokozatok a következőképpen alakulnak: Könnyű Az eddig ismertetett döntéshozatal, azaz a három legjobb lépésből választja ki azt, amelyik az ellenfélnek a legkevésbé kedvező lépéshez vezet. Közepes Pusztán a heurisztikára alapul, azért lehet jobb ez, mint a könnyű nehézségi szint, mivel a játéknak ez volt az első verziója, így a súlyok optimalizálása ennek az algoritmusnak az elvére történt. Nehéz Az eddig ismertetett algoritmus kódja, annyi eltéréssel, hogy csak a legjobb két lépésre van korlátozva a három helyett, kevesebb teret hagyva így a hibázásnak, jelentősen növelve az agresszivitást. Játékos a játékos ellen A játék teljes élvezhetőségért, és az alkalmazás multifunkcióssága kedvéért, két játékos egymás elleni játékára is adtam lehetőséget ábra. A menü, ahol a játékmódokat lehet választani Nehézségi fokozatok sorrendisége A játékmódok egymás elleni játékából egyik se került ki abszolút győztesként, tehát túl nagy nehézségbeli eltérés nincs a fokozatok között, ezt a sorrendet véltem a legjobbnak. Az az eset se állt fenn, hogy mindig a kezdő játékos nyert, és mivel az algoritmus nem tartalmaz véletleneket, ezért a meccsek eredményéből nem tudtam volna reális statisztikát készíteni a módok nehézségét illetően. 29

30 3.8. A grafikai működés A tábla megvalósítása 3.8. A grafikai működés A grafikában a leginkább feladat specifikus tényező a csillag modellek jó helyre történő lerakása volt. A csillag modelljét és textúráját a hagyományos módszerrel töltöttem be, amelyekhez a már meglévő függvényeket használtam fel. A tábla intervallumon van kifeszítve, és erre történik a képernyőn való kattintás leképezése. Ezt a táblát, akárcsak a képernyőt 20x20 részre osztottam fel, és ezeket feleltettem meg egymásnak. A display() függvény folyamatosan frissíti a grafikus megjelenést a GlutMainLoop() miatt, így a megjelenítéshez elég volt csak a tábla tömbjét kirajzolni. Annak függvényében, hogy egyes vagy kettes (azaz saját vagy gép lépése) az értéke a cellának, választja ki a modellt, csak másfajta textúrával Kattintás a táblán A MouseClick() függvény visszaadja az egér pozícióját kattintás esetén, ez felel a mezőre való lerakásért. Amennyiben a tábla felosztott részei közül valamelyikre kattint, és az a mező még nem foglalt, akkor annak a cellának az értékét átírja, amelyet a display így megjelenít, és átadja a lépést a következő játékosnak Kattintás a menüben A MouseClick() függvényt használtam még a menü megvalósításához is, itt csak az új játék nehézségi szintjének a meghatározása a feladata. Ha valamelyik gombra eső tartományba esik a kattintás, akkor inicializálja a táblát, kezdőállapotba állítja a változókat, és a megfelelő játékmódot hívja meg Az indikátor működése Az indikátor-csillag folyamatos reprezentálásért a glutpassivemotionfunc() felelős. Ez mindig az adott pillanatban visszaadja a képernyőhöz tartozó x és y koordinátát. A működési elve hasonló a MouseClick()-hez, azonban mivel itt csak egy mezőt kell megjeleníteni, ezért nem egyezik meg teljesen, hiszen a MouseClick()-nél, ha egy mezőre leraktunk egy lépést, akkor onnantól a játék végéig azt már nem kellett módosítanunk. Ennek a függvénynek a működése azon az elven alapul, hogy ha táblához tartozó üres cella felé ér, akkor először egy, az előzőtől eltérő tömböt kinulláz, hogy eltüntesse az előző indikátort, ha volt, és aztán növeli a cella értékét. A display() ezt a tömböt kapja meg kirajzolásra, és a működése miatt így mindig csak egy csillagot fog mutatni A menü A menü felépítése egy help változóhoz van kötve, melynek értéke igaz vagy hamis lehet. Alapvetően ez a változó igazra van állítva, hiszen a menü képernyő fogad minket. A menü még az isover() függvénnyel is össze van kötve, mely annak a vizsgálatért felelős, hogy véget ért-e a játék valamelyik játékos győzelmével, és ha igen akkor melyikével. Ha egy játékos nyert már, akkor attól függően hívja meg a textúrát, hogy ki nyert. Mivel nem csak a játékok végén ugorhat fel a menü, hanem az alkalmazás indításakor is, ahol még egy játékos se nyert, vagy egy játék közepén az F1 gomb segítségével, 30

31 3.8. A grafikai működés így három menü textúrát is el kellett készítenem annyi különbséggel, hogy a győzelem feliratokhoz más tartozik, vagy egyáltalán nincs ott A játékos elleni mód A három gép elleni mód mögött nem különböznek a grafikai hívások, azonban a játékos elleni mód létrehozásához változtatások voltak szükségesek. A MouseClick() függvénynek azt is vizsgálnia kell, hogy épp melyik játékos következik, és ahhoz mérten állítani a cella értékét, valamint a glutpassvemotionfunc()-nál is ugyanez a módosítás volt szükséges. Ennyi módosítás elég volt, hiszen a display() függvény a gép csillagait a tábla értékei alapján rajzolta ki, amit a gép kódja állított be, ezt helyettesíti a másik játékos kattintása. 31

32 3.9. Kísérletezések, jövőbeli tervek 3.9. Kísérletezések, jövőbeli tervek A döntés meghozatalakor a próbálgatások alapján felmerült egy, a minimaxra hasonlító koncepció, miszerint a gép az ellenfél legjobb lépése után a saját legjobb lépését válassza. Azonban, mivel a heurisztika a lépéseket értékelte és nem a játék állását, ezért a gép hajlamos volt az ellenfélnek engedni, hogy kiforrottabb alakzatai legyenek, (hiszen ezek lezárása több pontot ér) így sokszor engedte az ellenfelet nyerés közeli helyzetbe. Egy jobb játékosoknak ez elég a játék befejezéséhez, azonban amikor a gép diktálta a tempót, és ő volt az agresszor, akkor jobb eredményeket produkált. Lehetséges megvalósításként két ötletem támadt a probléma orvoslására: Az egyik a súlyok teljes átalakítása, hogy a támadó lépések jobban domináljanak, azonban nem szerettem volna a stabilan működő heurisztikát elrontani, így úgy véltem ez nem járható út. A másik megoldásnak a lépéskiértékelések táblakiértékeléssé konvertálása tűnt, méghozzá úgy, hogy az összes lépés értékét összeadnám, majd leinvertálva a táblát az ellenfélnek is megismételném, és azt kivonnám a saját értékemből. Azonban a lépéselőnnyel járó bizonytalansággal és módszer javításának/működésének garanciája nélkül, valamint hogy a program már így is elfogadható szinten játszik, azt a közvetkeztetést vontam le, hogy ennek implementálását célszerűbb a jövőre bízni, és más területeken érdemesebb csiszolgatni a projektet. 32

33 4. fejezet Összefoglalás A szakdolgozatom elméleti részében kifejtettem az általános megoldásokat a logikai játékokat játszó mesterséges intelligencia megvalósítására. Ezeket a Deep Blue és AlphaGo programok alapján mutattam be. Ezek a módszerek már bebizonyították, hogy van létjogosultságuk a mesterséges intelligencia területén. A Deep Blue mintáján bemutattam a minimax, alfa-béta nyesés, valamint a kézzel írott heurisztikák fontosságát. Az AlphaGo játék bemutatásán keresztül pedig az új megközelítést a logikai játékokhoz, a Monte Carlo fakeresést, a gépi tanulást, valamint a neurális hálózatokat, azon belül kiemelten a konvolúciós hálózatokat. Az általam választott játékhoz, az amőbához készítettem programot. Ebben törekedtem a jó heurisztika megvalósítására. Igyekeztem a saját játékstílusomat implementálni. Ehhez a lépések döntésének a meghozatalához megpróbáltam lekezelni a legtöbb játékállást, ami a mező közvetlen közelében van a sorban, és így súlyokat rendelni az adott mezőhöz. Mivel törekedtem az emberi játék imitálására, hogy minél jobban hasonlítson az én játékomhoz, ezért nem a megszokott minimax módszerrel valósítottam meg, hanem annak egy egyszerűbb változatával, ami nem tekint annyi lépéssel előrébb. Mivel minimax-szal megvalósított amőba programból már számos található, ami megvalósítja a nyerő stratégiát, így inkább a mellett döntöttem, hogy egy élvezetes emberközelibb mesterséges intelligenciát hozzak létre. 33

34 Irodalomjegyzék [1] Fekete István, Gregorics Tibor, Nagy Sára: Bevezetés a mesterséges intelligenciába, LSI Oktatóközpont oktatási segédlet, [2] Stuart J. Russell-Peter Norving: Mesterséges Intelligencia modern megközelítésben, Panem-Prentice Hall, [3] Tastehit, Christopher Burger, URL [4] Intelligens számítási módszerek alkalmazása logikai játékokban, URL [5] Daniel Ford, Gomoku AI player, 2016 május 6. URL 34

Kétszemélyes játékok Gregorics Tibor Mesterséges intelligencia

Kétszemélyes játékok Gregorics Tibor Mesterséges intelligencia Kétszemélyes játékok Kétszemélyes, teljes információjú, véges, determinisztikus,zéró összegű játékok Két játékos lép felváltva adott szabályok szerint, amíg a játszma véget nem ér. Mindkét játékos ismeri

Részletesebben

V. Kétszemélyes játékok

V. Kétszemélyes játékok Teljes információjú, véges, zéró összegű kétszemélyes játékok V. Kétszemélyes játékok Két játékos lép felváltva adott szabályok szerint. Mindkét játékos ismeri a maga és az ellenfele összes választási

Részletesebben

ULTIMATE TIC TAC TOE. Serfőző Péter

ULTIMATE TIC TAC TOE. Serfőző Péter ULTIMATE TIC TAC TOE Serfőző Péter 2016.05.02. ULTIMATE TIC TAC TOE Amőba alapján Két változat, az első könnyű, a második nehéz A játék keletkezéséről nincsenek információk, de a játékelmélet elkezdett

Részletesebben

Kétszemélyes játékok

Kétszemélyes játékok Mesterséges Intelligencia alapjai, gyakorlat Eötvös Loránd Tudományegyetem Informatikai Kar Programozáselmélet és Szoftvertechnológiai Tanszék 2010 / udapest Kétszemélyes teljes információjú játékok két

Részletesebben

Mesterséges Intelligencia MI

Mesterséges Intelligencia MI Mesterséges Intelligencia MI Keresés ellenséges környezetben Dobrowiecki Tadeusz Eredics Péter, és mások BME I.E. 437, 463-28-99 dobrowiecki@mit.bme.hu, http://www.mit.bme.hu/general/staff/tade Ellenség

Részletesebben

A SZAKMAI GYAKORLAT KÖVETELMÉNYEI

A SZAKMAI GYAKORLAT KÖVETELMÉNYEI A SZAKMAI GYAKORLAT KÖVETELMÉNYEI FELSŐFOKÚ RENDSZERGAZDA MÉRNÖKINFORMATIKUS-ASSZISZTENS FELSŐOKTATÁSI SZAKKÉPZÉSI SZAK Az akkreditált tanterv alapján a szakmai gyakorlat kredit- és időtartama: 30 kredit,

Részletesebben

Mesterséges intelligencia 3. laborgyakorlat

Mesterséges intelligencia 3. laborgyakorlat 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ú.

Részletesebben

Mit látnak a robotok? Bányai Mihály Matemorfózis, 2017.

Mit látnak a robotok? Bányai Mihály Matemorfózis, 2017. Mit látnak a robotok? Bányai Mihály Matemorfózis, 2017. Vizuális feldolgozórendszerek feladatai Mesterséges intelligencia és idegtudomány Mesterséges intelligencia és idegtudomány Párhuzamos problémák

Részletesebben

Mátrixjátékok tiszta nyeregponttal

Mátrixjátékok tiszta nyeregponttal 1 Mátrixjátékok tiszta nyeregponttal 1. Példa. Két játékos Aladár és Bendegúz rendelkeznek egy-egy tetraéderrel, melyek lapjaira rendre az 1, 2, 3, 4 számokat írták. Egy megadott jelre egyszerre felmutatják

Részletesebben

Kris Burm játéka. Tartozékok

Kris Burm játéka. Tartozékok Kris Burm játéka Én legyek erősebb, vagy az ellenfelemet gyengítsem? Ezt a húzós kérdést kell feltenni magadnak minden egyes körödben. Tartozékok - 1 játéktábla - 30 fehér korong: 6 Tzaar, 9 Tzarnő és

Részletesebben

Visszalépéses keresés

Visszalépéses keresés Visszalépéses keresés Backtracking előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar Alapvető működése Továbbfejlesztési

Részletesebben

Miért olyan fontos a minıségi pont?

Miért olyan fontos a minıségi pont? A fiókban látható konkrét minıségi pont értékek egy olyan általános számítás eredményei, ami a kulcsszó tökéletes egyezése esetére érvényesek. Miért olyan fontos a minıségi pont? A minıségi pont három

Részletesebben

TÁJÉKOZTATÓ AZ OSZTATLAN TANÁRKÉPZÉS DIPLOMAMUNKÁJÁNAK KÖVETELMÉNYEIRŐL

TÁJÉKOZTATÓ AZ OSZTATLAN TANÁRKÉPZÉS DIPLOMAMUNKÁJÁNAK KÖVETELMÉNYEIRŐL TÁJÉKOZTATÓ AZ OSZTATLAN TANÁRKÉPZÉS DIPLOMAMUNKÁJÁNAK KÖVETELMÉNYEIRŐL ~ ~ TÁJÉKOZTATÓ AZ OSZTATLAN TANÁRKÉPZÉS DIPLOMAMUNKÁJÁNAK KÖVETELMÉNYEIRŐL Az Osztatlan tanárképzés zárásaként Diplomamunkát kell

Részletesebben

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2007/2008

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2007/2008 Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2007/2008 Az Előadások Témái Bevezető: mi a mesterséges intelligencia... Tudás reprezentáció Gráfkeresési stratégiák Szemantikus hálók

Részletesebben

GEOMATECH TANULMÁNYI VERSENYEK 2015. ÁPRILIS

GEOMATECH TANULMÁNYI VERSENYEK 2015. ÁPRILIS GEOMATECH TANULMÁNYI VERSENYEK 2015. ÁPRILIS Eddig nehezebb típusú feladatokkal dolgoztunk. Most, hogy közeledik a tavaszi szünet, játékra hívunk benneteket! Kétszemélyes játékokat fogunk játszani és elemezni.

Részletesebben

Elengedhetetlen a játékokban, mozi produkciós eszközökben Nélküle kvantum hatás lép fel. Az objektumok áthaladnak a többi objektumon

Elengedhetetlen a játékokban, mozi produkciós eszközökben Nélküle kvantum hatás lép fel. Az objektumok áthaladnak a többi objektumon Bevezetés Ütközés detektálás Elengedhetetlen a játékokban, mozi produkciós eszközökben Nélküle kvantum hatás lép fel Az objektumok áthaladnak a többi objektumon A valósághű megjelenítés része Nem tisztán

Részletesebben

Branch-and-Bound. 1. Az egészértéketű programozás. a korlátozás és szétválasztás módszere Bevezető Definíció. 11.

Branch-and-Bound. 1. Az egészértéketű programozás. a korlátozás és szétválasztás módszere Bevezető Definíció. 11. 11. gyakorlat Branch-and-Bound a korlátozás és szétválasztás módszere 1. Az egészértéketű programozás 1.1. Bevezető Bizonyos feladatok modellezése kapcsán előfordulhat olyan eset, hogy a megoldás során

Részletesebben

Dr. habil. Maróti György

Dr. habil. Maróti György infokommunikációs technológiák III.8. MÓDSZER KIDOLGOZÁSA ALGORITMUSOK ÁTÜLTETÉSÉRE KIS SZÁMÍTÁSI TELJESÍTMÉNYŰ ESZKÖZÖKBŐL ÁLLÓ NÉPES HETEROGÉN INFRASTRUKTÚRA Dr. habil. Maróti György maroti@dcs.uni-pannon.hu

Részletesebben

Hozzáférési szintek és Időzónák használata

Hozzáférési szintek és Időzónák használata Hozzáférési szintek és Időzónák használata Áttekintő Net2 A Hozzáférési Szint a Net2 szíve. Mindegyik egy kapcsolatot határoz meg az ajtók és azon időszakok között, amikor a felhasználó jogosult a használatukra.

Részletesebben

Megerősítéses tanulás 7. előadás

Megerősítéses tanulás 7. előadás Megerősítéses tanulás 7. előadás 1 Ismétlés: TD becslés s t -ben stratégia szerint lépek! a t, r t, s t+1 TD becslés: tulajdonképpen ezt mintavételezzük: 2 Akcióértékelő függvény számolása TD-vel még mindig

Részletesebben

Szegedi Tudományegyetem Informatikai Tanszékcsoport SZAKDOLGOZAT. Fertői Ferenc

Szegedi Tudományegyetem Informatikai Tanszékcsoport SZAKDOLGOZAT. Fertői Ferenc Szegedi Tudományegyetem Informatikai Tanszékcsoport SZAKDOLGOZAT Fertői Ferenc 2010 Szegedi Tudományegyetem Informatikai Tanszékcsoport 3-dimenziós táj generálása útvonalgráf alapján Szakdolgozat Készítette:

Részletesebben

van neve lehetnek bemeneti paraméterei (argumentumai) lehet visszatérési értéke a függvényt úgy használjuk, hogy meghívjuk

van neve lehetnek bemeneti paraméterei (argumentumai) lehet visszatérési értéke a függvényt úgy használjuk, hogy meghívjuk függvények ismétlése lista fogalma, használata Game of Life program (listák használatának gyakorlása) listák másolása (alap szintű, teljes körű) Reversi 2 Emlékeztető a függvények lényegében mini-programok,

Részletesebben

Szimulációs technikák

Szimulációs technikák SZÉCHENYI ISTVÁN EGYETEM Műszaki Tudományi Kar Informatikai tanszék Szimulációs technikák ( NGB_IN040_1) 2. csapat Comparator - Dokumentáció Mérnök informatikus BSc szak, nappali tagozat 2012/2013 II.

Részletesebben

2. Visszalépéses keresés

2. Visszalépéses keresés 2. Visszalépéses keresés Visszalépéses keresés A visszalépéses keresés egy olyan KR, amely globális munkaterülete: egy út a startcsúcsból az aktuális csúcsba (az útról leágazó még ki nem próbált élekkel

Részletesebben

Döntési rendszerek I.

Döntési rendszerek I. Döntési rendszerek I. SZTE Informatikai Intézet Számítógépes Optimalizálás Tanszék Készítette: London András 8 Gyakorlat Alapfogalmak A terület alapfogalmai megtalálhatók Pluhár András Döntési rendszerek

Részletesebben

A MISKOLCI EGYETEM SZERVEZETI ÉS MŰKÖDÉSI SZABÁLYZAT III

A MISKOLCI EGYETEM SZERVEZETI ÉS MŰKÖDÉSI SZABÁLYZAT III A MISKOLCI EGYETEM SZERVEZETI ÉS MŰKÖDÉSI SZABÁLYZAT III. KÖTET HALLGATÓI KÖVETELMÉNYRENDSZER A GÉPÉSZMÉRNÖKI ÉS INFORMATIKAI KAR HALLGATÓI KÖVETELMÉNYRENDSZERE SZABÁLYZAT A SZAKDOLGOZAT/DIPLOMATERV KÉSZÍTÉSÉRŐL

Részletesebben

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2010/2011 1/363

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2010/2011 1/363 1/33 Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2010/2011 Az Előadások Témái 110/33 Bevezető: mi a mesterséges intelligencia... Tudás reprezentáció Gráfkeresési stratégiák Szemantikus

Részletesebben

Szakdolgozat / diplomamunka benyújtásának folyamata (alapképzés, mesterképzés 2018/19/1)

Szakdolgozat / diplomamunka benyújtásának folyamata (alapképzés, mesterképzés 2018/19/1) Szakdolgozat / diplomamunka benyújtásának folyamata (alapképzés, mesterképzés 2018/19/1) Jelen dokumentumban foglaljuk össze, hogy mely lépésekből áll a szakdolgozat benyújtása és a tényleges benyújtást

Részletesebben

Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék

Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék 2016/17 2. félév 8. Előadás Dr. Kulcsár Gyula egyetemi docens Kereső algoritmusok alkalmazása

Részletesebben

Függvények ábrázolása

Függvények ábrázolása Függvények ábrázolása Matematikai függvényeket analitikusan nem tudunk a matlabban megadni (tudunk, de ilyet még nem tanulunk). Ahhoz, hogy egy függvényt ábrázoljuk, hasonlóan kell eljárni, mint a házi

Részletesebben

A DIPLOMAMUNKA FORMAI KÖVETELMÉNYEI JAVASLAT

A DIPLOMAMUNKA FORMAI KÖVETELMÉNYEI JAVASLAT A DIPLOMAMUNKA FORMAI KÖVETELMÉNYEI JAVASLAT A diplomamunka kötelező részei (bekötési sorrendben) 1. Fedőlap - Bal felső sarokban a kiíró tanszék megnevezése (ha két tanszékkel együttműködve dolgozzuk

Részletesebben

Nyerni jó. 7.-8. évfolyam

Nyerni jó. 7.-8. évfolyam Boronkay György Műszaki Középiskola és Gimnázium 2600 Vác, Németh László u. 4-6. : 27-317 - 077 /fax: 27-315 - 093 WEB: http://boronkay.vac.hu e-mail: boronkay@vac.hu Levelező Matematika Szakkör Nyerni

Részletesebben

BSc hallgatók szakdolgozatával szemben támasztott követelmények SZTE TTIK Földrajzi és Földtani Tanszékcsoport

BSc hallgatók szakdolgozatával szemben támasztott követelmények SZTE TTIK Földrajzi és Földtani Tanszékcsoport BSc hallgatók szakdolgozatával szemben támasztott követelmények SZTE TTIK Földrajzi és Földtani Tanszékcsoport Az alapszakon a záróvizsgára bocsátás feltétele szakdolgozat készítése. A szakdolgozat kreditértéke:

Részletesebben

Mesterséges Intelligencia I. kötelező program

Mesterséges Intelligencia I. kötelező program 1. Feladat kiírás Mesterséges Intelligencia I. kötelező program A feladat az Othello (más neveken Reversi, Fonákollós, Színcserélő) játékot játszó ágens írása. A játékot egyik oldalán világos, a másikon

Részletesebben

Szerencsejátékok. Elméleti háttér

Szerencsejátékok. Elméleti háttér Szerencsejátékok A következőekben a Szerencsejáték Zrt. által adott játékokat szeretném megvizsgálni. Kiszámolom az egyes lehetőségeknek a valószínűségét, illetve azt, hogy mennyi szelvényt kell ahhoz

Részletesebben

MŰSZAKKIOSZTÁSI PROBLÉMÁK A KÖZÖSSÉGI KÖZLEKEDÉSBEN

MŰSZAKKIOSZTÁSI PROBLÉMÁK A KÖZÖSSÉGI KÖZLEKEDÉSBEN infokommunikációs technológiák MŰSZAKKIOSZTÁSI PROBLÉMÁK A KÖZÖSSÉGI KÖZLEKEDÉSBEN Készítette: Árgilán Viktor, Dr. Balogh János, Dr. Békési József, Dávid Balázs, Hajdu László, Dr. Galambos Gábor, Dr. Krész

Részletesebben

Miskolci Egyetem Általános Informatikai Tanszék

Miskolci Egyetem Általános Informatikai Tanszék Software tesztelés Miskolci Egyetem Általános Informatikai Tanszék Software tesztelés SWTESZT / 1 A tesztelés feladata Két alapvető cél rendszerben található hibák felderítése annak ellenőrzése, hogy a

Részletesebben

A tesztelés feladata. Verifikáció

A tesztelés feladata. Verifikáció Software tesztelés Miskolci Egyetem Általános Informatikai Tanszék Software tesztelés SWTESZT / 1 A tesztelés feladata Két alapvető cél rendszerben található hibák felderítése annak ellenőrzése, hogy a

Részletesebben

Programozási módszertan. Mohó algoritmusok

Programozási módszertan. Mohó algoritmusok PM-08 p. 1/17 Programozási módszertan Mohó algoritmusok Werner Ágnes Villamosmérnöki és Információs Rendszerek Tanszék e-mail: werner.agnes@virt.uni-pannon.hu PM-08 p. 2/17 Bevezetés Dinamikus programozás

Részletesebben

Számítógép és programozás 2

Számítógép és programozás 2 Számítógép és programozás 2 6. Előadás Problémaosztályok http://digitus.itk.ppke.hu/~flugi/ Emlékeztető A specifikáció egy előfeltételből és utófeltételből álló leírása a feladatnak Léteznek olyan feladatok,

Részletesebben

Intelligens Rendszerek Elmélete IRE 4/32/1

Intelligens Rendszerek Elmélete IRE 4/32/1 Intelligens Rendszerek Elmélete 4 IRE 4/32/1 Problémamegoldás kereséssel http://nik.uni-obuda.hu/mobil IRE 4/32/2 Egyszerű lények intelligenciája? http://www.youtube.com/watch?v=tlo2n3ymcxw&nr=1 IRE 4/32/3

Részletesebben

1/8. Iskolai jelentés. 10.évfolyam matematika

1/8. Iskolai jelentés. 10.évfolyam matematika 1/8 2009 Iskolai jelentés 10.évfolyam matematika 2/8 Matematikai kompetenciaterület A fejlesztés célja A kidolgozásra kerülő programcsomagok az alább felsorolt készségek, képességek közül a számlálás,

Részletesebben

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI statisztika 10 X. SZIMULÁCIÓ 1. VÉLETLEN számok A véletlen számok fontos szerepet játszanak a véletlen helyzetek generálásában (pénzérme, dobókocka,

Részletesebben

CARE. Biztonságos. otthonok idős embereknek CARE. Biztonságos otthonok idős embereknek 2010-09-02. Dr. Vajda Ferenc Egyetemi docens

CARE. Biztonságos. otthonok idős embereknek CARE. Biztonságos otthonok idős embereknek 2010-09-02. Dr. Vajda Ferenc Egyetemi docens CARE Biztonságos CARE Biztonságos otthonok idős embereknek otthonok idős embereknek 2010-09-02 Dr. Vajda Ferenc Egyetemi docens 3D Érzékelés és Mobilrobotika kutatócsoport Budapesti Műszaki és Gazdaságtudományi

Részletesebben

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány Diszkrét matematika 2.C szakirány 2015. ősz 1. Diszkrét matematika 2.C szakirány 3. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék 2015.

Részletesebben

Hibadetektáló rendszer légtechnikai berendezések számára

Hibadetektáló rendszer légtechnikai berendezések számára Hibadetektáló rendszer légtechnikai berendezések számára Tudományos Diákköri Konferencia A feladatunk Légtechnikai berendezések Monitorozás Hibadetektálás Újrataníthatóság A megvalósítás Mozgásérzékelő

Részletesebben

Valószínűségszámítás és statisztika

Valószínűségszámítás és statisztika Valószínűségszámítás és statisztika Programtervező informatikus szak esti képzés Varga László Valószínűségelméleti és Statisztika Tanszék Matematikai Intézet Természettudományi Kar Eötvös Loránd Tudományegyetem

Részletesebben

Excel 2010 függvények

Excel 2010 függvények Molnár Mátyás Excel 2010 függvények Csak a lényeg érthetően! Tartalomjegyzék FÜGGVÉNYHASZNÁLAT ALAPJAI 1 FÜGGVÉNYEK BEVITELE 1 HIBAÉRTÉKEK KEZELÉSE 4 A VARÁZSLATOS AUTOSZUM GOMB 6 SZÁMÍTÁSOK A REJTETT

Részletesebben

Keresés képi jellemzők alapján. Dr. Balázs Péter SZTE, Képfeldolgozás és Számítógépes Grafika Tanszék

Keresés képi jellemzők alapján. Dr. Balázs Péter SZTE, Képfeldolgozás és Számítógépes Grafika Tanszék Keresés képi jellemzők alapján Dr. Balázs Péter SZTE, Képfeldolgozás és Számítógépes Grafika Tanszék Lusta gépi tanulási algoritmusok Osztályozás: k=1: piros k=5: kék k-legközelebbi szomszéd (k=1,3,5,7)

Részletesebben

Latin négyzet és SUDOKU a tanítási órákon. készítette: Szekeres Ferenc

Latin négyzet és SUDOKU a tanítási órákon. készítette: Szekeres Ferenc Latin négyzet és SUDOKU a tanítási órákon készítette: Szekeres Ferenc a latin négyzet Leonhard Euler (1707 1783) svájci matematikustól származik eredetileg latin betűket használt szabályai: egy n x n es

Részletesebben

1. beadandó feladat: egyszerű grafikus felületű alkalmazás. Közös követelmények:

1. beadandó feladat: egyszerű grafikus felületű alkalmazás. Közös követelmények: 1. beadandó feladat: egyszerű grafikus felületű alkalmazás Közös követelmények: A megvalósításnak felhasználóbarátnak, és könnyen kezelhetőnek kell lennie. A szerkezetében törekedni kell az objektumorientált

Részletesebben

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba Témavezető: Horváth Zoltán és Simon Thompson OTDK 2007, Miskolc Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba OTDK

Részletesebben

1.1.1 Dátum és idő függvények

1.1.1 Dátum és idő függvények 1.1.1 Dátum és idő függvények Azt már tudjuk, hogy két dátum különbsége az eltelt napok számát adja meg, köszönhetően a dátum tárolási módjának az Excel-ben. Azt is tudjuk a korábbiakból, hogy a MA() függvény

Részletesebben

Véletlen sorozatok ellenőrzésének módszerei. dolgozat

Véletlen sorozatok ellenőrzésének módszerei. dolgozat Eötvös Loránd Tudományegyetem Informatikai Kar Komputeralgebra Tanszék Véletlen sorozatok ellenőrzésének módszerei dolgozat Témavezető: Dr. Iványi Antal Miklós egyetemi tanár Készítette: Potempski Dániel

Részletesebben

SZOFTVERES SZEMLÉLTETÉS A MESTERSÉGES INTELLIGENCIA OKTATÁSÁBAN _ Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.

SZOFTVERES SZEMLÉLTETÉS A MESTERSÉGES INTELLIGENCIA OKTATÁSÁBAN _ Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb. SZOFTVERES SZEMLÉLTETÉS A MESTERSÉGES INTELLIGENCIA OKTATÁSÁBAN _ Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.hu Mesterséges intelligencia oktatás a DE Informatikai

Részletesebben

A regisztrált álláskeresők számára vonatkozó becslések előrejelző képességének vizsgálata

A regisztrált álláskeresők számára vonatkozó becslések előrejelző képességének vizsgálata A regisztrált álláskeresők számára vonatkozó becslések előrejelző képességének vizsgálata Az elemzésben a GoogleTrends (GT, korábban Google Insights for Search) modellek mintán kívüli illeszkedésének vizsgálatával

Részletesebben

15. A VERSENYRENDEZÉS

15. A VERSENYRENDEZÉS 15. A VERSENYRENDEZÉS A versenyrendezés (tournament sort) a maximum-kiválasztó rendezések közé tartozik, ugyanis az elemek közül újra és újra kiválasztja (eltávolítja és kiírja) a legnagyobbat. Az eljárás

Részletesebben

Tanulási cél Szorzatfüggvényekre vonatkozó integrálási technikák megismerése és különböző típusokra való alkalmazása. 5), akkor

Tanulási cél Szorzatfüggvényekre vonatkozó integrálási technikák megismerése és különböző típusokra való alkalmazása. 5), akkor Integrálszámítás Integrálási szabályok Tanulási cél Szorzatfüggvényekre vonatkozó integrálási technikák megismerése és különböző típusokra való alkalmazása Motivációs feladat Valószínűség-számításnál találkozhatunk

Részletesebben

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2007/2008

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2007/2008 Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 007/008 Az Előadások Témái Bevezető: mi a mesterséges intelligencia... Tudás reprezentáció i stratégiák Szemantikus hálók / Keretrendszerek

Részletesebben

Speciális szükségletű felhasználók navigációjának vizsgálata különböző multimédiás alkalmazásokban

Speciális szükségletű felhasználók navigációjának vizsgálata különböző multimédiás alkalmazásokban Speciális szükségletű felhasználók navigációjának vizsgálata különböző multimédiás alkalmazásokban MÁTRAI RITA1, KOSZTYÁN ZSOLT TIBOR2, SIKNÉ DR. LÁNYI CECÍLIA3 1,3 Veszprémi Egyetem, Képfeldolgozás és

Részletesebben

Számítógépes képelemzés 7. előadás. Dr. Balázs Péter SZTE, Képfeldolgozás és Számítógépes Grafika Tanszék

Számítógépes képelemzés 7. előadás. Dr. Balázs Péter SZTE, Képfeldolgozás és Számítógépes Grafika Tanszék Számítógépes képelemzés 7. előadás Dr. Balázs Péter SZTE, Képfeldolgozás és Számítógépes Grafika Tanszék Momentumok Momentum-alapú jellemzők Tömegközéppont Irányultáság 1 2 tan 2 1 2,0 1,1 0, 2 Befoglaló

Részletesebben

32. A Knuth-Morris-Pratt algoritmus

32. A Knuth-Morris-Pratt algoritmus 32. A Knuth-Morris-Pratt algoritmus A nyers erőt használó egyszerű mintaillesztés műveletigénye legrosszabb esetben m*n-es volt. A Knuth-Morris-Pratt algoritmus (KMP-vel rövidítjük) egyike azon mintaillesztő

Részletesebben

A FileZilla program beállítása az első belépés alkalmával

A FileZilla program beállítása az első belépés alkalmával 6. A záróvizsga-jegyzőkönyv készítése A záróvizsga-jegyzőkönyveketa Karok többsége a jegyzőkönyvkészítésre Dr. Tánczos László által kifejlesztett Access alkalmazás használatával készíti el. A záróvizsga-jegyzőkönyv

Részletesebben

IV. Felkészítő feladatsor

IV. Felkészítő feladatsor IV. Felkészítő feladatsor 1. Az A halmaz elemei a (-7)-nél nagyobb, de 4-nél kisebb egész számok. B a nemnegatív egész számok halmaza. Elemeinek felsorolásával adja meg az A \ B halmazt! I. 2. Adott a

Részletesebben

MS ACCESS 2010 ADATBÁZIS-KEZELÉS ELMÉLET SZE INFORMATIKAI KÉPZÉS 1

MS ACCESS 2010 ADATBÁZIS-KEZELÉS ELMÉLET SZE INFORMATIKAI KÉPZÉS 1 SZE INFORMATIKAI KÉPZÉS 1 ADATBÁZIS-KEZELÉS MS ACCESS 2010 A feladat megoldása során a Microsoft Office Access 2010 használata a javasolt. Ebben a feladatban a következőket fogjuk gyakorolni: Adatok importálása

Részletesebben

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t Ellenőrző kérdések 2. Kis dolgozat kérdései 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t 37. Ha t szintű indexet használunk,

Részletesebben

CIB Internet Bank asztali alkalmazás Hasznos tippek a telepítéshez és a használathoz Windows operációs rendszer esetén

CIB Internet Bank asztali alkalmazás Hasznos tippek a telepítéshez és a használathoz Windows operációs rendszer esetén CIB Internet Bank asztali alkalmazás Hasznos tippek a telepítéshez és a használathoz Windows operációs rendszer esetén A CIB Internet Bankba való webes felületen keresztül történő belépés az Oracle által

Részletesebben

Tájékoztató. Használható segédeszköz: -

Tájékoztató. Használható segédeszköz: - A 35/2016. (VIII. 31.) NFM rendelet szakmai és vizsgakövetelménye alapján. Szakképesítés, azonosító száma és megnevezése 54 481 06 Informatikai rendszerüzemeltető Tájékoztató A vizsgázó az első lapra írja

Részletesebben

Navigáci. stervezés. Algoritmusok és alkalmazásaik. Osváth Róbert Sorbán Sámuel

Navigáci. stervezés. Algoritmusok és alkalmazásaik. Osváth Róbert Sorbán Sámuel Navigáci ció és s mozgástervez stervezés Algoritmusok és alkalmazásaik Osváth Róbert Sorbán Sámuel Feladat Adottak: pálya (C), játékos, játékos ismerethalmaza, kezdőpont, célpont. Pálya szerkezete: akadályokkal

Részletesebben

SzA II. gyakorlat, szeptember 18.

SzA II. gyakorlat, szeptember 18. SzA II. gyakorlat, 015. szeptember 18. Barátkozás a gráfokkal Drótos Márton drotos@cs.bme.hu 1. Az előre megszámozott (címkézett) n darab pont közé hányféleképp húzhatunk be éleket úgy, hogy egyszerű gráfhoz

Részletesebben

Egy játék 2-3 aranyra éhes játékosnak, 8 éves kortól.

Egy játék 2-3 aranyra éhes játékosnak, 8 éves kortól. Egy játék 2-3 aranyra éhes játékosnak, 8 éves kortól. Arany! Arany! Semmi más, csak arany, ameddig a szem ellát. Az arany szamaraknak sok esetben hasznukat vesszük. De légy óvatos: a makacs vadállatok

Részletesebben

6. EGYETEMI 24 ÓRÁS PROGRAMOZÓI VERSENY (PROGRAMOZÁS 1)

6. EGYETEMI 24 ÓRÁS PROGRAMOZÓI VERSENY (PROGRAMOZÁS 1) 6. EGYETEMI 4 ÓRÁS PROGRAMOZÓI VERSENY (PROGRAMOZÁS 1) http://kockanap.nikhok.hu ZÁRÓJELEK I. Feladat Feladatunk meghatározni, hogy a kifejezésünk zárójelezése helyes-e. Helyesnek tekinthető a zárójelezés,

Részletesebben

Önálló labor beszámoló Képek szegmentálása textúra analízis segítségével. MAJF21 Eisenberger András május 22. Konzulens: Dr.

Önálló labor beszámoló Képek szegmentálása textúra analízis segítségével. MAJF21 Eisenberger András május 22. Konzulens: Dr. Önálló labor beszámoló Képek szegmentálása textúra analízis segítségével 2011. május 22. Konzulens: Dr. Pataki Béla Tartalomjegyzék 1. Bevezetés 2 2. Források 2 3. Kiértékelő szoftver 3 4. A képek feldolgozása

Részletesebben

Órarendkészítő szoftver

Órarendkészítő szoftver SchoolTime Órarendkészítő szoftver 2.0 verzió Tartalomjegyzék: 1., Belépés a programba...3 2., Órarend főtábla...3 3., Tanátok...4 3.1., Új tanár felvitele, módosítása...4 3.2., Tanár törlése...4 3.3.,

Részletesebben

A játék készlet tartalma: 40 bábu sógitábla játékszabályok

A játék készlet tartalma: 40 bábu sógitábla játékszabályok A játék készlet tartalma: 40 bábu sógitábla játékszabályok www.shogi.cz info@shogi.cz /Shogi.cz /Shogi.cz Online: www.shogi.cz/manuals KEZDoÁLLÁS Ha a saját oldalunkról nézzük, akkor a játékosok a bábokat

Részletesebben

Diplomá ztátá si folyámátok informátikái szábá lyzátá

Diplomá ztátá si folyámátok informátikái szábá lyzátá Diplomá ztátá si folyámátok informátikái szábá lyzátá A Gábor Dénes Főiskola rektori utasítása alapján készítették: Endrődi Tamás, informatikai igazgató, projektvezető Balázs-Csomor Erika, tanulmányi hivatalvezető

Részletesebben

Irányítószámok a közigazgatás szürke zónájában

Irányítószámok a közigazgatás szürke zónájában Dr. Va rga Á dá m mb. oktató Pázmány Péter Katolikus Egyetem Jog- és Államtudományi Kar Alkotmányjogi Tanszék, Közigazgatási Jogi Tanszék Irányítószámok a közigazgatás szürke zónájában Bevezetés Van egy

Részletesebben

VI.3. TORPEDÓ. A feladatsor jellemzői

VI.3. TORPEDÓ. A feladatsor jellemzői VI.. TORPEDÓ Tárgy, téma A feladatsor jellemzői Tengelyes és középpontos tükrözés, forgatás, eltolás és szimmetriák. Előzmények A tanulók ismerik a tengelyes tükrözést, középpontos tükrözést, 0 -os pont

Részletesebben

Mikrobiológia MOODLE - gyakorló és vizsgarendszer használata az ELTE TTK Biológiai Intézet E- learning felületén

Mikrobiológia MOODLE - gyakorló és vizsgarendszer használata az ELTE TTK Biológiai Intézet E- learning felületén Mikrobiológia MOODLE - gyakorló és vizsgarendszer használata az ELTE TTK Biológiai Intézet E- learning felületén Hallgatói felhasználói segédlet ELTE TTK Biológiai Intézet 2017. Készült az ELTE Felsőoktatási

Részletesebben

Tudnivalók az NYMESEK vezeték nélküli hálózatáról. Beállítási útmutató WIFI felhasználóink számára

Tudnivalók az NYMESEK vezeték nélküli hálózatáról. Beállítási útmutató WIFI felhasználóink számára Nyugat-magyarországi Egyetem Savaria Egyetemi Központ Tanulmányi, Szolgáltató és Informatikai Központ 9700 Szombathely, Károlyi Gáspár tér 4. Tel.: 94/504-645 e-mail: krisztina@sek.nyme.hu Tudnivalók az

Részletesebben

VERSENYKIÍRÁS HÉTPRÓBÁSOK BAJNOKSÁGA 2016 ORSZÁGOS EGYÉNI ÉS CSAPAT DIÁKVERSENY 2015/2016-OS TANÉV

VERSENYKIÍRÁS HÉTPRÓBÁSOK BAJNOKSÁGA 2016 ORSZÁGOS EGYÉNI ÉS CSAPAT DIÁKVERSENY 2015/2016-OS TANÉV VERSENYKIÍRÁS HÉTPRÓBÁSOK BAJNOKSÁGA 2016 ORSZÁGOS EGYÉNI ÉS CSAPAT DIÁKVERSENY 2015/2016-OS TANÉV A verseny helyszíne: Hejőkeresztúri IV. Béla Általános Iskola, 3597 Hejőkeresztúr, Petőfi Sándor út 111.

Részletesebben

Bevezetés a Python programozási nyelvbe

Bevezetés a Python programozási nyelvbe Bevezetés a Python programozási nyelvbe 8. Gyakorlat modulok random számok (utolsó módosítás: 2017. aug. 3.) Szathmáry László Debreceni Egyetem Informatikai Kar 2017-2018, 1. félév Modulok Amint a programunk

Részletesebben

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2007/2008

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2007/2008 Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2007/2008 Az Előadások Témái Bevezető: mi a mesterséges intelligencia... Tudás reprezentáció Gráfkeresési stratégiák Szemantikus hálók

Részletesebben

NGB_IN040_1 SZIMULÁCIÓS TECHNIKÁK dr. Pozna Claudio Radu, Horváth Ernő

NGB_IN040_1 SZIMULÁCIÓS TECHNIKÁK dr. Pozna Claudio Radu, Horváth Ernő SZÉCHENYI ISTVÁN EGYETEM Műszaki Tudományi Kar Informatika Tanszék BSC FOKOZATÚ MÉRNÖK INFORMATIKUS SZAK NGB_IN040_1 SZIMULÁCIÓS TECHNIKÁK dr. Pozna Claudio Radu, Horváth Ernő Fejlesztői dokumentáció GROUP#6

Részletesebben

Programozási nyelvek 1. előadás

Programozási nyelvek 1. előadás Programozási nyelvek 1. előadás I. A nyelv története Logo Seymour Papert, 1968,1969 - szövegkezelés, M.I.T. Később: grafika, mikroszámítógépekre átdolgozva Cél: minél kisebb gyerekeknek is, természetes

Részletesebben

Információs technológiák 2. Gy: CSS, JS alapok

Információs technológiák 2. Gy: CSS, JS alapok Információs technológiák 2. Gy: CSS, JS alapok 1/69 B ITv: MAN 2017.10.01 Ismétlés Van egy Web nevű mappánk, ebben vannak az eddig elkészített weboldalak (htm, html) képek (jpg, png). Logikai felépítés

Részletesebben

Orvosi készülékekben használható modern fejlesztési technológiák lehetőségeinek vizsgálata

Orvosi készülékekben használható modern fejlesztési technológiák lehetőségeinek vizsgálata Kutatási beszámoló a Pro Progressio Alapítvány számára Budapesti Műszaki és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar Mérnök informatika szak Orvosi készülékekben használható modern

Részletesebben

Kecskeméti Belvárosi Zrínyi Ilona Általános Iskola Városföldi Általános Iskolája 2014-es évi kompetenciamérésének értékelése Készítette: Knódel Éva

Kecskeméti Belvárosi Zrínyi Ilona Általános Iskola Városföldi Általános Iskolája 2014-es évi kompetenciamérésének értékelése Készítette: Knódel Éva Kecskeméti Belvárosi Zrínyi Ilona Általános Iskola Városföldi Általános Iskolája 2014-es évi kompetenciamérésének értékelése Készítette: Knódel Éva 2015. június 17. I. A telephely épületének állapota és

Részletesebben

Gépi tanulás a Rapidminer programmal. Stubendek Attila

Gépi tanulás a Rapidminer programmal. Stubendek Attila Gépi tanulás a Rapidminer programmal Stubendek Attila Rapidminer letöltése Google: download rapidminer Rendszer kiválasztása (iskolai gépeken Other Systems java) Kicsomagolás lib/rapidminer.jar elindítása

Részletesebben

FELÜGYELT ÉS MEGERŐSÍTÉSES TANULÓ RENDSZEREK FEJLESZTÉSE

FELÜGYELT ÉS MEGERŐSÍTÉSES TANULÓ RENDSZEREK FEJLESZTÉSE FELÜGYELT ÉS MEGERŐSÍTÉSES TANULÓ RENDSZEREK FEJLESZTÉSE Dr. Aradi Szilárd, Fehér Árpád Mesterséges intelligencia kialakulása 1956 Dartmouth-i konferencián egy maroknyi tudós megalapította a MI területét

Részletesebben

Soros felépítésű folytonos PID szabályozó

Soros felépítésű folytonos PID szabályozó Soros felépítésű folytonos PID szabályozó Főbb funkciók: A program egy PID szabályozót és egy ez által szabályozott folyamatot szimulál, a kimeneti és a beavatkozó jel grafikonon való ábrázolásával. A

Részletesebben

Algoritmusok és adatszerkezetek 2.

Algoritmusok és adatszerkezetek 2. Algoritmusok és adatszerkezetek 2. Varga Balázs gyakorlata alapján Készítette: Nagy Krisztián 1. gyakorlat Nyílt címzéses hash-elés A nyílt címzésű hash táblákban a láncolással ellentétben egy indexen

Részletesebben

A Riemann-Siegel zeta függvény kiugró értékeinek keresése. A matematikai egyik legnehezebb problémája, avagy a prímszámok misztériuma

A Riemann-Siegel zeta függvény kiugró értékeinek keresése. A matematikai egyik legnehezebb problémája, avagy a prímszámok misztériuma A Riemann-Siegel zeta függvény kiugró értékeinek keresése A matematikai egyik legnehezebb problémája, avagy a prímszámok misztériuma 2013 A probléma fontossága és hatása a hétköznapi életre A prímszámok

Részletesebben

7. fejezet: Mutatók és tömbök

7. fejezet: Mutatók és tömbök 7. fejezet: Mutatók és tömbök Minden komolyabb programozási nyelvben vannak tömbök, amelyek gondos kezekben komoly fegyvert jelenthetnek. Először is tanuljunk meg tömböt deklarálni! //Tömbök használata

Részletesebben

DAT adatcserefájl AutoCAD MAP DWG mapobject konvertáló program dokumentáció

DAT adatcserefájl AutoCAD MAP DWG mapobject konvertáló program dokumentáció H - 1161 Budapest Rákóczi út 76. Tel./Fax.: +36-1-4010159 http://www.pageos.hu toni@pageos.hu DAT adatcserefájl AutoCAD MAP DWG mapobject konvertáló program dokumentáció A program használható a TOPOBASE

Részletesebben

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása 1 Információk 2 A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin Elérhetőség mesko.katalin@tfk.kefo.hu Fogadóóra: szerda 9:50-10:35 Számonkérés időpontok Április 25. 9 00 Május 17. 9 00 Június

Részletesebben

INFORMATIKAI ALAPISMERETEK

INFORMATIKAI ALAPISMERETEK Informatikai alapismeretek középszint 0631 ÉRETTSÉGI VIZSGA 2006. október 24. INFORMATIKAI ALAPISMERETEK KÖZÉPSZINTŰ ÍRÁSBELI ÉRETTSÉGI VIZSGA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ OKTATÁSI ÉS KULTURÁLIS MINISZTÉRIUM

Részletesebben

KÉTSZEMÉLYES JÁTÉKOK

KÉTSZEMÉLYES JÁTÉKOK Debreceni Egyetem Informatika Kar KÉTSZEMÉLYES JÁTÉKOK Témavezető: Mecsei Zoltán Egyetemi tanársegéd Készítette: Briz Ádám Programtervező informatikus Bsc Debrecen 2009 TARTALOMJEGYZÉK 1. BEVEZETÉS...

Részletesebben

Iman 3.0 szoftverdokumentáció

Iman 3.0 szoftverdokumentáció Melléklet: Az iman3 program előzetes leírása. Iman 3.0 szoftverdokumentáció Tartalomjegyzék 1. Az Iman rendszer...2 1.1. Modulok...2 1.2. Modulok részletes leírása...2 1.2.1. Iman.exe...2 1.2.2. Interpreter.dll...3

Részletesebben

Érdemes egy n*n-es táblázatban (sorok-lányok, oszlopok-fiúk) ábrázolni a két színnel, mely éleket húztuk be (pirossal, kékkel)

Érdemes egy n*n-es táblázatban (sorok-lányok, oszlopok-fiúk) ábrázolni a két színnel, mely éleket húztuk be (pirossal, kékkel) Kombi/2 Egy bizonyos bulin n lány és n fiú vesz részt. Minden fiú pontosan a darab lányt és minden lány pontosan b darab fiút kedvel. Milyen (a,b) számpárok esetén létezik biztosan olyan fiúlány pár, akik

Részletesebben