← Back to topics
Topic

bojenje

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.
boba5551
Uradio sam ovaj zadatak, ali ako nekog STVARNO zanima kako se radi, mogu mu objasniti.
dimitar
Mene me interesira. Ono resenje od topcoder nisam bas najdobro razbrao...
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.
dimitar
Hvala ti, razgledacu tvoje objasnjenje kad ke imam vise vreme
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,