Czytałem o Programowaniu dynamicznym, kiedy natknąłem się na następujący cytat
Algorytm programowania dynamicznego zbada wszystkie możliwe sposoby rozwiązania problemu i wybierze najlepsze rozwiązanie. Dlatego z grubsza możemy myśleć o programowaniu dynamicznym jako inteligentnej metodzie brutalnej siły, która pozwala nam przejść przez wszystkie możliwe rozwiązania, aby wybrać najlepsze . Jeśli zakres problemu jest taki, że przejście przez wszystkie możliwe rozwiązania jest możliwe i wystarczająco szybkie, programowanie dynamiczne gwarantuje znalezienie optymalnego rozwiązania
Podano następujący przykład
Załóżmy na przykład, że musisz dotrzeć z punktu A do punktu B tak szybko, jak to możliwe, w danym mieście, w godzinach szczytu. Algorytm programowania dynamicznego zajmie się całym raportem drogowym, sprawdzając wszystkie możliwe kombinacje dróg, którymi możesz się udać, i dopiero wtedy powie ci, która droga jest najszybsza. Oczywiście być może będziesz musiał poczekać chwilę, aż algorytm się skończy, i dopiero wtedy możesz rozpocząć jazdę. Ścieżka, którą wybierzesz, będzie najszybsza (przy założeniu, że w środowisku zewnętrznym nic się nie zmieniło)
Brute Force wypróbowuje wszystkie możliwe rozwiązania, zanim zdecyduje się na najlepsze rozwiązanie.
Czym różni się Programowanie dynamiczne od Brute Force, jeśli przechodzi przez wszystkie możliwe rozwiązania przed wybraniem najlepszego , jedyną różnicą, którą widzę, jest to, że Programowanie dynamiczne bierze pod uwagę dodatkowe czynniki (w tym przypadku warunki na drodze).
Czy mam rację twierdząc, że Programowanie Dynamiczne jest podzbiorem metody Brute Force?
intelligent, brute force
, ale potem zapomina opisać „inteligentną” część