mesterséges intelligencia alapjai i. · 2019-11-13 · gráfkeresésfüggvényei : n →n...

45
3. Gráfkeresés A gráfkeresés olyan KR, amelynek globális munkaterülete: startcsúcsból kiinduló már feltárt útjai a reprezentációs gráfnak (keresőgráf), valamint a feltárt utak végei (nyílt csúcsok) kiinduló értéke: a startcsúcs, terminálási feltétel: vagy célcsúcsot terjeszt ki vagy nincs nyílt csúcs. keresési szabálya: egy nyílt csúcs kiterjesztése vezérlési stratégiája: a legkedvezőbb csúcs kiterjesztésére törekszik, és ehhez egy kiértékelő függvényt használ. Gregorics Tibor Mesterséges intelligencia 1

Upload: others

Post on 25-Jan-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

3. Gráfkeresés

❑ A gráfkeresés olyan KR, amelynek

– globális munkaterülete: startcsúcsból kiinduló már

feltárt útjai a reprezentációs gráfnak (keresőgráf),

valamint a feltárt utak végei (nyílt csúcsok)

• kiinduló értéke: a startcsúcs,

• terminálási feltétel: vagy célcsúcsot terjeszt ki

vagy nincs nyílt csúcs.

– keresési szabálya: egy nyílt csúcs kiterjesztése

– vezérlési stratégiája: a legkedvezőbb csúcs

kiterjesztésére törekszik, és ehhez egy kiértékelő

függvényt használ.

Gregorics Tibor Mesterséges intelligencia 1

Page 2: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

3.1. Általános gráfkereső algoritmus

Jelölések:

− keresőgráf (G) : a reprezentációs gráf eddigfelfedezett és egyben el is tárolt része

− nyílt csúcsok halmaza (OPEN) : kiterjesztésre várakozó csúcsok, amelyeknek gyerekeit még nem vagy nem eléggé jól ismerjük

− kiértékelő függvény (f: OPEN → ℝ) : kiválasztja a megfelelő nyílt csúcsot kiterjesztésre

Gregorics Tibor Mesterséges intelligencia 2

Page 3: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

Gráfkeresés függvényei

❑ : N → N szülőre visszamutató pointer

– (m) = m csúcs már ismert szülője, (start) = nil

• egy start gyökerű irányított feszítőfát jelöl ki G-n

és segít kiolvasni a megoldási utat terminálás után.

Gregorics Tibor Mesterséges intelligencia

s

a b

c

2

2

2

1

3

21

0 start

❑ g: N → ℝ költség függvény

– g(m) = c(start,m) – egy már megtalált {start→n} út költsége

• Jó lenne ha egy m csúcs felfedezésekor a g(m) a által mutatott

start→m út költségét adná.

• Jó lenne ha egy m csúcs felfedezésekor a (m)

a G-beli optimális start→m utat mutatná.

m∊G csúcs korrekt, ha g(m) és (m) konzisztens: g(m)= c(start,m),

és (m) optimális: c(start,m)= min{start⟶m}G c(start,m)

G korrekt, ha minden csúcsa korrekt.

6

Page 4: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

A korrektség fenntartása

egy csúcs előállításakor

❑ Kezdetben: (start) := nil, g(start) := 0

❑ Az n csúcs kiterjesztése után minden m(n) csúcsra

o 1. Ha m új csúcs

azaz mG akkor

(m) := n, g(m) := g(n)+c(n,m)

OPEN := OPEN{m}

o 2. Ha m régi csúcs, amelyhez olcsóbb utat találtunk

azaz mG és g(n)+c(n,m)<g(m) akkor

(m) := n, g(m) := g(n)+c(n,m)

o 3. Ha m régi csúcs, amelyhez nem találtunk olcsóbb utat

azaz mG és g(n)+c(n,m)g(m) akkor SKIP

Gregorics Tibor Mesterséges intelligencia 7

Page 5: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

Mégsem marad korrekt a kereső gráf

Ha mG és g(n)+c(n,m)<g(m), akkor (m):=n, g(m):=g(n)+c(n,m)

s m k l

n

1

141

5

g(m)=4

g(k)=5 g(l)=5

g(n)=1

g(s)=0

1

2

? ?

❑ Mi legyen az olcsóbb úton újra megtalált m csúcs leszármazottaival?

1. Járjuk be és javítsuk ki a pointereiket és költségeiket!

2. Kerüljük el egy jó kiértékelő függvénnyel, hogy ilyen történjen!

3. Az m csúcsot helyezzük vissza OPEN halmazba!

Gregorics Tibor Mesterséges intelligencia

inkorrekt csúcsok

Ezt választjuk. De hányszor

kerülhet így sor ugyanazon

csúcs kiterjesztésére?

start

8

Page 6: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

1. G := ({start}, ∅); OPEN := {start}; g(start) := 0; (start) := nil

2. loop

3. if empty(OPEN) then return nincs megoldás

4. n := minf(OPEN)

5. if cél(n) then return megoldás

6. OPEN := OPEN−{n}

7. for m(n)−(n) loop

8. if mG or g(n)+c(n,m)<g(m) then

9. (m) := n; g(m) := g(n)+c(n,m); OPEN := OPEN{m}

10. endloop

11. G := G {(n,m)A m(n)−(n)}

12. endloop

Általános

gráfkereső algoritmus

Gregorics Tibor Mesterséges intelligencia

ADAT := kezdeti érték

while terminálási feltétel(ADAT) loop

SELECT SZ FROM alkalmazható szabályok

ADAT := SZ(ADAT)

endloop

9

(akt) ~ akt gyermekei

(akt) ~ akt egy szülője

Page 7: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

Működés és eredmény

Gregorics Tibor Mesterséges intelligencia

Bebizonyítható:

❑ A GK -gráfban a működése során egy csúcsot

legfeljebb véges sokszor terjeszt ki.

(ebből következik például, hogy körökre nem érzékeny)

❑ A GK véges -gráfban mindig terminál.

❑ Ha egy véges -gráfban létezik megoldás, akkor a GK

megoldás megtalálásával terminál.

10

Page 8: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

Gráfkeresés működési grafikonja

❑ Soroljuk fel a kiterjesztett csúcsokat kiterjesztésük

sorrendjében (ugyanaz a csúcs többször is szerepelhet,

hiszen többször is kiterjesztődhet) a kiterjesztésükkor

mért f kiértékelő függvényértékükkel.

Gregorics Tibor Mesterséges intelligencia

f

𝛤

start n m k……… … m

11

Page 9: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

Csökkenő kiértékelő függvény

❑ Egy GK kiértékelő függvénye csökkenő, amennyiben a

egy csúcsra adott értéke az algoritmus működése során

nem növekszik, viszont mindig csökken, valahányszor

a csúcshoz a korábbinál olcsóbb utat találunk.

• Például a g költségfüggvény ilyen.

❑ Csökkenő kiértékelő függvény mellett a GK

o soha nem terjeszt ki inkorrekt csúcsot

o időről időre automatikusan helyreállítja a kereső

gráf korrektségét, azaz a feszítő fájának

optimálisságát és konzisztenciáját.

Gregorics Tibor Mesterséges intelligencia 12

Page 10: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

Mikor lesz a kereső gráf korrekt

csökkenő kiértékelő függvény mellett?

❑ Válasszuk ki az értékekből azt az Fi (i=1,2,…) monoton növekedő

részsorozatot, amely a legelső értékkel kezdődik, majd mindig a

legközelebbi nem kisebb értékkel folytatódik.

❑ Csökkenő kiértékelő függvény használata mellett a GK

• kereső gráfja korrekt lesz valahányszor küszöbcsúcsot terjeszt ki

• soha nem terjeszt ki inkorrekt csúcsot

Gregorics Tibor Mesterséges intelligencia

i-dik küszöbérték

i-dik küszöbcsúcs i-dik árok

f

𝛤

start n2 nini+1……… …

FiF2

F1

Fi+1

……

13

Page 11: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

3.2. Nevezetes gráfkereső algoritmusok

❑ Most az f kiértékelő függvény megválasztása

következik.

❑ mélységi (MGK)

❑ szélességi (SZGK)

❑ egyenletes (EGK)

❑ előre tekintő (mohó, best-first)

❑ A, A*, Ac

❑ B, B’, A**

HeurisztikusNem-informált

Gregorics Tibor Mesterséges intelligencia

• Az úgynevezett tie-breaking rule-ok (egyenlőséget feloldó szabályok) a

nem-informált gráfkereséseknél is tartalmazhatnak heurisztikát.

14

Page 12: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

Nevezetes nem-informált algoritmusok

Algoritmus Definíció Eredmények

Mélységi

gráfkeresés MGKf = -g,

c(n,m) = 1

• végtelen gráfokban csak mélységi

korláttal garantál megoldást

Szélességi

gráfkeresés SZGKf = g,

c(n,m) = 1

• optimális (legrövidebb) megoldást

ad, ha van (még végtelen -gráfban is)

• egy csúcs kiterjesztésekor ismeri az

odavezető legrövidebb utat (legfeljebb

egyszer terjeszti ki)

Egyenletes

gráfkeresés EGKf = g • optimális (legolcsóbb) megoldást ad,

ha van (még végtelen -gráfban is)

• egy csúcs kiterjesztésekor ismeri az

odavezető legolcsóbb utat (legfeljebb

egyszer terjeszt ki)

ugyanúgy mélységi stratégiát használ,

mint a visszalépéses keresés

hasonlít Dijkstra

legrövidebb utak

algoritmusára

Gregorics Tibor Mesterséges intelligencia 15

Page 13: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

Heurisztika a gráfkereséseknél

❑ Heurisztikus függvénynek nevezzük azt a h:N→ℝ

függvényt, amelyik egy csúcsnál megbecsüli a csúcsból

a célba vezető („hátralévő”) optimális út költségét.

• h(n) h*(n) (h*:N→ℝ többnyire nemismert, csak

elméletben létező költségfüggvény)

❑ Példák:

– 8-kirakó : W, P

– 0 (zéró függvény)?

Gregorics Tibor Mesterséges intelligencia 16

hátralevő optimális költség n-ből a

célcsúcsok (T) valamelyikébe:

h*(n) = c*(n,T)

M-be vezető optimális költség:

c*(n,M) := minmM c*(n,m)

n-ből m-be vezető optimális költség:

c*(n,m) := min {n⟶m} c(n,m)

Page 14: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

Heurisztikus függvények tulajdonságai

❑ Nevezetes tulajdonságok:

– Nem-negatív: h(n) ≧ 0 nN

– Megengedhető (admissible): h(n) ≦ h*(n) nN

– Monoton megszorítás: h(n)‒ h(m) ≦ c(n,m) (n,m)A

(következetes)

❑ Megjegyzés:

– 8-kirakó : W és P mindhárom tulajdonsággal bír.

– h monoton + h célban nulla ⇒ h megengedhető

– Zéró függvény mindhárom tulajdonsággal bír.

Gregorics Tibor Mesterséges intelligencia 17

Page 15: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

Nevezetes heurisztikus algoritmusok

Algoritmus Definíció Eredmények

Előre tekintő

gráfkeresés

f = h nincs említhető extra tulajdonsága

A algoritmus f = g+h és h ≧ 0 • megoldást ad, ha van megoldás

(még végtelen -gráfban is)

A* algoritmus f = g+h és h ≧ 0 és

h ≦h*

• optimális megoldást ad, ha van

(még végtelen -gráfban is)

Ac algoritmus f = g+h és h ≧ 0 és

h ≦ h* és

h(n)−h(m) ≦ c(n,m)

• optimális megoldást ad, ha van

(még végtelen -gráfban is)

• egy csúcs kiterjesztésekor ismeri

az odavezető legolcsóbb utat

(legfeljebb egyszer terjeszt ki)

Gregorics Tibor Mesterséges intelligencia

egyenletes gráfkeresés:

f = g+0

18

Page 16: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

2

71

86

3

54

21

8

76

3

54

2

71

8

6

3

54

2

71

86

3

54

2

71

68

3

54

2

71

8

64

3

5

2

7

8

61

3

54

27

8

61

3

54

72

8

61

3

54

2

71

3

68

54

4

5 53

3 3 4

3 4

1

78

2

6

f = W

még 6 lépés

71

2

68

3

54

1

7

2

68

3

54

17

2

68

3

54

3

54

19Gregorics Tibor Mesterséges intelligencia

1.

2.

3.

4.

Page 17: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

2

71

86

3

54

21

8

76

3

54

2

71

8

6

3

54

2

71

86

3

54

2

71

68

3

54

2

71

8

64

3

5

2

7

8

61

3

54

71

2

68

3

54

27

8

61

3

54

72

8

61

3

54

2

71

3

68

54

1

7

2

68

3

54

17

2

68

3

54

4

6 64

5 5 6

6 7 5 7

5

5 71

78

2

6

3

54

f = g+W

20Gregorics Tibor Mesterséges intelligencia

1.

2.

3. 4.

5.

6.

Page 18: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

2

71

86

3

54

21

8

76

3

54

2

71

8

6

3

54

2

71

86

3

54

2

71

68

3

54

2

71

8

64

3

5

2

7

8

61

3

54

71

2

68

3

54

27

8

61

3

54

72

8

61

3

54

2

71

3

68

54

1

7

2

68

3

54

17

2

68

3

54

5

7 75

7 5 7

5

5

75

7

1

78

2

6

3

54

f = g+P

21Gregorics Tibor Mesterséges intelligencia

1.

2.

3.

4.

5.

Page 19: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

Fekete-fehér kirakó állapot gráfja

B W W _

Gregorics Tibor Mesterséges intelligencia

B _ W W B W _ W

_ W B W

_W W B

W _ B W

W W B _

W W _ B

W B _ W

_ B W W

W B W _

W _ W B

start

cél

cél

célcél

22

Page 20: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

Gregorics Tibor Mesterséges intelligencia

B W W _

B _ W W B W _ W

W _ B WW B _ W

_ B W W

W B W _

W _ W B

start

cél

Mélységi gráfkeresés

0

−1

−2

−1

−3 −4

−4

−5

f = −g

1

2

3

4

5

1

4

0

23

Page 21: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

Gregorics Tibor Mesterséges intelligencia

B W W _

B _ W W B W _ W

W _ B WW B _ W

_ B W W

W B W _

W _ W B

start0

1

2

1

3 3

4

5

Szélességi gráfkeresés

_ W B W

W W B _cél

2

4

f = g

1

2

3

4

5

1

0

2

3

4

24

Page 22: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

Gregorics Tibor Mesterséges intelligencia

B W W _

B _ W W B W _ W

W _ B WW B _ W

_ B W W

W B W _

W _ W B

start

cél

2

2

2

2

1 1

1

0

I(n)= hány fehér elem áll

a fekete után

Előre tekintő gráfkeresésf = I

1

2

3

4

5

1

0

4

25

Page 23: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

Gregorics Tibor Mesterséges intelligencia

B W W _

B _ W W B W _ W

W _ B WW B _ W

_ B W W

W B W _

start0+2

1+2

2+2

1+2

3+1 3+1

4+1

A algoritmus

_ W B W

W W B _cél

2+1

4+0

f = g + I

1

2

3

4

1

0

2

3

4

26

Page 24: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

Gregorics Tibor Mesterséges intelligencia

B W W _

B _ W W B W _ W

W _ B WW B _ W

_ B W W

start0+4

1+4

2+4

1+4

4+2 3+2

A algoritmus

_ W B W

W W B _cél

2+2

4+0

f = g + 2*I

1

2

1

0

2

3

4

27

Page 25: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

Gregorics Tibor Mesterséges intelligencia

B W W _

B _ W W B W _ W

W _ B WW B _ W

start0+4

1+4 1+3

4+2 3+1

A algoritmus

_ W B W

W W B _cél

2+2

4+0

f = g + 2*I ‒ (1 ha van BW_ vagy _BW)

1

4

1

0

2

3

4

28

Page 26: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

Gregorics Tibor Mesterséges intelligencia 29

f Alg mo G 𝛤

-g MGK 5 8 5

g SZGK 4 10 8

I Előre tekintő 5 8 5

g+I A alg 4 9 7

g+2*I A alg 4 8 6

g+2*I‒1(ha…) A alg 4 7 5

Elemzés

Ac algAc alg

Ac alg

Page 27: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

3.3. A* algoritmus hatékonysága

Hatékonyság

Memória igény Futási idő

Zárt csúcsok száma

termináláskor jól

jellemzi a kereső gráf

méretét

Kiterjesztések száma

a zárt csúcsok számához

viszonyítva

A hatékonyságot a megengedhető feladatokon vizsgáljuk, amelyeknek van

megoldása és ismert egy megengedhető heurisztikája, tehát az A* algoritmus

optimális megoldást talál hozzájuk.

Gregorics Tibor Mesterséges intelligencia 30

Page 28: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

❑ CLOSEDS ~ az S gráfkereső algoritmus által lezárt (kiterjesztett) csúcsok halmaza

❑ Rögzítsünk egy feladatot és két, X és Y gráfkereső algoritmust

Az adott feladatra nézve

a. X nem rosszabb Y-nál, ha CLOSEDX⊆CLOSEDY

b. X jobb Y-nál, ha CLOSEDX⊂CLOSEDY

❑ Ezek alapján összevethető

1. két eltérő heurisztikájú A* algoritmus ugyanazon a feladaton, azaz a két heurisztika.

2. két útkereső algoritmus, például az A* algoritmus és egy másik –szintén optimális megoldást garantáló – gráfkereső algoritmus a megengedhető problémák egy részhalmazán.

3.3.1. A memória igény vizsgálata

Gregorics Tibor Mesterséges intelligencia 31

Page 29: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

Különböző heurisztikájú A* algoritmusok

memória igényének összehasonlítása

❑ Az A1 (h1 heurisztikával) és A2 (h2 heurisztikával) A*

algoritmusok közül az A2 jobban informált, mint az A1,

ha minden nN \T csúcsra teljesül, hogy h1(n)<h2(n).

❑ Bebizonyítható, hogy a jobban informált A2 nem rosszabb a

kevésbé informált A1-nél, azaz CLOSEDA2⊆CLOSEDA1

Gregorics Tibor Mesterséges intelligencia

h1(n)<h2(n) ≦h*(n)

32

Page 30: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

Megjegyzés

❑ A gyakorlatban a bizonyított állításnál enyhébb feltételek

mellett látványosabb különbségekkel is találkozhatunk:

– Sokszor akkor is jóval több csúcsot terjeszt ki az A1, mint

A2 (CLOSEDA2⊂CLOSEDA1

), ha csak a h1 ≦ h2 teljesül,

esetleg nem is minden csúcsra.

– Példák:

• 8-as tologató: 0 ≦ W ≦ P (≦ F)

• Fekete-fehér: I ≦ M (≦ 2⋅I)

❑ Minél jobban (közelebbről) becsli (ha lehet, alulról) a

heurisztika a h*-ot, várhatóan annál kisebb lesz a memória

igénye.

Gregorics Tibor Mesterséges intelligencia 33

Page 31: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

Gregorics Tibor Mesterséges intelligencia

f = g+0 g+W g+P

6 lépéses megoldás 117 7 6

13 lépéses megoldás 32389 119 13

21 lépéses megoldás n.a. 3343 145

30 lépéses megoldás n.a. n.a. 1137

34 lépéses megoldás n.a. n.a. 3971

15-kirakó

34

Page 32: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

❑ Célunk megmutatni azt, hogy az A* algoritmus memória igénye nem rossz más, hasonló eredményű gráfkereső algoritmusok memória igényéhez képest.

Különböző gráfkereső algoritmusok

memória igényének összehasonlítása

Gregorics Tibor Mesterséges intelligencia 35

❑ Megengedhetőnek nevezzük azt az gráfkereső algoritmust, amely megengedhető heurisztikájú útkeresési problémákra optimális megoldást talál, ha van megoldás.

❑ Példák:

– EGK : f(n)=g(n)+0

– A (A*) algoritmus : f(n)=g(n)+h(n)

– A** algoritmus: f(n)=maxmstart→n(g(m)+h(m)) és a célcsúcs előnyben

Page 33: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

Bizonyítható eredmények

❑ A* algoritmus lehet rosszabb más megengedhető algoritmusnál

egy adott megengedhető feladaton. De

• Bármelyik megengedhető algoritmus is lehet rosszabb más

megengedhető algoritmusnál egy adott megengedhető

feladaton.

• A* soha nem rosszabb a többi megengedhető algoritmusnál a

monoton megszorításos heurisztikájú megengedhető

feladatokon.

• Az A*-nál nincs jobb megengedhető algoritmus az olyan

feladatokon, ahol van olyan optimális megoldási út,

amelynek csúcsaira a célcsúcs kivételével h<h* áll fenn).

Gregorics Tibor Mesterséges intelligencia 36

Page 34: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

3.3.2. A futási idő elemzése

❑ Zárt csúcsok száma: k = ∣CLOSED∣

❑ Alsókorlát: k

– Egy monoton megszorításos heurisztika mellett egy csúcs

legfeljebb csak egyszer terjesztődik ki,

– habár ettől még a kiterjesztett csúcsok száma igen sok is

lehet (lásd egyenletes keresés)

❑ Felsőkorlát: 2k-1

‒ lásd. Martelli példáját

Gregorics Tibor Mesterséges intelligencia 37

Page 35: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

Megjegyzés

❑ Másik heurisztikával ugyanazon a feladaton természetesen

javítható a kiterjesztések száma, bár nem biztos, hogy ez

minden esetben tényleges javulás lesz, hiszen másik

heurisztika esetén a k értéke is változhat.

❑ A kiterjesztések száma ugyanis a kiterjesztett (zárt) csúcsok

számához viszonyított szám

– h1 heurisztika mellett k1 darab zárt csúcs, és 2k1-1

kiterjesztés

– h2 heurisztika mellett k2 darab zárt csúcs, és k2

kiterjesztés

– Mégis lehet, hogy 2k1-1 < k2, ha k1 << k2.

Gregorics Tibor Mesterséges intelligencia 38

Page 36: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

Martelli példája

s

t n n nn 1234

11 9 6 1

3 4

6

1 1 110 137300

0

k=5

Gregorics Tibor Mesterséges intelligencia

N = {ni i=0..k} ahol s=n0, t=nk

A = {(ni,nj) 0i<j<k}{(nk-1,t)}

c(ni,nj) = 2k−2−i − 2k−1−j + j−i (0i<j<k)

h(ni) = c(s,nk-1) − c(s,ni) + k−1−i (0<i<k), h(s) = h(t) = 0

c(nk-1,t) = h(n1) − k +2

Az n1,...,nk-1

csúcsokba rendre

20,21,...,2k-2

különböző út vezet.

Így elvileg 2k-1

kiterjesztés

történhet. És itt

ennyi is történik.

Page 37: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

Gregorics Tibor Mesterséges intelligencia

s nil,0,0 - - - - - - - -

n1- s, 1,14 s, 1,14 s,1,14 s, 1,14 s, 1,14 s, 1,14 s, 1,14 s, 1,14

n2- s, 6,13 s, 6,13 s, 6, 13 s, 6, 13 - - - -

n3- s, 9,12 s, 9,12 - - n2,7,10 n2,7,10 - -

n4- s, 11,11 - n3,10,10 - n2,9,9 - n2,8,8 -

t - - n4,21,21 n4,21,21 n4,20,20 n4,20,20 n4,19,19 n4,19,19 n4,18,18

f

Működési grafikon

s n4 n3 n4 n2 n4 n3 n4 n1

0

11 1210

13

9 108

14

,g,f

OPEN

Page 38: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

Gregorics Tibor Mesterséges intelligencia

s - - - - - - - -

n1- - - - - - - -

n2n1,2,9 n1,2,9 n1,2,9 n1,2,9 - - - -

n3n1,5,8 n1,5,8 - - n1,3,6 n1,3,6 - -

n4n1,7,7 - n3,6,6 - n2,5,5 - n3,4,4 -

t n4,18,18 n4,17,17 n4,17,17 n4,16,16 n4,16,16 n4,15,15 n4,15,15 n4,14,14

n4 n3 n4 n2 n4 n3 n4 t

Működési grafikon

14

78

6

9

56

4

,g,f

OPEN

Page 39: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

Gregorics Tibor Mesterséges intelligencia

Árkon belüli kiterjesztések száma

az A* algoritmusnál

küszöb

árok

s n4 n3 n4 n2 n4 n3 n4 n1 n4 n3 n4 n2 n4 n3 n4 t 𝛤

f

Page 40: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

Gregorics Tibor Mesterséges intelligencia

Csökkentsük a kiterjesztések számát

s n4 n3 n4 n2 n4 n3 n4 n1 n4 n3 n4 n2 n4 n3 n4 t 𝛤

f

13 14

OPEN g f

t : 18 18

n2: 2 9

n3: 5 8

n4: 7 7

OPEN g f

t : 16 16

n3: 3 6

n4: 5 5

OPEN g f

t : 21 21

n1: 1 14

n3: 7 10

n4: 9 9

14

f(n)<13f(n)<14

áro

k áro

k

Page 41: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

A probléma oka és csillapítása

❑ Egy csúcs – még akár egy árkon belül is – többször kiterjesztődhet.

❑ Használjunk az árkokban egy másik, egy másodlagos (belső)

kiértékelő függvényt! Bizonyítható, hogy ettől nem változik meg

az egy árokban kiterjesztett csúcsok halmaza, csak a csúcsok árkon

belüli kiterjesztési sorrendje lesz más, ennél fogva pedig a

küszöbcsúcsok, azok sorrendje és értékei változatlanok maradnak.

Ennél a belső kiértékelő függvény csak a futási időt (kiterjesztések

számát) befolyásolja.

Gregorics Tibor Mesterséges intelligencia

f

𝛤

start n2 nini+1

i-dik árok

……… …

Fi

F2

F1

Fi+1

46

Page 42: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

B algoritmus

❑ Martelli javasolta belső kiértékelő függvénynek a g

költség függvényt.

❑ A B algoritmust az A algoritmusból kapjuk úgy, hogy

bevezetjük az F aktuális küszöbértéket, majd

– az 1. lépést kiegészítjük az F := f(s) értékadással,

– a 4. lépést pedig helyettesítjük az

if minf(OPEN)<F

then n := ming(mOPEN f(m)<F)

else n := minf (OPEN); F := f(n)

endif elágazással.

Gregorics Tibor Mesterséges intelligencia 47

Page 43: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

B algoritmus futási ideje

❑ A B algoritmus ugyanúgy működik, mint az A*, azzal a kivétellel, hogy egy árokhoz tartozó csúcsot csak egyszer terjeszt ki.

❑ Futási idő elemzése:

• Legrosszabb esetben

− minden zárt csúcs először küszöbcsúcsként terjesztődik ki. (Csökkenő kiértékelő függvény mellett egy csúcs csak egyszer, a legelső kiterjesztésekor lehet küszöb.)

− Az i-dik árok legfeljebb az összes addigi i‒1 darab küszöbcsúcsot tartalmazhatja (a start csúcs nélkül).

• Így az összes kiterjesztések száma legfeljebb ½⋅k2

Gregorics Tibor Mesterséges intelligencia 48

Page 44: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

Heurisztika szerepe

❑ Milyen a jó heurisztika?

– megengedhető: h(n) h*(n)

• Bár nincs mindig szükség optimális megoldásra.

– jól informált: h(n) ~ h*(n)

– monoton megszorítás: h(n)‒ h (m) c(n,m)

• Ilyenkor nem érdemes B algoritmust használni

❑ Változó heurisztikák:

– f=g+⋅h ahol d

– B’ algoritmus

Gregorics Tibor Mesterséges intelligencia 49

Page 45: Mesterséges Intelligencia Alapjai I. · 2019-11-13 · Gráfkeresésfüggvényei : N →N szülőre visszamutató pointer – (m) = m csúcs már ismert szülője, (start) = nil

B’ algoritmus

• A h megengedhető marad

• A h nem csökken

• A mononton megszorításos élek száma nő

if h(n)<minm(n) (c(n,m)+h(m))

then h(n):= minm(n) (c(n,m)+h(m))

else for m(n)-re loop

if h(n)- h(m)>c(n,m) then h(m) := h(n)- c(n,m)

endloop

Gregorics Tibor Mesterséges intelligencia 50