Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi Lezione n°9.

Slides:



Advertisements
Presentazioni simili
Premessa: si assume di aver risolto (correttamente
Advertisements

Algoritmi e Strutture dati Mod B
Il problema del minimo albero ricoprente in un grafo non cooperativo
Cammini minimi con una sorgente
Il problema del cammino minimo tra 2 nodi in un grafo con archi privati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti ottimi.
Algoritmi e Strutture Dati
Algoritmi Paralleli e Distribuiti a.a. 2008/09
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 29/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 31/03/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 22/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Paralleli e Distribuiti a.a. 2008/09
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 12/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 05/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 17/03/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 20/03/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 28/04/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 19/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 10/03/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 15/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
U V U V (a) |cfc|=2 prima e dopo (b) |cfc|=2 prima e |cfc|=1 dopo
Algoritmo di Ford-Fulkerson
Il problema del minimo albero ricoprente in un grafo con archi privati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Il problema del cammino minimo tra 2 nodi in un grafo con archi privati.
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e Strutture Dati (Mod. A)
Fibonacci Heaps e il loro utilizzo nell’algoritmo di Prim
Radix-Sort(A,d) // A[i] = cd...c2c1
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
Algoritmi e Strutture Dati
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 08/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Cammini minimi da un sorgente
Alberi di copertura minimi. Dato un grafo pesato G = (V,E), si richiede di trovare un albero T = (V,E’), E’  E, tale che la somma dei pesi associati.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 07/04/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
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 12 Minimo albero ricoprente 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.
Capitolo 12 Minimo albero ricoprente: Algoritmo di Kruskal Algoritmi e Strutture Dati.
1 Ordinamento (Sorting) Input: Sequenza di n numeri Output: Permutazione π = tale che: a i 1  a i 2  ……  a i n Continuiamo a discutere il problema dell’ordinamento:
Flusso di Costo Minimo Applicazione di algoritmi: Cammini Minimi Successivi (SSP) Esercizio 1 Sia data la seguente rete di flusso, in cui i valori riportati.
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmo di Prim Algoritmi e Strutture.
Algoritmi e Strutture Dati HeapSort. Select Sort: intuizioni L’algoritmo Select-Sort  scandisce tutti gli elementi dell’array a partire dall’ultimo elemento.
Capitolo 12 Minimo albero ricoprente: Algoritmo di Kruskal Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati Luciano Gualà
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi Simulazione di lettura e scrittura concorrente Tecnica dell’accelerated cascading Lezione.
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi Complessità e Trasportabilità Lezione n°3.
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi Albero ricoprente di costo minimo Lezione n°12.
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi Lezione n°10.
Algoritmi Avanzati a.a. 2011/12 Lezione del 02/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi Algoritmi distribuiti Lezione n°9.
Algoritmi Avanzati a.a.2012/2013 Prof.ssa Rossella Petreschi Albero Ricoprente Lezione n°9.
Prof.ssa Rossella Petreschi Lezione del 17 /10/2014 del Corso di Algoritmica Lezione n°5.
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi Interconnessione tramite reti Lezione n°6.
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi ELEZIONE DEL LEADER Lezione n°8.
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi Somme prefisse Lezione n°2.
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2015/2016 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Transcript della presentazione:

Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi Lezione n°9

La tecnica del Accelerated Cascading Dato un problema P di dimensione n, siano A 1 e A 2 due algoritmi per risolvere il problema P che operano rispettivamente in tempo T 1 e T 2 (T 1 > T 2 ), si costruisce un nuovo algoritmo A nel seguente modo: 1.si applica a P l’algoritmo A 1 (A 1 lavora per fasi) fintanto che l’output delle fasi non produca una istanza P’ di P di dimensione minore di una soglia prefissata; 2.si applica a P’ l’algoritmo A 2 E’ da notare che invece di un solo algoritmo di riduzione A 1 si potrebbe avere una catena di algoritmi di questo tipo. In tal caso si considera la catena di algoritmi di riduzione ordinata dall’algoritmo più lento al più veloce e si costruisce il nuovo algoritmo sostituendo il passo1 con l’applicazione a P della catena così ordinata.

Somma con la tecnica dell’accelerated cascading L’algoritmo di somma parallelo con la tecnica della prima metà non è ottimo perché costa O(n log n) (ovvero n processori per log n tempo),mentre il miglior algoritmo sequenziale richiede tempo O(n). La tecnica dell’accelerated cascading ci permette di ridurre il costo dell’algoritmo parallelo a O(n) e quindi a raggiungere valore dell’efficienza uguale ad 1. La tecnica consiste nel dividere l’algoritmo in due fasi: 1° fase: si applica l’algoritmo sequenziale su k sotto-istanze del problema di piccola dimensione h in modo da ridurre la dimensione totale dello intero problema. Tempo parallelo O(h). 2° fase: si applica l’algoritmo parallelo con p processori sui k risultati del passo precedente. Tempo parallelo O(log k) Costo = O(p (h + log k))

Algoritmo per la somma con la tecnica dell’Accelerated Cascading Si adoperano p processori SommaAC(A, n) begin k = p h = n/k for i = 0 to k-1 pardo P i : b i = i * h for j = 1 to h -1 do if b i + j < n then A[ b i ] = A[ b i ] + A[ b i + j ] B[ i ] = A[ b i ] Somma(B, k)// algoritmo di somma parallela standard end Tempo parallelo O(h + log k)

Esempio di somma con la tecnica dell’Accelerated Cascading n = 12 P = 4 size = P0P0 P1P1 P2P2 P3P ° fase sequenziale 2° fase parallela

Analisi dell’algoritmo SommaAC Per ottenere costo C p =O(n) e quindi Eff=1, dobbiamo scegliere O(n/log n) processori, assegnando a ciascuno O(log n) elementi da sommare sequenzialmente. La 1° fase pertanto richiede tempo paralello O(log n) per generare O(n/log n) elementi. Con O(n/log n) processori si opera con l’algoritmo di somma parallelo su gli O(n/log n) elementi, impiegando un tempo parallelo pari a: log (n/log n) = log n – log log n = O(log n) Costo totale = O(n/log n (log n + log n)) = O(n)

Somme prefisse con Accellerated Cascading Si adoperano k processori Per semplicità assumiamo n multiplo di k: n = h·k begin for i = 0 to k-1 pardo P i : b i = i * h // inizio blocco i-esimo for j = 1 to h -1 do A[ b i + j ] = A[ b i + j ] + A[ b i + j-1 ] B[ i ] = A[ b i + h-1 ] // l’ultimo del blocco PrefixSum(B, k) for i = 1 to k-1 pardo P i :for j = 0 to h -1 do A[ b i + j ] = A[ b i + j ] + B[ i-1 ] end Tempo parallelo O(h + log k)

Ear Decomposition Dato un grafo non orientato G e P 0 ciclo semplice in G, una Ear Decomposition è una partizione ordinata dell’insieme degli archi E = P 0  P 1  P 2  …  P k tale che  1  i  k P i è un cammino semplice in cui entrambi gli estremi (e solo gli estremi) appartengono a P 0  …  P i-1. Non è unica: Se  1  i  k P i non è un ciclo (gli estremi sono distinti) allora la decomposizione si dice aperta (vedi secondo esempio). P0P0 P0P0 P1P1 P2P2 P3P3 P0P0 P1P1 P2P2 P3P3

Quali grafi ammetto una Ear Decomposition? G è privo di ponti   EAR Decomposition G è biconnesso   EAR Decomposition aperta NO P0P0 P1P1 P2P2 P3P3 SI P0P0 P1P1

Dato G si consideri un suo spanning tree T. Esistono m-n+1 archi di G non in T, ciascuno dei quali induce un ciclo se viene aggiunto a T. Questa è una copertura del grafo tramite cicli, non una Ear Decomposition: infatti due cicli possono condividere degli archi. È necessario “rompere” i cicli per ottenere una Ear Decomposition. Ear e Spanning Tree e1e1 e2e2 e3e3 e4e4 e6e6 e7e7 e8e8 e9e9 e 10 e5e

Etichettare gli archi Etichettiamo ogni arco e=(u,v) in G-T nel seguente modo: label(e) = Livello e lca sono da intendersi in T, aggiungiamo l’indice dell’arco per disambiguare ed avere tutte etichette distinte. Poi etichettiamo gli archi in T assegnando a ciascun arco e=(u,v) in T la minima etichetta associata ad una arco e' non in T che induce un ciclo contente e. eTeT lcalabel(e) (2,1)3 (1,8)4 (3,5)3 (7,8)8 (7,6)4 eTeT label(e) (3,2) (3,4) (4,1) (4,8) (4,5) (8,9) (9,7) (5,6)

P e8 P e9 P e2 P e10 P e4 Risultato Ordinando gli archi rispetto a label(e) si ottiene la Ear Decomposition come sequenza ordinata di cammini disgiunti. elabel(e) (4,5) (3,5) (3,4) (4,1) (3,2) (2,1) (8,9) (5,6) (9,7) (7,6) (4,8) (1,8) (7,8) P e8 P e9 P e2 P e10 P e4

Calcolo di label(e)  e  T Dopo aver calcolato label(e)  e  T si definisca: f(v) = min{label(v,u) : (v,u)  T}  v  T È possibile verificare che per ogni arco e=(v, p(v))  T il valore label(e) sarà il minimo valore f(u) tra i nodi u appartenenti al sottoalbero T v radicato in v. Il calcolo del minimo nel sottoalbero si può realizzare, tramite la tecnica del salto del puntatore, in tempo O(log n) su una PRAM CRCW (con scrittura del valore minimo) con n processori. L’assegnamento di f(v)  v richiede O(1) e m processori sullo stesso modello. Il costo è quindi O((n+m) log n) su PRAM CRCW o, simulando la scrittura concorrente, O((n+m) log 2 n) su PRAM CREW.

Algoritmo Ear Decomposition Input: G privo di ponti rappresentato come sequenza di archi begin T = spanning tree di G calcola TDE; radica T in qualunque nodo; calcola level(v)  v  T for each  e=(u,v)  T pardo P e :calcola lca(u,v) label(e) = for each  e  T pardo P e :label(e) = min{ label(e') : e'  T  e  ciclo indotto da e' in T } ordina gli archi rispetto a label(e) end