2. Visszalépéses keresés

Hasonló dokumentumok
2. Visszalépéses stratégia

Keresések Gregorics Tibor Mesterséges intelligencia

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

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

Algoritmusok bonyolultsága

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

Evolúciós algoritmusok

bármely másikra el lehessen jutni. A vállalat tudja, hogy tetszőlegesen adott

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

Algoritmusok bonyolultsága

Programozási módszertan. Mohó algoritmusok

Mesterséges intelligencia

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

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

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

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

angolul: greedy algorithms, románul: algoritmi greedy

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

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

22. GRÁFOK ÁBRÁZOLÁSA

Gráfelméleti feladatok. c f

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

Adatszerkezetek II. 1. előadás

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

Adatszerkezetek 2. Dr. Iványi Péter

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK

Dinamikus programozás vagy Oszd meg, és uralkodj!

Amortizációs költségelemzé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

Adatszerkezetek 7a. Dr. IványiPéter

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

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

Gráf csúcsainak színezése. The Four-Color Theorem 4 szín tétel Appel és Haken bebizonyították, hogy minden térkép legfeljebb 4 színnel kiszínezhető.

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

Ugrólisták. RSL Insert Example. insert(22) with 3 flips. Runtime?

HAMILTON KÖR: minden csúcson PONTOSAN egyszer áthaladó kör. Forrás: (

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

Algoritmuselmélet 2. előadás

ELTE IK Esti képzés tavaszi félév. Tartalom

Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT- 4. kurzus. 3. Előadás: A mohó algoritmus

29. Visszalépéses keresés 1.

Programozási módszertan. Dinamikus programozás: A leghosszabb közös részsorozat

Adatszerkezetek II. 2. előadás

Gráfok bejárása. Szlávi Péter, Zsakó László: Gráfok II :17

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány

HAMILTON ÚT: minden csúcson PONTOSAN egyszer áthaladó út

Algoritmuselmélet. Mélységi keresés és alkalmazásai. Katona Gyula Y.

Melykeres(G) for(u in V) {szin(u):=feher Apa(u):=0} for(u in V) {if szin(u)=feher then MBejar(u)}

Mesterséges Intelligencia MI

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.

Algoritmuselmélet 18. előadás

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

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

3. Gráfkeres stratégia

2. Milyen értéket határoz meg az alábbi algoritmus, ha A egy vektor?. (2 pont)

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

Gyakori elemhalmazok

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra:

... fi. ... fk. 6. Fabejáró algoritmusok Rekurzív preorder bejárás (elsőfiú-testvér ábrázolásra)

Mohó algoritmusok. Példa:

Programozás alapjai II. (7. ea) C++

7 7, ,22 13,22 13, ,28

Mesterséges Intelligencia MI

Kétszemélyes játékok

B-fa. Felépítés, alapvető műveletek. Programozás II. előadás. Szénási Sándor.

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

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

III. Gráfok. 1. Irányítatlan gráfok:

Algoritmusok és adatszerkezetek gyakorlat 07

10. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: január 28.

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra:

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

1. tétel - Gráfok alapfogalmai

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

Modellezés Gregorics Tibor Mesterséges intelligencia

Mesterséges Intelligencia I. (I602, IB602)

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

Gráfok, definíciók. Gráfok ábrázolása. Az adott probléma megoldásához ténylegesen mely műveletek szükségesek. Ábrázolások. Példa:

Euler tétel következménye 1:ha G összefüggő síkgráf és legalább 3 pontja van, akkor: e 3

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

Algoritmusok és adatszerkezetek gyakorlat 03 Oszd meg és uralkodj. Nagy

Visszalépéses keresés

Algoritmuselmélet 11. előadás

Diszkrét matematika 2.

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.

Mesterséges Intelligencia MI

Diszkrét matematika 2.C szakirány

Mesterséges intelligencia 2. laborgyakorlat

Az optimális megoldást adó algoritmusok

Melykeres(G) for(u in V) {szin(u):=feher Apa(u):=0} for(u in V) {if szin(u)=feher then MBejar(u)}

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

Általános algoritmustervezési módszerek

Partíció probléma rekurzíómemorizálással

Példa Hajtsuk végre az 1 pontból a Dijkstra algoritmust az alábbi gráfra. (A mátrixban a c i j érték az (i, j) él hossza, ha nincs él.

Automatikus következtetés

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

Átírás:

2. Visszalépéses keresés

Visszalépéses keresés A visszalépéses keresés egy olyan KR, amely globális munkaterülete: egy út a startcsúcsból az aktuális csúcsba (az útról leágazó még ki nem próbált élekkel együtt) kezdetben a startcsúcsot tartalmazó nulla hosszúságú út terminálás célcsúcs elérésekor vagy a startcsúcsból való visszalépéskor keresés szabályai: a nyilvántartott út végéhez egy új (ki nem próbált) él hozzáfűzése, vagy a legutolsó él törlése (visszalépés szabálya) vezérlés stratégiája a visszalépés szabályát csak a legvégső esetben alkalmazza

Visszalépés feltételei zsákutca: az aktuális csúcsból (azaz az aktuális út végpontjából) nem vezet tovább él zsákutca torkolat: az aktuális csúcsból kivezető utak nem vezettek célba kör: az aktuális csúcs szerepel már korábban is az aktuális úton mélységi korlát: az aktuális út hossza elér egy előre megadott értéket

Alacsonyabb rendű vezérlési stratégiák Az általános vezérlési stratégia kiegészíthető: o sorrendi szabállyal: amely sorrendet egy csúcsból kivezető élek vizsgálatára o vágó szabállyal: megjelöli egy csúcs azon kivezető éleit, amelyeket nem érdemes megvizsgálni Ezek a szabályok lehetnek o modellfüggő vezérlési stratégiák (a probléma modelljének sajátosságaiból származó ötlet) o heurisztikák (a megoldandó problémától származó információra támaszkodó ötlet)

Első változat: VL1 A visszalépéses algoritmus első változata az, amikor a visszalépés feltételei közül az első kettőt építjük be a kereső rendszerbe. Bebizonyítható: Véges körmentes irányított gráfokon a VL1 mindig terminál, és ha létezik megoldás, akkor talál egyet. UI: véges sok adott startból induló út van. Rekurzív algoritmussal (VL1) szokták megadni Indítás: megoldás := VL1(startcsúcs)

ADAT := kezdeti érték while terminálási feltétel(adat) loop SELECT SZ FROM alkalmazható szabályok ADAT := SZ(ADAT) endloop A ~ élek A * ~ véges élsorozat VL1 N ~ csúcsok Recursive procedure VL1(akt : N) return (A * ; hiba) 1. if cél(akt) then return(nil) endif 2. for új (akt) loop (akt) ~ akt gyermekei 3. megoldás := VL1(új) 4. if megoldás hiba then 5. return(fűz((akt,új), megoldás) endif 6. endloop 7. return(hiba) end

n-királynő probléma 2. állapotér modell Statikus nyomkövetés sorrendi stratégia: balról jobbra 2. 4. 1. 3. 5. 35. 37. 15. 33. 28. 30. 32. 6. 8. 10.12. 14. 16. 18. 36. 38. 39. 41. 40. 0. 34. 42. 7. 9. 11. 48 lépés 22 visszalépés 20. 13. 22. 17. 19. 27. 21. 23. 25. 24. 29. 26. 44. 31. 43. 45. 47. 46. 48.

n-királynő probléma 2. állapotér modell sorrendi stratégia: balról jobbra Dinamikus nyomkövetés 0. lépés 1. lépés 2. lépés 3. lépés 4. lépés 5. lépés 6. lépés 7. lépés Itt az aktuális út helyett elég lenne csak az aktuális csúcsot tárolni. 48 lépés 22 visszalépés

Sorrendi heurisztikák az n-királynő problémára Az i-edik sor mezőit rangsoroljuk azért, hogy ennek megfelelő sorrendben próbáljuk ki az i-edik királynő lehetséges elhelyezéseit. Diagonális: a mezőn áthaladó hosszabb átló hossza. Páratlan-páros:a páratlan sorokban balról jobbra, a páros sorokban jobbról balra legyen a sorrend. Ütés alá kerülő szabad mezők száma: új királynő elhelyezésével hány szabad mező kerül ütésbe 4 3 3 4 3 4 4 3 3 4 4 3 4 3 3 4 1 2 3 4 4 3 2 1 1 2 3 4 4 3 2 1 3 2

Heurisztikák az n-királynő problémára diagonális + bal-jobb: 8 lépés 2 visszalépés 4 3 3 4 3 4 4 3 3 4 4 3 4 3 3 4 2. model nincs + bal-jobb diag + bal-jobb n = 4 22/48 2/8 n = 5 10/25 10/25 n = 6 165/336 63/132 n = 7 35/77 80/167 n = 8 868/1744 196/400 diagonális + páratlan-páros: 4 3 3 4 3 4 4 3 3 4 4 3 4 3 3 4 n = 4 nincs + bal-jobb 4 lépés 0 visszalépés diag + bal-jobb diag + ps-ptl 2. model 22/48 2/8 0/4 3. model 4/12 0/4 0/4

n-királynő probléma 3. állapotér modell sorrendi stratégia: balról jobbra VL1 heurisztika nélkül D i ={i-dik sor szabad mezői} A k-adik királynő elhelyezése után a hátralevő üres sorokból töröljük az ütésbe került szabad mezőket. for i=k+1.. n loop Töröl(i,k) Töröl(i,k) : törli az i-dik sor azon szabad mezőit, amelyeket a k-dik királynő üt k=6 VL1: if D k = then visszalép

Forward Checking FC algoritmus: VL1 + if i[k+1.. n]: D i = then visszalép k=4 D 6 =

Partial Look Forward PLF algoritmus: VL1 + for i=k+1.. n loop for j=i+1.. n loop Szűr(i,j) if i[k+1.. n]: D i = then visszalép (i<j) Szűr(i,j) : törli az i-edik sor azon szabad mezőit, amelyekhez nem található a j-edik sorban vele ütésben nem álló szabad mező 6 i = 4, j = 6 D 4 = k=3

Look Forward LF algoritmus: VL1 + for i=k+1.. n loop for j=k+1.. n and ij loop Szűr(i,j) if i[k+1.. n]: D i = then visszalép 4 i = 4, j = 3 i = 5, j = 4 i = 6, j = 4 i = 6, j = 5 4 4 5 3 D 6 = k=2

Az n-királynő probléma új reprezentációs modellje Az előző vágási stratégiák alkalmazásánál az n-királynő problémának egy új modelljére volt szükség: o Tekintsük a D 1,, D n halmazokat, ahol D i ={1... n} (ezek az i-dik sor szabad mezői). o o Keressük azt az (x 1,, x n ) D 1 D n elhelyezést (x i az i-dik sorban elhelyezett királynő oszloppozíciója), amely nem tartalmaz ütést: minden i, j királynő párra: C ij (x i,x j ) (x i x j x i x j i j). A visszalépéses keresés e modell változóinak értékét keresi, miközben az alkalmazott vágó stratégiák ezen változók lehetséges értékeit adó D i halmazokat szűkítik.

Bináris korlát-kielégítési modell Keressük azt az (x 1,, x n ) D 1 D n n-est (D i véges) amely kielégít néhány C ij D i D j bináris korlátot. Példák: 1. Házasságközvetítő probléma (n férfi, m nő; keressünk minden férfinak neki szimpatikus feleségjelöltet): o o Az i-dik férfi (i=1..n) felesége (x i ) a D i = {1,, m} azon elemei, amelyekre fenn áll, hogy szimpatikus(i, x i ). Az összes (i,j)-re: C ij (x i,x j ) (x i x j ) (azaz nincs bigámia) 2. Gráfszínezési probléma (egy véges egyszerű irányítatlan gráf n darab csúcsát kell kiszínezni m színnel úgy, hogy a szomszédos csúcsok eltérő színűek legyenek): o Az i-dik csúcs (i=1..n) színe (x i ) a D i = {1,, m} elemei. o Minden i, j szomszédos csúcs párra: C ij (x i,x j ) (x i x j ).

Modellfüggő vezérlési stratégia A bemutatott vágó stratégiákat a modell bináris korlátaival definiálhatjuk, de ehhez a korlátok jelentését nem kell ismerni: Töröl(i,k): D i := D i {ed i C ik (e,x k )} Szűr(i,j) : D i := D i {ed i fd j :C ij (e,f)} Ezekben a módszerekben tehát nem heurisztikák, hanem modellfüggő vágó stratégiák jelennek meg. Modellfüggő sorrendi stratégiák is konstruálhatók: Mindig a legkisebb tartományú még kitöltetlen komponensnek válasszunk előbb értéket. Ugyanazon korláthoz tartozó komponenseket lehetőleg közvetlenül egymás után töltsük ki.

Második változat: VL2 A visszalépéses algoritmus második változata az, amikor a visszalépés feltételei közül mindet beépítjük a kereső rendszerbe. Bebizonyítható: A VL2 -gráfban mindig terminál. Ha létezik a mélységi korlátnál nem hosszabb megoldás, akkor megtalál egy megoldást. UI: véges sok adott korlátnál rövidebb startból induló út van. Rekurzív algoritmussal (VL2) adjuk meg Indítás: megoldás := VL2(<startcsúcs>)

ADAT := kezdeti érték while terminálási feltétel(adat) loop SELECT SZ FROM alkalmazható szabályok ADAT := SZ(ADAT) endloop Recursive procedure VL2(út : N * ) return (A * ; hiba) 1. akt := utolsó_csúcs(út) 2. if cél(akt) then return(nil) endif 3. if hossza(út) korlát then return(hiba) endif 4. if aktmaradék(út) then return(hiba) endif 5. for új (akt) (akt) loop 6. megoldás := VL2(fűz(út, új)) 7. if megoldás hiba then 8. return(fűz((akt,új),megoldás)) endif 9. endloop 10. return(hiba) end (akt) ~ akt gyermekei (akt) ~ akt egy szülője VL2

Mélységi korlát szerepe A mélységi korlát önmagában is biztosítja a terminálást körök esetén is. Ilyenkor nem kell a rekurzív hívásnál a teljes aktuális utat átadni : elég az út hosszát, az aktuális csúcsot és annak szülőjét (a kettő hosszú körök kiszűréséhez). Ez az egyszerűsítés a hatékonyságon javíthat, de ha a reprezentációs gráfban vannak rövid körök is, akkor futási idő szempontjából ez nem előnyös. A VL2 nem talál megoldást, ha a megoldási utak a megadott mélységi korlátnál hosszabbak. (A keresés ilyenkor sikertelenül terminál.)

Mélységi korlát: 5 Heurisztika: W 2 1 8 6 3 7 5 4 2 1 8 7 6 3 5 4 2 1 8 3 1. 5 3 5 4 7. 7 6 5 2 1 4 2 1 8 6 3 7 5 4 8 6 3 7 5 4 2 8 2 1 8 3 2 7 6 5 4 2 7 1 8 6 3 1 3 1 8 7 6 4 3 7 6 5 4 2. 3 3 8. 4. 4 6. 5 5 4 3 2 1 2 7 6 8 3 5 4 2 7 8 1 8 6 1 3 5 4 7 6 4 5 3 2 2 8 1 8 7 6 4 3 5 7 6 1 3 5 4 3. 4 5. 2 9. 4 2 1 3 7 6 8 5 4 8 2 1 2 8 3 7 6 5 4 2 7 8 1 3 1 4 8 6 5 4 7 6 5 3 2 2 1 3 1 8 4 3 7 7 6 5 6 5 4 1 10. 2 1 3 7 6 8 4 5 0. Tologatós játék Vágó heurisztika: akt. út hossza+w>mk 0 1 8 2 3 11. 4 2 7 6 5 1 7 2 6 8 3 5 4

Mélységi korlát: 5 Heurisztika: P 0. 2 1 8 6 3 7 5 4 5 Tologatós játék 2 1 8 7 6 3 5 4 2 1 8 3 2 6 1. 4 4 1 8 6 3 7 6 5 7 5 4 6 2 8 6 3 1 7 5 4 2 8 2 1 8 3 2 7 6 5 4 2 7 1 8 6 3 1 3 1 8 7 6 4 3 7 6 5 4 5 2. 3 5 5 5 4 2 1 2 7 6 8 3 5 4 2 7 8 1 8 6 1 3 5 4 7 6 4 5 3 2 2 8 1 8 7 6 4 3 5 7 6 1 3 5 4 3. 2 2 1 3 7 6 8 5 4 4 8 2 1 2 8 3 7 6 5 4 2 7 8 1 3 1 4 8 6 5 4 7 6 5 3 2 2 1 3 1 8 4 3 7 7 6 5 6 5 4 4. 1 2 1 3 7 6 8 4 5 5. 1 8 2 7 6 3 4 5 0 1 7 2 6 8 3 5 4 2

Értékelés ELŐNYÖK mindig terminál, talál megoldást (a mélységi korláton belül) könnyen implementálható kicsi memória igény HÁTRÁNYOK nem ad optimális megoldást. (iterációba szervezhető) kezdetben hozott rossz döntést csak sok visszalépés korrigál (visszaugrásos keresés) egy zsákutca részt többször is bejárhat a keresés