celobrojno programiranje - math.rs ivanja_-_vežbe... · pdf fileČas celobrojno...
TRANSCRIPT
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.
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
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
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.
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.
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:
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
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:
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 :
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:
41
Analogno:
Rekonstruišimo rešenje:
za
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
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
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.