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

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
Introduzione ai grafi Grafo diretto e non diretto
Il problema del minimo albero ricoprente in un grafo non cooperativo
Algoritmi e Strutture Dati
Cammini minimi con una sorgente
Breath-first search Visita in ampiezza di un grafo Algoritmo Esempio
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:
Algoritmo di Ford-Fulkerson
Il problema del minimo albero ricoprente in un grafo con archi privati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmi di Prim e di Borůvka Algoritmi.
Capitolo 11 Grafi e visite di grafi Algoritmi e Strutture Dati.
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
Il problema del cammino minimo tra 2 nodi in un grafo con archi privati.
Capitolo 11 Grafi e visite di grafi Algoritmi e Strutture Dati.
Capitolo 11 Grafi e visite di grafi Algoritmi e Strutture Dati.
Flusso Massimo Applicazione di algoritmi
Cammini minimi Algoritmo SPT.Acyclic
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.
Algoritmi e Strutture Dati (Mod. B)
Trovare il percorso minimo da b ad ogni altro vertice
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
PARTE PRIMA: Reti Cablate
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Componenti fortemente connesse
Cammini minimi da un sorgente
AlgoLab - MST code binomiali Algoritmi per il calcolo di MST: uso di code unificabili Laboratorio di Algoritmi 02/03 Prof. Ugo de’ Liguoro.
Capitolo 13 Cammini minimi: Ordinamento topologico Algoritmi e Strutture Dati.
Olimpiadi di Informatica 2010 Giornate preparatorie
Università degli Studi di Roma Tor Vergata
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.
Componenti fortemente connesse
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
Flusso di Costo Minimo Trasformazioni Equivalenti e Trasformazioni Inverse Viene data la seguente rete di flusso, in cui i valori riportati vicino agli.
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: 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
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 non cooperativo

Notazioni preliminari G=(V,E): grafo non diretto pesato, w(e)  R+ per ogni e E (tipo privato dell’agente che possiede l’arco e) s,t V, risp. sorgente e destinazione PG(s,t): cammino minimo in G da s a t dG(s,t): distanza in G da s a t (somma dei pesi degli archi di PG(s,t))

Meccanismo VCG per il problema del cammino minimo M= <g(r), p(g(r))> g(r): dato il grafo G e le dichiarazioni r=(r1,…,rm), calcola PG(s,t) pe: Per ogni arco e  PG(s,t), pe=dG-e(s,t)-dG(s,t)+w(e) (w(e): peso riportato per e)  Per ogni e  PG(s,t), dobbiamo calcolare PG-e(s,t), ovvero il cammino minimo di rimpiazzo per e (cammino minimo in G-e =(V,E\{e}))

Cammino di rimpiazzo per e s PG(s,t) 2 3 PG-e(s,t) 4 5 6 5 e 2 10 12 5 t

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

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

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

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

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

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

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

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 è: dG-e(s,t)= min {dG-e(s,x)+w(f)+dG-e(y,t)} f=(x,y)  Cs(e)

Cammino di rimpiazzo dG-e(s,t)= min {dG-e(s,x)+w(f)+dG-e(y,t)} 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)

dG-e(s,x)+w(f)+dG-e(y,t)=dG(s,x)+w(f)+dG(y,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))

Un semplice lemma 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).

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

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

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)

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 passante per y x  Ms(ei)

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

Un esempio s Ws(e1) e1 e2 e3 Ns(e1) e4 e5 t

Un esempio s e1 e2 Ws(e2) e3 e4 Ns(e2) e5 t

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

Dim: Calcoliamo SG(s) e SG(t) in tempo O(m + n logn) 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)

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)