ADAT := kezdeti érték while terminálási feltétel(ADAT) loop SELECT SZ FROM alkalmazható szabályok ADAT := SZ(ADAT) endloop VL1 Recursive procedure VL1(akt) return megoldás 1. if cél(akt) then return(nil)

Download Report

Transcript ADAT := kezdeti érték while terminálási feltétel(ADAT) loop SELECT SZ FROM alkalmazható szabályok ADAT := SZ(ADAT) endloop VL1 Recursive procedure VL1(akt) return megoldás 1. if cél(akt) then return(nil)

ADAT := kezdeti érték
while terminálási feltétel(ADAT) loop
SELECT SZ FROM alkalmazható szabályok
ADAT := SZ(ADAT)
endloop
VL1
Recursive procedure VL1(akt) return megoldás
1.
if cél(akt) then return(nil) endif
2.
for new  (akt) −(akt) loop
3.
megoldás := VL1(new)
4.
if megoldás  hiba then
5.
return(fűz((akt,new),megoldás) endif
6.
endloop
7.
return(hiba)
end
Gregorics Tibor
Mesterséges intelligencia
1
0.
8.
n-királynő probléma
3. reprezentáció
1.
3.
7.
2.
♛ 

 

♛  

 


♛  
 ♛

 
Statikus
nyomkövetés
9.
 ♛

 

  ♛

 



4. ♛
  ♛
6.   
 ♛   10.
  ♛

 
 ♛
♛  

 
  ♛
♛  
 
 

5. ♛
  ♛
 ♛   11.
  ♛
♛  
 
 ♛
♛  
  ♛
 
  ♛
♛  
 ♛

♛ 
  ♛
♛  
 ♛
 ♛
♛  
  ♛
♛ 


♛ 

12 lépés
4 visszalépés
Gregorics Tibor
12.
Mesterséges intelligencia
  ♛
♛ 

 
2
n-királynő probléma
3. reprezentáció
0. lépés
1. lépés
2. lépés
Dinamikus nyomkövetés
3. lépés
4. lépés
5. lépés
6. lépés
7. lépés
…
♛   ♛   ♛  



 
 
 


 
 
♛  
 ♛

 
♛  

 


♛  

 


♛  




♛   ♛   ♛  
  ♛   ♛   ♛
     
     
♛  
  ♛
♛ 

Gregorics Tibor
♛  

 


12 lépés
4 visszalépés
Mesterséges intelligencia
3
n-királynő probléma
Statikus
2. reprezentáció
1. 3. 5. 15. 33.
34.
♛
2.
♛
♛
7.
♛
♛
♛
♛
9.
♛
♛
♛
♛
♛
11.
♛
♛
♛
20.
♛
48 lépés
♛
22 visszalépés ♛♛
Gregorics Tibor
♛
35.
37.
28. 30. 32.
6.8.10.12.14. 16.18. 36.
4.
♛
♛
13.♛
♛♛
♛
22.
♛
♛
♛
♛
♛
♛
♛
♛
♛
♛
♛
♛
♛
♛
♛
31.
♛
♛
26.
42.
♛
♛
♛
♛
♛
21. 23.25.
24.
♛
♛
40.
♛
♛
29.
♛
39.
41.
38.
♛
♛ ♛
17.19. 27.
♛
0.
nyomkövetés
44.
♛
♛
♛
43. ♛
45.♛
47.
46.
♛
♛
♛
♛
♛
48.
♛
♛
♛
Mesterséges intelligencia
♛
♛
4
Dinamikus nyomkövetés
n-királynő probléma
2. reprezentáció
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
…
♛
♛
♛
♛
♛
♛
♛
♛
Ennél a problémánál elég csak az
aktuális csúcsot tárolni, hiszen ez
minden információt hordoz a teljes
aktuális útról.
Gregorics Tibor
♛
♛
♛
♛
♛
♛
48 lépés
22 visszalépés
♛
♛
♛
♛
Mesterséges intelligencia
5
Sorrendi heurisztikák
az n-királynő problémára
A mezőkhöz rendelt értékek alapján rendezzük sorba a mezőket.




Diagonális:
4 3 3 4
– A mezőn áthaladó hosszabb átló hossza
3 4 4 3
3 4 4 3
Diagonális + páratlan-páros: másodlagos elv
– Másodlagos elv: azon mezők között, amelyeknél 4 3 3 4
az elsődleges elv nem dönt, a páratlan sorokban balról jobbra,
a páros sorokban jobbról balra legyen a sorrend.
Szabad (ütésben nem álló) mezők száma:
– A mezőre helyezés után maradt szabad mezők száma
Szabad mezők számának csökkenése:
– A mezőre helyezés előtti és azutáni szabad mezők számának
különbsége.
Gregorics Tibor
Mesterséges intelligencia
6
Heurisztikák az n-királynő problémára
Diagonális
4 ♛
3 3
Diagonális és ptl-ps
4
3 4 4 ♛
3
♛
3 4 4 3
♛
4 ♛
3 ♛
3 4
4 ♛
3 3
3
4
4
4 ♛
3
3 4 4 3
♛
4 3 ♛
3 4
Diag
Diag + ptl-ps
2. repr.
Nincs
Diag
2. repr. 22/48
2/8
0/4
n=4
22/48
2/8
3. repr. 4/12
0/4
0/4
n=5
0/5
2/9
n=6
25/56
3/12
n = 10
92/194
103/216
n=4
Nincs
Gregorics Tibor
Mesterséges intelligencia
7
n-királynő probléma
3. reprezentáció
A k-adik királynő elhelyezése
után a hátralevő üres sorokból
törölni kell az ütésbe került
szabad mezőket.
for i=k+1 .. n loop
Töröl(i,k)
VL1 még egyszer
heurisztika nélkül
♛
Mezői = {az i-dik sor szabad mezői}
♛
♛
♛
♛
k=5
Mező6  ∅
Ha Mezők = ∅ , akkor visszalépünk.
Gregorics Tibor
Mesterséges intelligencia
8
Vágás: Forward Checking
FC algoritmus:
Nemcsak akkor lép vissza, ha a
soron következő sorban nincs
szabad (ütésben nem álló üres)
mező, hanem ha a hátralevő
üres sorok valamelyikében
nincs már szabad mező, azaz
r[k+1.. n]: Mezőr = ∅, akkor
is visszalép.
Gregorics Tibor
♛
♛
♛
♛
k=4
Mező6  ∅
Mesterséges intelligencia
9
Vágás: Partial Look Forward
PLF algoritmus:
FC +
for i=k+1 .. n loop
for j=i+1 .. n loop
Szűr(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ő
Gregorics Tibor
♛
♛
♛
k=3
6
i = 4, j = 6
Mező4 = ∅
Mesterséges intelligencia
10
Vágás: Look Forward
LF algoritmus:
FC +
for i=k+1 .. n loop
for j=k+1 .. n és ij loop
Szűr(i,j)
♛
♛
k=2
3
4
4
i = 4,
i = 5,
i = 6,
i = 6,
Gregorics Tibor
4
j=3
j=4
j=4
j=5
5
Mező6  ∅
Mesterséges intelligencia
11
LF még egyszer
LF algoritmus:
FC +
for i=k+1 .. n loop
for j=k+1 .. n és ij loop
Szűr(i,j)
♛
♛
♛
k=3
4
i = 6, j = 4
i = 6, j = 5
Gregorics Tibor
4
5
Mező6  ∅
Mesterséges intelligencia
12
AC1
♛
AC1 algoritmus:
FC +
repeat
for i=k+1 .. n loop
for j=k+1 .. n és ij loop
Szűr(i,j)
until volt törlés
♛
4
4
1. menet i = 6, j = 4
Gregorics Tibor
Mesterséges intelligencia
13
AC1
AC1 algoritmus:
FC +
repeat
for i=k+1 .. n loop
for j=k+1 .. n és ij loop
Szűr(i,j)
until volt törlés
♛
♛
6
2. menet
Gregorics Tibor
i = 5, j = 6
Mesterséges intelligencia
14
AC1
AC1 algoritmus:
FC +
repeat
for i=k+1 .. n loop
for j=k+1 .. n és ij loop
Szűr(i,j)
until volt törlés
♛
♛
♛
5
♛
5
♛
♛ 3
3. menet
Gregorics Tibor
i = 3, j = 5
i = 4, j = 5
i = 6, j = 3
Mesterséges intelligencia
15
ADAT := kezdeti érték
while terminálási feltétel(ADAT) loop
SELECT SZ FROM alkalmazható szabályok
ADAT := SZ(ADAT)
endloop
VL2
Recursive procedure VL2(út) return megoldás
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 aktmaradék(út) then return(hiba) endif
5.
for new  (akt) −(akt) loop
6.
megoldás := VL2(fűz(út, new))
7.
if megoldás  hiba then
8.
return(fűz((akt,new),megoldás)) endif
9.
endloop
10.
return(hiba)
end
Gregorics Tibor
Mesterséges intelligencia
16
[3,3,3]
[2,3,3]
Hanoi tornyai
0.
Mélységi korlát: 8
Összeg heurisztika
[1,3,3]
1.
[1,2,3]
[2,1,3]
2.
[2,2,3]
[1,1,3]
3.
[3,1,3] [3,2,3]
[2,2,1]
[1,1,2]
[3,1,2]
[3,2,2]
[2,2,2]
4. 21.
[2,1,2]
[1,2,1]
5. 19.
[3,2,1]
20. 22.
[2,3,2] [1,3,1]
[3,1,1]
6. 12.18.
16.
23.
10.13.15.17. 7. 9.11.14. 8.
[1,2,2] [1,3,2] [3,3,2] [3,3,1]
[2,3,1] [2,1,1]
[1,1,1]
24.
Mélységi korlát: 5
Heurisztika: W
8 3 0.
4 2
164
7 5
Tologatós játék
5 21 86 34
75
1.
3 21 8 34 7.
765
5 21 86 34
75
283
64
175
3 2 81 34 2.
4.
7 6 5 6.
3 2 81 34 3. 4 27 81 34 5.
765
65
8 3
214
765
Vágó heurisztika:
g+W>MK
Gregorics Tibor
283
714
6 5
3 21 8 34 8.
765
283
16
754
4 21 84 3
765
2 1 28 34 9. 4 21 38 4
765
765
28
143
765
283
145
76
1 1 28 34 10.
765
2 8
143
765
283
145
7 6
234
18
765
0 18 2 34 11. 2 17 28 34
765
65
Mesterséges intelligencia
18
Mélységi korlát: 5
Heurisztika: P
0. 2 8 3 5
164
7
283 6
164
75
283
64
175
5
283 6
164
75
1. 2 8 3 4
1 4
765
283 5
14
765
2. 2
83
214
765
283
714
65
3.
8 3
214
765
283
714
6 5
4. 1 2 3 1
84
283 5
14
765
23 2
184
765
23 4 28
184
143
765
765
283
145
76
234
18
765
283
145
7 6
765
765
283
16
754
3 3
184
765
5. 1 2 3 0
8 4
Gregorics Tibor
Tologatós játék
2 8
143
765
123 2
784
65
Mesterséges intelligencia
19