Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 08/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.

Slides:



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

Algoritmi e Strutture Dati
Strutture dati per insiemi disgiunti
Introduzione ai grafi Grafo diretto e non diretto
Il problema del minimo albero ricoprente in un grafo non cooperativo
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e Strutture Dati (Mod. B)
Estendere i linguaggi: i tipi di dato astratti
Algoritmi e Strutture Dati
Breath-first search Visita in ampiezza di un grafo Algoritmo Esempio
Breath-first search Visita in ampiezza di un grafo Algoritmo Esempio
Capitolo 3 Strutture dati elementari 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 Strutture dati per.
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 06/03/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 27/03/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
Il problema del minimo albero ricoprente in un grafo con archi privati
Capitolo 11 Grafi e visite di grafi Algoritmi e Strutture Dati.
Visite di grafi Algoritmi e Strutture Dati. Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Un albero è un grafo.
Capitolo 11 Grafi e visite di grafi Algoritmi e Strutture Dati.
Capitolo 11 Grafi e visite di grafi Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati (Mod. B)
Fibonacci Heaps e il loro utilizzo nell’algoritmo di Prim
Prof. Cerulli – Dott.ssa Gentili
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
Prof. Cerulli – Dott.ssa Gentili
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 K 4 è planare? Sì!
Algoritmi e Strutture Dati
Componenti fortemente connesse
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmi di Prim e di Borůvka Algoritmi.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 17/04/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Strutture dati per.
MODULO STRUTTURE DATI FONDAMENTALI: Strutture dinamiche
Capitolo 13 Cammini minimi: Ordinamento topologico Algoritmi e Strutture Dati.
Olimpiadi di Informatica 2010 Giornate preparatorie
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 07/04/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Capitolo 13 Cammini minimi: Bellman e Ford Algoritmi e Strutture Dati.
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.
ASD a.a.2010/2011- Lezione 12 Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi Backtracking/ Branch and Bound Lezione n°12.
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.2014/2015 Prof.ssa Rossella Petreschi 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.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 a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Transcript della presentazione:

Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 08/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI

Tecniche algoritmiche parallele di base Tecnica della prima metà: ad ogni passo si dimezza il numero di elementi su cui si esegue la computazione. Si lavora nella prima metà del vettore che da dimensione n si riduce progressivamente a dimensione n/2, n/4, … fino a raggiungere la soluzione in O(log 2 n) passi. (es. somma di n elementi, ricerca del massimo) Tecnica del salto del puntatore: in O(log 2 n) passi si ottiene la soluzione raddoppiando ad ogni passo la distanza fra le coppie di elementi su cui si opera. (es. somme prefisse, ricerca delle radici in una foresta, calcolo della posizione allinterno di una lista puntata) Tecnica del tour di eulero Algoritmi Paralleli e Distribuiti a.a. 2008/09 2

Tour di Eulero Dato un grafo G, un Tour di Eulero (TDE) su G è un ciclo (cammino chiuso) che passa su ogni arco una e una sola volta. Non tutti i grafi ammettono un tour di Eulero, quelli in cui ogni nodo ha grado pari si. Dato un albero T = (V, E) è possibile costruire un grafo G = (V, E') con E' = (v,u), (u,v) : (u,v) E }. Per ogni nodo di G, il numero di archi entranti è uguale al numero di archi uscenti, quindi G contiene un circuito euleriano. Algoritmi Paralleli e Distribuiti a.a. 2008/09 3 c h g e f b i da c h g e f b i da

4 La funzione TDE Il TDE è una sequenza ciclica di tutti gli archi del grafo costruita a partire da un qualunque nodo. Ad esempio: (c,i)(i,a)(a,d)(d,a)(a,i)(i,g)(g,i)(i,c)(c,f)(f,c)(c,h)(h,e)(e,h)(h,c)(c,b)(b,c) Per semplicità si può scrivere il TDE come: c i a d a i g i c f c h e h c b Si può vedere il TDE come una funzione che, per ogni arco, identifica il successore nel tour: TDE(c,i) = (i,a) TDE(i,a) = (a,d) TDE(a,d) = (d,a) TDE(d,a) = (a,i) TDE(a,i) = (i,g) ecc… c h g e f b i da

Algoritmi Paralleli e Distribuiti a.a. 2008/09 5 Costruzione della funzione TDE Affinché tutti gli archi siano visitati, è fondamentale che, per ogni nodo v, fra lapparizione nel tour dellarco entrante (u,v) e quella dellarco uscente (v,u) siano presenti tutti gli archi relativi alla visita di tutti gli altri nodi adiacenti a v. Per garantire questa condizione è sufficiente considerare un ordinamento ciclico degli adiacenti di ogni nodo. Se si entra in v con larco (u,v) se ne esce seguendo il successore di u in tale ordinamento: TDE(u,v) = (v, next v (u)) dove next v (u) identifica il nodo che segue u tra gli adiacenti di v.

Algoritmi Paralleli e Distribuiti a.a. 2008/09 6 Come costruire il TDE Vogliamo ora calcolare su una PRAM-EREW il TDE: a partire da un albero (rappresentato come elenco di archi), si vuole una struttura che permetta di identificare efficientemente il successore di ogni arco nel tour. Utilizziamo delle liste di adiacenza cicliche con un informazione addizionale: per ogni arco (u,v) manteniamo un puntatore allarco (v,u). In questo modo, dato larco (u,v) (nella lista di adiacenza di u), si potrà facilmente accedere allarco (v,u) e quindi al suo successore nella lista di adiacenza di v.

Algoritmi Paralleli e Distribuiti a.a. 2008/09 7 Struttura dati per il TDE d c b a h c i e a a b c d e f g h i i ifh c g c (e,h) (h,c) (c,f) (c,b) (c,i) (i,g) (a,i) (a,d) c h g e f b i da

Algoritmi Paralleli e Distribuiti a.a. 2008/09 8 Passo 1 Il processore i-esimo costruisce il reciproco dellarco i-esimo e imposta opportunamente i puntatori. (e,h) (h,c) (c,f) (c,b) (c,i) (i,g) (a,i) (a,d) (e,h) (h,e) (h,c) (c,h) (c,f) (f,c) (c,b) (b,c) (c,i) (i,c) (i,g) (g,i) (a,i) (i,a) (a,d) (d,a)

Algoritmi Paralleli e Distribuiti a.a. 2008/09 9 Passo 2 Si ordina lessicograficamente il vettore degli archi. Nota: se nelleseguire lordinamento si spostassero realmente i dati in memoria tutti i puntatori agli archi reciproci verrebbero perduti. Per ovviare a questo problema la soluzione più semplice è quella di calcolare la sequenza ordinata degli indici che si userà poi per accedere al vettore come se fosse ordinato. (a,d) (a,i) (b,c) (c,b) (c,f) (c,h) (c,i) (d,a) (e,h) (f,c) (g,i) (h,c) (h,e) (i,a) (i,c) (i,g)

Algoritmi Paralleli e Distribuiti a.a. 2008/09 10 Passo 3 Si creano le liste di adiacenza circolari per ogni nodo nella seguente maniera: si divida la lista in blocchi dallo stesso primo nodo dellarco; per ogni arco si imposti il puntatore al successivo nel blocco; lultimo arco di ogni blocco punti al primo. Tempo parallelo per la costruzione della struttura dati: Passo 1: costante Passo 2: logaritmico (per lordinamento) Passo 3: costante (a,d) (a,i) (b,c) (c,b) (c,f) (c,h) (c,i) (d,a) (e,h) (f,c) (g,i) (h,c) (h,e) (i,a) (i,c) (i,g)

Algoritmi Paralleli e Distribuiti a.a. 2008/09 11 Radicare lalbero Input: Tour di Eulero (TDE) di un albero non radicato T, dato per liste di adiacenza. Output: Cammino di Eulero (CDE) di T radicato in r e T rappresentato tramite vettore di padri. Algoritmo: Sia v un qualunque adiacente di r, si spezza il TDE ponendo TDE (v,r) = 0. Ora, per distinguere, in ogni arco, un nodo padre e un nodo figlio, si assegna valore 1 ad ogni arco del cammino di Eulero ottenuto e si calcolano le somme prefisse S su tali valori. Si avrà p(w) = v sse S(v,w) < S(w,v) Nota: se analizziamo l'orientamento dato, vediamo che esso segue una visita di tipo DFS, ma ciò non vuol dire che abbiamo realizzato una DFS in parallelo che è anzi uno di quei problemi che restano inerentemente sequenziali.

Algoritmi Paralleli e Distribuiti a.a. 2008/09 12 Calcolo di funzioni elementari Per calcolare le funzioni elementari su alberi radicati (dati in input con il loro CDE) adoperiamo il seguente schema. Considerando, per ogni vertice v, larco discendente (p(v),v) e larco ascendente (v,p(v)): si assegni, a seconda del problema in considerazione, un valore agli archi ascendenti e un valore agli archi discendenti; si eseguano le somme prefisse sulla sequenza di valori che si ottiene seguendo il Cammino di Eulero; a seconda del problema, si dia una funzione di lettura della soluzione.

Algoritmi Paralleli e Distribuiti a.a. 2008/09 13 Visita in postorder Fatto: nella numerazione in postorder (FS,…,FD,R), ogni nodo v viene numerato quando la sua visita è completata, ovvero quando, con la tecnica del backtrack, si torna al padre p(v). Dato il CDE di un albero T radicato in r, per ottenere la numerazione dei nodi in postorder sfruttando il Fatto, assegniamo valore +1 ad ogni arco (v,p(v)) che risale dal figlio al padre e valore 0 ad ogni arco (p(v),v) che scende dal padre al figlio. Sulla sequenza così ottenuta eseguiamo poi le somme prefisse ottenendo S. La numerazione in postorder è data da: v rPost(v) = S(v,p(v)) v = rPost(v) = n Riprendendo lalbero precedentemente visto, consideriamolo radicato in h (per chiarezza riportiamo solo il primo nodo di ogni arco nel CDE). CDEhehcbciadaigicfc S vabcdefghi Post

Algoritmi Paralleli e Distribuiti a.a. 2008/09 14 Visita in preorder Fatto: nella numerazione in preorder (R,FS….FD), ogni nodo v viene numerato la prima volta che viene incontrato durante la visita, ovvero quando si arriva a v dal padre p(v). Dato il CDE di un albero T radicato in r, per ottenere la numerazione dei nodi in preorder sfruttando il Fatto, assegniamo valore 0 ad ogni arco (v,p(v)) che risale dal figlio al padre e valore +1 ad ogni arco (p(v), v) che scende dal padre al figlio. Sulla sequenza così ottenuta eseguiamo poi le somme prefisse. La numerazione in preorder è data da: v = rPre(v) = 1 v rPre(v) = S(p(v),v) +1 Riprendendo lesempio abbiamo: CDEhehcbciadaigicfc S vabcdefghi Pre

Algoritmi Paralleli e Distribuiti a.a. 2008/09 15 Livello di un vertice Fatto: Il livello di un nodo è quello del padre aumentato di 1, ovvero quello di un figlio diminuito di 1. Per calcolare il livello di ciascun nodo nellalbero assegniamo valore +1 ad ogni arco discendente e valore -1 ad ogni arco ascendente. Eseguite le somme prefisse, si ha: v = rl(v) = 0 v rl(v) = S(p(v),v) Riprendendo lesempio abbiamo: CDEhehcbciadaigicfc S vabcdefghi l(v)