Cosa è "dinamico" nella programmazione dinamica?


9

Uno dei miei anziani ha avuto un colloquio di lavoro e gli è stato chiesto perché si chiama dinamico. Non ha potuto rispondere e dopo aver rinunciato all'intervistatore ha detto che non c'è nulla di dinamico, si chiama così. Per me è difficile da credere.

Fa riferimento al fatto che i sottoproblemi vengono risolti durante il runtime e utilizzati per raggiungere l'obiettivo finale? Ti piace l'allocazione dinamica della memoria durante il runtime?

[RISPOSTA]

Avrei dovuto leggere questo articolo wiki prima di porre la domanda, scusa.


2
Risposta breve, è solo un nome. Non ha bisogno di avere un significato letterale.
Yuval Filmus,

4
Probabilmente, le implementazioni tipiche di DP (riempimento di tabelle) sono statiche quanto un algoritmo può ottenere.
Raffaello

Risposte:


1

Ho sempre intuito che significava che gli algoritmi che utilizzavano la programmazione dinamica sembravano modificare lo spazio del problema "in modo dinamico " fino a quando il problema non poteva essere risolto con un algoritmo avido.

Ad esempio, con il problema Scacchiera , l'algoritmo di programmazione dinamica modifica l'intera scheda mentre la attraversa e, infine, può essere utilizzato un algoritmo avido (allo stesso modo, con l'algoritmo di percorso più breve di Dijkstra, ecc.).

Non sono sicuro se ciò generalizzi a ogni problema di programmazione dinamica.


9

In realtà, non c'è nulla di speciale nel nome "programmazione dinamica"; la stessa tecnica consiste nel ricorrere in modo intelligente a una ricorsione. Vedi questa domanda e guarda la risposta @Jeffe, in cui è riportato che Belman ha scelto quel nome per essere intenzionalmente distratto.


3
Sebbene ciò possa teoricamente rispondere alla domanda, sarebbe preferibile includere qui le parti essenziali della risposta e fornire il collegamento come riferimento.
John Dvorak,

Qualcuno su Wikipedia sembra non essere d'accordo, ho appena trovato questo: è dinamico perché i valori nella tabella sono compilati dall'algoritmo basato su altri valori della tabella e sta programmando nel senso di impostare le cose in una tabella, come il modo in cui la televisione la programmazione riguarda quando trasmettere ciò che mostra - su Wikibooks
kintoki il

@akki: ci sono esempi di programmazione dinamica in cui una tabella non è affatto necessaria ...
Massimo Cafaro,

1
O(1)mnO(min(m,n))mn

2
@akki: questo è esattamente ciò a cui mi riferisco quando dico che DP sta svolgendo in modo intelligente la ricorsione! Ma il nome stesso era inutile e rimane inutile.
Massimo Cafaro,

6

C'è una storia interessante qui ... Bellman ha aperto la strada a questo paradigma. Ma questa era in realtà una ricerca matematica. Ai suoi tempi, l'allora segretario alla difesa era paranoico delle parole Research and Math (pazzo, giusto!). Bellman aveva paura che il secretart fosse furioso per il suo lavoro e alla fine lo avrebbe messo nei guai. Quindi per offuscare un po 'le cose, l'ha definita Programmazione dinamica , tuttavia non c'è nulla di' dinamico 'al riguardo.


1
Fonte per questo? Sembra una storia davvero interessante.
jmite,

Proprio come una nota a margine: non è chiaro chi abbia ideato la programmazione dinamica per la prima volta. A Bellman dovrebbe essere riconosciuto il merito di aver dimostrato che qualsiasi implementazione di Programmazione dinamica quando è ottimale obbedisce alle cosiddette equazioni di Bellman-Ford. Sfortunatamente, sembra che molte persone credano facilmente che ciò renda Bellman il principale ricercatore dietro l'idea originale.
Carlos Linares López,

@jmite l'ho letto in qualche posto (probabilmente qualche blog) .. proverò a fornire la fonte ...
Subhayan

@jmite Puoi trovare la storia nella nota di Jeff di Lecture 5: Dynamic Programming e anche nel wiki: programmazione dinamica .
hengxin,

3

Richard Bellman la chiamò Programmazione dinamica nelle parole di Bellman inserisci qui la descrizione dell'immagine

Ho trascorso il quartiere autunnale (del 1950) a RAND. Il mio primo compito era trovare un nome per i processi decisionali multistadio.

Una domanda interessante è: da dove viene il nome, la programmazione dinamica? Gli anni '50 non furono anni buoni per la ricerca matematica. Abbiamo avuto un signore molto interessante a Washington di nome Wilson. Era il segretario alla Difesa, e in realtà aveva una paura patologica e l'odio per la parola ricerca. Non sto usando il termine alla leggera; Lo sto usando esattamente. Il suo viso sarebbe soffocato, diventerebbe rosso e diventerebbe violento se le persone usassero il termine ricerca in sua presenza. Puoi immaginare come si sentiva, quindi, riguardo al termine, matematico. La RAND Corporation era impiegata dall'Aeronautica Militare, e l'Aeronautica militare aveva Wilson come capo, essenzialmente. Quindi, ho sentito che dovevo fare qualcosa per proteggere Wilson e l'Aeronautica dal fatto che stavo davvero facendo matematica all'interno della RAND Corporation. Quale titolo, quale nome, potrei scegliere? In primo luogo ero interessato a pianificare, a prendere decisioni, a pensare. Ma pianificare, non è una buona parola per vari motivi. Ho deciso quindi di usare la parola "programmazione". Volevo far passare l'idea che fosse dinamico, che fosse multistadio, che fosse variabile nel tempo. Ho pensato, uccidiamo due uccelli con una fava. Prendiamo una parola che ha un significato assolutamente preciso, vale a dire dinamica, nel senso fisico classico. Ha anche una proprietà molto interessante come aggettivo, ed è impossibile usare la parola dinamica in senso peggiorativo. Prova a pensare a una combinazione che potrebbe dargli un significato peggiorativo. È impossibile. Quindi, ho pensato che la programmazione dinamica fosse un buon nome. Era qualcosa a cui nemmeno un deputato poteva obiettare.

Fonte: Eye of the Hurricane, Richard Bellman (Autobiografia)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.