Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi Albero ricoprente di costo minimo Lezione n°12.

Slides:



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

Algoritmi e Strutture dati Mod B
Algoritmi e Strutture Dati
Strutture dati per insiemi disgiunti
Il problema del minimo albero ricoprente in un grafo non cooperativo
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e Strutture Dati
Cammini minimi con una sorgente
Breath-first search Visita in ampiezza di un grafo Algoritmo Esempio
Breath-first search Visita in ampiezza di un grafo Algoritmo Esempio
Il problema del cammino minimo tra 2 nodi in un grafo con archi privati.
Il problema del minimo albero ricoprente in un grafo con archi privati.
Algoritmi e Strutture Dati
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
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 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 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
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmi di Prim e di Borůvka Algoritmi.
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmi di Prim e di Borůvka Algoritmi.
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
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
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 08/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Cammini minimi da un sorgente
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 12 Minimo albero ricoprente: Algoritmo di Kruskal (*) Algoritmi e Strutture Dati.
Capitolo 12 Minimo albero ricoprente Algoritmi e Strutture Dati.
Capitolo 12 Minimo albero ricoprente: Algoritmo di Kruskal Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
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.
Capitolo 13 Cammini minimi Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Cammini minimi in grafi:
Capitolo 12 Minimo albero ricoprente: Algoritmo di Kruskal Algoritmi e Strutture Dati.
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.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.
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
Algoritmi Avanzati a.a.2012/2013 Prof.ssa Rossella Petreschi Albero Ricoprente Lezione n°9.
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 Somme prefisse Lezione n°2.
Algoritmi Avanzati a.a.2015/2016 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi Avanzati 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/11
Transcript della presentazione:

Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi Albero ricoprente di costo minimo Lezione n°12

Algoritmo parallelo Input: Grafo connesso pesato, con pesi distinti Output: Minimo albero ricoprente (MST) Finché la foresta iniziale non si riduce ad un albero, ovvero ad un MST Genera i meganodi Costruisci il grafo ridotto Ricordarsi di limitare: il numero dei processori usati, il numero di iterazioni necessarie, l’altezza degli alberi che si gestiscono.

Strutture dati per MST Input: il grafo G rappresentato come matrice di adiacenza pesata W. W[i,j] = w(i,j) se (i,j)  E altrimenti W[i,j] = . Output: MST di G rappresentato tramite liste di adiacenza Altre variabili: n k : numero di nodi del grafo al passo k (n 0 = n) W k : matrice di adiacenza del grafo al passo k (W 0 = W) m k (v): adiacente di v t.c. (u,m k (u)) è l’arco di costo minimo incidente su u (nel grafo al passo k)

Stelle ed alberi radicati Albero Radicato Stella Radicata

Pseudoforesta Si definisce pseudoforesta un grafo orientato in cui ogni vertice ha grado uscente minore od uguale ad uno. In altre parole, pseudoforesta è un insieme di alberi (e stelle) orientati radicati, ciascuno contenente un ciclo. Una pseudoforesta può essere vista come una funzione d:V  V.  v  V, (v,d(v)) è l’unico arco uscente da v in G vd(v)

Proprietà La funzione m:V  V definisce una pseudoforesta t.c. ogni albero orientato ha un ciclo contenente esattamente due archi. Non ci sono cappi perché m(u)  u  u  V. Se per assurdo ci fosse un ciclo di 3 (o più archi) tra i nodi u, v=m(u) e x=m(v) con u=m(x) allora considerando i costi di tali archi w 1, w 2 e w 3 si avrebbe w 1 < w 3 < w 2 < w 1. Il che è assurdo. v ux w1w1 w2w2 w3w3

Meganodi Per generare i meganodi: inizialmente i meganodi sono vertici isolati; ogni nodo v seleziona un proprio vicino tramite la funzione m:V  V; si costruisce così una pseudo foresta (V, F), dove F = {(v, m(v)) | v  V}.Tutti gli spigoli (v, m(v)) al termine apparterranno a MST; ogni meganodo è identificato dalla radice dell’albero che lo rappresenta ed ogni nodo di V conosce il nome del meganodo a cui appartiene semplicemente leggendo l’identificativo dell’albero a cui appartiene.

Come generare i meganodi Per generare i meganodi: 1.ogni nodo v seleziona il proprio vicino. Ogni ciclo nella pseudo foresta o è un loop o contiene due archi. In ogni singolo albero il vertice di numerazione minima appartenente all’unico ciclo sarà usato come radice. 2.tramite la tecnica del salto del puntatore, ogni albero della foresta è ridotto ad una stella. In tal modo ogni meganodo è identificato dalla radice della stella ed ogni nodo conosce il nome del meganodo a cui appartiene semplicemente leggendo il nome della radice della propria stella

Grafo ridotto Una volta che al passo k-esimo si sono individuati tutti i meganodi del grafo su cui si sta operando, bisogna costruire il nuovo grafo ridotto su cui si opererà al passo (k+1)-esimo. Il nuovo grafo avrà n k+1 meganodi e tanti spigoli quanti sono quelli che uniscono i meganodi, ovvero quegli spigoli di G che uniscono vertici appartenenti a stelle differenti. Per calcolare n k+1 bisogna numerare tutti i meganodi utilizzando la tecnica delle somme prefisse.

Algoritmo per MST begin k = 0 while W k non è vuota do m k (u) = v / min W k (u,v) per ogni v Aggiungi (u,m k (u)) al MST Crea la pseudoforesta corrispondente Esegui il salto del puntatore su m k (v) Numera i meganodi Costruisci W k+1 k = k+1 end

Costo di un singolo passo dell’algoritmo Un singolo passo dell’algoritmo richiede un tempo pari a O(log n) su PRAM CREW, infatti: a)La ricerca del minimo adiacente per ciascun nodo v richiede O(log n) tempo su PRAM EREW, se invece si assume una PRAM ERCW (con scrittura del minimo o priorità al processore di indice minimo) il costo è O(1). b)Il salto del puntatore per ridurre a stelle la pseudoforesta richiedere tempo logaritmico su PRAM CREW. c)La numerazione dei meganodi richiede tempo logaritmico con somme prefisse su PRAM EREW. d)Si deve prestare attenzione nella generazione della matrice W k+1 da utilizzare al passo successivo: tra due meganodi si dovrà porre un arco il cui peso è pari al minimo tra tutti gli archi che collegano i nodi di un meganodo ai nodi dell’altro. Tale operazione si può eseguire in O(log n) tempo su una PRAM EREW simulando una scrittura concorrente. Si dovrà inoltre tenere traccia dell’arco del grafo originale a cui tale costo si riferisce, al fine di poterlo correttamente inserire nel MST.

Costo totale dell’algoritmo Adoperiamo una PRAM con n 2 processori, uno per ogni elemento della matrice di adiacenza. L’algoritmo richiede O(log 2 n) tempo su una PRAM CREW con n 2 processori. Prova: abbiamo visto come ciascuna iterazione del ciclo while richiede tempo logaritmico. Il numero di iterazioni del ciclo while saranno al più O(log n) dato che al generico passo k, una componente connessa di n' > 1 nodi, può originare al più n'/2 meganodi. Con vari tecnicismi si può raffinare l’algoritmo e ridurre costo, assunzioni sul modello e/o numero di processori.

Albero ricoprente Lo stesso algoritmo si può applicare per trovare un qualunque albero ricoprente (quindi non minimo) del grafo. Infatti, se il grafo non è pesato si usano pesi tutti pari ad 1, disambiguati con l’indice dell’arco. Se il grafo non è connesso l’algoritmo genera una foresta ricoprente di costo minimo. Quindi si può anche utilizzare per identificare le componenti connesse di un grafo.