RICERCA

Programmazione dinamica, principi di base

Per selezionare la soluzione ottimale durante l'esecuzioneLe attività di programmazione a volte necessitano di ordinare un gran numero di combinazioni di dati, che carica la memoria di un personal computer. Tali metodi includono, ad esempio, il metodo di programmazione "divide et impera". In questo caso, l'algoritmo prevede la divisione delle attività in piccole sottotask separate. Questo metodo viene utilizzato solo nei casi in cui le piccole attività secondarie sono indipendenti tra loro. Per evitare di svolgere un lavoro extra nel caso in cui le attività secondarie siano interdipendenti, viene utilizzato il metodo di programmazione dinamico proposto dall'americano R. Bellman negli anni '50.

L'essenza del metodo

La programmazione dinamica consiste nel determinare la soluzione ottimale di un problema n-dimensionale, dividendolo in n stadi separati. Ognuno di loro è una sottoattività rispetto a una variabile.

Il principale vantaggio di questo approccio èSupponiamo che gli sviluppatori siano impegnati in attività di ottimizzazione unidimensionale di attività secondarie invece che in un problema n-dimensionale e che la soluzione del problema principale sia "bottom-up".

Si consiglia di applicare dinamicoprogrammazione nei casi in cui le sottoattività sono interconnesse, vale a dire avere moduli comuni L'algoritmo fornisce una soluzione per ciascuna delle attività secondarie una volta e il salvataggio delle risposte viene eseguito in una tabella speciale. Ciò rende possibile non calcolare nuovamente la risposta quando si incontra una sottotask simile.

Il compito della programmazione dinamica è risoltodomanda di ottimizzazione. L'autore di questo metodo R. Bellman ha formulato il principio di ottimalità: qualunque sia lo stato iniziale di ogni fase e la decisione determinata in questa fase, vengono selezionati tutti i seguenti rispetto allo stato che il sistema accetta alla fine del passo.

Il metodo migliorerà le prestazioni delle attività risolte iterando su opzioni o ricorsioni.

La costruzione dell'algoritmo del problema

La programmazione dinamica coinvolgela costruzione di un tale algoritmo di problemi, in cui il problema è suddiviso in due o più sottoattività, in modo che la sua soluzione consista nella soluzione ottimale di tutte le attività secondarie in essa incluse. Inoltre, è necessario scrivere una relazione di ricorrenza e calcolare il valore ottimale del parametro per l'attività nel suo complesso.

A volte al 3 ° passo è necessario memorizzare ulteriormente alcune informazioni di supporto sullo stato di avanzamento di ciascuna attività secondaria. Questo è chiamato flyback.

Applicazione del metodo

La programmazione dinamica viene applicata quando ci sono due caratteristiche:

  • ottimale per le attività secondarie;
  • la presenza nel compito di sottotaghe sovrapposte.

Risolvere un problema di ottimizzazione con il metodoprogrammazione dinamica, è necessario prima descrivere la struttura della soluzione. Il compito è ottimale se la soluzione del problema consiste nelle soluzioni ottimali delle sue attività secondarie. In questo caso, è consigliabile utilizzare la programmazione dinamica.

La seconda proprietà del problema, essenziale per questometodo: un piccolo numero di attività secondarie. La soluzione ricorsiva del problema utilizza le stesse sottoattività sovrapposte, il cui numero dipende dalla dimensione delle informazioni iniziali. La risposta è memorizzata in una tabella speciale, il programma risparmia tempo utilizzando questi dati.

L'uso della dinamicaprogrammando quando in sostanza il problema è necessario prendere decisioni a tappe. Ad esempio, si consideri un semplice esempio del compito di sostituire e riparare le attrezzature. Ad esempio, in una macchina per fonderia di pneumatici, le gomme vengono prodotte contemporaneamente in due diverse forme. Nel caso in cui uno dei moduli fallisce, è necessario smontare la macchina. È chiaro che a volte è più vantaggioso sostituire la seconda forma per non smontare la macchina nel caso in cui questa forma risulti anche inutilizzabile nella fase successiva. Inoltre, è più facile sostituire entrambe le forme di lavoro prima che inizino a fallire. Il metodo di programmazione dinamica determina la migliore strategia in materia di sostituzione di tali moduli, tenendo conto di tutti i fattori: benefici derivanti dal funzionamento continuo delle forme, perdite da fermo macchina, costo dei pneumatici scartati e altro ancora.

  • valutazione: