I_R_W14_M35_C++ Programowanie dynamiczne - znajdowanie spójnego podciągu
Programowanie dynamiczne a technika dziel i zwyciężaj
Poznaliśmy już technikę dziel i zwyciężaj. Ten e‑materiał poświęcony jest programowaniu dynamicznemu, ma z nią pewne cechy wspólne, ale można też wskazać kilka różnic.
Podobieństwa:
Obie metody polegają na rozkładaniu większego problemu na mniejsze części, co ułatwia jego rozwiązanie.
Zarówno programowanie dynamiczne, jak i technika dziel i zwyciężaj często wykorzystują rekurencję do rozwiązania podproblemów.
Obydwie techniki są stosowane do rozwiązywania złożonych problemów, które są trudne lub niemożliwe do rozwiązania przy użyciu prostych podejść iteracyjnych.
Są powszechnie stosowane w algorytmice i znalazły szerokie zastosowanie w różnych dziedzinach, od optymalizacjioptymalizacji po przetwarzanie danych.
Różnice:
Programowanie dynamiczne polega na rozkładaniu problemu na mniejsze podproblemy, rozwiązywaniu ich, a następnie wykorzystywaniu tych rozwiązań do rozwiązania większego problemu. Kluczowe jest tu zapamiętywanie rozwiązań podproblemów, aby uniknąć ich ponownego rozwiązywania.
Metoda dziel i zwyciężaj polega na dzieleniu problemu na mniejsze, niezależne części, rozwiązywaniu ich oddzielnie, a następnie łączeniu wyników do uzyskania końcowego rozwiązania. Każda część jest rozwiązywana od nowa, bez wykorzystania wyników innych części.Programowanie dynamiczne wymaga przechowywania wyników rozwiązanych podproblemów.
Metoda dziel i zwyciężaj nie wymaga zazwyczaj przechowywania wyników podproblemów, ponieważ każdy podproblem jest rozwiązywany niezależnie.Programowanie dynamiczne jest używane głównie w problemach optymalizacyjnych, gdzie istnieje wiele możliwych rozwiązań, a celem jest znalezienie najlepszego z nich.
Metoda dziel i zwyciężaj jest stosowana w problemach, które naturalnie dzielą się na mniejsze części, takich jak sortowanie lub wyszukiwanie.Programowanie dynamiczne jest efektywne, gdy te same podproblemy powtarzają się wielokrotnie.
Metoda dziel i zwyciężaj jest najskuteczniejsza, gdy podproblemy są unikalne i nie powtarzają się.
Słownik
zapamiętywanie wyników mniejszych podproblemów, aby później móc z nich skorzystać przy dalszych etapach rozwiązywania większych podproblemów
problem obliczeniowy, którego rozwiązanie polega na znalezieniu największej lub najmniejszej wartości pewnego parametru tego problemu, spełniającej określoną własność