Dla programowanie dynamiczne może być stosowane do problemu, nie powinno być
ja. Optymalna struktura w podproblemów:
Oznacza to, że jeśli rozbić swój problem na mniejsze jednostki, te mniejsze jednostki muszą być również podzielone na jeszcze mniejsze jednostki do optymalnego rozwiązania. Na przykład w sortowaniu scalonym tablica liczb może zostać posortowana, jeśli podzielimy ją na dwie podmary, posortujemy i połączymy. Podczas sortowania tych dwóch podbarw, powtórz ten sam proces, który zastosowano w poprzednim zdaniu. Optymalne rozwiązanie (sortowana tablica) pojawia się wtedy, gdy znajdziemy optymalne rozwiązanie dla jego podproblemów (sortujemy podbarwniki i łączymy je). To wymaganie jest spełnione dla sortowania scalonego. Podproblemy muszą również być niezależne, aby mogły podążać za optymalną strukturą.Jest to również spełnione przez sortowanie scalone, ponieważ rozwiązania podproblemów nie mają wpływu na rozwiązania innych firm. Na przykład, rozwiązania dwóch części tablicy nie mają wpływu na ich sortowanie.
ii. Nakładające się na siebie podproblemy:
Oznacza to, że podczas rozwiązywania problemu podrobów, które formułujesz, powtarza się, a więc trzeba je rozwiązać tylko raz. W przypadku sortowania scalonego wymaganie to będzie spełniane rzadko w normalnych przypadkach. Tablica liczb, takich jak 2 1 3 4 9 4 2 1 3 1 9 4, może być dobrym kandydatem do nakładania się pod-problemów na sortowanie scalone. W takim przypadku rozwiązanie sortowania podproblemów (2 1 3) można zapisać w tabeli do ponownego wykorzystania, ponieważ zostanie ono wywołane dwukrotnie podczas obliczeń. Ale jak widać, istnieje bardzo nikła szansa, że losowa tablica liczb będzie miała tego rodzaju powtarzające się sztuczki. Tak więc byłoby to nieefektywne, gdybyśmy użyli dynamicznej techniki programowania, takiej jak zapamiętywanie, dla algorytmu typu sortowanie scalone.
Nie. Algorytm Dijkstry wykorzystuje chciwą strategię.
Tak. Jeśli mogę zacytować Wikipedia tutaj, "Programowanie dynamiczne jest szeroko stosowane w bioinformatyce do zadań, takich jak dopasowanie sekwencji, składanie białka, przewidywanie struktury RNA i wiązanie białka z DNA." [1]
[1] https://en.wikipedia.org/wiki/Dynamic_programming
Co masz na myśli mówiąc 'wniosek' –