Algoritmi e Strutture Dati



Documenti analoghi
Algoritmi e Strutture Dati II: Parte B Anno Accademico Lezione 11

1. PRIME PROPRIETÀ 2

Il principio di induzione e i numeri naturali.

TECNICHE DI SIMULAZIONE

Simulazione traffico urbano

Ricerca Operativa Esercizi sul metodo del simplesso. Luigi De Giovanni, Laura Brentegani

Algoritmi e Strutture Dati

Dimensione di uno Spazio vettoriale

Modelli di Programmazione Lineare Intera

Logica Numerica Approfondimento 1. Minimo Comune Multiplo e Massimo Comun Divisore. Il concetto di multiplo e di divisore. Il Minimo Comune Multiplo

Esempi di algoritmi. Lezione III

Come ragiona il computer. Problemi e algoritmi

Note su quicksort per ASD (DRAFT)

Sono casi particolari di MCF : SPT (cammini minimi) non vi sono vincoli di capacità superiore (solo x ij > 0) (i, j) A : c ij, costo di percorrenza

Proof. Dimostrazione per assurdo. Consideriamo l insieme complementare di P nell insieme

Barriere assorbenti nelle catene di Markov e una loro applicazione al web

Calcolo delle Probabilita, INGEGNERIA INFORMATICA, semestre II, laurea (ord. Leonardo.

Corso di Calcolo Numerico

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da

Esercizi su lineare indipendenza e generatori

LEZIONE 23. Esempio Si consideri la matrice (si veda l Esempio ) A =

Programmazione dinamica

Algoritmo proposto. Maria Silvia Pini, Francesca Rossi, K. Brent Venable. Dipartimento di Matematica Pura e Applicata Università di Padova

Alberi binari di ricerca

Esercizio 1 Dato il gioco ({1, 2, 3}, v) con v funzione caratteristica tale che:

Metodi e Modelli Matematici di Probabilità per la Gestione

ALGORITMI e PROGRAMMI Programmazione: Lavoro che si fa per costruire sequenze di istruzioni (operazioni) adatte a svolgere un dato calcolo

b. Che cosa succede alla frazione di reddito nazionale che viene risparmiata?

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

Appunti sulla Macchina di Turing. Macchina di Turing

Iniziamo con un esercizio sul massimo comun divisore: Esercizio 1. Sia d = G.C.D.(a, b), allora:

Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2)

La misura degli angoli

Coordinazione Distribuita

Polli e conigli. problemi Piano cartesiano. Numeri e algoritmi Sistemi e loro. geometrica. Relazioni e funzioni Linguaggio naturale e

Dimostrare alla Scuola media: dal perché al rigore spontaneamente

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Problemi di localizzazione impianti

Problema del trasporto

Cluster. Vicino alla temperatura critica gli spin formano grandi gruppi (cluster)

Osservazioni sulla continuità per le funzioni reali di variabile reale

Esercizi di Gestione della Produzione Industriale. Tabella 1: tempi di lavorazione di un set di job.

Sommario della lezione

Statistica. Lezione 6

1. Limite finito di una funzione in un punto

Analisi e diagramma di Pareto

Prodotto libero di gruppi

Metodi statistici per l economia (Prof. Capitanio) Slide n. 9. Materiale di supporto per le lezioni. Non sostituisce il libro di testo

Calcolatori Elettronici B a.a. 2008/2009

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

Sistema operativo. Sommario. Sistema operativo...1 Browser...1. Convenzioni adottate

Elementi di Psicometria con Laboratorio di SPSS 1

mese richiesta

1 Estensione in strategia mista di un gioco

Lezione 8. La macchina universale

LE FUNZIONI A DUE VARIABILI

Ottimizzazione Multi Obiettivo

Università degli Studi di Ferrara - A.A. 2014/15 Dott. Valerio Muzzioli ORDINAMENTO DEI DATI

Equazioni alle differenze finite (cenni).

Capitolo 13: L offerta dell impresa e il surplus del produttore

Prodotto Disponibilità Costo e rispettando le seguenti regole di composizione delle benzine:

4 3 4 = 4 x x x 10 0 aaa

2. Limite infinito di una funzione in un punto

Teoria dei Giochi. Anna Torre

LA MASSIMIZZAZIONE DEL PROFITTO ATTRAVERSO LA FISSAZIONE DEL PREZZO IN FUNZIONE DELLE QUANTITÀ

Algoritmi e strutture dati. Codici di Huffman

Metodi e Modelli per l Ottimizzazione Combinatoria Il problema del flusso di costo minimo

Il Metodo Branch and Bound

Semantica Assiomatica

Metodi e Modelli Matematici di Probabilità per la Gestione

Soluzione degli esercizi sul moto rettilineo uniformemente accelerato

Esercizi Capitolo 6 - Alberi binari di ricerca

Calcolo del Valore Attuale Netto (VAN)

G iochi con le carte 1

Funzioni in C. Violetta Lonati

Esercizi sul moto rettilineo uniformemente accelerato

Vincere a testa o croce

ANALISI E MAPPATURA DEI PROCESSI AZIENDALI

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

Progetto Lauree Scientifiche Liceo Classico L.Ariosto, Ferrara Dipartimento di Matematica Università di Ferrara 24 Gennaio 2012

Matematica in laboratorio

La Programmazione Lineare

Introduzione alla tecnica di Programmazione Dinamica

Capitolo 7: Teoria generale della calcolabilitá

Esercitazione #5 di Statistica. Test ed Intervalli di Confidenza (per una popolazione)

Appunti di informatica. Lezione 2 anno accademico Mario Verdicchio

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME)

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

Ricerca Operativa e Logistica

A i è un aperto in E. i=1

2. LOGIN E RECUPERO DATI DI ACCESSO

4.1 Modelli di calcolo analisi asintotica e ricorrenze

10. Insiemi non misurabili secondo Lebesgue.

Modelli di Programmazione Lineare e Programmazione Lineare Intera

4. Operazioni elementari per righe e colonne

La distribuzione Normale. La distribuzione Normale

GUIDA AL PRONTUARIO MOBILE

(a cura di Francesca Godioli)

ESEMPIO 1: eseguire il complemento a 10 di 765

Transcript:

Elementi di Programmazione Dinamica Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino

Il problema La CMC produce automobili in uno stabilimento con due catene di montaggio Il telaio di un automobile entra in una catena di montaggio, riceve nuove componenti lungo n stazioni ed, infine l auto completata esce dalla catena di montaggio Ogni catena di montaggio ha n stazioni; S i,j denota la j-esima stazione della i-esima catena con i = 1, 2 e j = 1, 2,..., n S 1,j svolge la stessa funzione di S 2,j, ma le due catene sono state costruite in periodi diversi e con tecnologie diverse e, quindi, il tempo richiesto in ciascuna stazione varia a seconda della catena; sia a i,j il tempo di montaggio richiesto dalla stazione S i,j

S 1,1 S 1,2 S 1,3 S 1,n-1 S 1,n a 1,1 a 1,2 a 1,3... a 1,n-1 a 1,n n e 1 e 2 t 1,1 t 1,2 t... 1,n-1 t 2,1 t 2,1 t 2,n-1 a 2,1 a 2,2 a 2,3... a 2,n-1 a 2,n x 1 x 2 m S 2,1 S 2,2 S 2,3 S 2,n-1 S 2,n e i rappresenta il tempo di ingresso del telaio nella catena di montaggio i, mentre x i rappresenta il tempo di uscita della macchina completata dalla catena di montaggio i

Il problema Di norma, una volta che un telaio entra in una certa catena di montaggio, prosegue lungo la stessa catena; il tempo per passare da una stazione alla successiva lungo la stessa catena è trascurabile Tuttavia, per gestire delle situazioni particolari (come ad esempio, un ordine urgente), il responsabile della produzione può decidere di passare un auto non ancora completata da una catena all altra, all uscita di una stazione qualsiasi Il tempo per trasferire un telaio dalla catena di montaggio i dopo aver attraversato la stazione S i,j è t i,j

S 1,1 S 1,2 S 1,3 S 1,n-1 S 1,n a 1,1 a 1,2 a 1,3... a 1,n-1 a 1,n n e 1 e 2 t 1,1 t 1,2 t... 1,n-1 t 2,1 t 2,1 t 2,1 a 2,1 a 2,2 a 2,3... a 2,n-1 a 2,n x 1 x 2 m S 2,1 S 2,2 S 2,3 S 2,n-1 S 2,n Problema: determinare quali stazioni scegliere dalle catene 1 e 2 per minimizzare il tempo totale di assemblaggio di una macchina

S 1,4 S 1,1 S 1,2 S 1,3 S 1,5 S 1,6 7 9 3 4 8 4 2 4 2 3 1 3 4 t2 2,1 1 2 2 1 3 2 m 8 5 6 4 5 7 S 2,1 S 2,2 S 2,3 S 2,4 S 2,5 S 2,6 Non possiamo usare la forza bruta, ossia calcolare il valore di ogni possibile soluzione e scegliere quella con valore minimo Dobbiamo selezione n possibili stazioni ognuna delle quali può essere scelta in due modi distinti abbiamo 2 n possibili soluzioni

Fase 1: struttura del percorso più rapido La prima fase del paradigma di programmazione dinamica consiste nel determinare la struttura della soluzione ottima Sia p il percorso più rapido che un telaio può seguire dal punto iniziale fino ad una data stazione, diciamo S 1,j Come è fatto p? distinguiamo due possibili casi: j = 1: il telaio può seguire un solo percorso con valore e 1 j = 2,..., n: abbiamo due possibili scelte (1) il telaio proviene da S 1,j 1 ed va in S 1,j impiegando un tempo trascurabile, oppure...

Fase 1: struttura del percorso più rapido La prima fase del paradigma di programmazione dinamica consiste nel determinare la struttura della soluzione ottima Sia p il percorso più rapido che un telaio può seguire dal punto iniziale fino ad una data stazione, diciamo S 1,j Come è fatto p? distinguiamo due possibili casi: j = 1: il telaio può seguire un solo percorso con valore e 1 j = 2,..., n: abbiamo due possibili scelte (1) il telaio proviene da S 1,j 1 ed va in S 1,j impiegando un tempo trascurabile, oppure... (2) il telaio proviene da S 2,j 1 ed va in S 1,j impiegando un tempo di trasferimento pari a t 2,j 1

Fase 1: struttura del percorso più rapido Caso 1: il telaio proviene da S 1,j 1 ed va in S 1,j impiegando un tempo trascurabile (il percorso più veloce per arrivare in S 1,j passa per S 1,j 1 ) Osservazione chiave: il telaio deve aver seguito il percorso più rapido dal punto iniziale fino a S 1,j 1 start percorso più rapido S 1, j S 1, j - 1 Se, per assurdo, esiste un percorso più veloce dal punto iniziale fino a S 1,j 1, allora avremmo un percorso più veloce fino a S 1,j impossibile

Fase 1: struttura del percorso più rapido Caso 2: il telaio proviene da S 2,j 1 ed va in S 1,j impiegando un tempo di trasferimento trascurabile t 2,j 1 (il percorso più veloce per arrivare in S 1,j passa per S 2,j 1 ) Osservazione chiave: il telaio deve aver seguito il percorso più rapido dal punto iniziale fino a S 2,j 1 start percorso più rapido S 1, j S 2, j- 1 In questo caso, l esistenza di un percorso più veloce dal punto iniziale fino a S 2,j 1 implicherebbe l esistenza di un percorso più veloce fino a S 1,j assurdo

Fase 1: struttura del percorso più rapido Più in generale, una soluzione ottima di un problema (trovare il percorso più rapido per arrivare ad una stazione S 1,j ) contiene al suo interno la soluzione ottima di sottoproblemi (trovare il percorso più rapido per raggiungere S 1,j 1 o S 2,j 1 ) Faremo riferimento a questa proprietà con il termine di sottostruttura ottima Possiamo usare la sottostruttura ottima per dimostrare come costruire la soluzione ottima a partire dalle soluzioni ottime dei sottoproblemi

Fase 2: una soluzione ricorsiva Indichiamo con f i [ j ] il minor tempo possibile che impiega un telaio dal punto iniziale fino all uscita della stazione S i,j L obiettivo finale è quello di calcolare il tempo minimo che impiega il telaio per attraversare lo stabilimento; indichiamo con f questo tempo Il telaio deve raggiungere la stazione n dalla catena 1 o 2 e poi uscire dallo stabilimento, quindi f = min ( f 1 [n] + x 1, f 2 [n] + x 2 ) Non ci resta che trovare un modo per calcolare f 1 [j] e f 2 [j] con j = 1, 2,..., n

Fase 2: una soluzione ricorsiva Il caso in cui j = 1 è abbastanza facile: infatti, f i [1] è il minor tempo possibile che impiega un telaio dal punto iniziale fino all uscita della stazione S i,1. Quindi: f 1 [1] = e 1 + a 1,1 f 2 [1] = e 2 + a 2,1 Per il calcolo di f 1 [j] e f 2 [j] con j = 2, 3... n dobbiamo ragionare per casi f 1 [ j ] (con j 2) è il minor tempo possibile che impiega un telaio dal punto iniziale fino all uscita della stazione S 1,j. Abbiamo due possibili casi il percorso più rapido per S 1,j passa per S 1,j 1 il percorso più rapido per S 1,j passa per S 2,j 1

Fase 2: una soluzione ricorsiva f 1 [ j ] (con j 2) è il minor tempo possibile che impiega un telaio dal punto iniziale fino all uscita della stazione S 1,j. Abbiamo due possibili casi il percorso più rapido per S 1,j passa per S 1,j 1 f 1 [ j ] = tempo del percorso mimino fino a S 1,j 1 { }} { f 1 [ j 1 ] + a }{{} 1,j tempo trascorso in S 1,j il percorso più rapido per S 1,j passa per S 2,j 1

Fase 2: una soluzione ricorsiva f 1 [ j ] (con j 2) è il minor tempo possibile che impiega un telaio dal punto iniziale fino all uscita della stazione S 1,j. Abbiamo due possibili casi il percorso più rapido per S 1,j passa per S 1,j 1 f 1 [ j ] = f 1 [ j 1 ] + a 1,j il percorso più rapido per S 1,j passa per S 2,j 1, in maniera f 1 [ j ] = f 2 [ j 1 ] + tempo di attraversamento { }} { t 2,j 1 +a 1,j scegliamo il minimo fra i due valori

Fase 2: una soluzione ricorsiva Quindi se j 2 f 1 [ j ] = min ( f 1 [ j 1 ] + a 1,j, f 2 [ j 1 ] + t 2,j 1 + a 1,j ) Ricapitolando f 1 (j) = { e 1 + a 1,1 se j = 1 min ( f 1 [ j 1 ] + a 1,j, f 2 [ j 1 ] + t 2,j 1 + a 1,j ) se j 2 Simmetricamente f 2 (j) = { e 2 + a 2,1 se j = 1 min ( f 2 [ j 1 ] + a 2,j, f 1 [ j 1 ] + t 1,j 1 + a 2,j ) se j 2

S 1,4 S 1,1 S 1,2 S 1,3 S 1,5 S 1,6 7 9 3 4 8 4 2 4 2 3 1 3 4 t2 2,1 1 2 2 1 3 2 m 8 5 6 4 5 7 S 2,1 S 2,2 S 2,3 S 2,4 S 2,5 S 2,6 j 1 2 3 4 5 6 f 1[ j ] 9 18 20 24 32 35 f 2[ j ] 12 16 22 25 30 37 f = min(35 + 3, 37 + 2) = 38

Costruzione della soluzione ottima I valori di f i [j] sono i valori delle soluzioni ottime dei sottoproblemi che ci consentono di determinare il valore della soluzione ottima Vediamo ora come costruire la soluzione ottima; per facilitare questa costruzione definiamo: l come la catena (1 o 2) la cui ultima staziona è usata nel percorso più rapido dell intero stabilimento l i [ j ] come la catena (1 o 2) la cui (j 1)-esima stazione è usata nel percorso più rapido per arrivare ad S i,j N.B: l i [ 1 ] non è definita perchè nessuna stazione precede la stazione 1 nelle due catene di montaggio

Costruzione della soluzione ottima Per calcolare il valore di l guardiamo come viene ottenuto il valore di f. Abbiamo detto che: f = min ( f 1 [n] + x 1, f 2 [n] + x 2 ) Quindi l = { 1 se f 1 [n] + x 1 f 2 [n] + x 2 2 se f 1 [n] + x 1 > f 2 [n] + x 2 se f = f 1 [n] + x 1 il percorso più rapido passa per S 1,n, altrimenti passa per S 2,n

Costruzione della soluzione ottima Come calcoliamo l 1 [ j ] (per calcolare l 2 [ j ] procediamo in maniera del tutto simmetrica) per j = 2, 3..., n? Sia g 1 [ j ] il minor tempo possibile per raggiungere S 1,j g 1 [ j ] è pari al minor tempo possibile per raggiungere l uscita della stazione S 1,j (ossia f 1 [ j ]) meno il tempo trascorso in S 1,j (ossia a 1,j ). Quindi g 1 [ j ] = f 1 [ j ] a 1,j Per j = 2, 3..., n Quindi f 1 [ j ] = min ( f 1 [ j 1 ] + a 1,j, f 2 [ j 1 ] + t 2,j 1 + a 1,j ) g 1 [ j ] = min ( f 1 [ j 1 ], f 2 [ j 1 ] + t 2,j 1 )

Costruzione della soluzione ottima Ricapitolando il minore tempo possibile per raggiungere S 1,j è: g 1 [j] = min ( f 1 [ j 1 ], f 2 [ j 1 ] + t 2,j 1 ) Inoltre: l 1 [j] = { 1 se g 1 [j] = f 1 [ j 1 ] 2 altrimenti

Costruzione della soluzione ottima In maniera del tutto simmetrica, il minore tempo possibile per raggiungere S 2,j è: g 2 [j] = min ( f 2 [ j 1 ], f 1 [ j 1 ] + t 1,j 1 ) Inoltre: l 2 [j] = { 1 se g 2 [j] = f 2 [ j 1 ] 2 altrimenti

S 1,4 S 1,1 S 1,2 S 1,3 S 1,5 S 1,6 7 9 3 4 8 4 2 4 2 3 1 3 4 t2 2,1 1 2 2 1 3 2 m 8 5 6 4 5 7 S 2,1 S 2,2 S 2,3 S 2,4 S 2,5 S 2,6 j 1 2 3 4 5 6 f 1[ j ] 9 18 20 24 32 35 f 2[ j ] 12 16 22 25 30 37 t 1,j 2 3 1 3 4 t 2,j 2 1 2 2 1 j 2 3 4 5 6 l 1[ j ] 1 2 1 1 2 l 2[ j ] 1 2 1 2 2 f = 38 l = 1

Costruzione della soluzione ottima Identifichiamo le stazioni attraversate dal percorso minimo a partire dai valori di l, l i [ j ] come segue: j 2 3 4 5 6 l 1[ j ] 1 2 1 1 2 l 2[ j ] 1 2 1 2 2 l = 1 l = 1 l ultima stazione è S 1,6 l 1 [6] = 1 passiamo sulla catena 2, stazione S 2,5 l 2 [5] = 2 rimaniamo sulla catena 2, stazione S 2,4 l 2 [4] = 1 torniamo sulla catena 1, stazione S 1,3 l 1 [3] = 2 catena 2, stazione S 2,2 l 2 [2] = 1 catena 1, stazione S 1,1 Il percorso ottimo attraversa, nell ordine, le seguenti stazioni S 1,1, S 2,2, S 1,3, S 2,4, S 2,5, S 1,6

S 1,4 S 1,1 S 1,2 S 1,3 S 1,5 S 1,6 7 9 3 4 8 4 2 4 2 3 1 3 4 t2 2,1 1 2 2 1 3 2 m 8 5 6 4 5 7 S 2,1 S 2,2 S 2,3 S 2,4 S 2,5 S 2,6

L algoritmo FastestWay(a, t, e, x, n) a e t sono delle matrici: contengono i valori a i,j (con i = 1, 2 e j = 1,..., n) e t i,j (con i = 1, 2 e j = 1,..., n 1) rispettivamente, e = e 1, e 2, x = x 1, x 2 1. f 1 [1] e 1 + a 1,1 2. f 2 [1] e 2 + a 2,1 3. for j 2 to n 4. do if f 1 [ j 1 ] + a 1,j f 2 [ j 1 ] + t 2,j 1 + a 1,j 5. then f 1 [j] f 1 [ j 1 ] + a 1,j 6. l 1 [j] 1 7. else f 1 [j] f 2 [ j 1 ] + t 2,j 1 + a 1,j 8. l 1 [j] 2 9. if f 2 [ j 1 ] + a 2,j f 1 [ j 1 ] + t 1,j 1 + a 2,j 10. then f 2 [j] f 2 [ j 1 ] + a 2,j 11. l 2 [j] 1 12. else f 2 [j] f 1 [ j 1 ] + t 1,j 1 + a 2,j 13. l 2 [j] 2 questo conclude la fase di calcolo di f 1[ j ] e f 2[ j ]

L algoritmo FastestWay(a, t, e, x, n) 14. if f 1 [ n ] + x 1 f 2 [ n ] + x 2 15. then f f 1 [ n ] + x 1 16. l 1 17. else f f 2 [ n ] + x 2 18. l 2 PrintStation(l, n) 1. i l 2. stampa catena i, stazione n 3. for j n downto 2 4. do i l i [ j ] 5. stampa catena i, stazione j 1