celobrojno programiranje - math.rs ivanja_-_vežbe... · pdf fileČas celobrojno...

14
31 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. DEFINICIJA 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 1. Dijagonalna matrica koja ima osobine iskazane teoremom, ima Smith-ovu formu.

Upload: hoangduong

Post on 06-Feb-2018

223 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Celobrojno programiranje - math.rs ivanja_-_vežbe... · PDF fileČAS Celobrojno programiranje ... uvedemo još da je i u a poslednji izraz će biti zadovoljen ako za svako i za koje

31

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.

DEFINICIJA

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 1.

Dijagonalna matrica koja ima osobine iskazane teoremom, ima Smith-ovu formu.

Page 2: Celobrojno programiranje - math.rs ivanja_-_vežbe... · PDF fileČAS Celobrojno programiranje ... uvedemo još da je i u a poslednji izraz će biti zadovoljen ako za svako i za koje

32

PRIMER 40

Rešiti sistem celobrojnih jednačina:

Rešenje:

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

1 0

5 4 9

1 0 0 zarotiramo 1k i 2k 0 1

4 2 6

0 1 0

0 0 1

1 0

4 5 9

0 1 0 zarotiramo 1v i 2v 0 1

2 4 6

1 0 0

0 0 1

0 1

2 4 6

1 0 0 2K=2k-2*1k,

3K=3k-3*1k 1 0

4 5 9

0 1 0

0 0 1

0 1

2 0 0

0 1 0 2V=2v-2*1v 1 0

4 -3 -3

1 -2 -3

0 0 1

0 1

2 0 0

0 1 0 2K=-2k,

3K=3k-2k 1 -2

0 -3 -3

1 -2 -3

0 0 1

0 1

2 0 0

0 -1 -1 2K=2k+1k 1 -2

0 3 0

1 2 -1

0 0 1

0 1

2 2 0

0 -1 -1 2V=2v-1v 1 -2

0 3 0

1 3 -1

0 0 1

0 1

2 2 0

0 -1 -1 zarotiramo 2v i 1v 1 -3

-2 1 0

1 3 -1

0 0 1

1 -3

-2 1 0

0 -1 -1 zarotiramo 1k i 2k 0 1

2 2 0

1 3 -1

0 0 1

Page 3: Celobrojno programiranje - math.rs ivanja_-_vežbe... · PDF fileČAS Celobrojno programiranje ... uvedemo još da je i u a poslednji izraz će biti zadovoljen ako za svako i za koje

33

1 -3

1 -2 0

-1 0 -1 2K=2k+2*1k 0 1

2 2 0

3 1 -1

0 0 1

1 -3

1 0 0

-1 -2 -1 2V=2v-2*1v 0 1

2 6 0

3 7 -1

0 0 1

1 -3

1 0 0

-1 -2 -1

-2 7

0 6 0

3 7 -1

0 0 1

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 41

Dovesti na Smith-ov oblik matricu:

Rešenje:

U

A

V

1 0

4 -4 3

1 0 0

zarotiramo 1k I 2k 0 1

5 -7 6

0 1 0

0 0 1

1 0

3 -4 4

0 0 1

2K=2*1k+2k, 3K=3k-1k 0 1

6 -7 5

0 1 0

1 0 0

1 0

3 2 1

0 0 1

1K=3k, 3K=1k, 0 1

6 5 -1

0 1 0

1 2 -1

1 0

1 2 3

1 0 0

2K=2k-2*1K, 3K=3k-3*1k 0 1

-1 5 6

0 1 0

-1 2 1

1 0

1 0 0

1 -2 -3

2V=2v+1v 0 1

-1 7 9

0 1 0

-1 4 4

Page 4: Celobrojno programiranje - math.rs ivanja_-_vežbe... · PDF fileČAS Celobrojno programiranje ... uvedemo još da je i u a poslednji izraz će biti zadovoljen ako za svako i za koje

34

1 0

1 0 0

1 -2 -3

3K=3k-2k 1 1

0 7 9

0 1 0

-1 4 4

1 0

1 0 0

1 -2 -1

zarotiramo 2k i 3k 1 1

0 7 2

0 1 -1

-1 4 0

1 0

1 0 0

1 -1 -2

3K=3k-3*2k 1 1

0 2 7

0 -1 1

-1 0 4

1 0

1 0 0

1 -1 1

zarotiramo 3k i 2k 1 1

0 2 1

0 -1 4

-1 0 4

1 0

1 0 0

1 1 -1

3K=3k-2*2k 1 1

0 1 2

0 4 -1

-1 4 0

1 0

1 0 0

1 1 -3

1 1

0 1 0

0 4 -9

-1 4 -8

Provera: (za svaki slučaj, nije obavezna)

Rešavamo sistem:

Uvodimo smenu promenljivih:

kako je i tj.

odnosno,

Za svako sistem

ima rešenje i to su sva rešenja.

Page 5: Celobrojno programiranje - math.rs ivanja_-_vežbe... · PDF fileČAS Celobrojno programiranje ... uvedemo još da je i u a poslednji izraz će biti zadovoljen ako za svako i za koje

35

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:

1.

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 1 (

).

- Navedene rekurzivne forumle se mogu koristiti za određivanje optimalne vrednosti problema kao i odgovarajućeg optimalnog rešenja.

Page 6: Celobrojno programiranje - math.rs ivanja_-_vežbe... · PDF fileČAS Celobrojno programiranje ... uvedemo još da je i u a poslednji izraz će biti zadovoljen ako za svako i za koje

36

- Ako koristimo formulu 1 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 možemo detektujemo optimalno rešenje iz smisla indeksa i

vrednosti i ..

Kako upisujemo rešenja?

PRIMER 42:

Rešiti problem ranca koristeći rekurentnu formulu unapred.

Rešenje:

Prvo odredimo kapacitete: , .

Možemo da stavimo da je ( uzima svoju maksimalnu vrednost obzirom da tada neće narušiti

početna ograničenja)

Formiramo tablice i

Korišćenjem rekurentnih formula:

k\y 0 1 2 3 4 i\y 0 1 2 3 4

1 0 0 0 10 10 1 0 0 0 1 1

2 0 2 2 10 12 2 0 2 2 1 1

3 0 2 2 10 12 3 0 2 2 1 1

Konačno, imamo da se maksimum dostiže za , hajde da rekonstruišemo raspored:

dalje gledamo za , zatim

. Konačno:

Page 7: Celobrojno programiranje - math.rs ivanja_-_vežbe... · PDF fileČAS Celobrojno programiranje ... uvedemo još da je i u a poslednji izraz će biti zadovoljen ako za svako i za koje

37

PRIMER 43:

Rešiti problem ranca koristeći rekurentnu formulu unapred.

Rešenje:

Prvo odredimo kapacitete: , .

Formiramo tablice i

Korišćenjem rekurentnih formula:

k\y 0 1 2 3 4 5 6 7 8 i\y 0 1 2 3 4 5 6 7 8

1 0 0 0 0 3 3 3 3 6 1 0 0 0 0 1 1 1 1 1

2 0 1 1 1 3 4 4 4 6 2 0 2 2 2 1 2 2 2 1

3 0 1 7 8 8 8 10 11 11 3 0 2 3 3 3 3 3 3 3

4 0 1 7 8 8 9 10 11 11 4 0 2 3 3 3 4 3 3 3

5 0 1 7 8 8 9 10 11 12 5 0 2 3 3 3 4 3 3 5

Konačno, imamo da se maksimum dostiže za . Dalje imamo da je

Zatim .

za

Page 8: Celobrojno programiranje - math.rs ivanja_-_vežbe... · PDF fileČAS Celobrojno programiranje ... uvedemo još da je i u a poslednji izraz će biti zadovoljen ako za svako i za koje

38

PRIMER 44:

Rešiti problem ranca koristeći rekurentnu formulu unazad.

Rešenje:

3

2

2

2

3 3 2 3 2 20 1

2 2 1 2 2 20 1

2 2 1 2 1 10 1

2 20 1

2 max 7 2 2 max 2 , 7+ 0 ....... =max 1,7 =7

8 max 8 max 8 , 7+ 6 ...... =max 4,11 =11

6 max 6 max 6 , 1+ 5 = . ..= 4

5 max

x

x

x

x

F x F x F F

F x F x F F

F x F x F F

F x

2

2

1 2 1 1

2 2 1 2 1 10 1

2 2 1 2 1 10 1

2

5 max 5 , 1+ 4 = ..= 4

3 max 3 max 3 , 1+ 2 = ... ..= 1

2 max 2 max 2 , 1+ 1 = ..... ..= 1

0 m

x

x

F x F F

F x F x F F

F x F x F F

F

22 1 2 1

0 1

1

1

1

1

1

1

1

1

1

ax 0 0 =0

0 3 * 0 /4 0

1 3 * 1/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

Obratiti pažnju da je

8 3 * 8 /4 3

xx F x F

F

F

F

F

F

F

F

F

F

1

1

1

ovde a on može imati

samo vrednosti 0 i 1, zato pišemo da je 1 odnosno

3 *1 !!!!!

x

x

F

Vraćamo vrednost nazad:

Page 9: Celobrojno programiranje - math.rs ivanja_-_vežbe... · PDF fileČAS Celobrojno programiranje ... uvedemo još da je i u a poslednji izraz će biti zadovoljen ako za svako i za koje

39

PRIMER 45:

Rešiti problem ranca koristeći rekurentnu formulu unazad.

Rešenje:

// tražimo maksimum za svaku potencijalnu vrednost promenljive

12

Rekonstruišemo raspored: Maximalna vrednost ranca je 13 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 :

Page 10: Celobrojno programiranje - math.rs ivanja_-_vežbe... · PDF fileČAS Celobrojno programiranje ... uvedemo još da je i u a poslednji izraz će biti zadovoljen ako za svako i za koje

40

Svodjenje asimptotskog problema na problem ranca na grupi

PRIMER 46:

Rešiti problem ranca na grupi

Gde je grupa određena po modulu 7.

Rešenje:

Page 11: Celobrojno programiranje - math.rs ivanja_-_vežbe... · PDF fileČAS Celobrojno programiranje ... uvedemo još da je i u a poslednji izraz će biti zadovoljen ako za svako i za koje

41

Analogno:

Rekonstruišimo rešenje:

za

Page 12: Celobrojno programiranje - math.rs ivanja_-_vežbe... · PDF fileČAS Celobrojno programiranje ... uvedemo još da je i u a poslednji izraz će biti zadovoljen ako za svako i za koje

42

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

odnosno

Ostaje funkcija cilja:

, tj.

Konačno, možemo zapisati početni problem kao problem ranca na grupi

Page 13: Celobrojno programiranje - math.rs ivanja_-_vežbe... · PDF fileČAS Celobrojno programiranje ... uvedemo još da je i u a poslednji izraz će biti zadovoljen ako za svako i za koje

43

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

Page 14: Celobrojno programiranje - math.rs ivanja_-_vežbe... · PDF fileČAS Celobrojno programiranje ... uvedemo još da je i u a poslednji izraz će biti zadovoljen ako za svako i za koje

44

PRIMER 49:

Rešiti problem

Rešenje:

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.