Visszalépéses keresés (Backtrack)
description
Transcript of Visszalépéses keresés (Backtrack)
Visszalépéses keresés
(Backtrack)
ELTE – IK – PSZT
Istenes Zoltán
2006 március
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
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.
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
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
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
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
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
9
BBW_W BB_WW
BBWW_
BBW_W
_BBWW
B_BWW00
0 0
1
1 2
1
2
3
sorrendi heurisztika miattsorrendi heurisztika miatt
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
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
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
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
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
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
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
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
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
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
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
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
22
4 királynő – visszalépéses kereséssel
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
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
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.
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
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
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
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
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
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
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…
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, …
34
Köszönöm a figyelmet
Ha valami nem volt világos, kérem kérdezzék meg
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.
• …
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
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
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
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…
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…
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
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