Il problema del minimo albero ricoprente in un grafo non cooperativo

Slides:



Advertisements
Presentazioni simili
Flusso Massimo Applicazione di algoritmi
Advertisements

Depth-first search Visita in profondità di un grafo Algoritmo Esempio
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
Introduzione ai grafi Grafo diretto e non diretto
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e Strutture Dati
Cammini minimi con una sorgente
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
Algoritmi e Strutture Dati
Il problema del minimo albero ricoprente in un grafo con archi privati.
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.
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:
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 05/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 28/04/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
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
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.
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.
Flusso Massimo Applicazione di algoritmi
Algoritmi e Strutture Dati (Mod. B)
Algoritmi greedy Gli algoritmi greedy in genere non sono esatti, cioè determinano soluzioni non necessariamente ottime Per il problema dell’albero ricoprente.
Prof. Cerulli – Dott.ssa Gentili
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
Prof. Cerulli – Dott.ssa Gentili
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Usi (meno scontati) della visita DFS
Algoritmi e Strutture Dati
Componenti fortemente connesse
Usi (meno scontati) della visita DFS. Informazioni utili: tenere il tempo clock=1 pre(v)=clock clock=clock+1 post(v)=clock; clock=clock+1 pre(v): tempo.
Usi (meno scontati) della visita DFS lezione basata sul capito 3 del libro Algorithms, di Dasgupta, Papadimitriou, Vazirani, McGraw-Hill.
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.
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
Capitolo 13 Cammini minimi: Bellman e Ford Algoritmi e Strutture Dati.
Master Bioinformatica 2002: Visite di Grafi Algoritmi di visita Scopo: visitare tutti i vertici di un grafo per scoprirne proprietà di vario tipo. Alcune.
Meccanismi one-parameter. Riepilogo Archi di un grafo controllati da agenti egoistici Solo l’agente conosce il peso associato al proprio arco Obiettivo:
Algoritmi e Strutture Dati
Cammini minimi fra tutte le coppie:
Cammini minimi in grafi:
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmo di Prim Algoritmi e Strutture.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmo di Prim Algoritmi e Strutture.
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.
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 minimo albero ricoprente in un grafo non cooperativo

Un problema molto conosciuto G=(V,E): grafo non diretto pesato, w(e)  R+ per ogni e E (tipo privato dell’agente che possiede l’arco e) T è un albero ricoprente di G se: T è un albero T è un sottografo di G T tocca tutti i nodi di G

Un problema molto conosciuto Input: grafo G=(V,E) pesato non orientato Output: T=(V,ET) albero ricoprente di G che minimizza il peso totale w(T)= w(e) Miglior algoritmo centralizzato richiede tempo O(m (m,n)) e  ET

La funzione di Ackermann (e la sua inversa)

A(i,j) per piccoli valori di i e j j=1 j=2 j=3 j=4 24 i=1 2 22 23 2 i=2 22 22 2 2 2 22 2 22 2 2 . . 16 2 2 . 16 2 . 2 . . 2 2 2 . 2 2 . 16 . . . 2 . 2 . . i=3 22 2 22 22 22

La funzione (m,n)

Proprietà fissato n, (m,n) monotonicamente decrescente al crescere di m (n,n)   per n   (m,n)  4 per ogni scopo pratico 1. (m,n)= min {i>0 : A(i, m/n) > log2 n} crescente in m

Proprietà 2. (n,n)   per n   (n,n)= min {i>0 : A(i, n/n) > log2 n} = min {i>0 : A(i, 1) > log2 n}  

Proprietà 3. (m,n)  4 per ogni scopo pratico (m,n)= min {i>0 : A(i, m/n) > log2 n} A(4,m/n)  A(4,1) = A(3,2) 2 . . 16 . =22 >> 1080  numero stimato di atomi nell’universo osservabile

Meccanismo VCG per il problema del MST M= <g(r), p(g(r))> g(r): dato il grafo G e le dichiarazioni r=(r1,…,rm), calcola il MST di G, T=(V,ET) pe: Per ogni arco e  ET pe=w(TG-e)-w(T)+ w(e) (w(e): peso riportato per e) Per ogni e  T dobbiamo calcolare TG-e, ovvero il MST di rimpiazzo per e (MST in G-e =(V,E\{e})) Ipotesi di lavoro: Grafo 2-edge connesso (altrimenti TG-e potrebbe non esistere  il possessore dell’arco e “tiene in pugno” il sistema!)

Una soluzione banale e T applichiamo l’algoritmo di calcolo dell’MST al grafo G-e Complessità: n-1 archi dell’MST per O(m (m,n)): O(nm (m,n)) La soluzione efficiente che proponiamo costerà ancora O(m (m,n))!!!

Una soluzione un po’ meno banale Proprietà dei tagli di un MST: sia (V’,V’’) un taglio in G: allora, l’arco di peso minimo che “attraversa” il taglio appartiene all’MST TG-e coincide con T-e+f, dove f è l’arco di peso minimo che attraversa il taglio indotto dalla rimozione di e da T Controlliamo gli O(m) archi del taglio suddetto e troviamo f Complessità: n-1 archi dell’MST per O(m): O(m (m,n)+mn)=O(mn)

L’analisi di sensitività degli archi dell’MST Input grafo G=(V,E) pesato non orientato T=(V,ET) minimo albero ricoprente di G Domanda quanto possono aumentare i pesi w(e) (e  T) prima di inficiare la minimalità di T?

Esempio 11 4 10 13 6 8 8 10 1 2 3 7 9

Notazioni G=(V,E) T albero ricoprente di G Definiamo Per ogni f=(x,y)  E\E(T) T(f): (unico) cammino in T che unisce x e y Per ogni e  E(T) C(e)={f  E\E(T): e  T(f)}

Proprietà dei cicli G=(V,E) grafo non orientato e pesato, e l’arco più pesante in un qualsiasi ciclo Allora e  MST(G)

Sia e l’arco più pesante in un ciclo C={e }P, e supponiamo e  T Dim (per assurdo) Sia e l’arco più pesante in un ciclo C={e }P, e supponiamo e  T X T’=T \ {e}  {e’} P w(e’) < w(e)  w(T’) < w(T) e e’  T T non è MST(G) V\X

Corollario G=(V,E) grafo non diretto, connesso, pesato T albero ricoprente di G. allora T è minimo se e soltanto se per ogni arco f non dell’albero vale: w(f)  w(e) per ogni e in T(f)

…quindi… Se e è un arco dell’MST, esso rimane minimo finché w(e) non cresce oltre w(f), dove f è l’arco più leggero che forma un ciclo con e (f è chiamato arco di swap per e); chiamiamo tale valore up(e)

…più formalmente… Per ogni e  E(T) up(e)= minf  C(e) w(f) swap(e)= arg minf  C(e) w(f)

Analisi di sensitività degli archi dell’MST 11 4 C(e) 10 13 6 up(e)=8 e 8 10 1 2 3 7 9

Osservazioni Calcolare tutti i valori up(e) (swap(e)) vuol dire ricalcolare MST(G-e) per ogni e di T MST(G-e)=MST(G) \{e}  {swap(e)} Nel meccanismo VCG il pagamento pe di un arco e della soluzione è esattamente up(e)!!

Idea dell’algoritmo efficiente Per ogni e  E(T) guardare efficientemente tutti gli archi che formano un ciclo con e e prendere il minimo (up(e))

Il Transmuter Dato G=(V,E) e un suo albero ricoprente T, un transmuter è un grafo diretto aciclico D che rappresenta l’insieme dei cicli fondamentali di G rispetto a T, ovvero l’insieme {T(f) : f arco non dell’albero} D contiene: Una sorgente (nodo con grado entrante nullo) s(e) per ogni arco e di T Un pozzo (nodo con grado uscente nullo) t(f) per ogni arco f non in T Un numero arbitrario di nodi ausiliari Proprietà fondamentale: c’è un cammino in D da una data sorgente s(e) a un pozzo t(f) se e solo se e  T(f)

Come si costruisce il transmuter Tarjan ha mostrato come costruire un transmuter che ha O(m (m,n)) nodi in tempo O(m (m,n)) La costruzione è un’estensione delle tecniche usate per mantenere efficientemente insiemi di foreste disgiunte sottoposte a operazioni di LINK e operazioni di EVAL R. E. Tarjan, Application of path compression on balanced trees, J. ACM 26 (1979) pp 690-715

Alcuni richiami di base D=(N, A) grafo diretto ( |N|=h ) Un ordinamento topologico è un ordinamento dei nodi di D v1, v2, …,vh tale che: per ogni arco (vi, vj) A, vale i < j

Alcuni richiami di base D=(N, A) grafo diretto D ammette un ordinamento topologico se e solo se D è un DAG (grafo diretto aciclico) Un ordinamento topologico dei nodi può essere trovato (se esiste) in tempo O(|N| + |A|) (visita in profondità)

Calcolo degli incrementi per gli archi dell’albero Etichettiamo ogni nodo del transmuter con un valore reale processando i nodi in ordine topologico inverso Etichettiamo ogni pozzo t(f) con il valore w(f) (associamo al valore anche l’arco f ) Etichettiamo ogni nodo v che non è un pozzo con il valore minimo fra i valori dei suoi (immediati) successori Quando tutti i nodi sono etichettati ogni sorgente s(e) è etichettata con il valore up(e) (e relativo arco di swap)

Calcolo dei valori up(e) 7 2 8 5 6 9 3 4 6 11 9 10 7 7 6 6 9 10 7 6 10 7 8 9 6 10 11

Complessità Tempo Costruzione Transmuter: O(m (m,n)) Calcolo valori up(e): Trovare ordinamento topologico O(m (m,n)) Processare il transmuter in O(m (m,n)) Spazio O(m (m,n))