Problemi di ottimizzazione

Slides:



Advertisements
Presentazioni simili
Master Bioinformatica 2002: Grafi Problema: cammini minimi da tutti i vertici a tutti i vertici Dato un grafo pesato G =(V,E,w), trovare un cammino minimo.
Advertisements

Algoritmi e Strutture Dati 2
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Programmazione dinamica: problema della sottosequenza più lunga
                      Insertion-Sort
ALGORITMI Luglio 2004 Luglio 2004 Algoritmi.
Chiara Mocenni - Sistemi di Supporto alle Decisioni I – aa Sistemi di Supporto alle Decisioni I Scelte di consumo Chiara Mocenni Corso di laurea.
Cammini minimi con una sorgente
Programmazione dinamica
Alberi binari di ricerca
Master Bioinformatica 2002: Progetto di Algoritmi1 Programmazione Dinamica (PD) Altra tecnica per risolvere problemi di ottimizzazione, piu generale degli.
Introduzione agli algoritmi. Definizione Sistema di regole e procedure di calcolo ben definite che portano alla soluzione di un problema con un numero.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti ottimi.
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Iterazione enumerativa (for)
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Algoritmo di Ford-Fulkerson
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e Strutture Dati (Mod. A)
Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e Strutture Dati (Mod. B)
Trovare il percorso minimo da b ad ogni altro vertice
Algoritmi e strutture dati
QuickSort Quick-Sort(A,s,d) IF s < d THEN q = Partiziona(A,s,d) Quick-Sort(A,s,q-1) Quick-Sort(A,q + 1,d)
Esercizio 10.* Un cassiere vuole dare un resto di n centesimi di euro usando il minimo numero di monete. a) Descrivere un algoritmo goloso per fare ciò.
Radix-Sort(A,d) // A[i] = cd...c2c1
Algoritmi e Strutture Dati
Lezione 6 Strutture di controllo Il condizionale
Passo 3: calcolo del costo minimo
Cerchiamo di rispondere alla seconda domanda 2)La soluzione trovata con lalgoritmo goloso è ottima o esistono anche soluzioni con più di quattro attività?
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
ND-partizione (A) n   A  somma  0 M  1/2 (  a i ) for i  1 to n do S[i]  choice ({true, false}) if S[i] then somma  somma + a i if somma > M then.
Cammini minimi da un sorgente
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 1 Cicli ed asserzioni Corso di Informatica 2 a.a. 2003/04 Lezione 1.
Capitolo 13 Cammini minimi: Algoritmo di Floyd e Warshall Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Paola Disisto, Erika Griffini, Yris Noriega.  Insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
1/20 NP completezza. 2/20 Problemi astratti Un problema è un’entità astratta (es. il TSP). Una istanza del problema è un suo caso particolare in cui vengono.
Codici prefissi Un codice prefisso è un codice in cui nessuna parola codice è prefisso (parte iniziale) di un’altra Ogni codice a lunghezza fissa è ovviamente.
Master Bioinformatica 2002: Visite di Grafi Algoritmi di visita Scopo: visitare tutti i vertici di un grafo per scoprirne proprietà di vario tipo. Alcune.
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Programmazione dinamica Algoritmi golosi Analisi ammortizzata
Problemi risolvibili con la programmazione dinamica Abbiamo usato la programmazione dinamica per risolvere due problemi. Cerchiamo ora di capire quali.
Algoritmi golosi Tecniche di soluzione dei problemi viste finora:
Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte III)
Algoritmi e Strutture Dati
Università degli Studi di Cagliari FACOLTA’ DI INGEGNERIA
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati Luciano Gualà
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
Backtracking.
Transcript della presentazione:

Problemi di ottimizzazione Allocazione di risorse (merci in un magazzino) Scheduling (ordinamento temporale) Pianificazione di investimenti Pattern matching: date due sequenze di simboli: AACCGATGTACCT CGAACGATACGGTTAC trovare la piu’ lunga sottosequenza comune Distanza minima in reti: dato un insieme di città collegate da strade trovare il percorso minimo che collega ogni coppia di città Master Bioinformatica 2002: Progetto di Algoritmi

Soluzione di un problema di ottimizzazione Ad ogni problema è associato un costo/valore una soluzione e’ frutto di una sequenza di scelte, ciascuna delle quali contribuisce a determinare il costo/valore finale si è interessati a trovare una soluzione che abbia un costo/valore ottimo (minimo o massimo) Master Bioinformatica 2002: Progetto di Algoritmi

Master Bioinformatica 2002: Progetto di Algoritmi Algoritmi greedy Si applicano a problemi di ottimizzazione in cui dato un insieme di oggetti {a1,…,an} occorre selezionare un sottoinsieme “ottimo” S di oggetti che verificano una determinata proprietà Idea: “per trovare un soluzione globalmente ottima, scegli ripetutamente soluzioni ottime localmente” Master Bioinformatica 2002: Progetto di Algoritmi

Esempio: Il problema del resto Avendo a disposizione monete di vario tipo determinare una collezione minima di monete la cui somma sia uguale al resto. Ad esempio: hai a disposzione monete da 50, 20,10, 2 e 1 cent.euro, il resto “ottimo” di 87 è formato da: 50+20+10+5+1+1 Master Bioinformatica 2002: Progetto di Algoritmi

Struttura degli algoritmi greedy Si assume che gli oggetti abbiano associato un valore di “appetibilità”. La soluzione viene costruita incrementalmente scegliendo ad ogni passo l’oggetto che ha appetibilita’ maggiore e puo’ essere aggiunto a quelli già selezionati. Master Bioinformatica 2002: Progetto di Algoritmi

Master Bioinformatica 2002: Progetto di Algoritmi Algoritmi Greedy - Schema generale 1 Se le appetibilita’ degli oggetti sono note fin dall’inizio e non vengono modificate Greedy1 ({a1, a2, …an}) S   “ ordina gli ai in ordine non crescente di appetibilita’ ” for ogni ai nell’ordine do if “ai puo’ essere aggiunto a S” then S  S  {ai} return S Master Bioinformatica 2002: Progetto di Algoritmi

Master Bioinformatica 2002: Progetto di Algoritmi Algoritmi Greedy - Schema generale 2 Se le appetibilita’ degli oggetti possono essere modificate dalle scelte gia’ fatte. Greedy2 ({a1, a2, …an}) S   “valuta le appetibilita’ degli ai ” while “ci sono elementi da scegliere” do “scegli l’ai piu’ appetibile” if “ai puo’ essere aggiunto a S” then S  S  {ai} “aggiorna le appetibilita’ degli ai ” return S Master Bioinformatica 2002: Progetto di Algoritmi

Master Bioinformatica 2002: Progetto di Algoritmi Esempio: Problema della Selezione di attivita’ Input: S = {1, 2, …, n} insieme di attivita’che devono usare una risorsa in modo esclusivo. Ogni attivita’ i e’ caratterizzata da un tempo di inizio e da un tempo di fine: [si, fi) con (si < fi). [si, fi) e [sj, fj) sono compatibili se si  fj o sj  fi sj i j si fi sj fj j i sj fj si fi Master Bioinformatica 2002: Progetto di Algoritmi

Master Bioinformatica 2002: Progetto di Algoritmi Selezione di attvità Output: insieme che contiene il massimo numero di attivita’mutuamente compatibili. Master Bioinformatica 2002: Progetto di Algoritmi

Master Bioinformatica 2002: Progetto di Algoritmi

Master Bioinformatica 2002: Progetto di Algoritmi 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 11 12 Master Bioinformatica 2002: Progetto di Algoritmi

Master Bioinformatica 2002: Progetto di Algoritmi Idea dell’algoritmo seleziona ad ogni passo un’attività che sia compatibile con quelle già selezionate e lasci più opportunità di selezione futura  seleziona ad ogni passo un’attività che sia compatibile con quelle già selezionate e che abbia tempo di fine minimo tra quelle che possono ancora essere selezionate Master Bioinformatica 2002: Progetto di Algoritmi

Applicando lo schema greedy: Oggetti: le attivita’ Appetibilita’: tempo di fine Ordiniamo le attivita’ per tempo di fine visita non decrescente. Master Bioinformatica 2002: Progetto di Algoritmi

Master Bioinformatica 2002: Progetto di Algoritmi 6 5 7 9 8 10 3 4 1 1 2 3 4 5 6 7 8 9 10 11 12 Attività ordinate per fine visita Master Bioinformatica 2002: Progetto di Algoritmi

Master Bioinformatica 2002: Progetto di Algoritmi Activity_selector(s, f) A   sia {a1, a2, …an} ordinata in modo che f1,  f2 ,…  fn A = {1} j  1 for i = 2 to n do if si  fj then A  A  {i} j  i return A Master Bioinformatica 2002: Progetto di Algoritmi

Spiegazione dell’algoritmo fj rappresenta il massimo tempo di fine visita delle attivita’ gia’ selezionate (quelle in A)  per sapere se un’attivita’ i e’ compatibile con quelle gia’ selezionate basta verificare che si  fj Master Bioinformatica 2002: Progetto di Algoritmi

Master Bioinformatica 2002: Progetto di Algoritmi 6 5 7 9 8 10 3 4 1 1 2 3 4 5 6 7 8 9 10 11 12 Soluzione: {2,9,8,1} Master Bioinformatica 2002: Progetto di Algoritmi

Master Bioinformatica 2002: Progetto di Algoritmi 6 2 5 7 9 10 8 3 4 1 1 2 3 4 5 6 7 8 9 10 11 12 Altra soluzione: {6,9,10,1} Master Bioinformatica 2002: Progetto di Algoritmi

Master Bioinformatica 2002: Progetto di Algoritmi Tutte le soluzioni {2, 9, 8, 1} {6, 9, 10, 1} {2, 9, 10, 1} {6, 9, 8, 1} Osserva che si ottiene una soluzione da un altra sostituendo un’attività con un’altra con lo stesso tempo di fine visita Master Bioinformatica 2002: Progetto di Algoritmi

Proprietà1: sottostruttura ottima Sia A una soluzione ottima per S, sia k  A. Considera Ak = {i A | fi  fk} A’ = A - Ak S’ = {i  S | si  fk} A’ e’ una soluzione ottima per S’. Master Bioinformatica 2002: Progetto di Algoritmi

e ogni attività in B è compatibile con quelle in Ak ottengo che Ak  B Dimostrazione: supponi che A’ non sia ottima allora esiste una soluzione B per S’con |B| > |A’|. Poichè B  Ak =  e ogni attività in B è compatibile con quelle in Ak ottengo che Ak  B è una soluzione per S e |B  Ak| > |A’  Ak| = |A| contro l’ipotesi che A sia ottima. Master Bioinformatica 2002: Progetto di Algoritmi

Proprietà2: scelta greedy Sia 1  S, un’attività con tempo di fine f1 minimo. Esiste una soluzione ottima A tale che 1  A Master Bioinformatica 2002: Progetto di Algoritmi

si  fj  f1 per ogni i in A -{j} Dimostrazione: sia A una soluzione ottima per S e sia j  A un’attività con tempo di fine minimo tra quelle in A, vale f1  fj Considera l’insieme A’ = (A -{j})  {1} poichè vale si  fj  f1 per ogni i in A -{j} anche A’ e’una soluzione ed e’ottima essendo |A’| = |A| e abiamo che 1  A’ Master Bioinformatica 2002: Progetto di Algoritmi

Correttezza dell’algoritmo Segue dalle due proprietà dimostrate mediante un ragionamento induttivo. Considera un insieme di attività S = {1,…,n} ordinate in modo che f1  f2  …  fn. Per la Proprietà2 esiste una soluzione ottima che contiene la prima scelta greedy 1. Sia A una tale soluzione. Per la Proprietà1, A’ = A - {1} e’ una soluzione ottima per l’insieme di attivita’ S’ = {i  S: si  f1}. Riapplica lo stesso ragionamento ad S’ Master Bioinformatica 2002: Progetto di Algoritmi

Master Bioinformatica 2002: Progetto di Algoritmi Formalmente provo che: siano i1,…,ik le attività gia’ scelte dall’algoritmo con k 0, supponi che esista una soluzione ottima i cui primi k elementi (nell’ordine di f) sono i1,…,ik e che l’algoritmo scelga al prossimo passo l’attività ik+1 allora esiste una soluzione ottima i cui primi k+1 elementi i1,…ik, ik+1 . Dimostrazione k = 0, allora ik+1 = 1, e’ la Proprietà2. k > 0, supponi che sia A soluzione ottima e che i1,…, ik siano i primi k elementi di A, caso i se ik+1  A non c’è niente da dimostrare. Master Bioinformatica 2002: Progetto di Algoritmi

Master Bioinformatica 2002: Progetto di Algoritmi caso ii se ik+1  A considera A’= A - {i1,…, ik} e sia S’= {i  S | si  f ik}. Per la proprietà 2 applicata a S’ esiste una soluzione ottima B per S’che contiene ik+1 come elemento piu’piccolo. Per la Proprietà 1 A’ e’ottima per S’ quindi |B| =|A’|. Dato che B  {i1,…, ik} =  e che ogni attivita in B è compatibile con {i1,…, ik} ho che B  {i1,…, ik} è una soluzione ottima per S e ha come primi k+1 elementi i1,… ik+1. Master Bioinformatica 2002: Progetto di Algoritmi

Quando e’applicabile la metodologia greedy? Sottostruttura ottima: una soluzione ottima del problema contiene al suo interno una soluzione di dei sottoproblemi Scelta greedy: la scelta dell’ottimo locale garantisce una soluzione ottima globale Master Bioinformatica 2002: Progetto di Algoritmi

Master Bioinformatica 2002: Progetto di Algoritmi La scelta greedy riduce un problema ad un problema piu’piccolo dello stesso tipo di quello di partenza. Una soluzione ottima e’ determinata dalla sequenza di tali scelte che alla fine producono un problema vuoto. Master Bioinformatica 2002: Progetto di Algoritmi

Il problema dello zaino Un ladro vuole rubare dei beni che trasporterà in uno zaino. Può prendere W chili di bottino (W è la capacità dello zaino). Deve scegliere tra n articoli, ognuno dei dei quali ha peso wi e valore vi. Può prendere qualsiasi articolo, purchè non ecceda la capacità W. Master Bioinformatica 2002: Progetto di Algoritmi

Master Bioinformatica 2002: Progetto di Algoritmi Problema: Quale è il massimo valore che può mettere insieme e quali articoli deve prendere per massimizzare il valore complessivo del bottino? Master Bioinformatica 2002: Progetto di Algoritmi

Due varianti del problema: Lo zaino frazionario (o continuo): si possono prendere frazioni di ciascun articolo. Lo zaino discreto (o zaino 0-1): gli articoli sono indivisibili, quindi ciascun articolo o lo si prende oppure no (scelta 0-1) Master Bioinformatica 2002: Progetto di Algoritmi

Lo zaino frazionario è risolvibile con un metodo greedy Consideriamo come valore di appetibilità il valore di ciascun oggetto (vi) per unità di peso (wi): vi/wi Master Bioinformatica 2002: Progetto di Algoritmi

Idea dell’algoritmo greedy: Prendi il piu’ possibile dell’oggetto con il piu’ alto rapporto vi/wi. Se la dotazione dell’oggetto e’ esaurita e non hai ancora riempito lo zaino, considera il prossimo oggetto con il piu’alto rapporto vi/wi. Ripeti il procedimento finchè lo zaino è pieno. Master Bioinformatica 2002: Progetto di Algoritmi

Proprietà della sottostruttura ottima Se rimuovo una quantità w di un articolo j da un carico ottimo ottengo un carico ottimo che pesa al piu’ W-w e che posso mettere insieme avendo a disposizione n-1 articoli con le quantità originarie e wj -w chili dell’articolo j. Altrimenti: se ci fosse un carico che vale di più, potrei ottenere un carico migliore con la dotazione originaria degli n articoli e peso W, aggiungendo w chili di j a quel carico. Master Bioinformatica 2002: Progetto di Algoritmi

Proprietà della scelta greedy Sia h un articolo con il più alto rapporto vh/wh. C’e’ una soluzione ottima L in cui prendo il massimo di h, cioè Lh= min(W,wh) Dopo aver scelto Lh il problema si riduce a trovare una soluzione ottima scegliendo tra n-1 oggetti (h escluso) e potendo mettere insieme un peso non superiore a W- Lh . Si ripete il ragionamento considerando la prossima scelta greedy. Master Bioinformatica 2002: Progetto di Algoritmi

Master Bioinformatica 2002: Progetto di Algoritmi Knapsack(W, w,v) Ordina {1,…,n} per vi/wi non crescente C  W for i = 1 to n do Li  0 i  1 while (i  n) and (C > 0) do Li  min(C, wi) C  C - Li i  i+1 return L Master Bioinformatica 2002: Progetto di Algoritmi

Master Bioinformatica 2002: Progetto di Algoritmi Knapsack(W, w,v) (L valori frazionari) Ordina {1,…,n} per vi/wi non crescente C  W for i = 1 to n do Li  0 i  1 while (i  n) and (C > 0) do if (wi > C) then Li  C (Li  C/wi) C  0 else Li  wi (Li  1) C  C - wi, i  i+1 return L Master Bioinformatica 2002: Progetto di Algoritmi

Master Bioinformatica 2002: Progetto di Algoritmi Esempio Master Bioinformatica 2002: Progetto di Algoritmi

Master Bioinformatica 2002: Progetto di Algoritmi Esecuzione algoritmo i C L1 L2 L3 / 50 0 0 0 1 40 10 0 0 2 20 10 20 0 3 0 10 20 20 Soluzione: V = 10*6 + 20 *5+20* 4 = 240 Master Bioinformatica 2002: Progetto di Algoritmi

Master Bioinformatica 2002: Progetto di Algoritmi Zaino 0-1 Stesso problema, ma gli articoli vanno presi interamente: Li = 1 se prendiamo l’articolo i Li = 0 se non prendiamo l’articolo i Vale la proprietà della sottostruttura ottima anche per lo zaino0-1: se ad un carico ottimo di peso W tolgo un oggetto j, ottengo un carico ottimo di peso W - wj Master Bioinformatica 2002: Progetto di Algoritmi

Master Bioinformatica 2002: Progetto di Algoritmi GreedyKnapsack0-1(W, w,v) Ordina {1,…,n} per vi/wi non crescente C  W for i = 1 to n do Li  0 i  1 while (i  n) and (C > 0) do if (wi > C) then Li  0 else Li  1 C  C - wi, i  i+1 return L Master Bioinformatica 2002: Progetto di Algoritmi

Master Bioinformatica 2002: Progetto di Algoritmi Rivediamo l’esempio Master Bioinformatica 2002: Progetto di Algoritmi

Master Bioinformatica 2002: Progetto di Algoritmi Esecuzione algoritmo i C L1 L2 L3 / 50 0 0 0 1 40 10 0 0 2 20 10 20 0 3 20 10 20 0 (w=30) Soluzione: V = 10*6 + 20 *5= 160 Master Bioinformatica 2002: Progetto di Algoritmi

E’ottima la soluzione? NO!! Se prendo l’articolo 2 e l’articolo 3 ottengo: V = 100 + 120 = 220 La strategia greedy non trova una soluzione ottima per il problema dello zaino 0-1 Master Bioinformatica 2002: Progetto di Algoritmi

Non vale il principio della scelta greedy: la scelta se prendere o no un oggetto non dipende dalla sua appetibilità. Per trovare una soluzione ottima bisogna comparare la soluzione del sottoproblema in cui si e’ scelto di prendere un articolo con la soluzione in cui si e’ scelto di non prendere quell’articolo. Il problema è risolvibile con la Programazione Dinamica Master Bioinformatica 2002: Progetto di Algoritmi