Rubikova kocka Iskanje optimalne reitve Rubikove kocke z
Rubikova kocka Iskanje optimalne rešitve Rubikove kocke z vnaprej izračunano hevristično funkcijo Marjan Šterk, Jaka Močnik po članku R. E. Korfa Rubikova kocka
Kaj je Rubikova kocka • cilj: z vrtenjem plasti dobiti šest enobarvnih ploskev • profesor arhitekture Erno Rubik, 1976 • izboljšanje prostorske predstave študentov • svetovna uspešnica Rubikova kocka 2
Zahtevnost problema • 8 vogalnih kock, vsaka 3 možne orientacije • 12 robnih, vsaka 2 orientaciji • 6 sredinskih, ki jih fiksiramo • Rubikova kocka 3
Formalizacija problema • • • iz vsakega stanja možnih 18 potez z omejitvami: 13, 3 dolžina “človeške” rešitve: 50 -100 dolžina optimalne rešitve: 18 -20 preiskovanje do gl. 18 -20: Rubikova kocka 4
Rubikova kocka 5
Iskalni algoritmi • kandidati: A*, IDA*, RBFS • A* preveč prostorsko zahteven • IDA* uporaben, ker je faktor vejanja velik • RBFS izgleda najbolj obetaven Rubikova kocka 6
Hevristična funkcija • obvezno admissible • Manhattanska razdalja – za vsako robno kockico: št. potez do pravega stanja – delimo s 4, ker vsaka poteza premakne 4 robne – h = 5, 5 • predvideno št. vozl. za gl. 18: Rubikova kocka 7
Boljša hevristika • delna rešitev: samo vogalne kockice • • izboljšanje za faktor • podobno za poljubno definirane skupine kockic • vzeti moramo maksimum • sprotno računanje prepočasno Rubikova kocka 8
Uporabljene hevristike skupina kockic vogalne, 2 krat po 6 robnih vogalne, 7 +6 robnih št. stanj prostor h predvideni faktor izb. 42 MB 8, 76 1 84 MB 8, 89 1, 4 (z 42 MB) 307 MB Rubikova kocka 2, 1(z 42 MB) 9, 05 1, 5 (s 84 MB) 9
Ocena iskalnega časa IDA* • št. generiranih vozlišč – ocena je optimistična • ocena hevristične tabele, ki vsebuje N stanj – ocena je pesimistična Rubikova kocka 10
Vpliv razpoložljivega pomnilnika • predpostavimo, da se omenjeni napaki izničujeta • N je sorazmeren količini pomnilnika m • predvideni čas Rubikova kocka 11
Izvedba • naravna predstavitev stanja – počasno računanje prehodov – počasno računanje indeksa za hevristiko • predstavitev z naborom indeksov – tabeliranje prehodov: 2 MB – enostavno računanje hevrističnega indeksa (ena dodatna tabela) • 7 MB za 84 MB hevristiko • 83 MB za 307 MB hevristiko Rubikova kocka 12
Predstavitev stanja • predstavitev stanja kocke z naborom indeksov struct Stanje { //tisto stanje, ki ga ne bomo razumeli int vog. Pol; //položaji vogalnih (zap. št. permutacije) int vog. Orient; //orientacije vogalnih (zap. št. variacije s ponavljanjem) int rob. Pol[4]; //položaji trojk robnih (zap. št. variacije brez ponavljanja) int rob. Orient[4]; //orientacije (zap. št. variacije) }; Rubikova kocka 13
Testni primeri • 10 naključno generiranih primerov • IDA* s 84 MB in 307 MB hevristiko • RBFS s 84 MB hevristiko • testni računalniki: – PII/350, 256 MB – PIII/700, 1 GB – gruča 9 x. Athlon 750, 128 MB Rubikova kocka 14
Hitrost računanja računalnik PII-350 PIII-700 9 x. Athlon 750 algoritem IDA* 84 MB RBFS 84 MB IDA* 307 MB IDA* 84 MB Rubikova kocka vozl. /sek. 1, 1 milijona 0, 4 milj. 1, 6 milj. 1, 4 milj. 9, 4 milj. 15
Rezultati – št. gen. vozlišč v milijardah N glo bin a IDA* čas na 84 PII/350 MB čas na RBFS 9 x. Athlon 84 MB 750 čas na PII/350 IDA* 307 MB čas na PIII/70 0 1 16 3, 2 0, 8 ure 0, 1 ure 1, 9 1, 4 ure 1, 4 0, 3 ure 2 17 50, 7 13 ur 1, 5 ure 39, 2 29 ur 24, 6 5 ur 3 17 111, 0 28 ur 3 ure 56, 0 42 ur 50, 0 10 ur 4 17 85, 7 22 ur 2, 5 ure 78, 0 59 ur 38, 7 8 ur 5 18 215, 6 2, 3 dni 6 ur 95, 0 19 ur 6 18 193, 0 2, 0 dni 6 ur 96, 9 19 ur 7 18 533, 5 5, 6 dni 16 ur 232, 4 1, 9 dni 8 18 528, 6 5, 6 dni 16 ur 231, 5 1, 9 dni 9 18 885, 6 9, 3 dni 26 ur 384, 0 3, 2 dni 10 18 651, 3 6, 8 dni 19 ur 286, 1 2, 4 dni Rubikova kocka 16
Komentar rezultatov • povpr. razmerje 84 MB/307 MB je 2, 2 namesto predvidenih 3, 7 zaradi: –netočnosti ocene –neoptimalnosti uporabljene hevristike • prednosti IDA* pred RBFS: – hitrejši (manj režije) – trivialna paralelizacija • prednost RBFS: – manj omejen s hitrostjo pomnilnika (dostop do tabel predstavlja sorazmerno manjši delež časa), zato bi na hitrejšem računalniku verjetno ujel IDA* Rubikova kocka 17
Napoved bližnje prihodnosti • paralelizacija je najbolj učinkovit način pohitritve • z vse večjim pomnilnikom v računalnikih se bo čas računanja še naprej zmanjševal • gruča 32 Athlonov 750 s 512 MB pomnilnika na računalnik bi najzahtevnejši primer rešila v 3, 5 ure Rubikova kocka 18
Popolna hevristika? • za izračun in uporabo bi potrebovali bajtov (2 000 terabajtov) pomnilnika • izvedeli bi tudi globino celotnega iskalnega drevesa (premer grafa) Rubikova kocka 19
- Slides: 19