← Back to topics
Topic

bojenje

b
boba5551
Treba mi pomoc oko bojenja. Neka pogleda ko hoce sto sam poslao, ima dosta komentara, a ko nije to radio, a misli da može da mi pomogne, neka mi pošalje mejl na moj mejl boba5555@gmail.com ili neka posalje svoj mejl, pa cu mu poslati kod. Hvala unapred.
Prolazi mi sa 7 test primera, a za 3 puca na vremenu, ali nije mi jasno zasto.
Hvala.
b
boba5551
Uradio sam ovaj zadatak, ali ako nekog STVARNO zanima kako se radi, mogu mu objasniti.
d
dimitar
Mene me interesira. Ono resenje od topcoder nisam bas najdobro razbrao...
b
boba5551
Ja cu ti opisati kako sam ja shvatio i kako sam radio, prvo mi je trebalo da shvatim ono sa topcoder-a i to nije tesko shvatiti. Evo kako oni pisu
Ako bojis od i do j sa nekom bojom l.
Imas neki akumulator (pisacu a) na koga gomilas vrednosti za minimum i on je na pocetku nula
D[i, j, b] je oznaka za optimalno bojenje od i do j ako je taj deo obojen bojom b
ako je Boja[i]<> l onda
a postaje 1
k šeta od i do j
ako je Boja[k] = Boja[i] onda
a postaje a + D[i + 1, k - 1, Boja[i]] + D[k + 1, j, l]
update-uj D[i, j, l] ako je manji od prethodne vrednosti i zapamti do kog polja si bojio jer &#263;e trebati za rekonstrukciju.

Evo i log&#269;ckog objašnjenja ovoga.
Ako bojiš jedan deo trake, ti treba da obojis i prvo polje i bojenje SAMO tog polja ne uti&#269;e na bojenje ostalih, jer je ono ispred svih ostalih, pa hajde onda odmah da ga obojimo (tako piše i na topcoderu).
Jedna veoma bitna &#269;injenica je da nema potrebe da proveravamo da li &#263;e bojenje polja koje nema boju kao i prvo polje išta promeniti na ''bolje'' jer to polje svakako treba da obojimo drugom bojom, ali ako neko polje ima istu boju kao što ima i prvo polje, onda se nama MOŽDA isplati da od prvog do tog polja obojimo sa bojom prvog polja, jer &#263;emo na taj na&#269;in smanjiti bojenje jednog polja, samo ne znamo da li tako bojimo optimalno, pa zato probamo za sva polja. Zna&#269;i nama bojenje polja koje je razli&#269;ite boje od prvog polja ne može smanjiti broj potrebnih bojenja.
Ako obojimo od i do k jednom bojom, zna&#269;i da smo polja i i k ''rešili'' pa sad na isti na&#269;in optimalno bojimo od i + 1 do k - 1, a ostatak od k + 1 do j nastavljamo dalje.

Da li je ovo za sad jasno? Ovo nije ideja koja prolazi na vremenu, ta&#269;nije jeste, ali treba nešto pametno da se smisli i ova puno optimizuje. Samo po mom mišljenju trebalo je ovo prvo shvatiti pa onda optimizovati.
Ako nešto nije jasno, napiši, a ako jeste onda opet napiši da nastavim dalje.
Ina&#269;e nisam ni ja otkrivao toplu vodu, ve&#263; sam malo pokupio ideju sa zvani&#269;nog rešenja.
Možeš ovo uraditi i memoizacijom i iterativno, nije bitno. Bojenje posle toga ide trivijalno rekurzijom kako god radio dinami&#269;ki deo.

Ako ho&#263;eš mogu ti poslati kod za ovaj deo, samo mi pošalji mejl na moj mejl i to je to.

P.S. Tijana javi se i ti da li ti je jasno.
d
dimitar
Hvala ti, razgledacu tvoje objasnjenje kad ke imam vise vreme
b
boba5551
U redu, ali to nije sve. Ovo ti ne&#263;e pro&#263;i zbog vremena, ali bitno mi je da prvo ovo shvatiš pa onda da ti napišem kako dalje. Napisao sam to negde u tekstu. Kad budeš hteo, postuj pa &#263;u nastaviti dalje.
Pozdrav,