Problem plecakowy
Stosując algorytmy zachłanne, poprzez wdrażanie rozwiązań lokalnie optymalnych próbujemy doprowadzić do znalezienia globalnie optymalnego rozwiązania problemu. Implementacja tego typu algorytmów jest nieskomplikowana, a ich złożoność czasowa jest przeważnie mniejsza od algorytmów stosujących dokładniejsze strategie. Ponadto istnieją problemy algorytmiczne, w których odpowiednio określona strategia zachłanna pozwala uzyskać optymalne wyniki (czyli najlepsze dla podanych danych) – przykładem takiego problemu jest problem szukania najkrótszej ścieżki, do którego rozwiązania wykorzystuje się algorytm Dijkstryalgorytm Dijkstry.
Szczegółowe informacje o algorytmach zachłannych znajdziesz w e‑materiale Algorytmy zachłanneAlgorytmy zachłanne.
Jednym z problemów, do rozwiązania których wykorzystujemy algorytmy zachłanne, jest problem plecakowy. W tym e‑materiale poznamy kilka jego wariantów oraz dowiemy się, jak zdefiniować ich zachłanne rozwiązania.
Implementację omawianego algorytmu przedstawiamy w e‑materiałach:
Problem plecakowy w językuC++Problem plecakowy w językuC++,
Problem plecakowy w języku JavaProblem plecakowy w języku Java,
Problem plecakowy w języku PythonProblem plecakowy w języku Python.
Wyjaśnisz, na czym polega problem plecakowy.
Wymienisz i scharakteryzujesz warianty problemu plecakowego – ogólny, decyzyjny oraz ciągły.
Rozwiążesz problem plecakowy, stosując algorytm zachłanny.
Przedyskutujesz ograniczenia metody zachłannej oraz wyjaśnisz, w jakich przypadkach wynik może być daleki od najlepszego możliwego.