La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Il problema del cammino minimo tra 2 nodi in un grafo non cooperativo.

Presentazioni simili


Presentazione sul tema: "Il problema del cammino minimo tra 2 nodi in un grafo non cooperativo."— Transcript della presentazione:

1 Il problema del cammino minimo tra 2 nodi in un grafo non cooperativo

2 Notazioni preliminari G=(V,E): grafo non diretto pesato, w(e) R + per ogni e E (tipo privato dellagente che possiede larco e) s,t V, risp. sorgente e destinazione P G (s,t): cammino minimo in G da s a t d G (s,t): distanza in G da s a t (somma dei pesi degli archi di P G (s,t))

3 Meccanismo VCG per il problema del cammino minimo M= g(r): dato il grafo G e le dichiarazioni r=(r 1,…,r m ), calcola P G (s,t) p e : Per ogni arco e P G (s,t), p e =d G-e (s,t)-d G (s,t)+w(e) (w(e): peso riportato per e) Per ogni e P G (s,t), dobbiamo calcolare P G-e (s,t), ovvero il cammino minimo di rimpiazzo per e (cammino minimo in G-e =(V,E\{e}))

4 Cammino di rimpiazzo per e s t e P G-e (s,t) P G (s,t)

5 Ipotesi di lavoro n=|V|, m=|E| I nodi s,t sono 2-edge connessi: per ogni arco e del cammino P G (s,t) che viene rimosso esiste almeno un cammino alternativo in G-e

6 …infatti 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!

7 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

8 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

9 s u v t e Ms(e)Ms(e) Ns(e)Ns(e) S G (s)

10 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

11 Crossing edges s u v t e Ms(e)Ms(e) Ns(e)Ns(e) S G (s) Cs(e)Cs(e)

12 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 è: d G-e (s,t)= min {d G-e (s,x)+w(f)+d G-e (y,t)} f=(x,y) C s (e)

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

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

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

16 s t N s (e) M t (e) Ms(e)Ms(e)

17 Corollario Dati S G (s) e S G (t), k(f):= d G-e (s,x) + w(f) + d G-e (y,t) disp. in O(1) time 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)

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

19 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 passante per y x M s (e i )

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

21 Un esempio N s (e 1 ) e1e1 e2e2 e3e3 e5e5 e4e4 s t W s (e 1 )

22 Un esempio N s (e 2 ) e1e1 e2e2 e3e3 e5e5 e4e4 s t W s (e 2 )

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

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

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


Scaricare ppt "Il problema del cammino minimo tra 2 nodi in un grafo non cooperativo."

Presentazioni simili


Annunci Google