II. Állapottér-reprezentáció

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

Modellezés Gregorics Tibor Mesterséges intelligencia

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

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)

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

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

2. Visszalépéses stratégia

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

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

Bevezetés az informatikába

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

Adatszerkezetek 2. Dr. Iványi Péter

2. Visszalépéses keresés

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

Evolúciós algoritmusok

Állapottér reprezentáció/level1

Adatszerkezetek II. 1. előadás

Időjárási csúcsok. Bemenet. Kimenet. Példa. Korlátok. Nemes Tihamér Nemzetközi Informatikai Tanulmányi Verseny, 2-3. korcsoport

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

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

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

Keresések Gregorics Tibor Mesterséges intelligencia

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

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

Struktúra nélküli adatszerkezetek

EGYSZERŰ, NEM IRÁNYÍTOTT (IRÁNYÍTATLAN) GRÁF

22. GRÁFOK ÁBRÁZOLÁSA

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

angolul: greedy algorithms, románul: algoritmi greedy

Matematika alapjai; Feladatok

GRÁFELMÉLET. 7. előadás. Javító utak, javító utak keresése, Edmonds-algoritmus

Logika és számításelmélet. 11. előadás

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

Dinamikus modellek szerkezete, SDG modellek

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Algoritmusok bonyolultsága

Programozás alapjai 9. előadás. Wagner György Általános Informatikai Tanszék

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

Visszalépéses keresés

Diszkrét matematika 2.C szakirány

Totális Unimodularitás és LP dualitás. Tapolcai János

Algoritmusok és adatszerkezetek I. 1. előadás

38. A gráfalgoritmusok alkalmazása

Algoritmuselmélet. 2-3 fák. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 8.

A modellellenőrzés érdekes alkalmazása: Tesztgenerálás modellellenőrzővel

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

ÍTÉLETKALKULUS (NULLADRENDŰ LOGIKA)

Algoritmusok bonyolultsága

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

5/1. tétel: Optimalis feszítőfák, Prim és Kruskal algorithmusa. Legrövidebb utak graphokban, negatív súlyú élek, Dijkstra és Bellman Ford algorithmus.

Algoritmuselmélet 2. előadás

Problémamegoldás kereséssel. Mesterséges intelligencia március 7.

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

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

INFORMATIKA javítókulcs 2016

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

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

1. AZ MI FOGALMA. I. Bevezetés. Tulajdonságok. Kezdet ELIZA. Első szakasz (60-as évek)

Gráfelméleti feladatok. c f

Szoftver-modellellenőrzés absztrakciós módszerekkel

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

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

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

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

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

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

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

Algoritmuselmélet 18. előadás

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

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

Megyei matematikaverseny évfolyam 2. forduló

Alkalmazott modul III 3. feladatcsoport. Közös követelmények:

24. MINIMÁLIS KÖLTSÉGŰ UTAK I.

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

AZ INFORMATIKA LOGIKAI ALAPJAI

PROGRAMOZÁS tantárgy. Gregorics Tibor egyetemi docens ELTE Informatikai Kar

Matematika III előadás

Lineáris Algebra gyakorlatok

MestInt gyakorlat visszalépéses keresés

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

Algoritmizálás és adatmodellezés 2. előadás

Kereső algoritmusok a diszkrét optimalizálás problémájához

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

2) = 0 ahol x 1 és x 2 az ax 2 + bx + c = 0 ( a,b, c R és a 0 )

Országos Középiskolai Tanulmányi Verseny, 2004/2005-ös tanév INFORMATIKA, II. (programozói) kategória második fordulójának javítási útmutatója

A logikai következmény

Algoritmuselmélet. Legrövidebb utak, Bellmann-Ford, Dijkstra. Katona Gyula Y.

Elsőrendű logika szintaktikája és szemantikája. Logika (3. gyakorlat) 0-adrendű szemantika 2009/10 II. félév 1 / 1

Adatszerkezetek 1. Dr. Iványi Péter

Algoritmuselmélet. Gráfok megadása, szélességi bejárás, összefüggőség, párosítás. Katona Gyula Y.

Algoritmusokfelülnézetből. 1. ELŐADÁS Sapientia-EMTE

Gráfok 1. Tárolási módok, bejárások. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E

10. előadás Speciális többágú fák

Diszkrét matematika 2.C szakirány

Kereső algoritmusok a diszkrét optimalizálás problémájához

Kép mátrix. Feladat: Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés 2/35

Mesterséges intelligencia

Algoritmusok bonyolultsága

Átírás:

Állapottér-reprezentáció elemei II. Állapottér-reprezentáció Állapottér: a feladat homlokterében álló adat (objektum) lehetséges értékeinek (állapotainak) halmaza lényegében egyetlen típusérték-halmaz és annak összetett szerkezetű reprezentációja a típus invariánssal Műveletek: állapotból állapotba vezetnek megadásukhoz: előfeltétel és hatás-leírás Kezdő állapot(ok) vagy azokat leíró kezdőfeltétel Célállapot(ok) vagy feltétel Megoldás: műveletek sorozata Az állapottér általában nem azonos a problématérrel, hiszen a problématér elemei, azaz a lehetséges válaszok a műveletsorozatok, nem pedig az állapotok. Kiinduló válasz a kezdő állapotból induló nulla hosszú műveletsorozat Egy műveletsorozatnak (válasznak) szomszédjai azok a sorozatok, amelyek egy újabb művelettel hosszabbak. Hanoi tornyai probléma Kezdőállapot Célállapot [,,] C B A [,,] A B C Állapottér: Állás = vec( [A,B,C];{,,}) megjegyzés : a rudakon lentről felfelé csökkenő méret szerint helyezkednek el a korongok Művelet: Rak(honnan, hová):állásállás HA a-ban (a:állás) a honnan nem üres, és a hová üres vagy a legfelső korongja nagyobb, mint honnan legfelső korongja AKKOR a[honnan legfelső korongja] := hová Művelet: Rak(honnan, hová):állásállás (a:állás) Implementáció l,i=search i=a..c (a[i]=honnan) i-t akarjuk mozgatni l,j=search i=a..c (a[j]=hová) j-re akarunk rakni Hanoi tornyai [,,] [,,] [,,] állapot gráf [,,] [,,] [,,] [,,] [,,] [,,] [,,] [,,] HA l és (l vagy i<j) AKKOR a[i] := hová [,,] [,,] [,,] [,,] [,,] [,,] [,,] [,,] [,,] [,,] [,,] [,,] [,,] [,,] [,,] [,,]

Állapottér-reprezentáció állapot gráfja Állapot gráf az állapottér-repr. reprezentációs gráfja állapot csúcs művelet hatása irányított él művelet költsége élköltség kezdő állapot csúcs állapotok csúcsok műveletsorozat hatása irányított út Az útkeresés hatékonysága a problématér bonyolultságán múlik, ami a reprezentációs gráf (itt ez az állapotgráf) bonyolultságától függ csúcsok és élek száma ( csúcs, csúcsból kivezető él max: ) utak száma, hossza (adott csúcsból kivezető k hosszú utak száma, ha a közvetlen visszalépést kizárjuk: k ) körök gyakorisága és hossza általános állapot n-királynő probléma. feltétel Állapottér: Tábla = mátrix([..n,..n];{, _ }) invariáns: a királynők ( jelű mezők) száma = n Művelet: Áthelyez(x,y,u,v):TáblaTábla (a:tábla) HA (a[x,y]=) és (a[u,v]=_ ) AKKOR a[x,y], a[u,v] := a[u,v], a[x,y] Sok modellje lehet ugyanannak a feladatnak: keressük meg a legkisebb problématerűt o Az. reprezentációban az állapottér mérete : de még ennél is nagyobb egy adott állapotból kiinduló utak száma (azaz a problématér mérete.) n n o Bővítsük az állapotteret az n-nél kevesebb királynőt tartalmazó állásokkal, de használjunk új műveletet : a királynő-felhelyezést. Ekkor a problématér csak a legfeljebb n hosszú utakból áll majd, és a megoldást a pontosan n hosszúak között találjuk. o A műveletek előfeltételének szigorításával csökken a problématér: - Először az első sorba, aztán a másodikba, és így tovább helyezzünk fel egy-egy királynőt! Ekkor az n hosszú utak száma: n n - Ütést tartalmazó állásra ne rakjunk fel újabb királynőt! kezdőállapot n-királynő probléma. közbülső állapot állapot Állapottér: Tábla = mátrix([..n,..n];{, _ }) invariáns: a királynők ( jelű mezők) száma n csak az első valahány sorban van egy-egy királynő Művelet: Helyez(oszlop):TáblaTábla (a:tábla) HA királynők száma < n és nincs ütés a táblán és jelölje a sor a soron következő üres sort AKKOR a[sor,oszlop] := 9 0 A művelet előfeltételének bonyolultsága csökkenthető ha o az állapotteret (vagy annak invariánsát) módosítjuk és o a művelet hatását ennek megfelelően szigorítjuk (ugyanaz a megszorítás vándorol a specifikáción belül) Például o A királynők számát eltároljuk az állapotban (ebből ismert lesz a következő üres sor is) ahelyett, hogy mindig kiszámolnánk. o Kikötjük az invariánsban, hogy nincs ütés a táblán ahelyett, hogy ezt mindig ellenőrizzük. Ennek betartásához azonban nem szabad alkalmazunk olyan műveletet, ami ütést hoz létre. o De ha tároljuk, hogy mely üres mezőket tartanak ütés alatt a királynők, akkor konstans időben eldönthető, hogy egy újonnan elhelyezett királynő ütné-e az előzőeket. kezdőállapot: db = 0 n-királynő probléma. közbülső állapot: db = állapot : db = Állapottér: Tábla = rec(m:mátrix([..n,..n];{,, _ }), db:n) invariáns: csak az első db sorban van egy-egy királynő (), db n, királynők nem ütik egymást, egy királynő által ütésben álló (foglalt) üres mezőt, _ az ütésben nem álló szabad mezőt jelöli

n-királynő probléma. -királynő állapot gráf Művelet: új királynő felhelyezése a soron következő üres sor szabad mezőjére (invariáns tartó művelet) Helyez(oszlop):TáblaTábla (a:tábla) HA a. db < n és a.m[a.db+,oszlop]= _ AKKOR a.db:=a.db+ a.m[a.db,oszlop] := minden megfelelő i,j -re: a.m[i,j] := Kezdőállapot: a.m üres mátrix, a.db=0 Célállapot: a.db=n kezdőállapot: tetszőleges Tologató játék (-as, -ös) állapot: szokásos Állapottér: Tábla = rec(mátrix:{0..}, üreshely :{..} {..}) invariáns: a mátrix sorfolytonos kiterítése a 0.. számok permutációja, az üreshely a 0 elem sor és oszlopindexe. Művelet: Tol(irány):TáblaTábla (a:tábla) HA a.üreshely+irány egy érvényes pozíció AKKOR a.mátrix[a.üreshely], a.mátrix[a.üreshely+irány] := a.mátrix[a.üreshely+irány], a.mátrix[a.üreshely] a.üreshely := a.üreshely+irány A keresés szempontjából a reprezentációs gráfnak csak a csúcsból elérhető része érdekes, ez az, amit egy keresés felfedhet a gráfból. A felfedett részt (a keresési teret) is sokszor csak torzultan látja : Ha a keresés nem vizsgálja, hogy egy már korábban elért állapotba jutott-e el újra, akkor nem az eredeti állapot gráfot, hanem annak fává kiegyenesített változatát látja. Nem feltétlenül baj, ha a keresési tér végtelen nagy lesz, ha cserébe nincsenek már benne körök. A szülőcsúcsba való visszalépést viszont érdemes direkt módon kizárni, hiszen így egy egyszerű vizsgálattal felesleges éleket, oda-vissza köröket hagyhatunk el a keresési térből. állapot Keresési tér duplikátum Fekete-fehér kirakó Egy n+m+ hosszú sínen n fekete és m fehér lapka és egy üres hely van. Egy lapkát szomszédos üres helyre tolhatunk vagy a szomszéd felett üres helyre ugrathatunk. Kezdetben a feketék után jönnek a fehérek, majd az üres hely. Kerüljenek a fehérek a feketék elé! Állapottér: Sín =rec(v:vec( [..n+m+];{b, W,_}), poz:[.. n+m+]) invariáns: egy üres hely, poz az üres hely inexe, n darab B és m darab W Műveletek: TolBal, TolJobb, UgrikBal, UgrikJobb: Sín Sín Például: TolBal (üres helyet toljuk balra) HA a.poz (a : Sín) AKKOR a.v[a.poz-] a.v[a.poz] : a.poz :=a.poz- Kezdőállapot: [B,, B, W,, W, _ ] Célállapot: i,j [.. n+m+], i<j : (a.v[i]=b a.v[j]=w)

0 m Fekete-fehér kirakó állapot gráfja Kancsók problémája B _ W W _ B W W W B _ W W B W _ W _ W B B W W W W B B W _ W _ W B W W _ B W W W B _ W W _ B Három kancsóban, egy öt, három és két literesben, együttesen liter bor van. Kezdetben az öt literes kancsó van tele. Töltögetéssel érjük el, hogy a két literesbe pontosan liter bor kerüljön! Állapottér: Kancsók= vec( [,,];[0..]) invariáns: i [,,] v[i] = i{,,}: v[i]i Kezdő állapotból elérhető állásokban egyik kancsó üres vagy teli. Művelet: Tölt(i,j): Kancsók Kancsók (v : Kancsók) HA i,j[,,] ij min(v[i], j-v[j])>0 AKKOR v[i],v[j] := v[i]-min(v[i], j-v[j]),v[j]+min(v[i], j-v[j]) Kezdőállapot: (, 0, 0) Célállapot: (x, y, ) ahol x [0..], y [0..], x+y= 9 0 Kancsók-probléma állapot gráfja 0 0 0 0 0 0 0 0 Kancsók-probléma állapot gráfjának másik ábrázolása l 0 l 0 Műveletek: ütközésig l - l l - l l - l l 0 Misszionárius kannibál probléma Misszionárius kannibál állapot gráf n misszionárius és n kannibál át akar kelni egy folyón egy h személyes csónakban az evezés nem Állapottér: Part = rec(m:[0..n], k:[0..n], c:l) külön állapot invariáns: nincs emberevés, azaz I(m,k) m=k m=0 m=n Kezdőállapot: (n,n,igaz) Célállapot: (0,0,hamis) Műveletek: Át(x,y):PartPart és Vissza(x,y):PartPart (a:part) HA a.c xa.m ya.k HA a.c xn a.m yn a.k x+yh I(a.m x, a.k y) x+yh I(a.m+x, a.k+y) AKKOR a.c:=hamis : AKKOR a.c:=igaz : a.m:=a.m x: a.k:=a.k y a.m:=a.m+x: a.k:=a.k+y Ha egy átevezés előtt és után nincs emberevés, akkor a csónakban sincs. a megoldási út folytonos és szaggatott élek váltakozó sorozata Vissza(0,) Át(0,) (,0) hamis igaz 0 k (,,) esetnél állapot (0,0) (,) (0,) Megoldhatóság feltétele: h vagy h- n

SAT kielégíthetőségi probléma. SAT kielégíthetőségi probléma. Adott egy KNF nullad-rendű formula n darab ítéletváltozóval. Pl: F(x) = (x x x ) (x x x ) (x x ) (x x x ) A változók milyen értéke mellett lesz az F formula igaz? Állapottér: I = vec( [..n];{igaz, hamis}) Művelet: Vált(i): I I (a : I) a[i] := a[i] Kezdőállapot: tetszőleges interpretáció Célállapot: F-nek a állapot szerinti interpretációja igaz Hogyan csökkenthető a problématér mérete? Adott egy KNF nullad-rendű formula n darab ítéletváltozóval és K darab klózban. A változók milyen értéke mellett lesz a formula igaz? Állapottér: I = rec(v: vec ( [..n];{igaz, hamis, }), i:n, db:n) invariáns: az első i változónak van már értéke és db az igaz klózok száma 0 i n, 0 db K Műveletek: Igaz: I I és Hamis: I I (a : I) i := i+: a.v[i] := igaz i := i+: a.v[i] := hamis a.db újraszámolása az i-dik változót tartalmazó klózokban Kezdőállapot: ([,, ], 0) Célállapot: a.db=k SAT állapot gráfok Feladatok. reprezentáció Állapot gráf: csúcsok (állapotok) száma: n. Minden csúcsból n él indul ki, bármelyik csúcsból bármelyik csúcsba el lehet jutni. Adott csúcsból induló K hosszú utak száma n K, A legfeljebb K hosszú utak száma (ami a problématérnek csak egy része) : (n K )/(n ). reprezentáció Állapot gráf: K mélységű bináris fa, csúcsok (állapotok) száma: K+ Problématér elemei: csúcsból induló K hosszú utak. Száma: K. Utazó ügynök probléma. Gráf színezési probléma. Sakktábla bejárása lóval. Rubik kocka. Bűvös négyzet. -ös mátrix 0,-esekkel úgy, hogy minden -es más. Ábrarajzolás egy vonallal. Útvonal tervezés városban (egyirányú utcák) 9. Nagypapa játéka