Állapottér-reprezentáljunk! 2013/14/II. félév, Kovács Zita
Kecske, káposzta, farkas egy lehetséges állapottér-reprezentáció
Kecske, káposzta, farkas egy lehetséges állapottér-reprezentáció A probléma: Egy folyón át szeretne kelni a révész és vinné magával a kecskét, a káposztát és a farkast. Egyszerre azonban legfeljebb egy dolgot tud átvinni. A gond akkor lenne, ha őrizetlenül maradna a kecske a káposztával, vagy a kecske a farkassal… Hogyan vigye át a révész mindhármat, épségben?
Kecske, káposzta, farkas egy lehetséges állapottér-reprezentáció fontos jellemző: melyik hol van és hol van a révész (elhagyható-e a révész?) tetszőleges állapot: a=(a1, a2, a3, a4), ahol a1 a kecske, a2 a káposzta, a3 a farkas, a4 a révész helyét adja meg (0: a folyó bal oldalán; 1: a folyó jobb oldalán) az állapottér (A) része a HxHxHxH halmaznak, ahol H={0,1}
HxHxHxH 16 elemű HxHxHxH = {(0,0,0,0), (0,0,0,1), (0,0,1,0), (0,0,1,1), (0,1,0,0), (0,1,0,1), (1,0,0,0), (1,0,0,1), (0,1,1,0), (0,1,1,1), (1,0,1,0), (1,0,1,1), (1,1,0,0), (1,1,0,1), (1,1,1,0), (1,1,1,1)} A pirossal jelölt állapotok jelölik azt a helyzetet, amikor táplálkozás történik (ezt nagyon szeretnénk elkerülni, tehát a cselekvés akkor lesz végrehajtható, ha nem ilyen helyzetet eredményez…)
Kecske, káposzta, farkas egy lehetséges állapottér-reprezentáció kezdőállapot: k = (0, 0, 0, 0) célállapot: c = (1, 1, 1, 1) Operátorok halmaza: O={átvisz(kit/mit)} a kit/mit lehet 1, 2, 3, 0 (1: kecske, 2: káposzta, 3: farkas, 0: csak a révész megy) alkalmazási előfeltételek: ami őrizetlenül marad, azok között ne legyen a kecske és a káposzta, illetve a kecske és a farkas: kecskét bármikor viheti: mit=1 vagy ha a káposztát viszi, akkor a kecske és a farkas ne ugyanott legyen: ha mit=2, akkor a1!=a3 ha a farkast viszi, akkor a kecske és a káposzta ne ugyanott legyen: ha mit=3, akkor a1!=a2 ha a révész megy, akkor nem maradhat a kecske-káposzta sem a kecske-farkas páros: ha mit=0, akkor (a1!=a3 és a1!=a2) ugyanazon az oldalon legyen a révész és a mit vagy a révész átmehet a túloldalra, amikor a mit=0 ( mit>0 akkor a4=amit) v mit=0
Kecske, káposzta, farkas egy lehetséges állapottér-reprezentáció hatás: akit/amit átvittünk és a révész a másik oldalra kerül (ha eddig a 0 oldalon volt, akkor ezután az 1 oldalon lesz és fordítva), tehát az a’=(a1’, a2’,a3’,a4’) új állapot az alábbi lesz: az átvisz(1): A -> A operátor hatása: a1’= 1 - a1 a2’= a2 a3’= a3 a4’= 1 - a4
Kecske, káposzta, farkas egy lehetséges állapottér-reprezentáció az átvisz(2): A -> A operátor hatása: a1’= a1 a2’= 1 - a2 a3’= a3 a4’= 1 - a4 az átvisz(3): A -> A operátor hatása: a2’= a2 a3’= 1- a3 az átvisz(0): A -> A operátor hatása: a4’= 1 – a4
Kecske, káposzta, farkas egy lehetséges állapottér-reprezentáció A négy operátor egyszerűbben is felírható: az átvisz(kit/mit): A -> A operátor hatása: amit’= 1 - amit ai’= ai , ahol i nem egyenlő mit és nem egyenlő 4 a4’= 1 – a4
gráfrészlet (0,0,0,0) (1,0,0,1) (1,0,0,0) (1,1,0,1) (1,0,1,1) Az egyes helyzetekben a végrehajtott cselekvés visszavonását okozó cselekvést nem jelöltük, feleslegesen nem dolgozik a révész. (0,0,0,0) (1,0,0,1) Á(1) (1,0,0,0) Á(0) Á(2) (1,1,0,1) (1,0,1,1) Á(3) (0,1,0,0) (0,0,1,0) (0,1,1,1) (0,1,1,0) (1,1,1,1)
Három kancsó egy lehetséges állapottér-reprezentáció
Három kancsó egy lehetséges állapottér-reprezentáció A probléma: Van három kancsónk, egy 8 literes, egy 5 literes és egy 3 literes. A 8 literes tele van borral (száraz, vörös ;-)). A kancsókon semmilyen mérésre alkalmas jelzés nem található, a cselekvés, amikre képesek vagyunk, hogy töltögetünk egyik kancsóból a másikba. Feladat: mérjünk ki 4 liter bort!
Három kancsó egy lehetséges állapottér-reprezentáció fontos jellemző: melyik kancsóban mennyi bor van (elegendő lenne 2 adat is, de 3 adat esetén nem kell számolgatni…) tetszőleges állapot: a=(a1, a2, a3), ahol a1 a 8 literes kancsó, a2 az 5 literes kancsó, a3 a 3 literes kancsó tartalmát adja meg. az állapottér (A) része a AxBxC halmaznak, ahol A={0,1,2,3,4,5,6,7,8}, B={0,1,2,3,4,5} és C={0,1,2,3}.
AxBxC 8*5*3=120 elemű AxBxC = {(0,0,0), (0,0,1), (0,0,2), …, (2,3,3),….,(8,5,3)} A pirossal jelölt állapotok jelölik azt a helyzetet, amelyek nem lehetnek állapotok a mi problémánk esetén (hiszen olyan nincs, hogy mindhárom kancsó tele van, vagy mindhárom üres, de a földre sem öntöttünk ki bort, stb).
AxBxC Szükség van egy kényszerfeltételre, amely kiválogatja a 120 elem közül azokat, amelyek lehetnek állapotok: a 8 liter bornak meg kell lennie: a1+a2+a3=8 (másik feltétel is megfogalmazható, nevezetesen, hogy valamelyik kancsónak üresnek kell lennie vagy valamelyiknek tele kell lennie, ebbe most nem megyünk bele) A kényszerfeltétel elhagyható, mert a kiinduló állapotból indulva az operátorokkal csak valódi állapotokat állítunk elő!
Három kancsó egy lehetséges állapottér-reprezentáció kezdőállapot: k=(8,0,0) célállapot: C={a eleme A| a1=4 v a2=4} Operátorok halmaza: O={átönt8-5, átönt 8-3, átönt5-8, átönt5-3, átönt3-8, átönt3-5} Megj: az első szám a honnan, a második a hova kancsó alkalmazási előfeltételek: minden operátor esetén ahonnan önteni akarunk, az nem üres és ahova öntünk, az nincs tele az átönt8-5: A -> A operátor alkalmazási előfeltétele: a 8 literes kancsó nem üres és az 5 literes kancsó nincs tele: a1>0 és a2<5
Három kancsó egy lehetséges állapottér-reprezentáció az átönt8-3: A -> A operátor alkalmazási előfeltétele: a 8 literes kancsó nem üres és a 3 literes kancsó nincs tele: a1>0 és a3<3 az átönt5-8: A -> A operátor alkalmazási előfeltétele: az 5 literes kancsó nem üres és a 8 literes kancsó nincs tele: a2>0 és a1<8 az átönt5-3: A -> A operátor alkalmazási előfeltétele: az 5 literes kancsó nem üres és a 3 literes kancsó nincs tele: a2>0 és a3<3 az átönt3-8: A -> A operátor alkalmazási előfeltétele: a 3 literes kancsó nem üres és a 8 literes kancsó nincs tele: a3>0 és a1<8 az átönt3-5: A -> A operátor alkalmazási előfeltétele: a 3 literes kancsó nem üres és az 5 literes kancsó nincs tele: a3>0 és a2<5
Három kancsó egy lehetséges állapottér-reprezentáció hatás: amennyi rendelkezésre áll az ahonnan kancsóban és amennyi hely van az ahova kancsóban összehasonlításra kerül, a kisebbet tudjuk tölteni, tehát a’=(a1’, a2’,a3’) új állapot az alábbi lesz: az átönt8-5: A -> A operátor hatása: a1’ = a1 – min(a1, 5-a2) a2’ = a2 + min(a1, 5-a2) a3’ = a3 az átönt8-3: A -> A operátor hatása: a1’ = a1 – min(a1, 3-a3) a2’ = a2 a3’ = a3 + min(a1, 3-a3)
Három kancsó egy lehetséges állapottér-reprezentáció az átönt5-8: A -> A operátor hatása: a1’ = a1 + min(a2, 8-a1) a2’ = a2 - min(a2, 8-a1) a3’ = a3 az átönt5-3: A -> A operátor hatása: a1’ = a1 a2’ = a2 - min(a2, 3-a3) a3’ = a3 + min(a2, 3-a3)
Három kancsó egy lehetséges állapottér-reprezentáció az átönt3-8: A -> A operátor hatása: a1’ = a1 + min(a3, 8-a1) a2’ = a2 a3’ = a3 - min(a3, 8-a1) az átönt3-5: A -> A operátor hatása: a1’ = a1 a2’ = a2 + min(a3, 5-a2) a3’ = a3 - min(a3, 5-a2)
gráfrészlet (teljes gráf, minden operátorral: otthoni gyakorlás!) Az egyes helyzetekben a végrehajtott cselekvés visszavonását okozó cselekvést nem jelöltük, feleslegesen nem dolgozik a töltögető ágens. (8,0,0) Á8-5 Á8-3 (3,5,0) (5,0,3) Á5-3 (3,2,3) … Á3-8 (6,2,0) Á5-3 (6,0,2) Á8-5 (1,5,2) Á5-3 (1,4,3)
Gyakorlás
Gyakorlás Adott négy kancsó: 8 literes, 5 literes, 6 literes és 7 literes és kezdetben mindegyik félig van töltve borral. A legkevesebb töltögetéssel mérj ki 1,2,3,4,5,6,7,8,9 liter bort (a kancsókon nincs méréshez jelzés)! Adj meg egy lehetséges állapottér-reprezentációt, amikor a cél 4 liter kimérése!
Gyakorlás Hogyan változik a Hanoi tornyai reprezentáció, ha nem három, hanem 5 korongot kell pakolgatni? Van két homokóránk: az egyikben 7 perc alatt, a másikban 4 perc alatt pereg le a homok. Hogyan tudunk velük pontosan 9 percet lemérni? Állapottér-reprezentáld!
Gyakorlás Továbbiak: a https://it.inf.unideb.hu/mestint/fooldal oldal linkjei http://www.inf.u-szeged.hu/~szorenyi/MestInt/MI_peldasor.pdf első gyakorlat problémái