Gdybyś mógł zmienić nazwę programowania dynamicznego, jak byś to nazwał?
Gdybyś mógł zmienić nazwę programowania dynamicznego, jak byś to nazwał?
Odpowiedzi:
Autobiografia Richarda Bellmana sugeruje, że wybrał termin „programowanie dynamiczne”, aby celowo rozpraszać uwagę.
Lata pięćdziesiąte to nie były dobre lata na badania matematyczne. Mieliśmy w Waszyngtonie bardzo interesującego dżentelmena o imieniu Wilson. Był sekretarzem obrony i rzeczywiście miał patologiczny strach i nienawiść do słowa „badania”. Nie używam tego terminu lekko; Używam tego dokładnie. Jego twarz się rozchmurzyłaby, zmieniłaby kolor na czerwony i stałby się gwałtowny, gdyby ludzie używali terminu „badania” w jego obecności. Możesz więc sobie wyobrazić, jak się czuł w związku z terminem „matematyczne”. Korporacja RAND była zatrudniona przez siły powietrzne, a siły powietrzne miały w zasadzie Wilsona. Dlatego czułem, że muszę zrobić coś, aby ochronić Wilsona i Siły Powietrzne przed faktem, że naprawdę zajmowałem się matematyką w korporacji RAND.
Jaki tytuł, jakie imię mogę wybrać? Po pierwsze byłem zainteresowany planowaniem, podejmowaniem decyzji, myśleniem. Ale planowanie nie jest dobrym słowem z różnych powodów. Dlatego postanowiłem użyć słowa „programowanie”. Chciałem się przekonać, że to dynamiczne, wieloetapowe, zmienne w czasie - pomyślałem, zabijmy dwa ptaki jednym kamieniem. Weźmy słowo, które ma absolutnie dokładne znaczenie, mianowicie „dynamiczny”, w klasycznym sensie fizycznym. Ma również bardzo interesującą właściwość jako przymiotnik i nie można używać słowa „dynamiczny” w znaczeniu pejoratywnym. Spróbuj wymyślić jakąś kombinację, która prawdopodobnie nada mu pejoratywne znaczenie. To niemożliwe. Dlatego pomyślałem, że „programowanie dynamiczne” to dobre imię. Było to coś, czemu nawet kongresmen nie mógł się sprzeciwić.
(Jak wskazują Russell i Norvig w swoim podręczniku sztucznej inteligencji, ta historia musi być twórczym upiększeniem prawdy. Bellman po raz pierwszy użył wyrażenia „programowanie dynamiczne” w 1952 r. , A Charles Erwin Wilson został sekretarzem obrony dopiero w 1953 r. )
W każdym razie oryginalna motywacja Bellmana sugeruje planowanie wieloetapowe , ale przynajmniej dla celów algorytmicznych wolałbym coś w rodzaju oszczędnej rekurencji oddolnej , z mniejszą liczbą sylab.
Istnieją dwa ważne aspekty DP: (1) zdefiniowanie podproblemów (tj. Utworzenie „tabeli”, która może być wielowymiarową tablicą indeksowaną może przez liczby całkowite, wierzchołki, podzbiory wierzchołków itp.) Oraz (2) rekurencyjne rozwiązywanie podproblemy. Proponuję „rekurencję tabelaryczną / tabelaryczną” jako nazwę odnoszącą się do obu aspektów.
Zapamiętywanie jest dość powszechnym wariantem.
Aby przejść do podziału i podboju , powiedziałbym, że łączymy i łączymy.
Zwykle używam obu słów, łączę i łączę podczas nauczania / wyjaśniania DP; ale nie używane jawnie łączenie i łączenie. Czasami używałem nakładających się, dzielących i podbijających, aby skontrastować oba paradygmaty.
Po ostatnim wykładzie na temat programowania dynamicznego w projektowaniu algorytmów poprosiłem studentów o zaproponowanie nowej nazwy tej techniki. Podczas gdy mnie bawiło „Trudne programowanie”, chciałem czegoś, co sprawi, że technika będzie bardziej niezapomniana. Po dyskusji tutaj mogę zaproponować dwa nazwy, jeden dla odgórnego i jeden dla oddolnego:
Multiway-Divide i Memoized-Conquer (alias Divide ^ M & Conquer ^ M) i
Scal wszystkie podproblemy (alias Merge_all)
Ten dokument ( paywalled doi ) nazywa problemy, które można zaatakować przy użyciu DP, „rozkładalne”.
Rozmawiałem o tym niedawno z kilkoma kolegami i po gorącej dyskusji wymyśliliśmy tabelaryczne buforowanie połączeń .
Sugerowałbym nazwać Programowanie Indukcyjne - jako coś w rodzaju pomostu od naszych czasów do starych dobrych czasów Eulera, Kepler i in. A może nawet odwrotne programowanie indukcyjne . I tak, dla mnie DP jest silnie związany z Indukcją, w starym dobrym tego słowa znaczeniu. Zapamiętywanie, buforowanie, tabele itp. To tylko elementy techniki, a nie rdzeń podejścia do łamania zabezpieczeń.
Prawdopodobnie coś, co zawiera tabelę słów i wypełnienie , ponieważ tak się dzieje.
Widok rekurencyjny lub Horyzont rekurencyjny