Visszalépéses keresés (Backtrack)

42
Visszalépése s keresés (Backtrack) ELTE – IK – PSZT Istenes Zoltán 2006 március

description

Visszalépéses keresés (Backtrack). ELTE – IK – PSZT Istenes Zoltán 2006 március. Visszalépéses keresés (G.T.). globális munkaterülete: út a startcsúcsból az aktuális csúcsba (ezen kívül a még ki nem próbált élek nyilvántartása) keresés szabályai: - PowerPoint PPT Presentation

Transcript of Visszalépéses keresés (Backtrack)

Page 1: Visszalépéses keresés (Backtrack)

Visszalépéses keresés

(Backtrack)

ELTE – IK – PSZT

Istenes Zoltán

2006 március

Page 2: Visszalépéses keresés (Backtrack)

2

Visszalépéses keresés (G.T.)• globális munkaterülete:

– út a startcsúcsból az aktuális csúcsba (ezen kívül a még ki nem próbált élek nyilvántartása)

• keresés szabályai: – a nyilvántartott út végéhez egy új (ki nem próbált) él hozzáfűzése,

vagy az 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, azaz végpontjából nem vezet tovább út – zsákutca torkolat, azaz végpontjából kivezető utak nem vezettek

célba – kör, azaz végpontja megegyezik az út egy megelőző csúcsával – mélységi korlátnál hosszabb

• terminálási feltétel:– az aktuális út végén megjelenik egy célcsúcs, vagy ha a

startcsúcsból vissza akarunk lépni • sorrendi heurisztika, vágó heurisztika

Page 3: Visszalépéses keresés (Backtrack)

3

BB_WW

BW_BW

_WBBW

W_BBW

WBB_W

WBBW_

BWWB_

B_WWB

BWW_B

_BWWB

WB_WB

WW_BB

BBWW_

BBW_W

B_WBW

_BWBW

WB_BW

WBWB_

WBW_B

W_WBB

_WWBB

_BBWW

BWB_W

B_BWW

BWBW_

BW_WB

_WBWB

W_BWB

WWB_B

WWBB_

Adott egy öt egység hosszú sín, amelyben két fekete (B), két fehér (W) négyzet alakú lapocska, és egy üres hely (_) van. Egy lapocskát a szomszédos üres helyre lehet csúsztatni, vagy egy szomszédos lapocskát átugorva az üres helyre lehet helyezni. A cél egy olyan állás elérése, ahol a fehér lapocskák mind megelőzik a fekete lapocskákat. Kezdetben a BBWW_ elrendezés adott.

Page 4: Visszalépéses keresés (Backtrack)

4

• Gradiens módszer

• A WW_BB állapothoz képest hány pozíció (lap+üres) van a helyén

• Pld: f(B_WBW)=1, f(BW_BW)=3

Page 5: Visszalépéses keresés (Backtrack)

5

BB_WW

BW_BW

_WBBW

W_BBW

WBB_W

WBBW_

BWWB_

B_WWB

BWW_B

_BWWB

WB_WB

WW_BB

BBWW_

BBW_W

B_WBW

_BWBW

WB_BW

WBWB_

WBW_B

W_WBB

_WWBB

_BBWW

BWB_W

B_BWW

BWBW_

BW_WB

_WBWB

W_BWB

WWB_B

WWBB_

1

12

3

00

0 0

1

131

11

22

3 3

2 1

2

3 3

3

1

1

2

5

2 2

„nem tud feljebb menni…”„nem tud feljebb menni…”G

radiens m

ódszer

Page 6: Visszalépéses keresés (Backtrack)

6

BB_WW

BW_BW

_WBBW

W_BBW

WBB_W

WBBW_

BWWB_

B_WWB

BWW_B

_BWWB

WB_WB

WW_BB

BBWW_

BBW_W

B_WBW

_BWBW

WB_BW

WBWB_

WBW_B

W_WBB

_WWBB

_BBWW

BWB_W

B_BWW

BWBW_

BW_WB

_WBWB

W_BWB

WWB_B

WWBB_

1

12

3

00

0 0

1

131

11

22

3 3

2 3

2

3 3

3

1

1

2

5

2 2

1 23

45

6

7

8

9

10

11

körfigyelés…körfigyelés…

Visszalépéses

keresés

Visszalépés nélkül…Visszalépés nélkül…

„ugyan az” mint a hegymászó módszer

„ugyan az” mint a hegymászó módszer

Page 7: Visszalépéses keresés (Backtrack)

7

• Megtalált út hossza : 11

• Mi történik ha rövidebb, pld. 2 hosszú utat szeretnénk találni?

• Visszalépéses keresés : úthossz korlát = 2

Page 8: Visszalépéses keresés (Backtrack)

8

BB_WW

BBWW_

BBW_W0

0

1 2

aktuális csúcsaktuális csúcs

bejárási sorrend (lista)bejárási sorrend (lista)start csúcs

start csúcs

célfüggvény

célfüggvény

gyermek csúcsokgyermek csúcsok

1

a cél függvény miatta cél függvény miatt

1

Page 9: Visszalépéses keresés (Backtrack)

9

BBW_W BB_WW

BBWW_

BBW_W

_BBWW

B_BWW00

0 0

1

1 2

1

2

3

sorrendi heurisztika miattsorrendi heurisztika miatt

Page 10: Visszalépéses keresés (Backtrack)

10

BBW_W BB_WW

BBWW_

BBW_W

_BBWW

B_BWW00

0 0

1

1 2

1

2

3

útvonal hossz korlátútvonal hossz korlát

visszalépésvisszalépés

2,4

_BBWW

BB_WW

Page 11: Visszalépéses keresés (Backtrack)

11

BBW_W BB_WW

BBWW_

BBW_W

_BBWW

B_BWW00

0 0

1

1

2

1

2,4

3

sorrendi heurisztika miatt,a következő

sorrendi heurisztika miatt,a következő

5

Page 12: Visszalépéses keresés (Backtrack)

12

BBW_W BB_WW

BBWW_

BBW_W

_BBWW

B_BWW00

0 0

1

1

1 3

5

útvonal hossz korlátútvonal hossz korlát

visszalépésvisszalépés

2,42,4,6 2

Page 13: Visszalépéses keresés (Backtrack)

13

BBW_W BB_WW

BBWW_

BBW_W

_BBWW

B_BWW00

0 0

1

1

1 3

52,42,4,6,87

nincs több választható útnincs több választható út

visszalépésvisszalépés

1,9

Page 14: Visszalépéses keresés (Backtrack)

14

BBW_W BB_WW

BBWW_

BBW_W

_BBWW

B_BWW00

0 0

1

1

1 3

52,42,4,6,87,10

1,9

Page 15: Visszalépéses keresés (Backtrack)

15

BBW_W BB_WW

BBWW_

BBW_W

_BBWW

B_BWW00

0 0

1

1

1 3

52,42,4,6,87,10

1,9

B_WBW1

2

11

Page 16: Visszalépéses keresés (Backtrack)

16

BBW_W BB_WW

BBWW_

BBW_W

_BBWW

B_BWW00

0 0

1

1

1 3

52,42,4,6,87,10,12

1,9

B_WBW1 11

Page 17: Visszalépéses keresés (Backtrack)

17

BBW_W BB_WW

BBWW_

BBW_W

_BBWW

B_BWW00

0 0

1

1

1 3

52,42,4,6,8,137,10,12

1,9

B_WBW1 11

2

Page 18: Visszalépéses keresés (Backtrack)

18

BBW_W BB_WW

BBWW_

BBW_W

_BBWW

B_BWW00

0 0

1

1

1 3

52,42,4,6,8,137,10,12,14

1,9

B_WBW1 11

Page 19: Visszalépéses keresés (Backtrack)

19

startcsúcsból visszalépés

startcsúcsból visszalépés

BBW_W BB_WW

BBWW_

BBW_W

_BBWW

B_BWW00

0 0

1

1 3

52,42,4,6,8,137,10,12,14

1,9,15

B_WBW1 11

nem talált megoldást

nem talált megoldást

Page 20: Visszalépéses keresés (Backtrack)

20

BB_WW

BW_BW

_WBBW

W_BBW

WBB_W

WBBW_

BWWB_

B_WWB

BWW_B

_BWWB

WB_WB

WW_BB

BBWW_

BBW_W

B_WBW

_BWBW

WB_BW

WBWB_

WBW_B

W_WBB

_WWBB

_BBWW

BWB_W

B_BWW

BWBW_

BW_WB

_WBWB

W_BWB

WWB_B

WWBB_

1

12

3

00

0 0

1

131

11

22

3 3

2 1

2

3 3

3

1

1

2

5

2 2

Visszalépéses

keresés

1

2

3

5

4

6

9,11,13,15,18

8,16

7

14,17

10

12

Úthossz korlát :

9

Page 21: Visszalépéses keresés (Backtrack)

21

BB_WW

BW_BW

_WBBW

W_BBW

WBB_W

WBBW_

BWWB_

B_WWB

BWW_B

_BWWB

WB_WB

WW_BB

BBWW_

BBW_W

B_WBW

_BWBW

WB_BW

WBWB_

WBW_B

W_WBB

_WWBB

_BBWW

BWB_W

B_BWW

BWBW_

BW_WB

_WBWB

W_BWB

WWB_B

WWBB_

1

23

4

00

0 0

0

111

22

22

2 2

3 3

3

4 4

4

1

2

3

4

2 2

Visszalépéses keresés

, úthossz korlát : 7

vágó heurisztika : nem lépünk rosszabbra

12,26

7,9

6,10,14,18 5,19,29,34

4,30,33

3,31

2,32

1

22

21,23,25,27

15,17

11,13

8

20,2816

24

Page 22: Visszalépéses keresés (Backtrack)

22

4 királynő – visszalépéses kereséssel

Page 23: Visszalépéses keresés (Backtrack)

2323

HeurisztikákHeurisztikákaz n-királynő problémára 1.az n-királynő problémára 1.

Neminformált:

Diagonális és ptl-psheurisztika

* * * **

* * ** * * ** * * *

33 43 4 33 44 34 3 4

44

3

Diagonálisheurisztika:

33 43 4 33 44 34 3 4

44

3

*

*

22 visszalépés 2 visszalépés 0 visszalépés

* * * * * *

3. reprezentáció mellett

Készítette : Gregorics Tibor

Page 24: Visszalépéses keresés (Backtrack)

2424

HeurisztikákHeurisztikákaz n-királynő problémára 2.az n-királynő problémára 2.

Neminformált:

33 43 4 33 44 34 3 4

Diagonálisheurisztika:

44

3

**

**

4 visszalépés 0 visszalépés

4. reprezentáció mellett

Készítette : Gregorics Tibor

Page 25: Visszalépéses keresés (Backtrack)

25

Adott néhány láncdarab, amelyekből hosszabb láncdarabok állíthatók elő két lánc összefűzésével. A láncdarabok hosszát a benne szereplő láncszemek száma adja meg. Egy összefűzött lánc hossza a két láncdarab hosszának összege. Adott kezdőállásból indulva hozzunk létre olyan célállást, ahol 3 darab, legalább 10 hosszúságú lánc van. A probléma egy közbeeső állását két sorozattal reprezentáljuk: az első („kész”) sorozat a legalább tíz, a második („maradék”) sorozat a tíznél rövidebb láncok hosszait tartalmazza. Például a <><8,7,2,9,2,4> lehet egy kezdőállás, a <17>,<9,2,4> egy közbeeső, a <10,11,11><> pedig egy célállás.

Szemléltesse a visszalépéses keresés működését ezen a problémán, a <><8,7,2,9,2,4> kezdőállapotból indulva. Minden lépésben a maradék láncok közül válasszunk ki kettőt. Ha az új láncdarab hossza elég nagy, akkor az a kész láncok közé kerül, ellenkező esetben a maradék láncok között ez lesz az első. Az összefűzendő maradék láncpár kiválasztásánál a sorozatban elfoglalt legkisebb pozíciójú láncokat (lexikografikus értelemben) részesítsük előnyben: tehát először az első láncdarabot próbáljuk összefűzni a másodikkal, és ha ez nem vezet eredményre, akkor az elsőt a harmadikkal és így tovább. A visszalépéses keresés során lépjünk vissza az olyan állásból, ahol a maradék láncdarabok összhosszúsága nem elég a még hiányzó tíznél hosszabb láncok kialakításához.

Page 26: Visszalépéses keresés (Backtrack)

26

<><8,7,2,9,2,4>

<10><9,9,4><10,16><2,4>

<10><7,9,2,4><15><2,9,2,4>

<10,18><4> <10,13><9>

<10,11><9,2>

<10,11,11><>

6 túl rövid

17 túl rövid

9 túl rövid 4 túl rövid célállapot

kezdőállapot

nincs több

15← 8+7

Page 27: Visszalépéses keresés (Backtrack)

27

Adjon heurisztikát az összefűzendő láncdarabok kiválasztására!Adjon heurisztikát az összefűzendő láncdarabok kiválasztására!

A láncdarabokat rendezzük hosszúság szerint csökkenő sorrendbe. A láncdarabokat rendezzük hosszúság szerint csökkenő sorrendbe.

<><9,8,7,4,2,2> kezdőállapot

<17><7,4,2,2> <16><8,4,2,2> <13><8,7,2,2> <11><8,7,4,2>

<11,15><4,2,2> <11,12><7,2> <11,10><7,4>

<11,10,11><>

célállapot

Page 28: Visszalépéses keresés (Backtrack)

28

A leghosszabb láncdarabhoz a sorozatban elfoglalt legnagyobb pozíciójú láncokat (lexikografikus értelemben) részesítsük előnyben: tehát először az első láncdarabot próbáljuk összefűzni az utolsóval, és ha ez nem vezet eredményre, akkor az elsőt az utolsó előttivel és így tovább

A leghosszabb láncdarabhoz a sorozatban elfoglalt legnagyobb pozíciójú láncokat (lexikografikus értelemben) részesítsük előnyben: tehát először az első láncdarabot próbáljuk összefűzni az utolsóval, és ha ez nem vezet eredményre, akkor az elsőt az utolsó előttivel és így tovább

<><9,8,7,4,2,2>kezdőállapot

<11><8,7,4,2>

<11,10><7,4>

<11,10,11><> célállapot

Page 29: Visszalépéses keresés (Backtrack)

2929

HeurisztikákHeurisztikáka 8-as játékraa 8-as játékra

Rossz helyen levő cellák száma: Rossz helyen levő cellák száma:

– W(a)= W(a)= i,ji,j((aai,ji,j cél céli,ji,j)) Rossz helyen levő cellák minimális Rossz helyen levő cellák minimális

távolsága a célbeli helyüktől: távolsága a célbeli helyüktől:

– P(a)= P(a)= i,ji,j ((i,j), célhely(ai,j), célhely(ai,j i,j ))

Készítette : Gregorics Tibor

Page 30: Visszalépéses keresés (Backtrack)

3030

2

71

86

3

54

21

8

76

3

54

2

71

8

6

3

54

2

71

86

3

54

2

1

8

76

3

54

2

71

68

3

54

2

71

8

46

3

52

71

8

64

3

5

2

7

8

61

3

54

71

2

68

3

54

2

71

8

64

53

27

8

61

3

54

2

71

8

64

35

72

8

61

3

54

2

71

3

68

54

1

7

2

68

3

54

2

71

64

8

53

2

67

81

3

54

2

71

84

3

65

8

72

61

3

54

2

71

3

68

4

5

17

2

68

3

54

4

5 53

3 3 4

3 4 2 4

1

0 21

78

2

6

3

54

W Rossz helyen levőRossz helyen levőcellák számacellák száma

Készítette : Gregorics Tibor

Page 31: Visszalépéses keresés (Backtrack)

3131

2

71

86

3

54

21

8

76

3

54

2

71

8

6

3

54

2

71

86

3

54

2

1

8

76

3

54

2

71

68

3

54

2

71

8

46

3

52

71

8

64

3

5

2

7

8

61

3

54

71

2

68

3

54

2

71

8

64

53

27

8

61

3

54

2

71

8

64

35

72

8

61

3

54

2

71

3

68

54

1

7

2

68

3

54

2

71

64

8

53

2

67

81

3

54

2

71

84

3

65

8

72

61

3

54

2

71

3

68

4

5

17

2

68

3

54

5

6 64

5 3 5

2

1

20

4

1

78

2

6

3

54

P Rossz helyen levő cellákRossz helyen levő cellákminimális távolságaminimális távolságaa célbeli helyüktőla célbeli helyüktől

Készítette : Gregorics Tibor

Page 32: Visszalépéses keresés (Backtrack)

32

Példák

SEND+MORE-----MONEY

SEND+MORE-----MONEY

E,D,M,N,O,R,S,Y=? 9567+1085-----10652

E,D,M,N,O,R,S,Y mind különböző [0..9]S<>0, M<>0

Hogyan lehet egy adott összeget kifizetni, ha adott értékű és

darabszámú pénzzel rendelkezünk?

Hogyan lehet egy adott összeget kifizetni, ha adott értékű és

darabszámú pénzzel rendelkezünk?

Rengeteg (logikai) „próbálgatós”

játék/feladvány…

Page 33: Visszalépéses keresés (Backtrack)

33

Linkek• http://www.csee.umbc.edu/www/courses/graduate/7

71/fall97/hw/hw5.shtml

bűvös négyzetek, SEND+MORE=MONEY• http://ai-depot.com/Features/Tutorials.html

„MI lerakat”…• http://www.astrolog.org/labyrnth.htm

Daedalus labirintus generálás, megoldás• http://www.cs.bu.edu/teaching/alg/maze/

labirintus megoldás, online…• http://www.cs.ecu.edu/~karl/astarte/failSeq/Backtrac

kOverview.html

Overview of Backtracking• http://www.inf.unideb.hu/~varteres/mi/part3/

backtrack.htmVárterész Magdolna MI backtrack anyaga

• http://www-courses.cs.uiuc.edu/~cs440/notes/lec6.pdfConstraint Satisfaction Problems

• http://home.wlu.edu/~lambertk/classes/112/Lectures/22-Stacks3.pptbacktrack, labirintus, királynők, …

• http://gaia.ecs.csus.edu/~wang/backtrack/maze/maze1/mazetraversal.htmllabirintus, Java, online

• http://www.siteexperts.com/tips/functions/ts20/page1.aspBacktrack Recursion and the Mysterious Maze

• http://www.codexonline.hu/CodeX7/alap/vegyes/HorvathRichard/MIBev3.htm

• http://www.codexonline.hu/CodeX8/alap/vegyes/HorvathRichard/MIBev4.htmHorváth Richárd anyaga backtrack, keresések, …

Page 34: Visszalépéses keresés (Backtrack)

34

Köszönöm a figyelmet

Ha valami nem volt világos, kérem kérdezzék meg

Page 35: Visszalépéses keresés (Backtrack)

35

Kancsó (vödör) töltögetés

• 3 kancsó : 5,3,2 literes

• Kezdetben :5 literes tele, a többi üres

• Célállapot :a 2 literesben 1 liter van.

• …

Page 36: Visszalépéses keresés (Backtrack)

36

5/5,0/3,0/25/5,0/3,0/2

2/5,3/3,0/22/5,3/3,0/2 3/5,0/3,2/23/5,0/3,2/2

0/5,3/3,2/20/5,3/3,2/2 5/5,0/3,0/25/5,0/3,0/22/5,1/3,2/22/5,1/3,2/2 3/5,2/3,0/23/5,2/3,0/2

0/5,3/3,2/20/5,3/3,2/2 3/5,0/3,2/23/5,0/3,2/2 4/5,1/3,0/24/5,1/3,0/22/5,3/3,0/22/5,3/3,0/21/5,2/3,2/21/5,2/3,2/2 5/5,0/3,0/25/5,0/3,0/2

3/5,0/3,2/23/5,0/3,2/22/5,3/3,0/22/5,3/3,0/20/5,3/3,2/20/5,3/3,2/2 5/5,0/3,0/25/5,0/3,0/23/5,2/3,0/23/5,2/3,0/22/5,1/3,2/22/5,1/3,2/2

4/5,0/3,1/24/5,0/3,1/21/5,3/3,1/21/5,3/3,1/2

Page 37: Visszalépéses keresés (Backtrack)

37

5/5,0/3,0/25/5,0/3,0/2

2/5,3/3,0/22/5,3/3,0/2 3/5,0/3,2/23/5,0/3,2/2

0/5,3/3,2/20/5,3/3,2/2

2/5,1/3,2/22/5,1/3,2/2 3/5,2/3,0/23/5,2/3,0/2

4/5,1/3,0/24/5,1/3,0/2 1/5,2/3,2/21/5,2/3,2/2

4/5,0/3,1/24/5,0/3,1/2 1/5,3/3,1/21/5,3/3,1/2

Page 38: Visszalépéses keresés (Backtrack)

38

5/5,0/3,0/25/5,0/3,0/2

2/5,3/3,0/22/5,3/3,0/2 3/5,0/3,2/23/5,0/3,2/2

0/5,3/3,2/20/5,3/3,2/2

2/5,1/3,2/22/5,1/3,2/2 3/5,2/3,0/23/5,2/3,0/2

4/5,1/3,0/24/5,1/3,0/2 1/5,2/3,2/21/5,2/3,2/2

4/5,0/3,1/24/5,0/3,1/2 1/5,3/3,1/21/5,3/3,1/2

1

2

3

4

5

6

Page 39: Visszalépéses keresés (Backtrack)

39

5/5,0/3,0/25/5,0/3,0/2

2/5,3/3,0/22/5,3/3,0/2 3/5,0/3,2/23/5,0/3,2/2

0/5,3/3,2/20/5,3/3,2/2

2/5,1/3,2/22/5,1/3,2/2 3/5,2/3,0/23/5,2/3,0/2

4/5,1/3,0/24/5,1/3,0/2 1/5,2/3,2/21/5,2/3,2/2

4/5,0/3,1/24/5,0/3,1/2 1/5,3/3,1/21/5,3/3,1/2

1

7

6

5

4

3

2

Előre…

Page 40: Visszalépéses keresés (Backtrack)

40

5/5,0/3,0/25/5,0/3,0/2

2/5,3/3,0/22/5,3/3,0/2 3/5,0/3,2/23/5,0/3,2/2

0/5,3/3,2/20/5,3/3,2/2

2/5,1/3,2/22/5,1/3,2/2 3/5,2/3,0/23/5,2/3,0/2

4/5,1/3,0/24/5,1/3,0/2 1/5,2/3,2/21/5,2/3,2/2

4/5,0/3,1/24/5,0/3,1/2 1/5,3/3,1/21/5,3/3,1/2

1

7

6,8

5,9

4,10

3,11

2,12

Vissza…

Page 41: Visszalépéses keresés (Backtrack)

41

5/5,0/3,0/25/5,0/3,0/2

2/5,3/3,0/22/5,3/3,0/2 3/5,0/3,2/23/5,0/3,2/2

0/5,3/3,2/20/5,3/3,2/2

2/5,1/3,2/22/5,1/3,2/2 3/5,2/3,0/23/5,2/3,0/2

4/5,1/3,0/24/5,1/3,0/2 1/5,2/3,2/21/5,2/3,2/2

4/5,0/3,1/24/5,0/3,1/2 1/5,3/3,1/21/5,3/3,1/2

1

7

6,8,17

5,9,16

4,10,15

3,11,14

2,12

Újra előre („korlát”!)…

13

Page 42: Visszalépéses keresés (Backtrack)

42

5/5,0/3,0/25/5,0/3,0/2

2/5,3/3,0/22/5,3/3,0/2 3/5,0/3,2/23/5,0/3,2/2

0/5,3/3,2/20/5,3/3,2/2

2/5,1/3,2/22/5,1/3,2/2 3/5,2/3,0/23/5,2/3,0/2

4/5,1/3,0/24/5,1/3,0/2 1/5,2/3,2/21/5,2/3,2/2

4/5,0/3,1/24/5,0/3,1/2 1/5,3/3,1/21/5,3/3,1/2

1

7

6,8,17

5,9,16,18

4,10,15,19

3,11,14,20

2,12

Újra vissza…

13,21