Mesterséges intelligencia - 3. előadás¶
Triciális heurisztikák, dominancia¶
Triviális heurisztikák¶
- zéró heurisztika → nincs semmi info
- egzakt heurisztika → heurisztika maga a valós költség
Dominancia¶
- azt fejezi ki, hogy az egyik heurisztika jobb a másiknál
- ha(n) ≥ hc(n), minden n-re , azaz az a heurisztika jobb b heurisztikánál**
- heurisztikák → félhálóz alkotnak
- h(n) = max(ha(n), hc(n))
- elfogadható heurisztikák maximuma szintén elfogadható
Heurisztikák konzisztenciája¶
- elfogadható heurisztika → h(A) ≤ valós költség A-tól
- konzisztencia → h(A) - h(C) ≤ valós költség A-tól C-ig
- konzisztencia következménye → h(A) ≤ valós költség A-tól C-ig + h(C)
- azaz az A pont heurisztikája legyen kisebb mint az A utáni C pont balós költsége plusz a C pont heurisztikája
Optimalitás A*-nál¶
- Fa alapú keresés → A* optimális, ha a heurisztika elfogadható
- Gráf alapú keresés → A* optimális, ha a heurisztika konzisztens
- konzisztenciából következik az elfogadhatóság
Lokálisan kereső algoritmusok¶
-
specialitás: állapotok jóságát egy hiperfelület adja meg N-dimenziós paramétertérben
-
felület magassága = adott állapot optimalitása
-
cél: legmagasabb (vagy legalacsonyabb) csúcs keresése, mert az az optimális
-
azon a helyen levő paraméterkonfiguráció = probléma optimális megoldása
-
csak az aktuális állapotot vizsgáljuk, a közvetlen környezetében néz körbe
-
fontos: nincs visszalépés (vagy nem igazán), nincs nyilvántartott állapotlista (hogy hol jártunnk)
- memóriaigény kicsi :)
- időigény → lineáris :)
- beragadhatunk lokális szélsőhelyre :(
-
különböző módszerek:
Hegymászó algoritmus¶
- mindig arra megy, amerre javít az aktuális állapoton (felfele)
- több potenciális csomópont esetében véletlen szerűen választ
- 3 fő probléma:
- lokális maximum → ide fenn tud ragadni
- fennsík → minden irány egyformán jó, bolyongás lehet
- hegygerinc → gerincen lassú feljutni a csúcsra
Véletlen újraindítású hegymászás¶
- véletlen generált kiinduló állapot + hegymászás
- leáll: ha lejár az idő vagy nincs észrevehető előrelépés
- jó hír: néhány lokális minimum hellyel már meg tud birkózni, de egy "süni"-vel nem
Szimulált lehűtés¶
- nem véletlenszerűen indítjuk útra a keresést, hanem néha direkt "rossz" fele is lépünk
- Boltzmann-eloszlásal (egyre csökken a keresés előre haladásával a valószínűsége, hogy hibás utat választ) → mintha a hőmérséklet csökkenne
- cél: ne ragadjunk be lokális maximumba
Lokális nyaláb keresés¶
- mindig k csomópontot tart számon
- k véletlen állapotból indul ki, az összes állapot mindegyikének összes követőit kifejti!
- az újabb peremből k-t választ és azzal folytatja az előző pontot
- ha célt talál, leáll
Kényszerkielégítési problémák (CSP)¶
- állapot: az állapot a leíró változók és a hozzájuk rendelt értékek által definiált
- xk változó értéke Dk érték-tartományból van véve
- Célállapotteszt
- minden xk-hoz rendeltünk a hozzá tartozó Dk tartományból értéket
- az adott korlátok teljes halmazát kielégítettük
- példa: Raktár-tervezési probléma
- L1, ..., Ln helyszín, k raktárra van szükségünk (k < n), minden helyszínen van max CPi kapacitás (hány boltot tud kiszolgálni az adott raktár)
- minden bolthoz rendelünk raktárt
- Sj bolt ellátása Li helyről Pi,j költségbe kerül
- ezt a kiszolgálási összköltséget akarjuk minimalizálni
- korlátgráf: csomópontjai a változók, élei a korlátok
CSP problémák típusai¶
Diszkrét-folytonos¶
- Diszkrét változók
- véges értéktartomány (pl Boole típusú), végtelen értéktartomány (pl egész számok)
- Folytonos változók
- pl időpontok, fizikai állapotváltozók
Kényszerek, korlátok alapján¶
- Unáris korlát: egy változóra vonatkozó megkötés, pl SA ≠ green
- Bináris korlát: két változó viszonyára vonatkozik, pl SA ≠ WA
- Magasabb-rendű korlát: 3 vagy több változó viszonyára vonatkozik
- Preferencia-kényszer: bizonyos értékeket jobban preferálunk másoknál (inkább legyen piros mint zöld)
Probléma megfogalmazása¶
- kezdeti állapot: összes változó-hozzárendelés üres
- operátor: érték-hozzárendelés úgy, hogy ne ütközzön az eddigiekkel
- kudarc = nincs megengedett hozzárendelés
- célállapotteszt: aktuális hozzárendelés teljes és minden kényszer teljesül
Keresés¶
- változó hozzárendelése kommutatív a megoldás szempontjából
- jó lenne, ha vissza tudnánk lépni → legyen mélységi keresés
- minden szinten egyetlen egy változó-hozzárendelés
- ha sérül egy kényszer, visszalép
- fontos a probléma megfogalmazása → pl n királynő problémánál eleve minden oszlopba 1 királynőt rakjunk és csak az oszlopszámot tároljuk
Előretekintő ellenőrzés¶
- minden egyes alkalommal ha X változó értéket kap, az X-hez kényszerrel kötött érték nélküli Y-t megvizsgál, és Y tartományából törli az X számára választott értékekkel inkonzisztens értékeket
- sok inkonzisztenciát észrevesz, de nem mindent
- hatékonyság növelése → heurisztikákkal
- melyik változóval foglalkozzunk legközelebb?
- milyen sorrendben vizsgáljuk az értékeit?
- érzékelhető e jóval előre a kudarc? (korai nyesés)
- egyéb tárgyfüggetlen heurisztikák
Legkevesebb fennmaradó érték ötlete (MRV)¶
- A legkisebb számú megengedett értékkel rendelkező változóval kezdjük/folytassuk
- az első kiválasztásánál nem segít :(
Fokszám heurisztika¶
- az első kezdő változó kiválasztását segíti
- azzal kezdjük, akinek a legnagyobb a fokszáma → ő van a legtöbb másik változóra hatással
Legkevésbé korlátozó érték¶
- azon értéket részesítjük előnyben, amely a legkevesebb választást zárja ki a kényszergráfban a szomszédos változóknál
Élkonzisztencia¶
- X-ből Y-ba húzott él konzisztens akkor és csak akkor, ha X minden x értékére létezik Y-nak valamilyen megengedett y értéke
- nehézség: ha X értéket veszít, a szomszédjait újra kell ellenőrizni
- alkalmazhatósága:
- előfeldolgozó lépésként → keresés megkezdése előtt
- terjesztési lépésként → minden egyes hozzárendelést követően
CSP lokális kereséssel¶
- kiindulás: minden változónak van valamilyen (akár rossz) értéke
- operátorok: megváltoztatják a változók hozzárendelését, céljuk a sérült kényszerek számának csökkentése
- változó szelekció: véletlen módon bármely konfliktusban levő változót
- minimális konfliktus heurisztika
- legkevesebb számú korlátot sértő állapot beállítása
- h(n) = sérült korlátok száma, cél h(n) csökkentése → lokális minimum keresés (pl hegymászó algoritmussal)
CSP struktúrája¶
- CSP gráfja független komponenseket tartalmaz, vagy többszörösen összekötött (hurkos) → nagyon nehéz lesz :(
- CSP fa gráf → könnyen megoldható lesz