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, amiket nem lehet megoldani programmal Vagyis olyan elő- és utófeltétel pár, amire belátható, hogy algoritmus nem garantálhatja a teljesülést Ma arról lesz szó, hogy amit meg lehet oldani, azt mennyire nehéz megoldani
Emlékeztető O(f(n)) jelölés: egy algoritmust jellemez, hogy a futásidejét hogyan lehet becsülni az adat egy paramétere alapján maximumkeresés: O(n) maximumkiválasztásos rendezés: O(n 2 ) quicksort: O(log 2 n) Most futásidő mellett memóriaigényre is használni fogjuk
Emlékeztető Chomsky nyelvosztályok L3, reguláris: lineáris időben eldönthető a szóprobléma L2, környezetfüggetlen: köbös időben eldönthető a szóprobléma L1, hosszúságot nem csökkentő szabályok: exponenciális időben eldönthető a szóprobléma L0, tetszőleges szabályok: parciálisan rekurzív, csak akkor ad választ az algoritmus, ha a szóprobléma megoldása az igaz
Döntési probléma Minden feladat, aminek a kimenete egyetlen logikai érték Példák: szóprobléma prímszám-e terminálási probléma Sok feladat átfogalmazható döntési feladatra, de van, ami nem, pl. optimalizálási feladatok
Keresési/optimalizálási feladatok Az algoritmus bemenete egy halmaz (leírása) Kimenete egy elem a halmazból, amire teljesül a feltétel (optimalizálásnál egy szélsőértéke a célfüggvénynek) Példák: rendezések: melyik az a permutáció, amelyikre igaz a rendezettség Rubik kocka kirakásához szükséges lépéssorozat minimális?
P vs NP A döntés folyamata szerint a megoldó algoritmus P, ha determinisztikus és polinomiális időben végez NP, ha nemdeterminisztikus, és polinomiális időben választ adhat Kitérő: nemdeterminisztikus algoritmus előre nem megadott lépések, véletlenszerű választások, a lehetőségek között ha van kedvező, akkor a lehetőség miatt a megoldás útjának ez tekinthető pl. nemdeterminisztikus automata és a szóprobléma
P vs NP P részhalmaza NP-nek Az, hogy P =?= NP, jelenleg nyitott kérdés Sokak szerint a válasz nem, de nincs bizonyítva NP-teljes problémák: olyan problémák, amikre létezik ismert NP megoldás, és egymásra levezethetőek O(n) időben vagyis, ha egyikről kiderül, hogy P, akkor a többi is.
Híres NP-teljes problémák Hamilton kör léte Utazó ügynök probléma Pakolási probléma Részösszeg probléma Izomorfizmus gráfokban Gráf színezés (több mint 3000 másik) Sudoku, aknakereső, stb
NP-teljes problémák Pozitív: megoldhatóak Negatív: lassan, általános esetben Sok esetben felismerhető egy-egy speciális eset, amivel könnyen választható egyszerűbb megoldás tipikusan gyakran a rejtvényújság Sudoku rejtvényei lineáris időben megfejthetőek pakolási probléma és a váltópénz minimális darabszáma is jó példa: a váltópénz címleteit szándékosan úgy választják meg, hogy a lineáris idejű megoldás optimális legyen
NP-teljes problémák Máskor a megoldás minőségével szembeni követelményeket enyhítik Pakolási probléma operációs rendszer munkafolyamatain a memóriában mindig az igényelt memóriánál legkevésbé nagyobb helyet adni: O(n) nem optimális, de nem sokkal rosszabb Heurisztika: gyakorlati tapasztalatból adódó, feltételezésekre építő elem az algoritmusban
A keresési feladat megoldása Legyen a lehetséges megoldások halmaza M ciklus { X legyen egy tetszőleges eleme M-nek } amíg X nem megoldás Kicsit lassú Viszont minden keresési feladat őse A keresési feladatok csak abban különböznek, hogy milyen stratégia szerint vizsgálnak meg egy elemet előbb, vagy később
Ingyen leves tétel Nincs ingyen leves: nincs mindenre jó keresési stratégia Tetszőleges, egyébként egy részterületen kiváló keresési stratégiához létezik olyan másik részterület, ahol nem jó P(A talál n lépésben) = P(B talál n lépésben) Más szavakkal: az adott részterület sajátságainak kihasználása nélkül pont olyan hatékony minden algoritmus (pl. az előző is)
Az ingyen leves tétel következménye Egy használható keresési-optimalizálási megoldásnak rendelkeznie kell ismerettel a problémáról Heurisztika Tanulás reprezentáció
Genetikus algoritmus Van egy fit(x) függvényünk, ami a feladat célfüggvénye legyen P egy részhalmaz M-ből ciklus amíg nem vagyunk elégedettek P legjobbjával P elemei közül a nagyobb fit() értékűekhez hasonlókat szaporítunk, az alacsonyabbakat töröljük néhány elemet P-ben véletlenszerűen megváltoztatunk ciklus vége
Genetikus algoritmus Mit használunk ki? A fit függvény adott A hasonló szaporítása reprezentációját már heurisztikusan választhatjuk A mutációt is heurisztikusan választhatjuk A múltbeli ismereteinket használjuk, körről körre az eddigi jó megoldásokat megtartjuk feltételezzük, hogy a legjobb megoldáshoz vezető úton jobb és jobb megoldásokon keresztül megyünk a választott heurisztikákkal
Genetikus algoritmus példa Hegymászás: adott egy hegy, aminek nem tudjuk hol a csúcsa, de azt tudjuk, hogy nincs másik lokális maximumpont szaporításnál a szülő(k) környékén véletlenszerűen választhatunk így garantálva van, hogy a mindenkori legmagasabban levő példány van legközelebb az optimumhoz Nagyon ritkán ilyen könnyű a feladat erre más megoldások, kiegészítések: maximális meredekség (gradiens), szimulált hűtés
Összefoglalás A keresési és döntési feladatokat három osztályba sorolhatjuk: megoldhatatlan lassan megoldható (pl. NP-teljes) polinomiális időben megoldható Az NP-teljes problémák kezelése a brute force mellett heurisztikus megközelítések enyhített feltételek
Utazó ügynök probléma