14. Előadás - Klasszikus mesterséges intelligencia algoritmusok =============================================================== A problémateret egy gráfként reprezentálhatjuk. * A játék állapota a gráf egy pontja. * Minden lehetséges lépés egy-egy élt ad egy szomszédos pontba. * Minden játékállapothoz hozzá rendelhetünk egy jósági értéket (a játék értékét az adott játékos szemszögéből). Zéró összegű játékról beszélünk, hogy ha a két játékos összpontszáma nullát kell, hogy kiadjon. Sudoku ~~~~~~ Az egyszerűbb implementáció esetében a megoldást úgy keressük, hogy végig próbálgatjuk az üres helyeken mind a 9 számértéket. * A rekurzív implementáció a kézenfekvő. * Szekvenciális esetben igyekszünk kerülni a tábla másolását. * A rekurzív hívások párhuzamosan kiértékelhetők, hogy ha van saját másolatuk a tábláról. Amőba ~~~~~ Naiv implementáció: * Minden mező esetében a jósági értéket az alapján kapjuk, hogy oda egy szimbólumot helyezve mennyi lehetőségünk lesz a későbbiekben 5-öt kirakni. * Az algoritmusban vannak súlyparaméterek, amelyek azt mutatják, hogy mennyi az értéke az 1-től 5-ig a kirakott részeknek. Fában való keresés: * Minden játékállapotból minden játékállapotba a lépések mentén élek vezetnek. Mivel nincs a játékban visszafelé lépés, ezért ez egy fát eredményez. * A fa leveleiben vannak a nyert, vesztett és a döntetlen játszmák. * Meg szeretnénk becsülni, hogy az adott részfában ezek száma mennyi. * A sok lépési lehetőség miatt a fa terebélyes, nem praktikus minden ágon ténylegesen végig haladni. Párhuzamosítási lehetőségek: * A naiv implementáció esetén a paraméterek becslése szimulációval végezhető. Egy-egy paraméter kiértékelése párhuzamosan elvégezhető. * A szóbajöhető mezőkre a jósági érték kiértékelése párhuzamosan elvégezhető. (Egyidejűleg a maximum kiválasztására is van lehetőség.) Kérdések -------- * Mit jelent az, hogy egy játék zéró összegű? Feladatok --------- * Adjunk hatékonyabb számítást a Sudoku tábla érvényességének ellenörzéséhez! * Becsüljük meg az Amőba játék optimális paramétereit!