W informatyce mówi się, że problem ma nakładające się podproblemy, jeśli problem można podzielić na podproblemy, które są wielokrotnie używane lub algorytm rekurencyjny dla problemu rozwiązuje ten sam podproblem w kółko, zamiast zawsze generować nowe podproblemy.
Jaka jest optymalna podstruktura i nakładające się podproblemy w programowaniu dynamicznym?
Problem ma optymalną właściwość podstruktury, jeśli optymalne rozwiązanie danego problemu można uzyskać za pomocą optymalnego rozwiązania jego podproblemów. Programowanie dynamiczne korzysta z tej właściwości, aby znaleźć rozwiązanie.
Co nakłada się na podproblem w programowaniu dynamicznym?
1) Zachodzące na siebie podproblemy:
Programowanie dynamiczne jest używane głównie wtedy, gdy ciągle potrzebne są rozwiązania tych samych podproblemów. W programowaniu dynamicznym obliczone rozwiązania podproblemów są przechowywane w tabeli, dzięki czemu nie trzeba ich ponownie przeliczać.
Jaka jest różnica między optymalną podstrukturą a nakładającymi się podproblemami?
Rozumiem docelowe podejście dla obu metod, w których Optymalna podstruktura oblicza optymalne rozwiązanie na podstawie danych wejściowych n, podczas gdy nakładające się podproblemy dotyczą wszystkich rozwiązań dla zakresu danych wejściowych, powiedzmy od 1 do n. W przypadku problemu takiego jak problem z cięciem pręta.
Która z tych technik wykorzystuje nakładanie się podproblemów?
Programowanie dynamiczne to technika rozwiązywania problemów z nakładającymi się podproblemami. W tym celu przechowujemy wynik rozwiązania problemu podrzędnego, który został rozwiązany raz, do ponownego wykorzystania w przyszłości. Technika przechowywania rozwiązań podproblemów nazywa się zapamiętywaniem.