Algoritmi e Strutture Dati (Mod. B)

Slides:



Advertisements
Presentazioni simili
Algoritmi e Strutture dati Mod B
Advertisements

UNIVERSITA’ DI MILANO-BICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA
Algoritmi e Strutture Dati
Problema dellordinamento Input: Sequenza di n numeri Output: Permutazione π = tale che: a 1 a 2 …… a n Subroutine in molti problemi E possibile effettuare.
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.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Programmazione dinamica: problema della sottosequenza più lunga
                      Insertion-Sort
Cammini minimi con una sorgente
Programmazione dinamica
Alberi binari di ricerca
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Cammini minimi con sorgente singola
Algoritmi e Dimostrazioni Stefano Berardi
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 Stesso approccio.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti ottimi.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
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.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti lineari.
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 Stesso approccio.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
U V U V (a) |cfc|=2 prima e dopo (b) |cfc|=2 prima e |cfc|=1 dopo
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
Algoritmi e strutture Dati - Lezione 7
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 4 Ordinamento: Heapsort Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Capitolo 7 Tavole hash Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e Strutture Dati
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
Seminario su clustering dei dati – Parte II
07/04/2003Algoritmi Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare se un elemento fa parte della sequenza oppure.
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente)
Heap binari e HeapSort.
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)
Elementi di Informatica di base
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
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
La complessità media O(n log n) di Quick-Sort vale soltanto se tutte le permutazioni dell’array in ingresso sono ugualmente probabili. In molte applicazioni.
Capitolo 7 Tavole hash Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
3/31/2015E. Giovannetti -- OI09.1 Olimpiadi di Informatica 2010 Giornate preparatorie Dipartimento di Informatica Università di Torino marzo – Algoritmi.
Implementazione di dizionari Problema del dizionario dinamico Scegliere una struttura dati in cui memorizzare dei record con un campo key e alcuni altri.
Ordinamento in tempo lineare Il limite inferiore Ω(n log n) vale per tutti gli algoritmi di ordinamento generali, ossia per algoritmi che non fanno alcuna.
Paola Disisto, Erika Griffini, Yris Noriega.  Insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce.
1 Ordinamento (Sorting) INPUT: Sequenza di n numeri OUTPUT: Permutazione π = tale che a 1 ’  a 2 ’  … …  a n ’ Continuiamo a discutere il problema dell’ordinamento:
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Codici prefissi Un codice prefisso è un codice in cui nessuna parola codice è prefisso (parte iniziale) di un’altra Ogni codice a lunghezza fissa è ovviamente.
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 HeapSort. Select Sort: intuizioni L’algoritmo Select-Sort  scandisce tutti gli elementi dell’array a partire dall’ultimo elemento.
Transcript della presentazione:

Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte I)

Algoritmi greedy Gli algoritmi per problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione A volte usare la programmazione dinamica è costoso in termini di sviluppo e di efficienza… … mentre esistono tecniche più immediate ed efficienti Gli algoritmi greedy sono algoritmi basati sull’idea di fare sempre scelte che sembrano ottime al momento della scelta. IMPORTANTE: Non sempre è garanta la corret-tezza, ma sono spesso molto semplici ed efficienti.

Problema della selezione di attività Problema: Siano date N attività in competizione tra loro per l’utilizzo di una certa risorsa. Trovare l’allocazione ottimale della risorsa, cioè il massimo sottoinsieme di attività che la possano condividere senza creare conflitti per l’utilizzo della risorsa. S={1,2,…,N} un insieme di attività Ad ogni attività i S sono associati si = tempo di inizio (attivazione) fi = tempo di fine (conclusione) tali che si  fi

Problema della selezione di attività Definizione: Due attività i e j si dicono compatibili se gli intervalli [si , fi] e [sj , fj] sono disgiunti, cioè non si sovrappongono. In altre parole se vale fj  si oppure fi  sj Problema (riformulato): Dato l’insieme di attività S={1,2,…,N}, trovare il massimo sottoinsieme di attività tra loro compatibili.

Problema della selezione di attività Problema (riformulato): Dato l’insieme di attività S={1,2,…,N}, trovare il massimo sottoinsieme di attività tra loro compatibili. Partiamo con un insieme A di attività inizialmente vuoto Inseriamo in A l’attività j col minimo tempo di terminazione Fra le attività rimanenti compatibili con j selezionare l’attività i col minore tempo di terminazione aggiungere l’attività selezionata i ad A Se esistono altre attività compatibili con i, tor-niamo al passo  altrimenti terminamo

Problema della selezione di attività Assumiamo le attività siano ordinate in modo crescente rispetto al tempo di fine. f1  f2  …  fN (possiamo applicare Algoritmo di Ordinamento!) Siano S=[s1,…,sN] e F=[f1,…, fN] i vettori contenenti i tempi di inizio (non ordinati) e di fine (ordinati) Greedy-Activity-Selection(S,F: array) A = {1} j = 1 for i = 2 to length[S] do if S[i]  F[j] then A = A  {i} j = i Al termine l’inseme A contiene la soluzione greedy al problema costruito in tempo lineare (n) [(n log n)]

Criterio: seleziona l’attività che termina prima per prima 2:3-5 1:1-4 4:5-7 3:0-6 5:3-8 7:6-10 6:5-9 9:8-12 8:8-11 10:12-14 1 1 4 2 3 5 3 0 6 4 5 7 5 3 8 6 5 9 7 6 10 8 8 11 9 8 12 10 12 14 i si fi 3 attività 6 3 12 9 8 14 10 Criterio: seleziona l’attività che termina prima per prima 4 attività 1 4 7 4 5 8 11 14 10 12

2:3-5 1:1-4 4:5-7 3:0-6 1 1 4 2 3 5 3 0 6 4 5 7 5 3 8 6 5 9 7 6 10 8 8 11 9 8 12 10 12 14 i si fi 5:3-8 7:6-10 6:5-9 9:8-12 8:8-11 10:12-14 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 3 2 4 5 6

2:3-5 1:1-4 4:5-7 3:0-6 1 1 4 2 3 5 3 0 6 4 5 7 5 3 8 6 5 9 7 6 10 8 8 11 9 8 12 10 12 14 i si fi 5:3-8 7:6-10 6:5-9 9:8-12 8:8-11 10:12-14 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 4 7 8 9 10

2:3-5 1:1-4 4:5-7 3:0-6 1 1 4 2 3 5 3 0 6 4 5 7 5 3 8 6 5 9 7 6 10 8 8 11 9 8 12 10 12 14 i si fi 5:3-8 7:6-10 6:5-9 9:8-12 8:8-11 10:12-14 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 4 10 8

Selezione di attività: correttezza Teorema: L’algoritmo Greedy-Activity-Selection produce soluzioni di dimensione massima per il problema della selezione delle attività. Dimostrazione: Per assunzione dell’algoritmo, le N attività sono ordinate per tempo di fine, quindi la prima attività è quella che termina per prima. Dimostriamo innanzi tutto che esiste una soluzione ottima che inizia con la prima attività. Sia A  S sia una qualsiasi soluzione ottima. Ordiniamola per tempi di fine crescenti. Supponiamo che A[1] = S[k] e k1 (cioè la prima attività di A non è quella con tempo di terminazione minore in S) Quindi vale f1 < fk.

Selezione di attività: correttezza Teorema: L’algoritmo Greedy-Activity-Selection produce soluzioni di dimensione massima per il problema della selezione delle attività. Dimostrazione: Dimostriamo innanzi tutto che esiste una soluzione ottima che inizia con la prima attività. A  S sia una qualsiasi soluzione ottima (ordinata per tempi di fine) con A[1] = S[k] e k1. Quindi vale f1 < fk. Possiamo quindi costruire un’altra soluzione B = A - {k} + {1} B è una soluzione perchè vale f1 < fk e quindi nessun vincolo di compatibilità è violato. B è anche ottima perchè ha lo stesso numero di attività della soluzione ottima A. B è quindi una sol. ottima che inizia con la scelta greedy.

Selezione di attività: correttezza Teorema: L’algoritmo Greedy-Activity-Selection produce soluzioni di dimensione massima per il problema della selezione delle attività. Dimostrazione: Quindi esiste una soluzione ottima che inizia con la prima attività (passo base proprietà della scelta greedy). Dopo la scelta greedy, il problema si riduce al sottoproblema di trovare la masima sequenza di attività compatibili con la prima. Il sottoproblema è quindi di cercare di una sequenza mas-sima di attività tra S’ = {i  S : si  f1} (vedi if in codice) Se A è una soluzione ottima, la soluzione ottima del sottoproblema S’ è allora A’ = A - {1}. Dimostriamolo! Se A’ non fosse ottima, esisterebbe un B’ maggiore di A’ ...

Selezione di attività: correttezza Teorema: L’algoritmo Greedy-Activity-Selection produce soluzioni di dimensione massima per il problema della selezione delle attività. Dimostrazione: Quindi esiste una soluzione ottima che inizia con la prima attività (passo base proprietà della scelta greedy). Il sottoproblema è quindi di cercare di una sequenza mas-sima di attività tra S’ = {i  S : si  f1} (vedi if in codice) Se A è una soluzione ottima, la soluzione ottima del sottopro-blema S’ è A’ = A - {1}. Se A’ non fosse ottima, esisterebbe un B’ maggiore di A’ per lo stesso sottoproblema S’ = {i  S : si  f1}. Ma aggiungendo l’attività 1 a B’, otterremo una soluzione B migliore di A (contraddizione).

Selezione di attività: correttezza Teorema: L’algoritmo Greedy-Activity-Selection produce soluzioni di dimensione massima per il problema della selezione delle attività. Dimostrazione: Quindi esiste una soluzione ottima che inizia con la prima attività (passo base proprietà della scelta greedy)... ... e dopo la prima scelta greedy, rimaniamo col sotto-problema (analogo) di cercare di una sequenza massima di attività in un insieme S’ = {i  S : si  f1}. Per induzione si può allora dimostrare facilmente che data una qualsiasi soluzione ottima ad un (sotto-)problema, essa contiene al suo interno le soluzioni ottime dei suoi sottoproblemi (proprietà della sottostruttura ottima). L’induzione completa anche la proprietà della scelta greedy.

Problema del cambio di denaro Input Un numero intero positivo n Output Il più piccolo numero intero di banconote per cambiare n mila lire usando pezzi da 20 mila, 10 mila, 5 mila, e mille lire. Esempi n = 58 (mila), 7 banconote: 20+20+10+5+1+1+1 n = 18 (mila), 5 banconote: 10+5+1+1+1 Algoritmo Dispensa una banconota alla volta Ad ogni passo, utilizza la banconota più grande che non superi la cifra rimanente. Criterio di scelta greedy

Un altro problema del cambio di denaro Input Un intero positivo n Output Il più piccolo numero di banconote per cambiare n dollari usando banconote da 12, 8, e 1 dollari. Esempio n = 31 9 banconote: 12 + 12 + 1 + 1 + 1 + 1 + 1 + 1 + 1 6 banconote : 12 + 8 + 8 + 1 + 1 + 1 Il criterio greedy non garantisce ottimalità

Un altro problema del cambio di denaro Input Un intero positivo n Output Il più piccolo numero di banconote per cambiare n dollari usando banconote da 50, 25, 10 e 1 dollari. Esempio n = 55 6 banconote: 50 + 1 + 1 + 1 + 1 + 1 4 banconote : 25 + 10 + 10 + 10 Il criterio greedy non garantisce ottimalità