Title: Il problema del minimo albero ricoprente in un grafo con archi privati
1Il problema del minimo albero ricoprente in un
grafo con archi privati
2Un 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)
e ? ET
3Scenario
- Archi di un grafo controllati da agenti egoistici
- Solo lagente conosce il peso associato al
proprio arco - Obiettivo calcolare una buona soluzione di un
certo problema di ottimizzazione rispetto a pesi
reali - Strumento progettazione di un meccanismo
truthful (pagamento opportuno degli agenti per
convincerli a dire la verità!)
4Il problema del minimum spanning tree (MST)
egoistico
- Input un grafo G(V,E), ogni arco è un agente
egoistico, un nodo sorgente s e un nodo
destinazione t il tipo di un agente è il costo
di utilizzo dellarco (quindi tipo gt 0) la sua
valutazione è uguale al suo tipo - SCF un vero MST di G(V,E,tipi).
5Più Formalmente
- Soluzioni ammissibili
- F insieme degli alberi ricoprenti di G
- Tipo dellagente e
- ?e peso dellarco
- intuitivamente ?e è il costo che lagente
sostiene per utilizzare e - Valutazione agente e di un albero ricoprente T?F
- ve(?e,T) ?e se e?E(T), 0 altrimenti
- SCF minimo albero ricoprente di G(V,E,?)
6Come progettare un meccanismo truthful per il
problema?
Osservazione cruciale il (vero) peso di un
albero ricoprente T è
?e?E ve(?e,T)
problema utilitario!
usiamo i meccanismi VCG
7Meccanismo VCG
- M ltg(r), p(x)gt
- g(r) arg minx?F ?j vj(rj,x)
- pe(x) Per ogni arco e?E
- pe ?j?e vj(rj,g(r-e)) -?j?e vj(rj,x) cioè
8Meccanismo VCG
- M ltg(r), p(x)gt
- 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è - pew(TG-e)-w(T) re se e?ET,
- pe0 altrimenti.
- dove TG-e è il MST di rimpiazzo per e (MST di
G-e(V,E\e,r-e))
Ipotesi di lavoro Grafo 2-edge connesso
(altrimenti TG-e potrebbe non esistere ? il
possessore dellarco e terrebbe in pugno il
sistema!)
9Quel è la complessità temporale del meccanismo?
dobbiamo calcolare con un MST di G
Miglior algoritmo centralizzato richiede tempo
O(m ?(m,n))
e il pagamento per gli archi selezionati
10Una soluzione banale
- ?e ?T applichiamo lalgoritmo di calcolo dellMST
al grafo G-e - Complessità n-1 archi dellMST per O(m
?(m,n)) O(nm ?(m,n)) - La soluzione efficiente che proponiamo costerà
ancora O(m ?(m,n))!!!
11La funzione di Ackermann A(i,j) e la sua inversa
?(m,n)
12A(i,j) per piccoli valori di i e j
j1 j2 j3 j4
24
23
22
i1
2
2
2
2
2
i2
22
22
2
2
22
22
2
.
16
.
2
2
2
16
2
.
.
.
.
2
2
2
2
2
.
.
.
16
2
2
.
.
.
.
.
2
22
i3
22
22
22
13La funzione ?(m,n)
14Proprietà
- Fissato n, ?(m,n) è monotonicamente decrescente
al crescere di m
?(m,n) min igt0 A(i, ?m/n?) gt log2 n
crescente in m
- ?(n,n) ? ? per n ? ?
?(n,n) min igt0 A(i, ?n/n?) gt log2 n
min igt0 A(i, 1) gt log2 n
? ?
15Osservazione
- ?(m,n) ? 4 per ogni scopo pratico (cioè per
valori di n ragionevoli)
?(m,n) min igt0 A(i, ?m/n?) gt log2 n
A(4,?m/n?)
? A(4,1)
A(3,2)
2
.
16
.
.
22
? numero stimato di atomi nelluniverso
osservabile
gtgt 1080
? quindi ?(m,n) ? 4 per ogni nlt21080
16Un po di storia
- 1926 Boruvka
- riscoperto da
- Choquete, 1938
- Florek et. al., 1951
- Sollin, 1961 (larticolo di Boruvka era ormai
conosciuto!) - 1930 Jarnìk
- riscoperto da
- Prim, 1957
- Dijkstra, 1959
- 1956 Kruskal
- riscoperto da
- Loberman e Weinberg, 1956, qualche mese dopo
e le complessità temporali di questi algoritmi?
raramente menzionate negli articoli
Esempi Quick Sort è del 61, Hoare Heap binari
del 64, Williams
17Complessità temporali
- 1975 Yao - O(m loglogn)
- linear time selection di Blum et al. (1972)
- 1975 Johnson O(m logd n)
- dmaxm/n,2
- d-heaps (Johnson 1975)
- 1976 Cheriton e Tarjan O(m log logd n)
- Mergeable leftist heaps di Crane (1972)
- 1984 Fredman e Tarjan O(m log(m,n))
- Heap di Fibonacci di Fredman e Tarjan (1984)
- 1986 Gabow, Galil, Spencer, Tarjan
O(mloglog(m,n)) - Usando meglio gli heap di Fibonacci
log(m,n) 1logn-log(m/n)
tutti usano un approccio greedy
18Perché lapproccio greedy una proprietà forte
- Dato G(V,E), grafo non orientato
- F F?E F non contiene cicli
- (E, F ) matrioide grafico
19Complessità temporali
- 1997 Chazelle - O(m ?(m,n) log ?(m,n))
- Soft-heap di Chazelle (1997)
- 2000 Chazelle O(m ?(m,n))
- Miglior uso dei Soft-heap
- 2002 Pettie e Ramachandran O(MST(m,n))
- dove MST(m,n) complessità dellalbero di
decisione del problema del minimo albero
ricoprente (numero minimo di confronti nel caso
peggiore) - MST(m,n) O(m ?(m,n)) e MST(m,n) ?(m)
20Un problema aperto
?
21Un problema correlato verifica di un MST
- Input grafo G(V,E) pesato non orientato,
T(V,ET) albero ricoprente di G - Domanda T è un MST per G?
22Verifica di un MST
4
11
13
6
5
8
10
2
1
3
7
9
23Un altro problema correlato lanalisi 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 ? E)
prima di inficiare la minimalità di T?
24Esempio arco non in T
4
11
13
6
6
10
8
10
2
1
3
7
9
25Esempio arco in T
4
11
10
13
6
8
8
10
2
1
3
7
9
26Sulla complessità dei problemi
riduce linearmente
riduce linearmente
calcolo MST
analisi di sensitività
Verifica
O(m)
O(m log?(m,n))
27Notazioni
- 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)
28Proprietà dei cicli
Teorema Sia G(V,E) un grafo non orientato e
pesato, sia e larco più pesante di un qualsiasi
ciclo in G. Allora e ? MST(G)
- Dim (per assurdo) Sia e larco più pesante in un
ciclo Ce ?P, e supponiamo e ? T
X
TT \ e ? e
P
w(e) lt w(e) ? w(T) lt w(T)
e
e ? T
T non è MST(G)
V\X
29Proprietà dei tagli
- G(V,E) grafo non orientato e pesato
- X ? V un qualsiasi sottoinsieme di vertici
- e arco più leggero che attraversa il taglio
(X,V\X), - allora
- e ? MST(G)
30- Dim
- Sia e larco più leggero del taglio (X,V\X). Sia
TMST(G), e supponiamo e ? T, facciamo vedere che
T ? MST(G)
e arco più leggero del taglio
V\X
X
T(e) cammino in T che unisce gli estremi di e
e
TT \ e ? e
T(e)
w(e) lt w(e) ? w(T) lt w(T)
e
T non è MST(G)
31Condizione 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
dellalbero vale - w(f) ? w(e) per ogni e in
T(f)
32quindi
- Se f è un arco non dellalbero
- T rimane minimo finché w(f) non scende sotto
w(e), dove e è larco più pesante in T(f)
chiamiamo tale valore down(f) - Se e è un arco dellalbero
- T rimane minimo finché w(e) non cresce oltre
w(f), dove f è larco più leggero tale che e ?
T(f) (f è chiamato arco di swap per e) chiamiamo
tale valore up(e)
33più formalmente
- Fare analisi di sensitività vuol dire calcolare
- Per ogni f ? E\E(T)
- down(f ) maxe ? T(f) w(e)
- Per ogni e ? E(T)
- up(e) minf ? C(e) w(f)
- swap(e) arg minf ? C(e) w(f)
34Analisi di sensitività
T(f)
4
11
13
6
down(f)6
10
8
f
10
2
1
3
7
9
35Analisi di sensitività degli archi del MST
4
11
C(e)
10
13
6
up(e)8
e
8
10
2
1
3
7
9
36Osservazione
- 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)!!
37Idea dellalgoritmo efficiente
- Per ogni e ? E(T) guardare efficientemente tutti
gli archi che formano un ciclo con e e prendere
il minimo (up(e)) - Per ogni f? E\E(T) guardare efficientemente
tutti gli archi in T(f) e prendere il massimo
(down(e))
38Il Transmuter
- Dato G(V,E) e un suo albero ricoprente T, un
transmuter è un grafo diretto aciclico D che
rappresenta in modo compatto linsieme dei cicli
fondamentali di G rispetto a T, ovvero linsieme
T(f) f arco non dellalbero - 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)
39Un esempio
40Come 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 è unestensione 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
41Ordinamento 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 lt 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(nm).
42Calcolo degli incrementi per gli archi dellalbero
- 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 larco 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)
43Calcolo dei valori up(e)
2
7
8
5
6
9
3
6
4
11
9
10
7
7
6
6
10
9
7
6
10
7
6
11
8
9
10
44Calcolo dei decrementi per gli archi non
dellalbero
- Etichettiamo ogni nodo del transmuter con un
valore reale processando i nodi in ordine
topologico - Etichettiamo ogni sorgente s(e) con il valore
w(e) (associamo al valore anche larco e) - Etichettiamo ogni nodo v che non è una sorgente
con il valore massimo fra i valori dei suoi
(immediati) predecessori - Quando tutti i nodi sono etichettati ogni pozzo
t(f) è etichettato con il valore down(f)
45Calcolo dei valori down(f)
2
7
8
5
6
9
3
6
4
11
9
10
2
6
5
3
9
4
6
5
9
6
5
9
6
6
9
46Complessità temporale
- Costruzione Transmuter O(m ?(m,n))
- Calcolo valori up(e) e down(f)
- Trovare lordinamento topologico O(m ?(m,n))
- Processare il transmuter O(m ?(m,n))
47Complessità 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)).