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

Slides:



Advertisements
Presentazioni simili
Flusso Massimo Applicazione di algoritmi
Advertisements

Algoritmi e Strutture dati Mod B
Meccanismi one-parameter. Riepilogo Archi di un grafo controllati da agenti egoistici Solo lagente conosce il peso associato al proprio arco Obiettivo:
Algoritmi e Strutture Dati
Il problema del cammino minimo tra 2 nodi in un grafo non cooperativo
Il problema del minimo albero ricoprente in un grafo non cooperativo
Algoritmi e Strutture Dati
Cammini minimi con una sorgente
Alberi binari di ricerca
Breath-first search Visita in ampiezza di un grafo Algoritmo Esempio
Cammini minimi con sorgente singola
Algoritmi e Strutture Dati
Il problema del cammino minimo tra 2 nodi in un grafo con archi privati.
Algoritmi e Strutture Dati
Università degli Studi di Roma Tor Vergata
Il problema del minimo albero ricoprente in un grafo con archi privati.
Algoritmi e Strutture Dati
Scenario Archi di un grafo controllati da agenti egoistici
Meccanismi one-parameter. Riepilogo Archi di un grafo controllati da agenti egoistici Solo lagente conosce il peso associato al proprio arco Obiettivo:
Meccanismi one-parameter. Riepilogo Archi di un grafo controllati da agenti egoistici Solo lagente conosce il peso associato al proprio arco Obiettivo:
U V U V (a) |cfc|=2 prima e dopo (b) |cfc|=2 prima e |cfc|=1 dopo
Algoritmo di Ford-Fulkerson
Il problema del minimo albero ricoprente in un grafo con archi privati
Capitolo 13 Cammini minimi: Algoritmo di Floyd e Warshall Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmi di Prim e di Borůvka Algoritmi.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmi di Prim e di Boruvka Algoritmi.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Capitolo 11 Grafi e visite di grafi Algoritmi e Strutture Dati.
Flusso Massimo Applicazione di algoritmi
Flusso Massimo Applicazione Algoritmi Esercizio 1 Sia dato la seguente rete di flusso, in cui la sorgente è il nodo 1 e la destinazione è il nodo 6. I.
Trovare il percorso minimo da b ad ogni altro vertice
Algoritmi e Strutture Dati
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
Prof. Cerulli – Dott.ssa Gentili
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Cammini minimi da un sorgente
Capitolo 13 Cammini minimi: Algoritmo di Floyd e Warshall Algoritmi e Strutture Dati.
Capitolo 13 Cammini minimi: Ordinamento topologico Algoritmi e Strutture Dati.
Olimpiadi di Informatica 2010 Giornate preparatorie
Capitolo 12 Minimo albero ricoprente: Algoritmo di Kruskal (*) Algoritmi e Strutture Dati.
Università degli Studi di Roma Tor Vergata
Capitolo 12 Minimo albero ricoprente Algoritmi e Strutture Dati.
Meccanismi one-parameter: il problema dell’albero dei cammini minimi a sorgente singola.
Algoritmi elementari su grafi
Flusso Massimo Applicazione di algoritmi
Capitolo 12 Minimo albero ricoprente: Algoritmo di Kruskal Algoritmi e Strutture Dati.
Capitolo 13 Cammini minimi Algoritmi e Strutture Dati.
Meccanismi one-parameter: il problema dell’albero dei cammini minimi a sorgente singola.
Algoritmi e Strutture Dati
Prof. Cerulli – Dott. Carrabs
Capitolo 13 Cammini minimi: Bellman e Ford Algoritmi e Strutture Dati.
Capitolo 13 Cammini minimi: Algoritmo di ordinamento topologico, di Dijkstra, e di Floyd e Warshall Algoritmi e Strutture Dati.
Meccanismi one-parameter. Riepilogo Archi di un grafo controllati da agenti egoistici Solo l’agente conosce il peso associato al proprio arco Obiettivo:
Flusso di Costo Minimo Applicazione di algoritmi: Cammini Minimi Successivi (SSP) Esercizio 1 Sia data la seguente rete di flusso, in cui i valori riportati.
Capitolo 13 Cammini minimi Algoritmi e Strutture Dati.
Capitolo 13 Cammini minimi: algoritmo di Dijkstra Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Cammini minimi fra tutte le coppie:
Cammini minimi in grafi:
Capitolo 12 Minimo albero ricoprente: Algoritmo di Kruskal Algoritmi e Strutture Dati.
Il problema del cammino minimo tra 2 nodi in un grafo con archi privati.
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi Albero ricoprente di costo minimo Lezione n°12.
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi Lezione n°9.
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
Capitolo 13 Cammini minimi: algoritmo di Dijkstra Algoritmi e Strutture Dati.
Transcript della presentazione:

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

Il problema dello shortest path egoistico Input: un grafo G=(V,E) biconnesso sugli archi, in cui ogni arco corrisponde in modo biunivoco ad un insieme di agenti egoisti, 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.

Meccanismo VCG Il problema è utilitario VCG-mechanism 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,x(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= {

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

Ipotesi di lavoro n=|V|, m=|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

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

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

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

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

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

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

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)

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)

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

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 t N s (e) M t (e) Ms(e)Ms(e)

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)

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)

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!

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 quando y è attivo x M s (e i )

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

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

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

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

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)

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)