matematykaszkolna.pl
Problem plecakowy z: Witam, muszę zaproponować układ równań dla problemu plecakowego o następujących założeniach. Złodziej rabujący sklep znalazł n przedmiotów kolejno; −1) o wadze 12 kg i łącznej wartości $4 −2) o wadze 4 kg i łącznej wartości $10 −3) o wadze 2 kg i łącznej wartości $2 −4) o wadze 1 kg i łącznej wartości $2 −5) o wadze 1 kg i łącznej wartości $1 Dąży on do zabrania jak najwartościowszego łupu, przy czym nie może zabrać przedmiotów o łącznej wadze większej niż 15 kilogramów. Nie może też zabierać ułamkowej części przedmiotów. Ponadto włamywaczna pewno chce wziąć przynajmniej jeden przedmiot 3) oraz przynajmniej jeden przedmiot 4) a na pewno nie chce wziąć przedmiotu 5). za x1,x2,x3,x4,x5 oznaczam kolejno wartości podanych przedmiotów i kolejno szukam x1+x2+x3+x4+x5 −> max Nie mam pomysłu jak mam uzależnić warunki co do maksymalnej wagi oraz ilości zabranych przedmiotów 3) i 4) od wartości przedmiotów.
15 sty 16:55
z: Poprawka Złodziej rabujący sklep znalazł 5 przedmiotów po n sztuk każdy, kolejno;
15 sty 16:57
Pytający: i∊{1, 2, 3, 4, 5} mi // masa i−tego przedmiotu wi // wartość i−tego przedmiotu ki // ile sztuk i−tego przedmiotu zabrał ten złodziej ki ∊ ℤ 0 ≤ ki ≤ n dla i∊{1, 2, 5} 1 ≤ ki ≤ n dla i∊{3, 4} ∑i=1..5 (ki*mi) ≤ 15 Maksymalizujesz: ∑i=1..5 (ki*wi)
15 sty 17:49
Bleee: No to nadal zadanie jest stosunkowo łatwe bo: 1l pierwsza opcja w ogóle się nie opłaca i jej nie bierze (za ciężka a zysk niewielki).
 wartość 
2| obliczamy

każdej opcji w celu wybrania najkorzystniejszej
 wagę 
3| rozpatrujemy następujący przypadek: a) maksymalna możliwa waga najbardziej wartościowej opcji (2), później drugiej najbardziej opłacalne opcji (4). I to tyle. Żaden inny przypadek nie musi być rozpatrywany co można uzasadnić jeszcze jednym zdaniem.
15 sty 18:08
Des: Prawdą jest, że do tego typu problemu nie można napisać 'uniwersalnego' skryptu? Takiego, który będzie działał dla dowolnego zbioru argumentów i wartości? Wykładowca od technologii twierdził, że dla jednego zbioru skrypt może działać, ale on jest w stanie znaleźć inny taki zbiór, dla którego skrypt się 'sypie'
15 sty 18:15
Blee: więc po kolei 1) mamy nakazane, że bierzemy (min) 1 sztukę (3) i (min) 1 sztukę (4) i NIE BIERZEMY (5) więc nasza waga = 15 − 1*waga3 − 1*waga4 = 12kg 2) równanie: x1*waga1 + x2*waga2 + x3*waga4 + 0*waga5 = 12 3)
 wartośći 
liczymy wartośćjednostkowai =

dla każdego i mamy:
 wagai 
 4 
wartośćjednostkowa1 =

= 0.3
 12 
 10 
wartośćjednostkowa2 =

= 2.5
 4 
 2 
wartośćjednostkowa3 =

= 1
 2 
 2 
wartośćjednostkowa4 =

= 2
 1 
4) czyli 'najbardziej opłaca' się brać (2) (największa wartość na jednostkę wagi) 5) piszemy procedurę (piszę 'pseudokod' ):
15 sty 18:39
Pytający: O, tego że "nie chce wziąć przedmiotu nr 5" nie doczytałem. Znaczy w moim poście powinno być: 0 ≤ ki ≤ n dla i∊{1, 2} 1 ≤ ki ≤ n dla i∊{3, 4} k5 = 0
15 sty 18:44
Blee: Algorytm da się zrobić tak, że będzie działał dla dowolnego przypadku, ale to trochę zabawy będzie. Ogólnie będzie on zaczynał od maksymalizowania najbardziej optymalnych (największa wartoscjednostkowa, a przy takiej samej priorytetuje ten o niższej wadze). Zapamiętuje otrzymany wynik. Jeżeli pozostało jakieś miejsce to schodzi poziom niżej z ostatnim branym elementem. Zapisuje wynik. Jeżeli pozostało jakieś miejsce to schodzi poziom niżej z ostatnim branym elementem. Zapisuje wynik. Itd. Jeżeli w którymś miejscu 'wyzerował' jakiś element (pierwotnie wybierany) zaczyna schodzić z elementem 'poziom wyżej', resetując ilości wszystkich dalszych elementów.
15 sty 19:12
z: Optymalne to już najlepsze! Nie może być coś "najbardziej optymalne" emotka Dziękuje wszystkim za pomoc
15 sty 19:46
Blee: ogólnie rzecz ujmując tak −−− jednak pisząc to miałem na myśli że algorytm będzie brał maksymalną liczbą OPTYMALNEGO argumentu i później dopełniał to 'kolejnymi (już nie optymalnymi) argumentami' które w tym momencie staną się optymalnym wyborem.
15 sty 19:49