La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


Presentazione sul tema: "Il problema del minimo albero ricoprente in un grafo con archi privati"— Transcript della presentazione:

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

2 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: T è un albero T è un sottografo di G T contiene tutti i nodi di G OUTPUT: T=(V,ET) minimo albero ricoprente di G, ovvero che minimizza il peso totale w(T)= w(e) Miglior algoritmo centralizzato richiede tempo O(m (m,n)) e  ET

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

4 A(i,j) per piccoli valori di i e j
j= j= j= j=4 24 i=1 2 22 23 2 i=2 22 22 2 2 2 22 2 22 2 2 . . 16 2 2 . 16 2 . 2 . . 2 2 2 . 2 2 . 16 . . . 2 . 2 . . i=3 22 2 22 22 22

5 La funzione (m,n)

6 Proprietà Fissato n, (m,n) è monotonicamente decrescente al crescere di m (m,n)= min {i>0 : A(i, m/n) > log2 n} crescente in m (n,n)   per n   (n,n)= min {i>0 : A(i, n/n) > log2 n} = min {i>0 : A(i, 1) > log2 n}  

7 Osservazione (m,n)  4 per ogni scopo pratico (cioè per valori di n ragionevoli) (m,n)= min {i>0 : A(i, m/n) > log2 n} A(4,m/n)  A(4,1) = A(3,2) 2 . . 16 . =22 >> 1080  numero stimato di atomi nell’universo osservabile  quindi (m,n)  4 per ogni n<21080

8 Il problema del MSTegoistico
Input: un grafo G=(V,E) biconnesso sugli archi, in cui ogni arco corrisponde in modo biunivoco ad un insieme di agenti egoisti; il tipo di un agente è il costo di utilizzo dell’arco (quindi tipo > 0); la sua valutazione è uguale al suo tipo; SCF: un vero MST di G=(V,E,t).

9 Meccanismo VCG Il problema è utilitario  VCG-mechanism M= <g(r), p(x)>: g(r): dato il grafo G e le dichiarazioni r=(r1,…,rm), calcola il MST T=(V,ET) di G=(V,E,r) pe: Per ogni arco e  E, pe =j≠e vj(rj,x(r-e)) -j≠e vj(rj,x) cioè pe=w(TG-e)-w(T)+ re se eET, pe=0 altrimenti. Per ogni e T dobbiamo calcolare TG-e, ovvero il MST di rimpiazzo per e (MST in G-e =(V,E\{e},r-e)) Ipotesi di lavoro: Grafo 2-edge connesso (altrimenti TG-e potrebbe non esistere  il possessore dell’arco e “terrebbe in pugno” il sistema!)

10 Una soluzione banale e T applichiamo l’algoritmo di calcolo dell’MST al grafo G-e Complessità: n-1 archi dell’MST per O(m (m,n)): O(nm (m,n)) La soluzione efficiente che proponiamo costerà ancora O(m (m,n))!!!

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

12 Esempio 11 4 10 13 6 8 8 10 1 2 3 7 9

13 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)}

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

15 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 dell’albero vale: w(f)  w(e) per ogni e in T(f)

16 …quindi… Se e è un arco dell’MST, esso rimane minimo finché w(e) non cresce oltre w(f), dove f è l’arco più leggero che forma un ciclo con e (f è chiamato arco di swap per e); chiamiamo tale valore up(e) Più formalmente, per ogni e  E(T) up(e)= minf  C(e) w(f) swap(e)= arg minf  C(e) w(f)

17 Analisi di sensitività degli archi del MST
11 4 C(e) 10 13 6 up(e)=8 e 8 10 1 2 3 7 9

18 w(TG-e)=w(T)-w(e)+up(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(TG-e)=w(T)-w(e)+up(e)  Nel meccanismo VCG il pagamento pe di un arco e della soluzione è esattamente pari ad up(e)!!

19 Idea dell’algoritmo efficiente
Per ogni e  E(T) guardare efficientemente tutti gli archi che formano un ciclo con e e prendere il minimo (up(e))

20 Il Transmuter Dato G=(V,E) e un suo albero ricoprente T, un transmuter è un grafo diretto aciclico D che rappresenta in modo compatto l’insieme dei cicli fondamentali di G rispetto a T, ovvero l’insieme {T(f) : f arco non dell’albero} D conterrà: Una sorgente (nodo con grado entrante nullo) s(e) per ogni arco e di T Un pozzo (nodo con grado uscente nullo) t(f) per ogni arco f non in T 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)

21 Un esempio

22 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 è un’estensione 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

23 Ordinamento topologico
D=(N,A) grafo diretto. Un ordinamento topologico di D è un ordinamento v1, v2, …,vn dei nodi tale che per ogni arco (vi, vj) 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).

24 Calcolo degli incrementi per gli archi dell’albero
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 l’arco 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)

25 Calcolo dei valori up(e)
7 2 8 5 6 9 3 4 6 11 9 10 7 7 6 6 9 10 7 6 10 7 8 9 6 10 11

26 Complessità temporale
Costruzione Transmuter: O(m (m,n)) Calcolo valori up(e): Trovare l’ordinamento topologico: O(m (m,n)) Processare il transmuter: O(m (m,n))

27 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)).


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

Presentazioni simili


Annunci Google