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?

Cselekvési tervek generálása a robotikában

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

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

2. Visszalépéses stratégia

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

TERVGENERÁLÁS. Robotika részfeladatai. Állapot-leírás logikai állításokkal. Kocka világ. Állapot-leírás tulajdonságai. Példa

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

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

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

Struktúra nélküli adatszerkezetek

2. Visszalépéses keresé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

Állapottér reprezentáció/level1

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

Adatszerkezetek II. 1. előadás

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

Keresések Gregorics Tibor Mesterséges intelligencia

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

Visszalépéses keresés

angolul: greedy algorithms, románul: algoritmi greedy

Adatszerkezetek 2. Dr. Iványi Péter

38. A gráfalgoritmusok alkalmazása

MestInt gyakorlat visszalépéses keresés

Algoritmusok bonyolultsága

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

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

22. GRÁFOK ÁBRÁZOLÁSA

II. Szabályalapú következtetés

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

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

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

Bevezetés a programozásba. 5. Előadás: Tömbök

Permutáció n = 3 esetében: Eredmény: permutációk száma: P n = n! romámul: permutări, angolul: permutation

44. ORSZÁGOS TIT KALMÁR LÁSZLÓ MATEMATIKAVERSENY. Megyei forduló április mal, így a számjegyeinek összege is osztható 3-mal.

Miskolci Egyetem. Diszkrét matek I. Vizsga-jegyzet. Hegedűs Ádám Imre

Egyszerű programozási tételek

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

Algoritmusok bonyolultsága

2. forduló. MEGOLDÁSOK Pontszerző Matematikaverseny 2014/2015 tanév. 1. Számkeresztrejtvény:

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

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

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

Megjegyzés: A programnak tartalmaznia kell legalább egy felhasználói alprogramot. Példa:

MESTERSÉGES INTELLIGENCIA DR. KOVÁSZNAI GERGELY JEGYZETE. Verziószám: május 19.

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

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

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

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

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

INFORMATIKA javítókulcs 2016

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

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

Smalltalk 2. Készítette: Szabó Éva

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

Evolúciós algoritmusok

BACKTRACKING Visszalépéses keresés

Optimalizációs stratégiák 2.

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

7. Strukturált típusok

Halmaz típus Értékhalmaz:

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Megyei matematikaverseny évfolyam 2. forduló

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

C programozási nyelv Pointerek, tömbök, pointer aritmetika

17. A 2-3 fák és B-fák. 2-3 fák

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

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

A 2016/2017 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

A MESTERSÉGES INTELLIGENCIA KÉRDÉSEI A KÖZÉPISKOLAI OKTATÁSBAN

Dinamikus modellek szerkezete, SDG modellek

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

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Gráfalgoritmusok ismétlés ősz

Diszkrét matematika 2.C szakirány

Felvételi tematika INFORMATIKA

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

Gyakorlatok. P (n) = P (n 1) + 2P (n 2) + P (n 3) ha n 4, (utolsó lépésként l, hl, u, hu-t léphetünk).

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

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

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

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

Lineáris Algebra gyakorlatok

Rendezések. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar október 24.

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

23. SZÉLESSÉGI BEJÁRÁS

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

Gyakorló feladatok ZH-ra

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

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

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

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

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

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

Matematika alapjai; Feladatok

Átírás:

II. Állapottér-reprezentáció 1

Állapottér-reprezentáció elemei Állapottér: a feladat homlokterében álló adategyüttes (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 célfeltétel 2

Megjegyzés Megoldás: műveletek sorozata Az állapottér általában nem azonos a problématérrel, mert a problématér elemei, azaz a lehetséges válaszok többnyire a kezdőállapotból induló műveletsorozatok, nem pedig az állapotok. A kiinduló válasz a kezdő állapotból induló nulla hosszú műveletsorozat Egy műveletsorozatnak (válasznak) szomszédjai azok a sorozatok, amelyek egy művelettel hosszabbak. 3

Hanoi tornyai probléma 1 2 3 Kezdőállapot Célállapot 1 2 3 Állapottér: 3 2 1 1 2 3 Állás ={1,2,3} n megjegyzés : a rudakon lentről felfelé csökkenő méret szerint helyezkednek el a korongok. Egydimenziós, 1..n intervallummal indexelt n elemű tömb, amely elemeit az {1,2,3}-ból veszi Művelet: Rak(honnan, hová):állás Állás [3,3,3] [1,1,1] 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á 4

Implementáció Művelet: Rak(honnan, hová):állás Állás (a:állás) l1,i=search i 1..n (a[i]=honnan) i-t akarjuk mozgatni l2,j=search j 1..n (a[j]=hová) j-re akarunk rakni HA l1 és ( l2 vagy i<j) AKKOR a[i] := hová 5

Hanoi tornyai [3,3,3] start állapot-gráf [2,3,3] [1,3,3] [2,1,3] [1,2,3] [1,1,2] [1,1,3] [3,1,3] [3,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

Á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 startcsúcs célállapotok célcsú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 az állapot-gráf bonyolultságától függ csúcsok és élek száma (3 n csúcs, 1 csúcsból kivezető él max: 3) utak száma, hossza (adott csúcsból kivezető k hosszú utak száma, ha a közvetlen visszalépést kizárjuk: 2 k ) körök gyakorisága és hossza 7

n-királynő probléma 1. általános állapot célfeltételnek megfelelő állapot kétdimenziós tömb (n n-es mátrix) Állapottér: Tábla = {, _ } n n amely elemeit a {, _ }-ból veszi invariáns: egy állapotban a királynők ( jelű mezők) száma = n Művelet: Áthelyez(x,y,u,v):Tábla Tábla HA (a[x,y]=) és (a[u,v]=_ ) (a:tábla) AKKOR a[x,y] a[u,v] 8

Problématér mérete Sok modellje lehet ugyanannak a feladatnak: keressük meg a legkisebb problématerűt o o o Most annyi állapot van, ahányféleképpen n királynőt elhelyezhetünk. Ennél jóval nagyobb a problématér, azaz egy adott állapotból kiinduló utak halmaza, hiszen egy állapotból n*(n 2 n) féleképpen lehet továbblépni, és egymás után végtelen sok ilyen lépést lehet tenni. 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. A problématér a legfeljebb n hosszú utakból áll majd, és a megoldást a pontosan n hosszúak között találjuk. Ezek száma: A műveletek előfeltételének szigorításával csökkenhet a problématér: - Sorról sorra csak egy-egy királynőt helyezzünk fel a táblára! Ekkor az n hosszú utak száma: n n - Ez tovább csökkenthető, ha ütést tartalmazó állásra nem rakunk fel újabb királynőt! 9

kezdőállapot n-királynő probléma 2. célállapot Állapottér: Tábla = {, _ } 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: közbülső állapot Helyez(oszlop):Tábla Tábla HA a táblán (a:tábla) a királynők száma < n és nincs ütés és a sor a soron következő üres sort jelöli AKKOR a[sor,oszlop] := 10

Állapot-gráf 11

Művelet végrehajtásának hatékonysága A művelet előfeltételének kiszámítási bonyolultsága csökkenthető, ha o az állapotteret (vagy annak invariánsát) szigorítjuk és o a művelet hatását ennek megfelelően módosítjuk (ugyanaz a megszorítás vándorol a specifikáción belül) Például o o 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. Ha tároljuk, hogy mely üres mezőket tartanak ütés alatt a királynők, (ezeket a művelet végrehajtásakor, egy újabb királynő elhelyezésekor kell bejelölni, akkor konstans időben eldönthető, hogy egy új királynő üti-e az előzőeket, és ezt a tényt egy logikai változóban rögzíthetnénk, amiből látni, hogy további királynőt nem szabad elhelyezni. Sőt (és ez már új megszorítás) ne is legyen ütés a táblán. 12

kezdőállapot: db = 0 n-királynő probléma 3. közbülső állapot: db = 2 célállapot : db = 4 Állapottér: Tábla = rec(m :{,, _ } 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 13

n-királynő probléma 3. Művelet: új királynő elhelyezése a soron következő üres sor szabad mezőjére (invariáns tartó művelet) Helyez(oszlop):Tábla Tábla (a:tábla) HA a. db < n és a.m[a.db+1,oszlop]= _ AKKOR a.db:=a.db+1 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 14

4-királynő állapot gráf 17

kezdőállapot: tetszőleges 2 1 7 Tologató játék (8-as, 15-ös) Állapottér: Tábla=rec(m :{0..8} 3 3, ü :{1..3} {1..3}) invariáns: a mátrix sorfolytonos kiterítése a 0.. 8 számok permutációja, az üreshely a 0 elem sor és oszlopindexe. Művelet: Tol(irány):Tábla Tábla (irány *(1,0),(0,1),(-1,0),(0,-1)}) HA a.ü+irány egy érvényes pozíció (a:tábla) AKKOR 8 3 6 4 5 a.m[a.ü] a.m[a.ü+irány] a.ü := a.ü+irány 1 2 3 8 4 célállapot: szokásos a.ü+irány koordinátánként értendő 19

Mit lát egy keresés a problématérből? A keresés szempontjából egy reprezentációs gráfnak csak a startcsúcsból elérhető része érdekes (9!/2), ugyanis ez az, amit egy keresés felfedhet a gráfból. Ráadásul ezt a felfedett részt is sokszor csak torzultan látja a keresés: (keresési tér) Ha a keresés nem ellenőrzi, hogy egy általa elért állapotot már korábban felfedezett-e, akkor nem az eredeti reprezentációs gráfot, hanem annak fává kiegyenesített változatát látja. Nem feltétlenül baj, ha emiatt 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 ez egy egyszerű vizsgálat, amellyel a felesleges éleket, oda-vissza köröket hagyhatjuk el a keresési térből. 20

1 6 4 7 5 Keresési tér 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 3 2 1 4 7 1 4 1 2 8 3 4 2 1 3 8 4 1 4 5 1 5 6 6 5 7 6 7 4 8 3 2 1 4 8 1 3 2 4 1 2 3 8 4 1 7 2 8 6 3 4 5 1 4 5 7 6 1 5 7 4 6 1 5 6 7 4 1 5 7 4 6 1 5 7 4 6 1 2 3 8 4 célállapotok duplikátumok

Fekete-fehér kirakó Egy n+m+1 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 : {B, W,_} n+m+1, poz : [1.. n+m+1]) invariáns: egy üres hely, poz az üres hely indexe, 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 1 (a : Sín) AKKOR a.v[a.poz-1] a.v[a.poz] ; a.poz :=a.poz-1 Kezdőállapot: [B,, B, W,, W, _ ] Célállapot: i,j [1.. n+m+1], i<j : (a.v[i]=b a.v[j]=w) 22

Fekete-fehér kirakó állapot gráfja start cél cél cél cél 23

C A B Kockavilág probléma Egy asztalon van néhány kocka (A,B,C, ), amelyeket egy robotkar mozgat: felemel, rátesz, levesz, lerak. Építsünk fel egy meghatározott alakzatot egy rögzített helyzetből kiindulva! Állapottér: Kockák= set(alapliterálok) Alapliterálok={az ontable(x), on(x,y), clear(x), handempty, holding(x) összes alapelőfordulása, azaz ontable(a), ontable(b), } invariáns: egy állapot ellentmondás mentes (pl.: nincs on(c,b) és clear(b)), de lehet hiányos (lásd célállapot) Például: Kezdőállapot: ontable(a), clear(a), ontable(b), on(c,b), clear(c),handempty Célállapot: on(a,b), on(b,c) 24

C A B HA Kockavilág probléma műveletei Teljes leírású állapotból teljes leírású állapotba vezetnek, de lehet alkalmazni hiányos állapotra is, Műveletek: sőt nemcsak alapliterálokkal leírt állapotokra is. Pickup(x): Kockák Kockák (h : Kockák) ontable(x),clear(x),handempty h AKKOR h := h {ontable(x),clear(x),handempty } {holding(x)} Putdown(x): Kockák Kockák HA holding(x) h (h : Kockák) AKKOR h := h {holding(x)} {ontable(x),clear(x),handempty} Stack(x,y): Kockák Kockák HA holding(x), clear(y) h (h : Kockák) AKKOR h := h {holding(x), clear(y)} {on(x,y),clear(x),handempty} Unstack(x,y): Kockák Kockák (h : Kockák) HA on(x,y),clear(x),handempty h AKKOR h := h {on(x,y),clear(x),handempty} {holding(x), clear(y)} 25

Kancsók problémája Három kancsóban, egy öt, egy három és egy két literesben, együttesen 5 liter bor van. Kezdetben az öt literes kancsó van tele. Töltögetéssel érjük el, hogy a két literesbe pontosan 1 liter bor kerüljön! Állapottér: Kancsók= vektor( [5,3,2];{0..5} ) invariáns: i [5,3,2] v[i] = 5 i [5,3,2]: 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 AKKOR Kezdőállapot: [5, 0, 0] Célállapot: [x, y, 1] i,j [5,3,2] i j min(v[i], j-v[j])>0 v[i],v[j] := v[i]-min(v[i], j-v[j]),v[j]+min(v[i], j-v[j]) 26

Kancsók-probléma állapot gráfja 0 3 2 1 2 2 2 1 2 3 0 2 cél cél 1 3 1 2 2 1 cél cél 3 1 1 4 0 1 2 3 0 3 2 0 4 1 0 5 0 0 start 27

Misszionárius - kannibál probléma Elég csak a bal partot jegyezni az átkelés nem külön állapot n misszionárius és n kannibál át akar kelni egy folyón egy h személyes csónakban Ha a bal parton nincs emberevés, akkor a jobb parton sincs Állapottér: Part = rec(m : [0..n], k : [0..n], c : 𝕃) invariáns: nincs emberevés, azaz I(m,k) m=k m=0 m=n Kezdőállapot: (n,n,igaz) (0,0,hamis) Ha Célállapot: az átevezés előtt és után nincs emberevés, akkor a csónakban sincs. Műveletek: Oda(x,y):Part Part és Vissza(x,y):Part Part (a:part) HA a.c x a.m y a.k HA a.c x n a.m y n a.k 0<x+y h I(a.m x, a.k y) 0<x+y h 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 29

Feladatok 1. Utazó ügynök probléma 2. Gráf színezési probléma 3. Sakktábla bejárása lóval 4. Rubik kocka 5. Bűvös négyzet 6. 5 5-ös mátrix 0,1-esekkel úgy, hogy minden 2 2-es más 7. Ábrarajzolás egy vonallal 8. Útvonal tervezés városban (egyirányú utcák) 9. Nagypapa játéka 34