R4t6FnGy9N5sw
Ilustracja przedstawia kolorowe kulki pływające na powierzchni wody.

Programowanie dynamiczne dla problemu plecakowego

Źródło: Bilal O., dostępny w internecie: unsplash.com, domena publiczna.

Programowanie dynamiczne to technika programowania, która polega na dzieleniu problemu na mniejsze podproblemy, szukaniu dla nich rozwiązania, a następnie zapamiętywania znalezionego rozwiązania, by je ponownie wykorzystać.

Istotnym aspektem programowania dynamicznego jest zasada optymalności Bellmana. Zgodnie z nią optymalne rozwiązanie problemu można skonstruować z optymalnych rozwiązań jego podproblemów. Innymi słowy, jeśli mamy do czynienia z procesem decyzyjnym rozłożonym w czasie, to strategia, która jest optymalna dla całego procesu, musi być również optymalna dla każdego etapu procesu.

Zapewne dostrzegasz już podobieństwo do poznanej już techniki dziel i zwyciężajPv0IXD75Rdziel i zwyciężaj – więcej na ich temat znajdziesz w sekcji „Przeczytaj”.

W tym e‑materiale wykorzystamy programowanie dynamiczne, by rozwiązać problem plecakowy, który szerzej omawiamy w serii e‑materiałów mu poświęconych.

Implementację rozwiązań wykorzystujących programowanie dynamiczne w wybranych językach programowania znajdziesz w e‑materiałach:

Więcej zadań? Przejdź do: Programowanie dynamiczne dla problemu plecakowego – zadania maturalneP3uZwGn7mProgramowanie dynamiczne dla problemu plecakowego – zadania maturalne.

Jeśli chcesz powtórzyć wiadomości dotyczące samego problemu plecakowego, wróć do odpowiednich e‑materiałów:

Twoje cele
  • Wyjaśnisz, czym jest programowanie dynamiczne.

  • Przeanalizujesz przykład zastosowania programowania dynamicznego w rozwiązaniu problemu plecakowego.

  • Prześledzisz rozwiązania różnych wariantów problemu plecakowego.