Il problema del minimo albero ricoprente in un grafo con archi privati.

Slides:



Advertisements
Presentazioni simili
Flusso Massimo Applicazione di algoritmi
Advertisements

Algoritmi e Strutture dati Mod B
Meccanismi one-parameter. Riepilogo Archi di un grafo controllati da agenti egoistici Solo lagente conosce il peso associato al proprio arco Obiettivo:
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Il problema del cammino minimo tra 2 nodi in un grafo non cooperativo
Il problema del minimo albero ricoprente in un grafo non cooperativo
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e Strutture Dati
Generazione di Piani attraverso Grafi di Pianificazione
Cammini minimi con sorgente singola
Algoritmi e Strutture Dati
Il problema del cammino minimo tra 2 nodi in un grafo con archi privati.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Scenario Archi di un grafo controllati da agenti egoistici
Meccanismi one-parameter. Riepilogo Archi di un grafo controllati da agenti egoistici Solo lagente conosce il peso associato al proprio arco Obiettivo:
Meccanismi one-parameter. Riepilogo Archi di un grafo controllati da agenti egoistici Solo lagente conosce il peso associato al proprio arco Obiettivo:
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 28/04/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
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.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmi di Prim e di Boruvka Algoritmi.
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 e Strutture Dati
Il problema del cammino minimo tra 2 nodi in un grafo con archi privati.
Flusso Massimo Applicazione di algoritmi
Flusso Massimo Applicazione Algoritmi Esercizio 1 Sia dato la seguente rete di flusso, in cui la sorgente è il nodo 1 e la destinazione è il nodo 6. I.
Algoritmi e Strutture Dati (Mod. B)
Alberi ricoprenti minimi Alcune applicazioni Lunedì 17 novembre 2003.
Fibonacci Heaps e il loro utilizzo nell’algoritmo di Prim
Esempio di esecuzione dellalgoritmo di Prim 1 v1v1 v5v5 v2v2 v3v3 v4v U = {v 1 } X =Ø 1 v1v1 v5v5 v2v2 v3v3 v4v U = {v.
Prof. Cerulli – Dott.ssa Gentili
Prof. Cerulli – Dott.ssa Gentili
PARTE PRIMA: Reti Cablate
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.
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.
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.
Capitolo 13 Cammini minimi: Ordinamento topologico Algoritmi e Strutture Dati.
Università degli Studi di Roma Tor Vergata
Claudio Arbib Università dell’Aquila Ricerca Operativa Metodo del simplesso per problemi di distribuzione single-commodity.
Capitolo 12 Minimo albero ricoprente Algoritmi e Strutture Dati.
Meccanismi one-parameter: il problema dell’albero dei cammini minimi a sorgente singola.
Flusso Massimo Applicazione di algoritmi
Capitolo 12 Minimo albero ricoprente: Algoritmo di Kruskal Algoritmi e Strutture Dati.
Capitolo 13 Cammini minimi Algoritmi e Strutture Dati.
Meccanismi one-parameter: il problema dell’albero dei cammini minimi a sorgente singola.
Algoritmi e Strutture Dati
Meccanismi one-parameter. Riepilogo Archi di un grafo controllati da agenti egoistici Solo l’agente conosce il peso associato al proprio arco Obiettivo:
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
Università degli Studi di Cagliari FACOLTA’ DI INGEGNERIA
Cammini minimi fra tutte le coppie:
Cammini minimi in grafi:
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmo di Prim Algoritmi e Strutture.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmo di Prim Algoritmi e Strutture.
Capitolo 9 Il problema della gestione di insiemi disgiunti (Union-find) Algoritmi e Strutture Dati.
Capitolo 12 Minimo albero ricoprente: Algoritmo di Kruskal Algoritmi e Strutture Dati.
Il problema del cammino minimo tra 2 nodi in un grafo con archi privati.
OTTIMIZZAZIONE DI UN PERCORSO GRAFO CAMMINO MINIMO.
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
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.
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
Algoritmi Avanzati a.a.2012/2013 Prof.ssa Rossella Petreschi Albero Ricoprente Lezione n°9.
Scenario Archi di un grafo controllati da agenti egoistici
Transcript della presentazione:

Il problema del minimo albero ricoprente in un grafo con archi privati

Un problema molto noto… INPUT: G=(V,E): grafo non diretto pesato, w(e) R + per ogni e E T è un albero ricoprente di G se: 1. T è un albero 2. T è un sottografo di G 3. T contiene tutti i nodi di G OUTPUT: T=(V,E T ) minimo albero ricoprente di G, ovvero che minimizza il peso totale w(T)= w(e) e E T

Scenario Archi di un grafo controllati da agenti egoistici Solo lagente conosce il peso associato al proprio arco Obiettivo: calcolare una buona soluzione di un certo problema di ottimizzazione rispetto a pesi reali Strumento: progettazione di un meccanismo truthful (pagamento opportuno degli agenti per convincerli a dire la verità!)

Il problema del minimum spanning tree (MST) egoistico Input: un grafo G=(V,E), ogni arco è un agente egoistico, un nodo sorgente s e un nodo destinazione t; il tipo di un agente è il costo di utilizzo dellarco (quindi tipo > 0); la sua valutazione è uguale al suo tipo; SCF: un vero MST di G=(V,E,tipi).

Più Formalmente Soluzioni ammissibili: F: insieme degli alberi ricoprenti di G Tipo dellagente e: e : peso dellarco intuitivamente: e è il costo che lagente sostiene per utilizzare e Valutazione agente e di un albero ricoprente T F : v e ( e,T)= e se e E(T), 0 altrimenti SCF: minimo albero ricoprente di G=(V,E, )

Come progettare un meccanismo truthful per il problema? Osservazione cruciale: il (vero) peso di un albero ricoprente T è: e E v e ( e,T) problema utilitario! …usiamo i meccanismi VCG

Meccanismo VCG M= : g(r): arg min x F j v j (r j,x) p e (x): Per ogni arco e E: p e = je v j (r j,g(r - e )) - je v j (r j,x) cioè

Meccanismo VCG M= : g(r): dato il grafo G e le dichiarazioni r=(r 1,…,r m ), calcola il MST T=(V,E T ) di G=(V,E,r) p e : Per ogni arco e E, p e = je v j (r j,x(r - e )) - je v j (r j,x) cioè p e =w(T G-e )-w(T)+ r e se e E T, p e =0altrimenti. dove T G-e è il MST di rimpiazzo per e (MST di G- e=(V,E\{e},r -e )) Ipotesi di lavoro: Grafo 2-edge connesso (altrimenti T G-e potrebbe non esistere il possessore dellarco e terrebbe in pugno il sistema!)

Quel è la complessità temporale del meccanismo? …dobbiamo calcolare con un MST di G …e il pagamento per gli archi selezionati Miglior algoritmo centralizzato richiede tempo O(m (m,n))

Una soluzione banale e T applichiamo lalgoritmo di calcolo dellMST al grafo G-e Complessità: n-1 archi dellMST per O(m (m,n)): O(nm (m,n)) La soluzione efficiente che proponiamo costerà ancora O(m (m,n))!!!

La funzione di Ackermann A(i,j) e la sua inversa (m,n)

A(i,j) per piccoli valori di i e j j=1 j=2 j=3 j=4 i=1 i=2 i=3

La funzione (m,n)

Proprietà 1. Fissato n, (m,n) è monotonicamente decrescente al crescere di m (m,n)= min {i>0 : A(i, m/n ) > log 2 n} crescente in m 2. (n,n) per n (n,n)= min {i>0 : A(i, n/n ) > log 2 n} = min {i>0 : A(i, 1) > log 2 n}

(m,n) 4 per ogni scopo pratico (cioè per valori di n ragionevoli) A(4, m/n ) A(4,1) = A(3,2) = >> numero stimato di atomi nelluniverso osservabile (m,n)= min {i>0 : A(i, m/n ) > log 2 n} Osservazione quindi (m,n) 4 per ogni n<

Un po di storia 1926: Boruvka riscoperto da: Choquete, 1938 Florek et. al., 1951 Sollin, 1961 (larticolo di Boruvka era ormai conosciuto!) 1930: Jarnìk riscoperto da: Prim, 1957 Dijkstra, : Kruskal riscoperto da: Loberman e Weinberg, 1956, qualche mese dopo …e le complessità temporali di questi algoritmi? …raramente menzionate negli articoli… Esempi: Quick Sort è del 61, Hoare Heap binari del 64, Williams

Complessità temporali 1975: Yao - O(m loglogn) linear time selection di Blum et al. (1972) 1975: Johnson O(m log d n) d=max{m/n,2} d-heaps (Johnson 1975) 1976: Cheriton e Tarjan – O(m log log d n) Mergeable leftist heaps di Crane (1972) 1984: Fredman e Tarjan – O(m log*(m,n)) Heap di Fibonacci di Fredman e Tarjan (1984) 1986: Gabow, Galil, Spencer, Tarjan – O(mloglog*(m,n)) Usando meglio gli heap di Fibonacci log*(m,n)= 1+log*n-log*(m/n) …tutti usano un approccio greedy…

Perché lapproccio greedy: una proprietà forte Dato G=(V,E), grafo non orientato F = {F E: F non contiene cicli} (E, F ): matrioide grafico

Complessità temporali 1997: Chazelle - O(m (m,n) log (m,n)) Soft-heap di Chazelle (1997) 2000: Chazelle O(m (m,n)) Miglior uso dei Soft-heap 2002: Pettie e Ramachandran – O(MST*(m,n)) dove MST*(m,n): complessità dellalbero di decisione del problema del minimo albero ricoprente (numero minimo di confronti nel caso peggiore) MST*(m,n)= O(m (m,n)) e MST*(m,n)= (m)

Un problema aperto MST*(m,n) = O(m) ?

Un problema correlato: verifica di un MST Input: grafo G=(V,E) pesato non orientato, T=(V,E T ) albero ricoprente di G Domanda: T è un MST per G?

Verifica di un MST

Un altro problema correlato: lanalisi di sensitività degli archi di un MST Input grafo G=(V,E) pesato non orientato T=(V,E T ) minimo albero ricoprente di G Domanda quanto possono aumentare i pesi w(e) ( e E) prima di inficiare la minimalità di T?

Esempio: arco non in T

Esempio: arco in T

Sulla complessità dei problemi Verifica analisi di sensitività calcolo MST riduce linearmente O(m)O(m) (m) e O(m (m,n)) O(m log (m,n))

Notazioni G=(V,E), T albero ricoprente di G. Definiamo: Per ogni f=(x,y) E\E(T) T(f): (unico) cammino semplice in T che unisce x e y Per ogni e E(T) C(e)={f E\E(T): e T(f)}

Dim (per assurdo): Sia e larco più pesante in un ciclo C={e } P, e supponiamo e T e e T T=T \ {e} {e} w(e) < w(e) w(T) < w(T) T non è MST(G) X V\X P Proprietà dei cicli Teorema: Sia G=(V,E) un grafo non orientato e pesato, sia e larco più pesante di un qualsiasi ciclo in G. Allora e MST(G)

Proprietà dei tagli G=(V,E) grafo non orientato e pesato X V un qualsiasi sottoinsieme di vertici e arco più leggero che attraversa il taglio (X,V\X), allora e MST(G)

Dim Sia e larco più leggero del taglio (X,V\X). Sia T=MST(G), e supponiamo e T, facciamo vedere che T MST(G) e e e : arco più leggero del taglio w(e) < w(e) w(T) < w(T) T(e) T(e): cammino in T che unisce gli estremi di e T=T \ {e} {e} T non è MST(G) X V\X

Condizione di minimalità di un MST Corollario G=(V,E) grafo non diretto, connesso, pesato T albero ricoprente di G. allora T è minimo se e soltanto se per ogni arco f non dellalbero vale: w(f) w(e) per ogni e in T(f)

…quindi… Se f è un arco non dellalbero T rimane minimo finché w(f) non scende sotto w(e), dove e è larco più pesante in T(f); chiamiamo tale valore down(f) Se e è un arco dellalbero T rimane minimo finché w(e) non cresce oltre w(f), dove f è larco più leggero tale che e T(f) (f è chiamato arco di swap per e); chiamiamo tale valore up(e)

…più formalmente… Fare analisi di sensitività vuol dire calcolare: Per ogni f E\E(T): down(f )= max e T(f) w(e) Per ogni e E(T) up(e)= min f C(e) w(f) swap(e)= arg min f C(e) w(f)

Analisi di sensitività down(f)= f T(f)

Analisi di sensitività degli archi del MST up(e)= e C(e)

Osservazione Calcolare tutti i valori up(e) è equivalente a calcolare il peso di un MST di G-e per ogni e di T; infatti w(T G-e )=w(T)-w(e)+up(e) Nel meccanismo VCG il pagamento p e di un arco e della soluzione è esattamente pari ad up(e)!!

Idea dellalgoritmo efficiente Per ogni e E(T) guardare efficientemente tutti gli archi che formano un ciclo con e e prendere il minimo (up(e)) Per ogni f E\E(T) guardare efficientemente tutti gli archi in T(f) e prendere il massimo (down(e))

Il Transmuter Dato G=(V,E) e un suo albero ricoprente T, un transmuter è un grafo diretto aciclico D che rappresenta in modo compatto linsieme dei cicli fondamentali di G rispetto a T, ovvero linsieme {T(f) : f arco non dellalbero} D conterrà: 1. Una sorgente (nodo con grado entrante nullo) s(e) per ogni arco e di T 2. Un pozzo (nodo con grado uscente nullo) t(f) per ogni arco f non in T 3. Un certo numero di nodi ausiliari con grado entrante pari a 2 e grado uscente diverso da zero. Proprietà fondamentale: cè un cammino in D da una data sorgente s(e) a un pozzo t(f) se e solo se e T(f)

Un esempio

Come si costruisce un transmuter Tarjan ha mostrato che ad ogni albero ricoprente di un grafo può essere associato un transmuter con O(m (m,n)) nodi ed archi, il quale può essere calcolato in tempo O(m (m,n)) La costruzione è unestensione delle tecniche usate per mantenere efficientemente insiemi di foreste disgiunte sottoposte a operazioni di LINK e operazioni di EVAL R. E. Tarjan, Application of path compression on balanced trees, J. ACM 26 (1979) pp

Ordinamento topologico D=(N,A) grafo diretto. Un ordinamento topologico di D è un ordinamento v 1, v 2, …,v n dei nodi tale che per ogni arco (v i, v j ) A, vale i < j. D ammette un ordinamento topologico se e solo se D è un DAG (grafo diretto aciclico). Un ordinamento topologico dei nodi può essere trovato (se esiste) in tempo O(n+m).

Calcolo degli incrementi per gli archi dellalbero Ordiniamo topologicamente il transmuter (che è un DAG) Etichettiamo ogni nodo del transmuter con un valore reale processando i nodi in ordine topologico inverso: Etichettiamo ogni pozzo t(f) con il valore w(f) (associamo al valore anche larco f ) Etichettiamo ogni nodo v che non è un pozzo con il valore minimo fra i valori dei suoi (immediati) successori Quando tutti i nodi sono etichettati ogni sorgente s(e) è etichettata con il valore up(e) (e relativo arco di swap)

Calcolo dei valori up(e)

Calcolo dei decrementi per gli archi non dellalbero Etichettiamo ogni nodo del transmuter con un valore reale processando i nodi in ordine topologico Etichettiamo ogni sorgente s(e) con il valore w(e) (associamo al valore anche larco e) Etichettiamo ogni nodo v che non è una sorgente con il valore massimo fra i valori dei suoi (immediati) predecessori Quando tutti i nodi sono etichettati ogni pozzo t(f) è etichettato con il valore down(f)

Calcolo dei valori down(f)

Complessità temporale 1. Costruzione Transmuter: O(m (m,n)) 2. Calcolo valori up(e) e down(f): Trovare lordinamento topologico: O(m (m,n)) Processare il transmuter: O(m (m,n))

Complessità computazionale del VCG Teorema Il meccanismo VCG per il problema del MST può essere implementato in tempo O(m (m,n)). Dim Complessità di g( ٠ ): O(m (m,n)) Complessità di p( ٠ ): calcolo tutti i valori up(e) in tempo O(m (m,n)).