DAA – 0-1 Knapsack (Polski)

ogłoszenia

w tym tutorialu, wcześniej omówiliśmy ułamkowy problem plecaka za pomocą chciwego podejścia. Pokazaliśmy, że chciwe podejście daje optymalne rozwiązanie dla ułamkowego plecaka. Jednak ten rozdział obejmie 0-1 problem Plecaka i jego analizę.

w plecaku 0-1 przedmioty nie mogą zostać złamane, co oznacza, że złodziej powinien zabrać przedmiot jako całość lub powinien go zostawić., To jest powód, dla którego nazwaliśmy go „0-1 Knapsack”.

dlatego w przypadku plecaka 0-1 wartość xi może wynosić 0 LUB 1, gdzie inne ograniczenia pozostają takie same.

0-1 Knapsack nie może być rozwiązany przez chciwe podejście. Chciwe podejście nie zapewnia optymalnego rozwiązania. W wielu przypadkach chciwe podejście może dać optymalne rozwiązanie.

poniższe przykłady utwierdzą naszą wypowiedź.

przykład-1

przyjrzyjmy się, że pojemność plecaka wynosi W = 25, A pozycje są jak pokazano w poniższej tabeli.,

iv id=”5d79caad7f”

c

pozycja A B d
zysk 24 18 10
waga 24 10 10 7

bez uwzględnienia zysku na jednostkę wagi (pi/Wi), jeśli zastosujemy chciwe podejście do rozwiązania tego problemu, pierwsza pozycja a zostanie wybrana, ponieważ przyniesie maksymalny zysk wśród wszystkich elementów.,

Po wybraniu elementu A nie zostanie wybrany żaden element. Stąd, dla tego podanego zestawu pozycji całkowity zysk wynosi 24. Natomiast optymalne rozwiązanie można osiągnąć wybierając pozycje, B i C, gdzie całkowity zysk wynosi 18 + 18 = 36.

przykład-2

zamiast wybierać elementy na podstawie ogólnej korzyści, w tym przykładzie elementy są wybierane na podstawie stosunku pi / wi. Weźmy pod uwagę, że pojemność plecaka wynosi W = 60, a pozycje są jak pokazano w poniższej tabeli.,

Item A B C
Price 100 280 120
Weight 10 40 20
Ratio 10 7 6

Using the Greedy approach, first item A is selected. Then, the next item B is chosen. Hence, the total profit is 100 + 280 = 380., Jednak optymalne rozwiązanie tego przypadku można osiągnąć wybierając pozycje, B i C, gdzie całkowity zysk wynosi 280 + 120 = 400.

stąd można wnioskować, że chciwe podejście może nie dać optymalnego rozwiązania.

aby rozwiązać 0-1 Knapsack, wymagane jest dynamiczne podejście programistyczne.

problem ze stwierdzeniem

złodziej obrabuje sklep i może nosić maksymalną wagę W do plecaka. Istnieje n elementów i waga it-tego elementu jest wi, a zysk z wyboru tego elementu jest pi. Jakie przedmioty powinien zabrać złodziej?,

podejście dynamiczno-programistyczne

niech będę najwyżej numerowanym elementem w optymalnym rozwiązaniu S dla W. Wtedy S ' = S – {i} jest rozwiązaniem optymalnym dla w-wi, a wartość rozwiązania S wynosi Vi plus wartość pod-problemu.

możemy wyrazić ten fakt w następującym wzorze: zdefiniuj c jako rozwiązanie dla pozycji 1,2, … , i oraz maksymalnej wagi w.,

algorytm pobiera następujące wejścia

  • Maksymalna waga W

  • liczba pozycji n

  • dwie sekwencje v = <v1, V2, …, VN> I w = <W1, W2, …, WN>

zestaw elementów do pobrania można wywnioskować z tabeli, zaczynając od C i śledząc wstecz, skąd pochodzą optymalne wartości.

Analiza

algorytm ten przyjmuje θ(n, w) razy tyle, ile ma tabela c (n + 1).(w + 1) wpisy, gdzie każdy wpis wymaga θ(1) czasu na obliczenie.,

Reklama

Leave a Comment