Modellezés Gregorics Tibor Mesterséges intelligencia

Hasonló dokumentumok
II. Állapottér-reprezentáció

II. Állapottér-reprezentáció

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

Mesterséges intelligencia. Gregorics Tibor people.inf.elte.hu/gt/mi

2. Visszalépéses stratégia

Struktúra nélküli adatszerkezetek

Programozási Módszertan definíciók, stb.

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

Bevezetés az informatikába

Amortizációs költségelemzés

1. Milyen hatással van a heurisztika általában a keresõ rendszerek mûködésére?

INFORMATIKA javítókulcs 2016

2. Visszalépéses keresés

A félév során előkerülő témakörök

1. AZ MI FOGALMA. I. Bevezetés. Ers mesterséges intelligencia (EMI) Gyenge mesterséges intelligencia. MI története. Els szakasz (60-as évek)

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 1

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé.

Keresések Gregorics Tibor Mesterséges intelligencia

Gráfelmélet. I. Előadás jegyzet (2010.szeptember 9.) 1.A gráf fogalma

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

22. GRÁFOK ÁBRÁZOLÁSA

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

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

Kiterjesztések sek szemantikája

2. Rekurzió. = 2P2(n,n) 2 < 2P2(n,n) 1

Diszkrét matematika 2. estis képzés

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

Algoritmusok és adatszerkezetek II.

Dinamikus modellek szerkezete, SDG modellek

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

ELEMI PROGRAMOZÁSI TÉTELEK

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

ALAPFOGALMAK 1. A reláció az program programfüggvénye, ha. Azt mondjuk, hogy az feladat szigorúbb, mint az feladat, ha

3. Előadás. Megyesi László: Lineáris algebra, oldal. 3. előadás Lineáris egyenletrendszerek

A továbbiakban Y = {0, 1}, azaz minden szóhoz egy bináris sorozatot rendelünk

26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]

Műveletek mátrixokkal. Kalkulus. 2018/2019 ősz

Diszkrét matematika 2.C szakirány

Elérhetőségi analízis Petri hálók dinamikus tulajdonságai

GROVER-algoritmus. Sinkovicz Péter. ELTE, MSc II dec.15.

5. előadás. Programozás-elmélet. Programozás-elmélet 5. előadás

Programozási alapismeretek 3. előadás

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával)

MestInt gyakorlat visszalépéses keresés

ködös határ (félreértés, hiba)

Algoritmusok helyességének bizonyítása. A Floyd-módszer

tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is

Formális nyelvek és automaták vizsgához statisztikailag igazolt várható vizsgakérdések

Hatékonyság 1. előadás

Diszkrét matematika 2.C szakirány

ÖSSZEFOGLALÁS a Bsc záróvizsga mesterséges intelligenciáról szóló témaköréhez

Diszkrét matematika 2.C szakirány

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése

Feladat. Ternáris fa. Típusspecikáció. Reprezentáció. Absztrakt implementáció. Érdi Gerg EAF II. 4/3.

2018, Diszkrét matematika

21. Adatszerkezetek Az adattípus absztrakciós szintjei Absztrakt adattípus (ADT) Absztrakt adatszerkezet (ADS) Egyszerű adattípusok Tömbök

Fraktálok. Kontrakciók Affin leképezések. Czirbusz Sándor ELTE IK, Komputeralgebra Tanszék. TARTALOMJEGYZÉK Kontrakciók Affin transzformációk

Diszkrét matematika 2. estis képzés

Tuesday, March 6, 12. Hasító táblázatok

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

Visszalépéses felsoroló

S0-02 Típusmodellek (Programozás elmélet)

Véges automaták, reguláris nyelvek

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

Adatszerkezetek II. 1. előadás

Evolúciós algoritmusok

Java II. I A Java programozási nyelv alapelemei

Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y.

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

1. ábra. Egy rekurzív preorder bejárás. Egy másik rekurzív preorder bejárás

Algoritmizálás, adatmodellezés tanítása 7. előadás

Kupac adatszerkezet. 1. ábra.

Mátrixok 2017 Mátrixok

Logika es sz am ıt aselm elet I. r esz Logika 1/36

Mesterséges intelligencia

Multihalmaz, intervallumhalmaz

Adatszerkezetek és algoritmusok

Diszkrét matematika 2.

Kronecker-modulusok kombinatorikája és alkalmazások

Diszkrét matematika 2. estis képzés

Algoritmizálás, adatmodellezés 1. előadás

Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat

Matematika pótvizsga témakörök 9. V

Visszalépéses keresés

38. A gráfalgoritmusok alkalmazása

Algoritmizálás és adatmodellezés tanítása 1. előadás

INFORMATIKAI ALAPISMERETEK

Matematika alapjai; Feladatok

Diszkrét matematika 2. estis képzés

Gráfkeresések A globális munkaterületén a startcsúcsból kiinduló már feltárt utak találhatók (ez az ún. kereső gráf), külön megjelölve az utak azon

Algoritmusok bonyolultsága

SZAKDOLGOZAT. Szatmári László

Objektumelvű programozás

INFORMATIKA tétel 2019

Alkalmazott modul: Programozás

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Átírás:

Modellezés

1. Állapottér-reprezentáció Állapottér: a probléma leírásához szükséges adatok által felvett érték-együttesek (azaz állapotok) halmaza az állapot többnyire egy összetett szerkezetű érték gyakran egy bővebb alaphalmazzal és egy azon értelmezett invariáns állítással definiáljuk Műveletek: állapotból állapotba vezetnek megadásukhoz: előfeltétel és hatás leírása invariáns tulajdonságot tartó leképezés Kezdőállapot(ok) vagy azokat leíró kezdeti feltétel Végállapot(ok) vagy célfeltétel

Állapottér-reprezentáció állapot-gráfja Állapottér modell Állapot-gráf o állapot ~ csúcs o művelet hatása egy állapotra ~ irányított él o művelet költsége ~ él költsége o kezdő állapot ~ startcsúcs o célállapot ~ célcsúcs Gráf-reprezentáció: állapot-gráf, startcsúcs, célcsúcsok o egy műveletsorozat hatása ~ irányított út o megoldás ~ irányított út a startcsúcsból egy célcsúcsba

Hanoi tornyai probléma 1 2 3 1 2 3 Állapottér: Kezdőállapot Végállapot [3,3,3] [1,1,1] 3 2 1 1 2 3 AT ={1,2,3} n megjegyzés : a tömb i-dik eleme mutatja az i-dik korong rúdjának számát; a korongok a rudakon méretük szerint fentről lefelé növekvő sorban vannak. Művelet: Rak(honnan, hova):at AT HA a honnan és hova létezik és nem azonos, és van korong a honnan rúdon, és a hova rúd üres vagy a mozgatandó korong (honnan rúd felső korongja) kisebb, mint a hova rúd felső korongja, AKKOR this[honnan legfelső korongja] := hova this:at az aktuális állapot 1..n intervallummal indexelt egydimenziós tömb, amely elemei az {1,2,3} halmazból származnak.

Implementáció template <int n = 3> class Hanoi { int _a[n]; // its elements are between 1 and 3 public : bool move (int from, int to) { if ((from<1 from>3 to<1 to>3) (from==to)) return false; bool l1; int i; // l1 ~ from is not empty, i ~ upper disc on from for(l1=false, i=0;!l1 && i<n; ++i) l1 = (_a[i]==from); if (! l1) return false; bool l2; int j; // l2 ~ to is not empty, j ~ upper disc on to for(l2=false, j=0;!l2 && j<n; ++j) l2 = (_a[j]==to) ; if ( l2 i<j ){ _a[i] = to; return true; } else return false; } bool final() const { bool l=true; for(int i=0; l && i<n;++i) l = (_a[i]==1); return l; } void init() { for(int i=0;i<n;++i) _a[i] = 3; } };

Hanoi tornyai [3,3,3] start állapot-gráfja csúcsok száma : 3 n csúcs ki-foka: 2, 3 körök hosszai: 2, 3, 6, 7, 9, [1,1,2] [1,1,3] [2,1,3] [2,3,3] [3,1,3] [3,2,3] [1,3,3] [1,2,3] [2,2,3] [2,2,1] [3,1,2] [2,1,2] [1,2,1] [3,2,1] [3,2,2] [2,3,2] [1,3,1] [3,1,1] [2,2,2] [1,2,2] [1,3,2] [3,3,2] [3,3,1] [2,3,1] [2,1,1] [1,1,1] cél

általános állapot n-királynő probléma 1. utófeltételnek megfelelő állapot Állapottér: AT = {, _ } n n invariáns: egy állapot (tábla) pontosan n darab királynőt tartalmaz Művelet: Áthelyez(x,y,u,v):AT AT (this:at) HA AKKOR 1 x,y,u,v n és this[x,y]= és this[u,v]=_ this[x,y] this[u,v] csere kétdimenziós tömb (n n-es mátrix), mely elemei {, _ } halmazbeliek

Állapot-gráf részlet csúcsok száma: csúcsok ki-foka: n*(n 2 n) n 2 n adott csúcsból induló k hosszú utak száma az oda-vissza lépések nélkül: (n*(n 2 n)) k

Állapottér vs. problématér A problématér elemeit (lehetséges megoldásokat) a startcsúcsból induló különböző hosszúságú irányított utak szimbolizálják. Egy feladat állapottér-reprezentációja és problématere között szoros kapcsolat áll fenn, de az állapottér nem azonos a problématérrel. A Hanoi tornyai problémánál a megoldások a startcsúcsból célcsúcsba vezető irányított utak. Az n-királynő problémánál egy állapotot (célcsúcsot) keresünk, de ebben az esetben is egy alkalmas operátor-sorozat (azaz irányított út) vezet el ahhoz, azaz végsősoron ilyenkor is utat keresünk.

Állapot-gráf bonyolultsága Állapot-gráf bonyolultsága Problématér mérete Keresés számításigénye A bonyolultság a start csúcsból kivezető utak számától függ, amely nyilván függvénye a csúcsok és élek számának csúcsok ki-fokának körök gyakoriságának, és hosszuk sokféleségének

Csökkentsük a problématér méretét Ugyanannak a feladatnak több modellje lehet : érdemes olyat keresni, amely kisebb problémateret jelöl ki. o o o Az n-királynő probléma reprezentációjánál a problématér mérete, a lehetséges utak száma, óriási. Adjunk jobb modellt! Bővítsük az állapotteret az n-nél kevesebb királynőt tartalmazó állásokkal, és használjunk új műveletet : királynő-felhelyezést (kezdő állás az üres tábla). Műveletek előfeltételének szigorításával csökken az állapotgráf átlagos ki-foka: - Sorról sorra haladva csak egy-egy királynőt helyezzünk fel a táblára! - Ütést tartalmazó állásra ne tegyünk királynőt!

n-királynő probléma 2. kezdőállapot végállapot Állapottér: AT = {, _ } n n nincs már üres sor és nincs ütés invariáns: az első néhány sor egy-egy királynőt tartalmaz Művelet: Helyez(oszlop): AT AT (this:at) HA közbülső állapot 1 oszlop n és a this-beli soron következő üres sor n és nincs ütés a this-ben AKKOR this[a this-beli soron következő üres sor,oszlop] :=

csúcsok száma < (n n+1 1)/(n 1) csúcs ki-foka: n Állapot-gráf start ágak száma < n n cél

Művelet végrehajtásának hatékonysága A művelet kiszámítási bonyolultsága csökkenthető, ha az állapotokat extra információval egészítjük ki, vagy az invariáns szigorításával szűkítjük az állapotteret. Például o o Egy állapotban a tábla soron következő üres sorának sorszámát eltárolhatjuk a tábla mellett, így új királynő elhelyezésekor ezt nem kell kiszámolni, ugyanakkor egy művelet végrehajtásakor könnyen aktualizálhatjuk (eggyel növeljük). Ne engedjünk meg ütést létrehozni a táblán, hogy ne kelljen ezt a tulajdonságot külön ellenőrizni. Ennek céljából megjelöljük az ütés alatt álló üres (tehát már nem szabad) mezőket, amelyekre nem helyezhetünk fel királynőt. Egy mező státusza három féle lesz: szabad, ütés alatt álló vagy foglalt, amelyeket a művelet végrehajtásakor kell karbantartani.

n-királynő probléma 3. kezdőállapot: kövsor = 1 közbülső állapot: kövsor = 3 végállapot : kövsor = 5 Állapottér: AT = rec(t :{,, _ } n n, kövsor : N) invariáns: kövsor n+1, az első kövsor 1 darab sor egy-egy királynőt tartalmaz, királynők nem ütik egymást, jelölés : egy királynő által ütött üres mezőt jelöli, _ az ütésben nem álló (szabad) üres mezőt jelöli.

n-királynő probléma 3. folytatás Művelet: új királynő elhelyezése a soron következő sorba Helyez(oszlop): AT AT HA (this:at) 1 oszlop n és this.kövsor n és this.t[this.kövsor,oszlop]=_ AKKOR this.t[this.kövsor,oszlop] := i [this.kövsor+1.. n] : this.t[i, oszlop]:= ha (i n+this.kövsor oszlop) this.t[i, i this.kövsor+oszlop]:= ha (i this.kövsor+oszlop 1) this.t[i, this.kövsor+oszlop i]:= this.kövsor := this.kövsor+1 Kezdőállapot: this.t egy üres mátrix, this.kövsor:=1 Végállapot: this.kövsor>n előfeltétel számításigénye: konstans hatás számításigénye: lineáris célfeltétel nagyon egyszerű lett

start Állapot-gráf cél

Kezdőállapot: tetszőleges 1 6 4 7 5 Tologató játék (8-as, 15-ös) Állapottér: AT = rec(mátrix :{0..8} 3 3, üres :{1..3} {1..3}) invariáns: egy állapot mátrixának sorfolytonos kiterítése a 0.. 8 számok egy permutációja, az üres hely a 0 elem mátrixbeli sor és oszlopindexe. Művelet: HA AKKOR Tol(irány): AT AT koordinátánként értendő irány {(0,-1),(-1,0),(0,1),(1,0)} és (1,1) this.üres+irány (3,3) (this: AT) this.mátrix[this.üres] this.mátrix[this.üres +irány] this.üres := this.üres +irány 1 2 3 8 4 Végállapot: szokásos

start 1 6 4 7 5 Állapot-gráf 1 6 4 7 5 1 4 1 6 4 7 5 6 4 1 7 5 1 4 2 3 1 8 4 1 4 1 6 7 5 4 2 1 8 3 6 4 7 5 6 4 1 7 5 8 3 2 1 4 7 1 4 6 5 2 3 1 8 4 2 3 1 8 4 2 8 1 4 3 1 4 5 7 6 1 6 7 5 4 2 8 1 6 7 5 3 4 8 1 3 2 4 8 3 2 1 4 8 3 2 1 4 7 1 4 6 5 cél 1 2 3 8 4 1 2 3 8 4 1 7 2 8 6 2 3 4 1 8 3 4 5 1 4 5 7 6 1 4 5 7 6 1 5 7 4 6 1 5 6 7 4 1 5 6 7 4 8 1 3 2 4 8 7 1 3 2 4 6 5 1 3 8 2 4 1 5 7 4 6

2. Probléma dekompozíció Egy probléma dekomponálása során a problémát részproblémákra bontjuk, majd azokat tovább részletezzük, amíg nyilvánvalóan megoldható problémákat nem kapunk. Sokszor egy probléma megoldását akár többféleképpen is fel lehet bontani részproblémák megoldásaira. probléma részprobl 11 részprobl 12 részprobl 21 részprobl 22 részprobl23 rész 1 rész 2 rész 3 rész 4

Integrálszámítás (5 x 2 +x e x )dx + 5 x 2 dx x e x dx - - 5 x 2 dx x e x e x dx ⅓ x 3 e x Probléma általános leírása: szintaktikusan helyes kifejezés Kiinduló probléma: adott integrál-kifejezés Egyszerű probléma: integráljel nélküli kifejezés Dekomponáló operátorok: integrálási szabályok ½ x 2 e x ½ x 2 e x dx * ½ x 2 e x dx Megoldás gráf: alternatívákat nem tartalmazó levezetés egy olyan részfa, amelynek belső csúcsaiból egyetlen élköteg indul ki, levelei egyszerű megoldható problémák Megoldás: a megoldó részfa leveleit balról jobbra haladva kötjük össze a dekomponálások algebrai műveleteivel

Hanoi tornyai probléma megoldása H(3, 3 1, 2) dekompozícióval H(2,3 2,1) H(2,2 1,3) H(1,3 1,2) H(1,3 1,2) H(1,3 2,1) H(1,1 2,3) H(1,2 3,1) H(1,2 1,3) H(1,3 1,2) Probléma általános leírása: H(n, i j, k) n korongot vigyünk át az i. rúdról a j. rúdra a k. rúd segítségével Kiinduló probléma: H(3, 3 1, 2) Egyszerű probléma: H(1, i j, k) eldönthető, hogy megoldható-e Dekomponálás: H(n, i j, k) <H(n 1,i k, j), H(1, i j, k), H(n 1, k j, i)> Megoldás gráf: kiinduló problémát egyszerű problémákra visszavezető fa Megoldás: a részfa leveleit kell balról jobbra haladva összeolvasni

Dekompozíciós reprezentáció fogalma A reprezentációhoz meg kell adnunk: a feladat részproblémáinak általános leírását, a kiinduló problémát, az egyszerű problémákat, amelyekről könnyen eldönthető, hogy megoldhatók-e vagy sem, és a dekomponáló műveleteket: D: probléma probléma + és D(p)=<p 1,, p n >

A dekompozíció modellezése ÉS/VAGY gráffal Dekompozíciós modell ÉS/VAGY gráf o részprobléma ~ csúcs o dekomponáló művelet hatása ~ irányított hiper-él o művelet költsége ~ hiper-él költsége o kiinduló probléma ~ startcsúcs o megoldható probléma ~ célcsúcs Gráf-reprezentáció: ÉS/VAGY gráf, startcsúcs, célcsúcsok o egy dekompozíciós folyamat ~ hiper-út o megoldás ~ megoldás-gráf: hiper-út startcsúcsból célcsúcsok sorozatába

Hiper-él Egy csúcsból kivezető éleknek egy kötege, a hiperél jeleníti meg egy dekomponáló művelet hatását: a dekomponált probléma csúcsából a dekomponálással előállított részproblémák csúcsaiba vezet. a hiperél élei között ÉS kapcsolat van: egy dekomponált problémának minden részproblémáját meg kell oldani; egy csúcsból több hiperél is indulhat, ha egy probléma többféleképpen dekomponálható. Két ilyen hiperél egyegy éle között VAGY kapcsolat áll fenn: választhatunk, hogy melyik dekomponálást alkalmazzuk a problémára.

ÉS/VAGY gráfok 1. Az R=(N,A) élsúlyozott irányított hiper-gráf, ahol az N a csúcsok halmaza, A (n,m) N N + 0 M < } a hiper-élek halmaza, M a hiper-él rendje a (c(n,m) az (n,m) költsége) 2. Egy csúcsból véges sok hiper-él indulhat 3. (0< c(n,m)) c b f g d e i j h

Megoldás-gráf Az eredeti problémát egyszerű problémákra visszavezető dekomponálási folyamatot az ÉS/VAGY gráf speciális részgráfja, az ún. megoldás-gráf jeleníti meg, amelynek része a startcsúcs minden csúcsába vezet közönséges út a startcsúcsból, és minden csúcsából vezet közönséges út egy olyan célcsúcsba, amely a megoldás-gráf része egy éllel együtt az összes azzal ÉS kapcsolatban álló él is (azaz a teljes élköteg) része a megoldás-gráfnak nem tartalmaz VAGY kapcsolatban álló él párokat A megoldás ebből a megoldás-gráfból olvasható ki.

Az n csúcsból az M csúcs-sorozatba vezető irányított hiper-út fogalma Az n M hiper-út (n N, M N + ) egy olyan véges részgráf, amelyben M csúcsaiból nem indul hiper-él, M-en kívüli csúcsokból csak egy hiper-él indul, minden csúcs elérhető az n csúcsból egy közönséges irányított úton. A megoldás-gráf egy olyan hiper-út, amely a startcsúcsból csupa célcsúcsba vezet. c b f g d e i j a h a <d,e>

Az n M hiper-út egy bejárásán a hiper-út csúcsaiból képzett sorozatoknak a felsorolását értjük: első sorozat: <n> Hiper-út bejárása a C sorozatot a C k K sorozat követi (ahol a k C, és k minden C-beli előfordulása helyén a K sorozat szerepel) feltéve, hogy a hiper-útnak van olyan (k,k) hiper-éle, ahol k M. c d Így egy hiper-utat közönséges irányított útnak foghatunk fel, igaz többféleképpen, mert több bejárása is lehet: <n> <a,b> <n> <a,b> <a,a> < c,d,c,d > <c,d,b > <c,d,a> < c,d,c,d > n b

Útkeresés ÉS/VAGY gráfban ÉS/VAGY gráfbeli megoldás-gráf keresése visszavezethető egy közönséges irányított gráfban történő útkeresésre. A startcsúcsból induló hiper-utakat (köztük a megoldásgráfokat is) a bejárásukkal ábrázolhatjuk, és ezek a bejárások egy közönséges irányított gráfot határoznak meg. Ebben a csúcsok az eredeti ÉS/VAGY gráf csúcsainak sorozatai, a startcsúcs az ÉS/VAGY gráf startcsúcsából álló egy elemű sorozat, a célcsúcsok az ÉS/VAGY gráf célcsúcsainak egy részét tartalmazó sorozatok. A megfeleltetett közönséges irányított gráf megoldási újai az eredeti ÉS/VAGY gráf megoldás-gráfja.