6-8. ČAS Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: Gde pretpostavljamo da je A celobrojna matrica dimenzije,. Takođe, očekuje se da su koordinate celobrojne. U slučaju da se zahteva celobronost samo nekih koordinata, govorimo o problemu mešovitog celobrojnog linearnog programiranja. Naredni časovi posvećeni su sledećim problemima: Transporni problem Problem raspoređivanja (asignacije) Problem ranca (formula unapred/unazad, ranac na grupi) Gomorijev rez, Metod granjanja i odsecanja Implicitno prebrojavanje, itd. DEINICIJA Za celobrojnu kvadratnu matricu V kažemo da je unimodularnaako je. Ako je V unimodularna matrica, tada je takođe unimodularna, obzirom da je celobrojna matrica i. TEOREMA Ako je matrica celobrojna matrica ranga onda postoje takve unimodularne matrice i da je pri čemu su prirodni brojevi takvi da deli a. Dijagonalna matrica koja ima osobine iskazane teoremom, ima Smith-ovu formu. 3
PRIMER 40 Rešiti sistem celobrojnih jednačina: Matrica sistema transformišemo elementarnim transformacijama u Smith-ov normalni oblik D. U cilju istovromenog određivanja unimodularnih matrica i tako da je stavimo kao početne vrednosti i i sve transformacije nad vrstama ponovimo na tekućoj matrici dok sve transformacije nad kolonama ponovimo na tekućoj matrici. Kada matrica bude dovedena na Smith-ov oblik matrice i dobiće svoju pravu vrednost: U A V 0 5 4 9 0 0 0 4 2 6 0 0 zarotiramo k i 2k 0 4 5 9 0 0 0 2 4 6 0 0 zarotiramo v i 2v 0 2 4 6 0 0 0 4 5 9 0 0 2K=2k-2*k, 3K=3k-3*k 0 2 0 0 0 4-3 -3-2 -3 2V=2v-2*v 0 2 0 0-2 0-3 -3-2 -3 2K=-2k, 3K=3k-2k 0 2 0 0 0 - - -2 0 3 0 2-2K=2k+k 0 2 2 0 0 - - -2 0 3 0 3-2V=2v-v 0 2 2 0 0 - - -3-2 0 3 - zarotiramo 2v i v -3-2 0 0 - - 0 2 2 0 3 - zarotiramo k i 2k 32
-3-2 0-0 - 0 2 2 0 3-2K=2k+2*k -3 0 0 - -2-0 2 6 0 3 7-2V=2v-2*v -3 0 0 - -2 - -2 7 0 6 0 3 7 - Uvodimo smenu promenljivih: Posle množenja s leva sa matricom U polazni sistem dobija ekvivalentnu formu Odavde sledi da je. Zamenom, nalazimo da je. PRIMER 4 Dovesti na Smith-ov oblik matricu: U A V 0 4-4 3 0 0 0 5-7 6 0 0 zarotiramo k I 2k 0 3-4 4 0 6-7 5 0 0 2K=2*k+2k, 3K=3k-k 0 0 0 3 2 0 6 5-0 0 K=3k, 3K=k, 2-0 2 3 0 0 0-5 6 0 0 2K=2k-2*K, 3K=3k-3*k - 2 0-2 -3 0-7 9 0 0 2V=2v+v - 4 4 33
0-2 -3 0 7 9 0 0-4 4 3K=3k-2k 0-2 - 0 7 2 0 - - 4 0 zarotiramo 2k i 3k 0 - -2 0 2 7 0 - - 0 4 3K=3k-3*2k 0-0 2 0-4 - 0 4 zarotiramo 3k i 2k 0-0 2 0 4 - - 4 0 3K=3k-2*2k 0-3 0 0 0 4-9 - 4-8 Provera: Rešavamo sistem: (za svaki slučaj, nije obavezna) Uvodimo smenu promenljivih: kako je i tj. odnosno, Za svako sistem ima rešenje i to su sva rešenja. 34
Problem ranca Problem ranca definišemo na sledeći način: Pretpostavimo da je dat neki ranac zapremine i skup predmeta kojima se ranac puni. Svaki predmet ima svoju zapreminu i vrednost. Napuniti ranac sadržajem najveće vrednosti tako da je ukupna vrednost koja se nosi u rancu maksimalna: Problem možemo da prevedemo na situaciju kada neka kompanije iz svog budžeta veličine finansira projekta. Ako je poznata cena i korist istraživanja jednog istraživača na j-tom projektu, zadatak je da se odredi broj istraživača na j-tom projektu tako da korist bude maksimalna. Ovaj problem se rešava tako što se podeli na etape. Uvodimo pomoćnu funkciju definisanu na sledeći način: Za rešavanje pomoćne funkcije koristimo sledeće rekurentne formule:. Ako punimo ranac jednim predmetom sledi da je čime smo potvrdili početni uslov. 2. gde je za. U ovom slučaju za -tu koordinatu optimalnog rešenja važi ili ( ili ( ). Optimalna vrednost je svakako uvek jednaka boljoj od navedenih vrednosti. Navedena formula se naziva još formulom unapred i ona je najpogodnija za kompjutersko izračunavanje. za a za je ukoliko se definiše za. Ako nula nije optimalno rešenje, bar jedna njegova koordinata, npr. je veća ili jednaka od ( ). - Navedene rekurzivne forumle se mogu koristiti za određivanje optimalne vrednosti problema kao i odgovarajućeg optimalnog rešenja. 35
- Ako koristimo formulu potrebno je da se pamte svi koraci dok je kod formule 2 dovoljno da se pamte samo poslednja dva rešenja. - Kod 2. formule uvodimo još jednu pomoćnu veličinu koja pamti najveći indeks j takav da je j-ta promenljiva optimalnog rešenja u pozitivna. Ukoliko je nula optimalno rešenje, definišimo ovaj indeks sa nulom. Važi rekurzija:, Na osnovu vrednosti dobijene za vrednosti i.. možemo detektujemo optimalno rešenje iz smisla indeksa i Kako upisujemo rešenja? PRIMER 42: Rešiti problem ranca koristeći rekurentnu formulu unapred. Prvo odredimo kapacitete:,. Možemo da stavimo da je ( uzima svoju maksimalnu vrednost obzirom da tada neće narušiti početna ograničenja) ormiramo tablice i Korišćenjem rekurentnih formula: k\y 0 2 3 4 i\y 0 2 3 4 0 0 0 0 2 0 2 2 0 2 2 0 2 2 3 0 2 2 0 2 3 0 2 2 Konačno, imamo da se maksimum dostiže za dalje gledamo za. Konačno:, hajde da rekonstruišemo raspored:, zatim 36
PRIMER 43: Rešiti problem ranca koristeći rekurentnu formulu unapred. Prvo odredimo kapacitete:,. ormiramo tablice i Korišćenjem rekurentnih formula: k\y 0 2 3 4 5 6 7 8 i\y 0 2 3 4 5 6 7 8 0 0 0 0 3 3 3 3 6 0 0 2 0 3 4 4 4 6 2 0 2 2 2 2 2 2 3 0 7 8 8 8 0 3 0 2 3 3 3 3 3 3 3 4 0 7 8 8 9 0 4 0 2 3 3 3 4 3 3 3 5 0 7 8 8 9 0 2 5 0 2 3 3 3 4 3 3 5 Konačno, imamo da se maksimum dostiže za Zatim.. Dalje imamo da je za 37
PRIMER 44: Rešiti problem ranca koristeći rekurentnu formulu unazad. 2 max 7x 2 2x max 2, 7+ 0... = max,7 =7 3 3 2 3 2 2 0 x3 8 max x 8 x max 8, 7+ 6... = max 4, = 2 2 2 2 2 0 x2 6 max x 6 x max 6, + 5 =...= 4 2 2 2 0 x2 5 max x 2 2 0 x2 x2 2 2 2 0 x2 2 2 2 0 x2 2 0 m 5 max 5, + 4 =..= 4 3 max x 3 x max 3, + 2 =.....= 2 max x 2 x max 2, + =.....= 0 x2 x2 x2 ax 0 0 =0 0 3 * 0 / 4 0 3 * / 4 0 2 3 * 2 / 4 0 3 3 * 3 / 4 0 4 3 * 4 / 4 3 5 3 * 5 / 4 3 6 3 * 6 / 4 3 7 3 * 7 / 4 3 8 3 * 8 / 4 3 Vraćamo vrednost nazad: Obratiti pažnju da je ovde x a on može imati samo vrednosti 0 i, zato pišemo da je x odnosno 3 *!!!!! 38
PRIMER 45: Rešiti problem ranca koristeći rekurentnu formulu unazad. // tražimo maksimum za svaku potencijalnu vrednost promenljive Rekonstruišemo raspored: Maximalna vrednost ranca je 3 i postignuta je za a dostiže se za koje svoju maksimalnu vrednost dobija kada je. Poslednja vrednost dostiže se za koji svoj maksimum dostiže za, odnosno za maksimalno koje, opet, svojm maksimum dostiže za. Konačno, traženo rešenje je oblika : 2 39
Svodjenje asimptotskog problema na problem ranca na grupi PRIMER 46: Rešiti problem ranca na grupi Gde je grupa određena po modulu 7. 40
Analogno: Rekonstruišimo rešenje: za 4
PRIMER 47: Napisati asimptotski problem i svesti ga na problem ranca na grupi: Rešenje Uvodimo izravnajuće promenljive, dobijamo problem: Posmatramo baze :. Dalje, polazni sistem prevodimo na problem i rešavamo ga po bazičnim promenljivim, dobijamo. Zamenom u polazni sistem dobijamo problem u kome figurišu samo nebazične promenljive pri ograničenjima Smitova forma matrice A je tada je vektor celobrojan. Ako uvedemo još da je i u a poslednji izraz će biti zadovoljen ako za svako i za koje je, d deli. Asimptotski problem dobija formu. Smitova forma matrice A je, a dalje imamo da je Konačno, treba da je celo, dakle ograničenja su Ostaje funkcija cilja: odnosno, tj. Konačno, možemo zapisati početni problem kao problem ranca na grupi 42
PRIMER 48: Napisati asimptotski problem i svesti ga na problem ranca na grupi: Rešenje Pratimo algoritam iz prethodnog primera. Uvodimo izravnajuće promenljive prvo Smith-ova forma matrice A je Dakle, treba da važi I konačno, funkcija cilja Konačno, dobili smo problem ranca na grupi 43
PRIMER 49: Rešiti problem Ovo je problem ranca na grupi sa i operacijom definisanom sa Prema rekurentnoj relaciji imamo da je Dalje je Zamenom nalazimo da je za. Dijagram koji odgovara ovom problemu je Najkraći put koji spaja i ima dve grane dužine 3 I jednu granu dužine 8. 44