Tesi Robotica Un coprocessore per Stereo-Matching: Profiling ... | Page 42

i i “MF_Tesi” — 2011/9/12 — 11:39 — page 42 — #42 i 3.2. ELEMENTI DELLA PROGRAMMAZIONE DINAMICA i 42 al problema, in contrapposizione alla soluzione ottima, dato che possono esserci più di una soluzione tale che il suo valore è quello ottimo. Lo sviluppo di un algoritmo di programmazione dinamica può essere suddiviso in una sequenza di quattro passi: 1. Caratterizzazione della struttura di una soluzione ottima. 2. Definizione ricorsiva della soluzione ottima. 3. Computare il valore di una soluzione ottima in maniera bottom-up. 4. Costruire una soluzione ottima a partire dalle informazioni computate. I primi tre passi costituiscono la base della soluzione ad un problema con la programmazione dinamica. L’ultimo passo può essere omesso solo se è richiesto il valore di una soluzione ottima. Quando si esegue il passo 4, a volte si mantengono in memoria informazioni aggiuntive durante la computazione nel passo 3 per facilitare la costruzione di una soluzione ottima. 3.2 Elementi della programmazione dinamica Quand’è che dobbiamo cercare una soluzione di programmazione dinamica per un problema? Gli elementi chiave che un problema di ottimizzazione deve possedere affinché sia possibile cercare una soluzione di programmazione dinamica sono due: sotto-struttura ottimale e sovrapposizione dei sotto-problemi. Vedremo anche una variante chiamata memoization, in modo da trarre vantaggio dalla proprietà di sovrapposizione dei problemi. 3.2.1 Sotto-struttura ottimale Il primo passo per risolvere un problema di ottimizzazione con la programmazione dinamica è quello di caratterizzare la struttura di una soluzione ottimale. Infatti, un problema presenta una sotto-struttura ottimale se una soluzione ottimale al problema contiene al suo interno la soluzione ottima dei suoi sottoproblemi. Ogni volta che si presenta un problema di ottimizzazione che presenta i i i i