1 / 31

Il problema del cammino minimo tra 2 nodi in un grafo con archi privati

Il problema del cammino minimo tra 2 nodi in un grafo con archi privati. Scenario. Archi di un grafo controllati da agenti egoistici Solo l’agente conosce il peso associato al proprio arco

yovela
Download Presentation

Il problema del cammino minimo tra 2 nodi in un grafo con archi privati

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 l’agente 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 sorgentes e un nodo destinazionet; il tipo di un agente è il costo di utilizzo dell’arco (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 dell’agente e: • e: peso dell’arco • intuitivamente: e è il costo che l’agente sostiene per utilizzare e • Valutazione agente e di un cammino PF : • ve(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 ve(e,P) problema utilitario! …usiamo i meccanismi VCG

  6. Meccanismo VCG • M= <g(r), p(x)>: • g(r): arg minxFj vj(rj,x) • pe(x): Per ogni arco eE: pe =j≠e vj(rj,g(r-e)) -j≠e vj(rj,x) cioè

  7. Meccanismo VCG • M= <g(r), p(x)>: • g(r): calcola PG(s,t) in G=(V,E,r) • pe: Per ogni arco eE: pe =j≠e vj(rj,g(r-e)) -j≠e vj(rj,x) cioè dG-e(s,t)-(dG(s,t)-re) se ePG(s,t) 0 altrimenti • Per ogni e  PG(s,t), dobbiamo calcolare PG-e(s,t), ovvero il cammino minimo di rimpiazzo in G-e =(V,E\{e},r-e) tra s e t { pe=

  8. Cammino di rimpiazzo per e s PG(s,t) 2 3 PG-e(s,t) 4 5 6 5 e 2 quanto viene pagato e? 10 12 5 pe=12-(11-2)=3 t

  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 dell’arco e • dG(s,t): distanza in G da s a t (somma dei pesi degli archi di PG(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 PG(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 PG(s,t) che è un ponte (arco che rimosso spezza G in due componenti C1 e C2, r  C1 e s  C2) • Se e è un ponte  dG-e(s,t) = ∞  Il possessore di quell’arco “tiene in pugno” il sistema: può chiedere qualsiasi cifra!

  12. Una soluzione banale e PG(s,t) applichiamo l’algoritmo di Dijkstra al grafo G-e Complessità: k=O(n) archi per O(m + n logn): O(mn + n2 logn) time La soluzione che proponiamo costerà: O(m + n logn) time

  13. Notazioni • SG(s), SG(t): alberi dei cammini minimi radicati in s e t • Ms(e): insieme dei nodi raggiungibili da s in SG(s) senza passare per l’arco e • Ns(e)=V/Ms(e): nodi del sottoalbero di SG(s) radicato in v, dove e=(u,v) • Mt(e), Nt(e) definiti in modo analogo

  14. s SG(s) Ms(e) u e v Ns(e) t

  15. Crossing edges • Ms(e) e Ns(e) individuano un taglio in G • Cs(e)={(x,y) E\{e}: x Ms(e), yNs(e)} archi del taglio: crossing edges

  16. Crossing edges s SG(s) Ms(e) u e v Cs(e) Ns(e) t

  17. Come è fatto PG-e(s,t)? • Ovvio: non usa e • PG-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. dG-e(s,t)= min {dG-e(s,x)+w(f)+dG-e(y,t)} f=(x,y)  Cs(e)

  18. Cammino di rimpiazzo s u x e v y t dG-e(s,t)= min {dG-e(s,x)+w(f)+dG-e(y,t)} f=(x,y)  Cs(e)

  19. Come calcolare dG-e(s,t) • Sia f=(x,y)  Cs(e); dimostreremo che: dG-e(s,x)+w(f)+dG-e(y,t)=dG(s,x)+w(f)+dG(y,t) Osservazione: dG-e(s,x)=dG(s,x), perché x Ms(e) Lemma: Sia f=(x,y)  Cs(e) un arco del taglio (x Ms(e)). Allora y  Mt(e). (da cui segue che: dG-e(y,t)=dG(y,t))

  20. Un semplice lemma SG(s) s Ms(e) Dim(per assurdo) y Mt(e), allora y  Nt(e). Quindi y discendente di u in SG(t) e PG(t,y) usa e. PG(v,y) è sottocammino di PG(t,y). Quindi: dG (v,y)=w(e) + dG (u,y) > dG (u,y). y  Ns(e), allora PG(s,y) usa e. PG(u,y) è sottocammino di PG(s,y). Quindi: dG (u,y)=w(e) + dG (v,y) > dG (v,y). u x e v Ns(e) y t

  21. s Ms(e) t Ns(e)  Mt(e)

  22. Costo per calcolare cammini di rimpiazzo Dati SG(s) e SG(t), in tempo O(1) si può calcolare k(f):= dG-e(s,x) + w(f) + dG-e(y,t) dG(s,x) guardo in SG(s) dG(y,t) guardo in SG(t) Osservazione: k(f) è la lunghezza del cammino minimo fra s e t che usa f

  23. Un altro semplice algoritmo Passo 1: Calcoliamo SG(s) e SG(t) Passo 2: e PG(s,t) guardiamo gli archi del taglio Cs(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 + n2 logn) se m=o(n logn)

  24. L’algoritmo 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 PG(s,t), qual è il suo arco più vitale, ovvero l’arco 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. L’algoritmo di Malik, Mittal e Gupta • Siano e1, e2,…,ek gli archi di PG(s,t) da s verso t • Al passo i manteniamo in un heap H l’insieme dei nodi Ns(ei) (convenzione: Ns(e0)=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 {dG(s,x)+w(x,y)+dG(y,t)} • k(y): lunghezza del cammino minimo da s a t che usa un qualche arco (x, y) non dell’albero x  Ms(ei)

  26. L’algoritmo di Malik , Mittal e Gupta • Inizializzazione: H =V, k(y)= per ogni y • Passo i : consideriamo l’arco ei e processiamo H nel seguente modo: • Elimino da H tutti i nodi in Ws(ei)=Ns(ei-1)\Ns(ei) • Considero ogni x  Ws(ei), quando trovo che un vicino y a x è attivo, calcolo k’(y)=dG(s,x)+w(x,y)+dG(y,t) • Se k’(y)<k(y) decremento k(y) a k’(y) • Processati tutti gli x  Ws(ei), estraggo il minimo da H, che fornisce la lunghezza del cammino minimo di rimpiazzo per ei (dG-ei(s,t))

  27. Un esempio s Ws(e1) e1 8 e2 8 15 9 2 8 10 e3 9 5 Ns(e1) e4 1 13 e5 11 10 t

  28. Un esempio s e1 8 e2 8 Ws(e2) 9 2 8 14 e3 9 14 5 e4 1 13 Ns(e2) e5 11 10 t

  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 SG(s) e SG(t) in tempo O(m + n logn). Usiamo l’heap 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 dG-e(s,t), in tempo O(m + n logn)

More Related