La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Il problema del minimo albero ricoprente in un grafo non cooperativo

Presentazioni simili


Presentazione sul tema: "Il problema del minimo albero ricoprente in un grafo non cooperativo"— Transcript della presentazione:

1 Il problema del minimo albero ricoprente in un grafo non cooperativo

2 Un problema molto conosciuto
G=(V,E): grafo non diretto pesato, w(e)  R+ per ogni e E (tipo privato dell’agente che possiede l’arco e) T è un albero ricoprente di G se: T è un albero T è un sottografo di G T tocca tutti i nodi di G

3 Un problema molto conosciuto
Input: grafo G=(V,E) pesato non orientato Output: T=(V,ET) albero ricoprente di G che minimizza il peso totale w(T)= w(e) Miglior algoritmo centralizzato richiede tempo O(m (m,n)) e  ET

4 La funzione di Ackermann (e la sua inversa)

5 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

6 La funzione (m,n)

7 Proprietà fissato n, (m,n) monotonicamente decrescente al crescere di m (n,n)   per n   (m,n)  4 per ogni scopo pratico 1. (m,n)= min {i>0 : A(i, m/n) > log2 n} crescente in m

8 Proprietà 2. (n,n)   per n  
(n,n)= min {i>0 : A(i, n/n) > log2 n} = min {i>0 : A(i, 1) > log2 n}  

9 Proprietà 3. (m,n)  4 per ogni scopo pratico
(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

10 Meccanismo VCG per il problema del MST
M= <g(r), p(g(r))> g(r): dato il grafo G e le dichiarazioni r=(r1,…,rm), calcola il MST di G, T=(V,ET) pe: Per ogni arco e  ET pe=w(TG-e)-w(T)+ w(e) (w(e): peso riportato per e) Per ogni e  T dobbiamo calcolare TG-e, ovvero il MST di rimpiazzo per e (MST in G-e =(V,E\{e})) Ipotesi di lavoro: Grafo 2-edge connesso (altrimenti TG-e potrebbe non esistere  il possessore dell’arco e “tiene in pugno” il sistema!)

11 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))!!!

12 Una soluzione un po’ meno banale
Proprietà dei tagli di un MST: sia (V’,V’’) un taglio in G: allora, l’arco di peso minimo che “attraversa” il taglio appartiene all’MST TG-e coincide con T-e+f, dove f è l’arco di peso minimo che attraversa il taglio indotto dalla rimozione di e da T Controlliamo gli O(m) archi del taglio suddetto e troviamo f Complessità: n-1 archi dell’MST per O(m): O(m (m,n)+mn)=O(mn)

13 L’analisi di sensitività degli archi dell’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?

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

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

16 Proprietà dei cicli G=(V,E) grafo non orientato e pesato,
e l’arco più pesante in un qualsiasi ciclo Allora e  MST(G)

17 Sia e l’arco più pesante in un ciclo C={e }P, e supponiamo e  T
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

18 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)

19 …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)

20 …più formalmente… Per ogni e  E(T) up(e)= minf  C(e) w(f)
swap(e)= arg minf  C(e) w(f)

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

22 Osservazioni Calcolare tutti i valori up(e) (swap(e)) vuol dire ricalcolare MST(G-e) per ogni e di T MST(G-e)=MST(G) \{e}  {swap(e)} Nel meccanismo VCG il pagamento pe di un arco e della soluzione è esattamente up(e)!!

23 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))

24 Il Transmuter Dato G=(V,E) e un suo albero ricoprente T, un transmuter è un grafo diretto aciclico D che rappresenta l’insieme dei cicli fondamentali di G rispetto a T, ovvero l’insieme {T(f) : f arco non dell’albero} D contiene: 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 numero arbitrario di nodi ausiliari 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)

25

26 Come si costruisce il transmuter
Tarjan ha mostrato come costruire un transmuter che ha O(m (m,n)) nodi 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

27 Alcuni richiami di base
D=(N, A) grafo diretto ( |N|=h ) Un ordinamento topologico è un ordinamento dei nodi di D v1, v2, …,vh tale che: per ogni arco (vi, vj) A, vale i < j

28 Alcuni richiami di base
D=(N, A) grafo diretto 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| + |A|) (visita in profondità)

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

30 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

31 Complessità Tempo Costruzione Transmuter: O(m (m,n))
Calcolo valori up(e): Trovare ordinamento topologico O(m (m,n)) Processare il transmuter in O(m (m,n)) Spazio O(m (m,n))


Scaricare ppt "Il problema del minimo albero ricoprente in un grafo non cooperativo"

Presentazioni simili


Annunci Google