Jeden z moich seniorów odbył rozmowę kwalifikacyjną i zapytano go, dlaczego nazywa się to dynamicznym. Nie mógł odpowiedzieć, a po tym, jak zrezygnował z wywiadu, powiedział, że nie ma w tym nic dynamicznego, po prostu tak to się nazywa. Trudno mi w to uwierzyć.
Czy odnosi się to do faktu, że podproblemy są rozwiązywane w czasie wykonywania i wykorzystywane do osiągnięcia ostatecznego celu? Jak dynamiczny przydział pamięci, który ma miejsce w czasie wykonywania?
[ODPOWIEDŹ]
Przepraszam, powinienem przeczytać ten artykuł wiki przed zadaniem pytania.
terminology
dynamic-programming
kintoki
źródło
źródło
Odpowiedzi:
Zawsze intuicyjnie rozumiałem, że oznaczało to, że algorytmy wykorzystujące programowanie dynamiczne wydawały się „ dynamicznie ” edytować przestrzeń problemu, dopóki problem nie mógł zostać rozwiązany za pomocą chciwego algorytmu.
Na przykład, w przypadku problemu Szachownica , algorytm programowania dynamicznego edytuje całą płytkę podczas jej przechodzenia, a następnie można zastosować chciwy algorytm (podobnie z algorytmem najkrótszej ścieżki Dijkstry itp.).
Nie jestem jednak pewien, czy uogólnia to każdy problem z programowaniem dynamicznym.
źródło
Właściwie w nazwie „programowanie dynamiczne” nie ma nic specjalnego; sama technika polega na inteligentnie rozwijającej się rekurencji. Zobacz to pytanie i spójrz na odpowiedź @Jeffe, w której odnotowano, że Belman wybrał tę nazwę, aby celowo odwracać uwagę.
źródło
Jest tu ciekawa historia. Bellman był pionierem tego paradygmatu. Ale tak naprawdę były to badania matematyczne. W swoim czasie ówczesny sekretarz obrony był paranoikiem słów Research and Math (wariat, prawda!). Bellman bał się, że sekretnik będzie wściekły na swoją pracę i ostatecznie wpędzi go w kłopoty. Żeby trochę rozmyć, nazwał to Programowaniem dynamicznym , jednak nie ma w tym nic „dynamicznego”.
źródło
Richard Bellman nazwał to Programowaniem dynamicznym słowami w Bellman
Źródło: Eye of the Hurricane, Richard Bellman (Autobiography)
źródło