Il problema del minimo albero ricoprente in un grafo con archi privati

Slides:



Advertisements
Presentazioni simili
Algoritmi e Strutture dati Mod B
Advertisements

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
Strutture dati per insiemi disgiunti
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 (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
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
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.
Capitolo 11 Grafi e visite di grafi Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati (Mod. A)
Algoritmi e Strutture Dati (Mod. B)
Prof. Cerulli – Dott.ssa Gentili
Strutture dati per insiemi disgiunti
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.
Alberi di copertura minimi. Dato un grafo pesato G = (V,E), si richiede di trovare un albero T = (V,E’), E’  E, tale che la somma dei pesi associati.
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:
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:
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 con archi privati

Un problema molto noto… INPUT: G=(V,E): grafo non diretto pesato, w(e)  R+ per ogni e E T è un albero ricoprente di G se: T è un albero T è un sottografo di G T contiene tutti i nodi di G OUTPUT: T=(V,ET) minimo albero ricoprente di G, ovvero che minimizza il peso totale w(T)= w(e) Miglior algoritmo centralizzato richiede tempo O(m (m,n)) e  ET

La funzione di Ackermann A(i,j) e la sua inversa (m,n)

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 (m,n)= min {i>0 : A(i, m/n) > log2 n} crescente in m (n,n)   per n   (n,n)= min {i>0 : A(i, n/n) > log2 n} = min {i>0 : A(i, 1) > log2 n}  

Osservazione (m,n)  4 per ogni scopo pratico (cioè per valori di n ragionevoli) (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  quindi (m,n)  4 per ogni n<21080

Il problema del MSTegoistico Input: un grafo G=(V,E) biconnesso sugli archi, in cui ogni arco corrisponde in modo biunivoco ad un insieme di agenti egoisti; il tipo di un agente è il costo di utilizzo dell’arco (quindi tipo > 0); la sua valutazione è uguale al suo tipo; SCF: un vero MST di G=(V,E,t).

Meccanismo VCG Il problema è utilitario  VCG-mechanism M= <g(r), p(x)>: g(r): dato il grafo G e le dichiarazioni r=(r1,…,rm), calcola il MST T=(V,ET) di G=(V,E,r) pe: Per ogni arco e  E, pe =j≠e vj(rj,x(r-e)) -j≠e vj(rj,x) cioè pe=w(TG-e)-w(T)+ re se eET, pe=0 altrimenti. Per ogni e T dobbiamo calcolare TG-e, ovvero il MST di rimpiazzo per e (MST in G-e =(V,E\{e},r-e)) Ipotesi di lavoro: Grafo 2-edge connesso (altrimenti TG-e potrebbe non esistere  il possessore dell’arco e “terrebbe 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))!!!

Un problema correlato: l’analisi di sensitività degli archi di un 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 semplice in T che unisce x e y Per ogni e  E(T) C(e)={f  E\E(T): e  T(f)}

Proprietà dei cicli Teorema: Sia G=(V,E) un grafo non orientato e pesato, sia e l’arco più pesante di un qualsiasi ciclo in G. Allora e  MST(G) 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

Condizione di minimalità di un MST 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 del MST 11 4 C(e) 10 13 6 up(e)=8 e 8 10 1 2 3 7 9

w(TG-e)=w(T)-w(e)+up(e) Osservazione Calcolare tutti i valori up(e) è equivalente a calcolare il peso di un MST di G-e per ogni e di T; infatti w(TG-e)=w(T)-w(e)+up(e)  Nel meccanismo VCG il pagamento pe di un arco e della soluzione è esattamente pari ad 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 in modo compatto l’insieme dei cicli fondamentali di G rispetto a T, ovvero l’insieme {T(f) : f arco non dell’albero} D conterrà: 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 certo numero di nodi ausiliari con grado entrante pari a 2 e grado uscente diverso da zero. 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)

Un esempio

Come si costruisce un transmuter Tarjan ha mostrato che ad ogni albero ricoprente di un grafo può essere associato un transmuter con O(m (m,n)) nodi ed archi, il quale può essere calcolato 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

Ordinamento topologico D=(N,A) grafo diretto. Un ordinamento topologico di D è un ordinamento v1, v2, …,vn dei nodi tale che per ogni arco (vi, vj) A, vale i < j. 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+m).

Calcolo degli incrementi per gli archi dell’albero Ordiniamo topologicamente il transmuter (che è un DAG) 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à temporale Costruzione Transmuter: O(m (m,n)) Calcolo valori up(e): Trovare l’ordinamento topologico: O(m (m,n)) Processare il transmuter: O(m (m,n))

Complessità computazionale del VCG Teorema Il meccanismo VCG per il problema del MST può essere implementato in tempo O(m (m,n)). Dim Complessità di g(٠): O(m (m,n)) Complessità di p(٠): calcolo tutti i valori up(e) in tempo O(m (m,n)).