Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoVitale Lombardi Modificato 10 anni fa
1
Il problema del cammino minimo tra 2 nodi in un grafo con archi privati
2
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à!)
3
Il problema dello shortest path 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 cammino minimo in G=(V,E,tipi) tra s e t.
4
Più Formalmente Soluzioni ammissibili: F: insieme dei cammini in G da s a t Tipo dellagente e: e : peso dellarco intuitivamente: e è il costo che lagente sostiene per utilizzare e Valutazione agente e di un cammino P F : v e ( e,P)= e se e P, 0 altrimenti SCF: shortest path in G=(V,E, ) fra s e t.
5
Come progettare un meccanismo truthful per il problema? Osservazione cruciale: la (vera) lunghezza di un cammino P è: e E v e ( e,P) problema utilitario! …usiamo i meccanismi VCG
6
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è
7
Meccanismo VCG M= : g(r): calcola P G (s,t) in G=(V,E,r) p e : Per ogni arco e E: p e = je v j (r j,g(r - e )) - je v j (r j,x) cioè d G-e (s,t)-(d G (s,t)-r e ) se e P G (s,t) 0 altrimenti Per ogni e P G (s,t), dobbiamo calcolare P G-e (s,t), ovvero il cammino minimo di rimpiazzo in G-e =(V,E\{e},r -e ) tra s e t pe=pe= {
8
Cammino di rimpiazzo per e s t e 2 2 3 4 5 6 5 10 5 12 P G-e (s,t) P G (s,t) quanto viene pagato e? p e =12-(11-2)=3
9
Quel è la complessità temporale del meccanismo? …dobbiamo calcolare con uno SP tra s e t …e il pagamento per gli archi selezionati …è solo una questione algoritmica!
10
Ipotesi di lavoro n=|V|, m=|E| w(e): denota il peso dellarco e d G (s,t): distanza in G da s a t (somma dei pesi degli archi di P G (s,t)) I nodi s,t sono 2-edge connessi: cioè, esistono in G almeno 2 cammini tra s e t che sono disgiunti sugli archi per ogni arco e del cammino P G (s,t) che viene rimosso esiste almeno un cammino alternativo in G-e
11
…infatti, in caso contrario… Se s,t non sono 2-edge connessi, cè almeno un arco in P G (s,t) che è un ponte (arco che rimosso spezza G in due componenti C 1 e C 2, r C 1 e s C 2 ) Se e è un ponte d G-e (s,t) = Il possessore di quellarco tiene in pugno il sistema: può chiedere qualsiasi cifra!
12
Una soluzione banale e P G (s,t) applichiamo lalgoritmo di Dijkstra al grafo G-e Complessità: k=O(n) archi per O(m + n logn): O(mn + n 2 logn) time La soluzione che proponiamo costerà: O(m + n logn) time
13
Notazioni S G (s), S G (t): alberi dei cammini minimi radicati in s e t M s (e): insieme dei nodi raggiungibili da s in S G (s) senza passare per larco e N s (e)=V/M s (e): nodi del sottoalbero di S G (s) radicato in v, dove e=(u,v) M t (e), N t (e) definiti in modo analogo
14
s u v t e M s (e) N s (e) S G (s)
15
Crossing edges M s (e) e N s (e) individuano un taglio in G C s (e)={(x,y) E\{e}: x M s (e), y N s (e)} archi del taglio: crossing edges
16
Crossing edges s u v t e M s (e) N s (e) S G (s) C s (e)
17
Come è fatto P G-e (s,t)? Ovvio: non usa e P G-e (s,t) deve attraversare il taglio È il cammino più corto fra quelli che non usano e La sua lunghezza è: ove w(f) denota il peso dichiarato per f. d G-e (s,t)= min {d G-e (s,x)+w(f)+d G-e (y,t)} f=(x,y) C s (e)
18
Cammino di rimpiazzo s u v t e x y d G-e (s,t)= min {d G-e (s,x)+w(f)+d G-e (y,t)} f=(x,y) C s (e)
19
Come calcolare d G-e (s,t) Sia f=(x,y) C s (e); dimostreremo che: d G-e (s,x)+w(f)+d G-e (y,t)=d G (s,x)+w(f)+d G (y,t) Osservazione: d G-e (s,x)=d G (s,x), perché x M s (e) Lemma: Sia f=(x,y) C s (e) un arco del taglio (x M s (e)). Allora y M t (e). (da cui segue che: d G-e (y,t)=d G (y,t))
20
Un semplice lemma Dim(per assurdo) y M t (e), allora y N t (e). Quindi y discendente di u in S G (t) e P G (t,y) usa e. P G (v,y) è sottocammino di P G (t,y). Quindi: d G (v,y)=w(e) + d G (u,y) > d G (u,y). y N s (e), allora P G (s,y) usa e. P G (u,y) è sottocammino di P G (s,y). Quindi: d G (u,y)=w(e) + d G (v,y) > d G (v,y). s u v t e M s (e) N s (e) S G (s) x y
21
s t N s (e) M t (e) M s (e)
22
Costo per calcolare cammini di rimpiazzo Dati S G (s) e S G (t), in tempo O(1) si può calcolare k(f):= d G-e (s,x) + w(f) + d G-e (y,t) d G (s,x) guardo in S G (s) Osservazione: k(f) è la lunghezza del cammino minimo fra s e t che usa f d G (y,t) guardo in S G (t)
23
Un altro semplice algoritmo Passo 1: Calcoliamo S G (s) e S G (t) Passo 2: e P G (s,t) guardiamo gli archi del taglio C s (e) e prendiamo il minimo (rispetto al valore k( ٠ )). Complessità Passo 1: O(m + n logn) Passo 2: k=O(n) archi, O(m) archi in ogni taglio: O(mn) Migliore di O(mn + n 2 logn) se m=o(n logn)
24
Lalgoritmo di Malik, Mittal e Gupta (1989) Alla fine degli anni 80, Malik et al. hanno risolto in tempo O(m+n log n) il seguente problema di vitalità su grafi: dato un cammino minimo P G (s,t), qual è il suo arco più vitale, ovvero larco la cui rimozione induce il più lungo cammino minimo di rimpiazzo tra s e t? Il loro approccio costruisce efficientemente tutti i cammini di rimpiazzo tra s e t… …ma questo è esattamente quello che stiamo cercando nel nostro meccanismo VCG!
25
Lalgoritmo di Malik, Mittal e Gupta Siano e 1, e 2,…,e k gli archi di P G (s,t) da s verso t Al passo i manteniamo in un heap H linsieme dei nodi N s (e i ) (convenzione: N s (e 0 )=V) Chiamiamo i nodi in H nodi attivi Ad ogni nodo y H è associata una chiave k(y) e un particolare crossing edge. k(y)= min {d G (s,x)+w(x,y)+d G (y,t)} k(y): lunghezza del cammino minimo da s a t che usa un qualche arco (x, y) non dellalbero x M s (e i )
26
Lalgoritmo di Malik, Mittal e Gupta Inizializzazione: H =V, k(y)= per ogni y Passo i : consideriamo larco e i e processiamo H nel seguente modo: Elimino da H tutti i nodi in W s (e i )=N s (e i-1 )\N s (e i ) Considero ogni x W s (e i ), quando trovo che un vicino y a x è attivo, calcolo k(y)=d G (s,x)+w(x,y)+d G (y,t) Se k(y)<k(y) decremento k(y) a k(y) Processati tutti gli x W s (e i ), estraggo il minimo da H, che fornisce la lunghezza del cammino minimo di rimpiazzo per e i (d G-ei (s,t))
27
Un esempio N s (e 1 ) e1e1 e2e2 e3e3 e5e5 e4e4 s t W s (e 1 ) 10 2 5 9 9 8 8 8 1 15 10 11 13
28
Un esempio N s (e 2 ) e1e1 e2e2 e3e3 e5e5 e4e4 s t W s (e 2 ) 10 2 5 9 9 8 8 8 1 11 13 14
29
Complessità computazionale di MMG Teorema Dati due nodi s,t in un grafo G con n vertici e m archi, tutti i cammini di rimpiazzo possono essere calcolati in tempo O(m + n log n).
30
Complessità computazionale di MMG Dim: Calcoliamo S G (s) e S G (t) in tempo O(m + n logn). Usiamo lheap di Fibonacci. Complessità ammortizzata delle operazioni di delete e delete_min è O(logn), e O(1) per le operazioni di insert, find_min, decrease_key,make_heap. Singola operazione make_heap O(n) insert O(n) find_min O(n) delete O(m) decrease_key O(m + n logn)
31
Complessità computazionale del VCG Corollario Il meccanismo VCG per il problema del cammino minimo può essere calcolato in tempo O(m + n logn) Dim Complessità di g( ٠ ): O(m + n logn) Complessità di p( ٠ ): calcolo tutte le distanze d G-e (s,t), in tempo O(m + n logn)
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.