580 likes | 719 Views
Near Optimal Streaming algorithms for Graph Spanners. Surender Baswana IIT Kanpur. Graph spanner : a subgraph which is sparse and still preserves all-pairs approximate distances. t -spanner. G=(V,E) : an undirected graph, |V|=n, |E|=m, t > 1
E N D
Near Optimal Streaming algorithms for Graph Spanners Surender Baswana IIT Kanpur
Graph spanner : a subgraph which is sparse and still preserves all-pairs approximate distances.
t-spanner G=(V,E) : an undirected graph, |V|=n, |E|=m, t > 1 δ(u,v) : distance between u and v in G. A subgraph GS= (V,ES), where ESis a subset of E such that for all u,v ε V, δ(u,v) ≤ δS(u,v) ≤ t δ(u,v) t : stretch of the spanner.
Sparseness versus stretch • Consider a graph modeling some network • Edges correspond to possible links. • Each edge has certain cost. Aim : to select as few edges as possible without increasing the pair wise distance too much.
t-spanner • Computing a t-spanner of smallest possible size is NP-complete. • For a graph on n vertices, how large can a t-spanner be ? v u
t-spanner • Computing a t-spanner of smallest possible size is NP-complete. • For a graph on n vertices, how large can a t-spanner be ? v u
t-spanner • Computing a t-spanner of smallest possible size is NP-complete. • For a graph on n vertices, how large can a t-spanner be ? v u 2-spanner may require Ω(n2) edges
t-spanner • [Erdös 1963, Bollobas, Bondy & Simonovits] “There are graphs on n vertices for which every 2k-spanner or a (2k-1)- spanner has Ω(n1+1/k) edges.” G=(V,E) GS=(V,ES), |ES|=O(n1+1/k) GSis (2k-1)-spanner ALGORITHM
Algorithms for t-spanner(RAM model) • avoids distance computation altogether. • near optimal algorithms in parallel, external-memory, distributed environment
Computing a t-spanner in streaming environment Input : n, m, k, and a stream of edges of an unweighted graph Aim : to compute a (2k-1)-spanner Efficiency measures : 1. number of passes 2. space (memory) required 3. time to process the entire stream
Computing a t-spanner in streaming environment Input : n, m, k, and a stream of edges of an unweighted graph Aim : to compute a (2k-1)-spanner Algo 1 : Streaming model Efficiency measures : 1. number of passes 1 2. space (memory) required O(kn1+1/k) 3. time to process the entire stream O(m)
Computing a t-spanner in streaming environment Input : n, m, k, and a stream of edges of an unweighted graph Aim : to compute a (2k-1)-spanner [Feigenbaum et al., SODA 2005] Efficiency measures : 1. number of passes 1 2. space (memory) required O(kn1+1/k) for (2k+1)-spanner 3. time to process the entire stream O(mn1/k)
Computing a t-spanner in streaming environment Input : n, m, k, and a stream of edges of a weighted graph Aim : to compute a (2k-1)-spanner Algo 2 : StreamSort model Efficiency measures : 1. number of passes O(k) 2. working memory required O(log n) bits 3. time spent in one stream pass O(m)
Relation to previous results • slightly different hierarchy • simple buffering technique B. & Sen, 2003 Feigenbaum et al., 2005 Algo 1 Algo 2
Intuition Spanner edge u
Intuition Spanner edge u
Cluster v o u C(x) : center of cluster containingx Radius : maximum distance from center to a vertex in the cluster Clustering : a set of disjoint clusters
Preprocessing : Clustering for the initial (empty) graph K K-1 2 1 0
Preprocessing : Clustering for the initial (empty) graph K K-1 2 1 0 Sampling probability = n-1/k
Preprocessing : Clustering for the initial (empty) graph K K-1 2 1 0 Sampling probability = n-1/k
Preprocessing : Clustering for the initial (empty) graph K 0 n1/k K-1 n1-2/k 2 n1-1/k 1 n 0 Sampling probability = n-1/k
Preprocessing : Clustering for the initial (empty) graph K 0 n1/k K-1 n1-2/k 2 n1-1/k 1 n 0 Sampling probability = n-1/k
Processing the stream of edges • Each vertex u at level i<k-1 wishes to move to higher levels. Condition for upward movement : “an edge (u,v) such that Ci(v) is a sampled cluster”
K K-1 2 1 v 0 v u
K K-1 2 1 v 0 v u
K K-1 2 u 1 v 0 v u
K K-1 2 x u 1 v x 0 x y v u
K K-1 2 x y u 1 v x 0 x y v u
K K-1 y 2 x y u 1 v x 0 x y v u
K K-1 y 2 x y u 1 v x 0 x y v u
K K-1 u y 2 x y u 1 v x 0 x y v u
K K-1 2 1 0
i u From perspective of a vertex u …
x y u x i y u From perspective of a vertex u … i+1
Processing an edge (u,v) x i+1 y IfCi(v) is a sampled cluster : Ci+1(u) Ci+1(v); add (u,v) to spanner; u moves to level i+1 (or even higher) Else ifCi(v) was not adjacent to u earlier : add edge (u,v) to spanner; Else Discard (u,v) u x i y u
K 0 n1/k K-1 n1-2/k 2 n1-1/k 1 n 0
i u Size and stretch of spanner • Expected number of spanner edges contributed by a vertex = O(k n1/k). • Radius of a cluster at level i is at most i. For each edge discarded, there is a path in spanner of length (2i+1)
Size and stretch of spanner • Expected number of spanner edges contributed by a vertex = O(k n1/k). • Radius of a cluster at level i is at most i. A single pass streaming algorithm A (2k-1)-spanner of expected size O(kn1+1/k)
Running time of the algorithm i u v IfCi(v) is a sampled cluster : Ci+1(u) Ci+1(v); add (u,v) to spanner; u moves to level i+1 (or even higher) Else ifCi(v) was not adjacent to u earlier θ(n1/k)time add edge (u,v) to spanner; Else Discard (u,v)
Slight modification • Each vertex u keeps two buffers for storing edges incident from clusters at its present level. 1. Temp(u) 2. Es(u) • Whenever u moves to higher level, move all the edges of Temp(u) and Es(u) to the spanner.
u v Modified algorithm i IfCi(v) is a sampled cluster : Ci+1(u) Ci+1(v); add (u,v) to spanner; u moves to level i+1 (or even higher) Else add (u,v) to Temp(u) and Prune(u) if Temp(u) ≥ ES(u)