Problem plecakowy (KNAPSACK PROBLEM). Zagadnene optymalzac zwane problemem plecakowym swą nazwę wzęło z analog do sytuac praktyczne podobne do problemu pakowana plecaka. Chodz o to, by zapakować maksymalne cenny zbór przedmotów ne przekraczaąc ładownośc (nośnośc lub poemnośc) bagażu. Można tu wyróżnć klka sposobów rozumowana. Ops rozpoczynamy od zagadnena nabardze ogólnego. Ogólny problem plecakowy Przedmoty które oprócz unkatowe nazwy P posadaą dwe cechy: 1. masę m lub eśl kto wol obętość (bo pakowane plecaka możemy optymalzować ze względu na masę (cężar) lub ze względu na obętość 2. cenę c. Wynk: lośc k poszczególnych przedmotów (mogą być zeram) Formuła problemu: Nech: o W est wartoścą wszystkch przedmotów spakowanych w plecaku. o M max est maksymalną masą (obętoścą) plecaka Znaleźć wartośc k, take aby:. = było możlwe nawększe, oraz =1. =1. 0 Rozwązanam dopuszczalnym nazywać będzemy wszystke zbory lośc k spełnaące warunek. Rozwązanem optymalnym będze ten zbór lośc k, który spełn warunek. - nazwemy funkcą optymalzac oraz - nazwemy ogranczenam lub warunkam brzegowym. Zagadnene w swe prostoce sformułowana wydawać by sę mogło łatwym do rozwązana problemem. Nc bardze mylnego. Wbrew pozorom problem plecakowy wygenerował wele dość skomplkowanych algorytmów rozwązuących go. Strona 1
Algorytm zachłanny dla ogólnego zagadnena plecakowego. Dzałane zachłanne przypomna naturalne podeśce człoweka do zagadnena pakowana plecaka. Pakuąc plecak tak aby pomeścć w nm ak nawększą wartość człowek kerowałby sę - ednym z lub w sposób meszany - następuącym kryteram: 1) Starałby sę wyberać rzeczy nacennesze w kolenośc od nadroższe do natańsze. 2) Starałby sę zaberać rzeczy ak namnesze poczynaąc od nalżeszego przedmotu, na nacęższym skończywszy. 3) Starałby sę wyberać przedmoty w kolenośc ustawone nerosnąco ze względu na loraz ceny do wag przedmotu. Tak loraz stanow bowem ednostkową wartość przedmotu (wartość przypadaącą na ednostkę masy lub obętośc). Człowek dzałaąc strategczne po kole, podemue decyze optymalne z punktu wdzena danego kroku. Tak węc w perwszym kroku wg planu nr 1 wząłby rzecz nadroższą, wg planu nr 2 wząłby dużo lekkch, zaś wg strateg nr 3 występue uż element wyważena choć tym razem wząłby maksymalna lość przedmotów o nawększe wartośc ednostkowe. Właśne take dzałane nazywamy dzałanem zachłannym. Zbadamy teraz do akch rezultatów doprowadz nas postępowane według każde z trzech strateg zachłannych podczas pakowana 6 przedmotów do plecaka o nośnośc M max =10 m 1, przy czym każdego przedmotu mamy dowolną lość k. P c [zł] m [m] 1 Koszula flanelowa 75 7 2 Spodne dżnsowe 150 8 3 Sweter 250 6 4 Czapka baseballowa 35 4 5 Kąpelówk 10 3 6 Obuwe sportowe 100 9 Ad.1 Tabela 1. Dane do analzy rozwązań problemu plecakowego. 1 m ednostka mary umowna ednostka mary dla potrzeb przykładu. Strona 2
Zaczynamy od wybrana rzeczy nadroższe. Jest ną sweter, czyl przedmot o ndekse 3. Sweter waży 6 m, a węc możemy zapakować ch co nawyże 1 szt. Zatem k 3 =1. Wypełnony swetram plecak waży 6 m, musmy zatem eszcze doładować 4 m. Nadroższy przedmot ne przekraczaący te wag to czapka baseballowa o ndekse 4. Do plecaka zmeśc sę dokładne edna k 4 =1 szt. Plecak mamy pełen. Nasz wynk zatem to: zaś uzyskana wartość plecaka, wynos: Ad.2 k 1 =0, k 2 =0, k 3 =1, k 4 =1, k 5 =0, k 6 =0 W=k 3 c 3 +k 4 c 4 = 1 * 250 zł + 1 * 35 zł = 285 zł Teraz pakować będzemy dużo zaczynaąc od rzeczy nalżesze. Nalżesze w naszym zestawe są kąpelówk o ndekse =5. Masa m 5 =3 m. W plecaku zmeścmy ch aż k 5 =3szt. Plecak ne będze wypełnony do końca, brakue 1 m ale ne ma towaru, który małby co nawyże taką masę. Wartość plecaka w tym przypadku wynese: W=k 5 c 5 =3 * 10 zł = 30 zł Jak wdać mne nż w poprzednm przypadku, a węc ne optymalne. Wypróbumy teraz sposób trzec. Ad.3 Wylczmy wartośc ednostkowe poszczególnych przedmotów. W tym celu uzupełnmy tabelę 1 o kolumnę c /m. P c [zł] m [m] c /m 1 Koszula flanelowa 75 7 10,71 2 Spodne dżnsowe 150 8 18,75 3 Sweter 250 6 41,67 4 Czapka baseballowa 35 4 8,75 5 Kąpelówk 10 3 3,33 6 Obuwe sportowe 100 9 11,11 Tabela 2. Wartośc ednostkowe. Plecak zacznemy zapełnać swetram, gdyż one maą nawększą wartość ednostkową. Do plecaka uda nam sę zapakować 1 tak sweter. Da to łączną masę 6 m. Musmy węc zapełnć eszcze 4 m. Zmeszczą sę eszcze kąpelówk lub czapka baseballowa. Wyberamy czapkę Strona 3
baseballową (4 m) gdyż e wartość ednostkowa est wyższa od wartośc ednostkowe kąpelówek. Sprawdźmy aką uzyskalśmy wartość plecaka? W=k 3 c 3 +k 4 c 4 =1 * 250zł + 1 * 35zł = 285 zł Tym sposobem otrzymalśmy wartość taką samą ak w metodze 1, Ale ta metoda wydae sę nabardze logczna. Należy uznać, ze metoda optymalzac poprzez porządkowane wg. wartośc ednostkowe przynos nalepszy rezultat. Czy ednak est to wartość optymalna? W naszym przykładze tak ale można wykazać, że ne zawsze ten sposób rozumowana prowadz do wynku optymalnego 2. Wynk metod 1 2 ne są optymalne zaś dzałaąc wg metody 3 często otrzymuemy wynk przyblżony. Mmo to metoda nr 3 wydae sę edyną spośród rozważanych, godną uwzględnena w metodach zachłannych rozwązuących problem plecakowy. GREEDY-GENERAL-KNAPSACK,, =1,2,, ; gdze P przedmot, m masa -tego przedmotu, c cena -tego przedmotu Uporządkowane tak, aby: M max nośność (poemność) plecaka. Wynk:,,, take, że 0 oraz =1 1) Dla kolenych przedmotów, =1,2,3,.., wykona krok 2). 2) Określ nawększą wartość, spełnaącą nerówność Przym =. 3) Znalezona wartość plecaka wynos: = + + + KONIEC 2 Patrz Mace M. Sysło Algorytmy WSIP Warszawa 2002 s.217-218 Strona 4
Programowane dynamczne dla ogólnego problemu plecakowego Metoda programowana dynamcznego zapewna znalezene optymalnego rozwązana problemu plecakowego. Polega ona na umeętnym zastosowanu zasady dzel zwycęża. Generalne chodz o to aby podzelć zagadnene, na problemy mnesze łatwesze do rozwązana. Fane byłoby, gdyby poemność plecaka była mała mała była także lczba rodzaów przedmotów do upakowana. No to znadźmy rozwązana dla sytuac ak gdyby trzeba było wypełnć plecak tylko ednym rodzaem przedmotów. Dodatkowo nech poemność maksymalna plecaka zmena sę od ednostkowe, do maksymalne co 1. Wartośc wpsywać będzemy w tabel w które numer wersza odpowadać będze numerow przedmotu z tabel1 3 zaś numer kolumny nech będze koleną całkowtą poemnoścą plecaka. Wartość P defnuemy ako wartość optymalne wypełnonego plecaka o poemnośc przedmotam, których ndeksy meszczą sę mędzy 1, a. Perwszy wersz wypełnć nałatwe albowem mamy do dyspozyc tylko przedmot ednego rodzau, którym napełnamy plecak o kolenych (1, 2 10) poemnoścach. W kolene rubryczk wpsuemy wartośc plecaka. Perwszych sześć pozyc ma wartość 0 gdyż koszula waży 7 m. Dopero od poemnośc plecaka równe 7 możemy ą do nego wpakować. P c m P koszula flanelowa 75 7 1 0 0 0 0 0 0 75 75 75 75 spodne dżnsowe 150 8 2 sweter 250 6 3 czapka baseballowa 35 4 4 kąpelówk 10 3 5 obuwe sportowe 100 9 6 Tabela 3a. Tablca P wartośc upakowań plecaka wygenerowanych przez algorytm programowana dynamcznego perwszy wersz. W drugm werszu do dyspozyc mamy uż dwa cuchy. Nestety w naszym przykładze ch łączna waga przekracza dopuszczalną ładowność plecaka. Wyberamy zatem cuch droższy (spodne dżnsowe 150 zł), który zmeśc sę w plecaku począwszy od =8. Podobne w przypadku trzecego wersza, gdze do dyspozyc dochodz sweter, ale tylko on meśc sę w maksymalnym dla każdego plecaku. Wypełnmy zatem wartoścam wersze 2 3. 3 W algorytme programowana dynamcznego, koleność przedmotów ne ma znaczena, dlatego tabela nr 1 ne mus być sortowana. Przyp. aut. Strona 5
P c m P koszula flanelowa 75 7 1 0 0 0 0 0 0 75 75 75 75 spodne dżnsowe 150 8 2 0 0 0 0 0 0 75 150 150 150 sweter 250 6 3 0 0 0 0 0 250 250 250 250 250 czapka baseballowa 35 4 4 kąpelówk 10 3 5 obuwe sportowe 100 9 6 Tabela 3b. Tablca P wartośc upakowań plecaka wygenerowanych przez algorytm programowana dynamcznego drug trzec wersz. W czwartym werszu sytuaca sę neco komplkue. Do plecaka począwszy od pozyc =4 meśc sę czapka baseballowa, w pozyc =6 droższy ednak będze sweter, a w kolumne =10 zmeśc sę czapka sweter. P c m P koszula flanelowa 75 7 1 0 0 0 0 0 0 75 75 75 75 spodne dżnsowe 150 8 2 0 0 0 0 0 0 75 150 150 150 sweter 250 6 3 0 0 0 0 0 250 250 250 250 250 czapka baseballowa kąpelówk 10 3 5 obuwe sportowe 100 9 6 35 4 4 0 0 0 35 35 250 250 250 250 285 Tabela 3c. Tablca P wartośc upakowań plecaka wygenerowanych przez algorytm programowana dynamcznego czwarty wersz. Jeśl poszerzymy asortyment o kąpelówk, to tabela przyme koleną postać: Strona 6
P c m P koszula flanelowa 75 7 1 0 0 0 0 0 0 75 75 75 75 spodne dżnsowe 150 8 2 0 0 0 0 0 0 75 150 150 150 sweter 250 6 3 0 0 0 0 0 250 250 250 250 250 czapka baseballowa 35 4 4 0 0 0 35 35 250 250 250 250 285 kąpelówk 10 3 5 0 0 10 35 35 250 250 250 260 285 obuwe sportowe 100 9 6 Tabela 3d. Tablca P wartośc upakowań plecaka wygenerowanych przez algorytm programowana dynamcznego pąty wersz. I wreszce wypełnamy ostatn wersz. Buty dla każdego wedą do plecaka tylko one wcale to ne będze nawększa wartość. Zatem szósty wersz będze wyglądał tak samo ak pąty. P c m P koszula flanelowa 75 7 1 0 0 0 0 0 0 75 75 75 75 spodne dżnsowe 150 8 2 0 0 0 0 0 0 75 150 150 150 sweter 250 6 3 0 0 0 0 0 250 250 250 250 250 czapka baseballowa 35 4 4 0 0 0 35 35 250 250 250 250 285 kąpelówk 10 3 5 0 0 10 35 35 250 250 250 260 285 obuwe sportowe 100 9 6 0 0 10 35 35 250 250 250 260 285 Tabela 3. Tablca P wartośc upakowań plecaka wygenerowanych przez algorytm programowana dynamcznego kompletne wypełnona. Optymalna wartość otrzymana w pozyc P 6,10 wynos 285. Jest to ta sama wartość którą otrzymalśmy stosuąc algorytm zachłanny, tyle, że tu mamy pewność, że est to wartość nawększa. Podczas wypełnana tabel rozpoczęlśmy od sytuac naprostsze. Jeden przedmot rosnąca co eden poemność plecaka. Jeśl przedmot ne meścł sę w plecaku, to plecak pozostawał pusty (wartość 0), eśl natomast meścł sę, to przypsywalśmy wartośc plecaka krotność wartośc przedmotu (u nas krotność w całym zadanu wynosła 1). Strona 7
W następnym werszu moglśmy uż wypełnać plecak korzystaąc z wersza perwszego. 4 Podemowalśmy edną z następuących decyz: wyberz upakowane rzeczam z wersza poprzednego, dołóż rzecz o numerze 2 eśl sę zmeśc, zastąp rzecz nr 1 rzeczą nr 2 eśl e wartość est wększa meśc sę tylko edna spośród nch. Jeśl to wyberamy wększa spośród,, + Podobne w werszach następnych. Tabela P przechowue edyne wartośc optymalne spakowanego plecaka. Aby móc pokazać zestaw rzeczy składaących sę na optymalne spakowany plecak pownnśmy zbudować tabelę Q skoarzoną z tabelą P, w które przechowywać będzemy ndeksy rzeczy pakowanych do plecaka ako ostatne. To pozwol na wyznaczene zestawu rzeczy w plecaku. koszula flanelowa P c m Q 75 7 1 0 0 0 0 0 0 1 1 1 1 spodne dżnsowe 150 8 2 0 0 0 0 0 0 1 2 2 2 sweter 250 6 3 0 0 0 0 0 3 3 3 3 3 czapka baseballowa 35 4 4 0 0 0 4 4 3 3 3 3 4 kąpelówk 10 3 5 0 0 5 4 4 3 3 3 5 4 obuwe sportowe 100 9 6 0 0 5 4 4 3 3 3 5 4 Tabela 4. Tablca Q numerów rzeczy wkładanych do plecaka ako ostatne. Na pozyc Q[6,10] znadue sę numer rzeczy włożone do plecaka na końcu. Rzecz o ndekse = 4 (czapka baseballowa) waży 4 m. Zatem cofamy sę w werszu do pozyc Q[6,10-4]=Q[6,6]. Tam zapsano rzecz o ndekse =3 (sweter), który waży 6 m. W takm raze pownnśmy przeskoczyć do kolumny 6-6, ale to dae zero (wyczerpała sę poemność plecaka). Zatem w plecaku znadue sę sweter czapka baseballowa wkładane doń właśne w take kolenośc. DYNAMIC-GENERAL-KNAPSACK,, =1,2,, ; gdze P przedmot, m masa -tego przedmotu, c cena -tego przedmotu M max nośność (poemność) plecaka. Wynk: 4 Zasadę polegaącą na podemowanu nalepsze decyz z uwzględnenem stanu wynkaącego z poprzednch decyz nazywamy zasadą optymalnośc Bellmana. Strona 8
Tablca wartośc P, nalepszych upakowań plecaka o poemnośc rzeczam rodzaów od 1 do ; dla =1,2,.,n oraz =1,2, M max. Tablca Q, skoarzona z P, rzeczy P pakowanych do plecaka w ostatnm ruchu. 1) {Ustalene wartośc początkowych tablc P Q rozszerzonych dla uednolcena oblczeń o wersze kolumny zerowe.} Dla =1,2,, M max przypsz P 0, :=0, Q 0, :=0 Dla =1,2,,n przypsz P,0 :=0, Q,0 :=0. 2) Dla kolenych rzeczy =1,2,,n wykona krok 3. 3) Dla kolenych poemnośc plecaka =1,2, M max wykona krok 4. 4) Jeśl {Czyl poemność plecaka est wystarczaąca, by pomeścć rzecz } oraz, <, + to przypsz, =, + oraz, =, a w przecwnym raze pozostaw wartośc z poprzednego wersza, czyl przypsz, =, oraz, =,. KONIEC Decyzyny problem plecakowy Problem różn sę tym od ogólnego, że każda rzecz pakowana do plecaka może wystąpć tylko eden raz. Podemuemy węc decyzę pakować = 1 ne pakować = 0. Tak zdefnowany problem bardze odzwercedla rzeczywstą sytuacę pakowana plecaka. Podobne ak w przypadku możemy mówć o algorytmach zachłannych dynamcznych które przytaczam tu uż bez szerszego omówena, ze względu na duze podobeństwo do wcześne omówonych. GREEDY-DECIDE-KNAPSACK,, =1,2,, ; gdze P przedmot, m masa -tego przedmotu, c cena -tego przedmotu Uporządkowane tak, aby: M max nośność (poemność) plecaka. Wynk:,,, take, że =0 =1 oraz =1 1. Dla kolenych rzeczy = 1,2,,n wykona krok 2. 2. Jeśl,to przym k =1 przypsz M max = M max -m, a w przecwnym raze przym k =0. Strona 9
3. Utworzony ładunek plecaka ma wartość =. KONIEC =1 DYNAMIC-DECIDE-KNAPSACK,, =1,2,, ; gdze P przedmot, m masa -tego przedmotu, c cena -tego przedmotu M max nośność (poemność) plecaka. Wynk: Tablca wartośc P, nalepszych upakowań plecaka o poemnośc rzeczam rodzaów od 1 do ; dla =1,2,.,n oraz =1,2, M max. Tablca Q, skoarzona z P, rzeczy P pakowanych do plecaka w ostatnm ruchu. 1) {Ustalene wartośc początkowych tablc P Q rozszerzonych dla uednolcena oblczeń o wersze kolumny zerowe.} Dla =1,2,, M max przypsz P 0, :=0, Q 0, :=0 Dla =1,2,,n przypsz P,0 :=0, Q,0 :=0. 2) Dla kolenych rzeczy =1,2,,n wykona krok 3. 3) Dla kolenych poemnośc plecaka =1,2, M max wykona krok 4. 4) Jeśl {Czyl poemność plecaka est wystarczaąca, by pomeścć rzecz } oraz, <, + to przypsz, =, + oraz, =1, a w przecwnym raze pozostaw wartośc z poprzednego wersza, czyl przypsz, =, oraz, = 0. KONIEC Uwag końcowe Złożoność oblczenowa obydwu algorytmów zachłannych est proporconalna do n log. Podobne oba algorytmy dynamczne maą złożoność oblczenowa rzędu n M max. Należy zwrócć uwagę, że programowane dynamczne będze sprawdzać sę przy newelke lośc elementów newelke poemnośc plecaka. Dla wększych lczb algorytmy programowana dynamcznego staa sę mało praktyczne. Strona 10