La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Algoritmi Avanzati Prof.ssa Rossella Petreschi

Presentazioni simili


Presentazione sul tema: "Algoritmi Avanzati Prof.ssa Rossella Petreschi"— Transcript della presentazione:

1 Algoritmi Avanzati Prof.ssa Rossella Petreschi
Ear Decomposition Lezione n°10 Algoritmi Avanzati Prof.ssa Rossella Petreschi 1

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

3 Quali grafi ammetto una Ear Decomposition?
G è privo di ponti   EAR Decomposition G è biconnesso   EAR Decomposition aperta SI P0 P1 NO P0 P1 P2 P3

4 Ear e Spanning Tree 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. 4 3 1 2 5 8 9 6 7 e2 e3 4 3 1 2 5 8 9 6 7 e1 e6 e4 e7 e8 e10 e9 e5

5 label(e) = <level(lca(u,v)),e>
Etichettare gli archi Etichettiamo ogni arco e=(u,v) in G-T nel seguente modo: label(e) = <level(lca(u,v)),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T label(e) (3,2) <0,e8> (3,4) <0,e2> (4,1) (4,8) <1,e4> (4,5) (8,9) (9,7) (5,6) eT lca label(e) (2,1) 3 <0,e8> (1,8) 4 <1,e9> (3,5) <0,e2> (7,8) 8 <2,e10> (7,6) <1,e4>

6 Risultato Ordinando gli archi rispetto a label(e) si ottiene la Ear
Decomposition come sequenza ordinata di cammini disgiunti. e label(e) (4,5) <0,e2> (3,5) (3,4) (4,1) <0,e8> (3,2) (2,1) (8,9) <1,e4> (5,6) (9,7) (7,6) (4,8) (1,8) <1,e9> (7,8) <2,e10> 4 3 1 2 5 8 9 6 7 Pe2 Pe2 Pe8 Pe8 Pe9 Pe4 Pe10 Pe4 Pe9 Pe10

7 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 Tv 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) log2 n) su PRAM CREW.

8 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 Pe: calcola lca(u,v) label(e) = <level(lca(u,v)), e> for each  e  T pardo Pe: label(e) = min{ label(e') : e'T  e  ciclo indotto da e' in T } ordina gli archi rispetto a label(e) end

9 Analisi La costrizione dello ST (dando costo 1 a tutti gli archi) costa O(n2 log2 n) su PRAM CREW. Il calcolo del TDE, il radicamento dell’albero e il calcolo del livello per ogni nodo richiedono un costo O(n log n) su PRAM EREW. Il calcolo del lca con la tecnica del TDE richiede un costo pari a O(n log n) su PRAM EREW. (*) Il calcolo di label(e)  eT si è visto che costa O((n+m) log2n) su PRAM CREW. L’ordinamento richiede O(n log n) su PRAM EREW. La complessità totale dell’algoritmo è pari a quella del calcolo dello ST O(n2 log2 n) su PRAM CREW


Scaricare ppt "Algoritmi Avanzati Prof.ssa Rossella Petreschi"

Presentazioni simili


Annunci Google