- 72 Views
- Uploaded on
- Presentation posted in: General

Near Optimal Streaming algorithms for Graph Spanners

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

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

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.

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

- 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

- 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

- 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

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

- avoids distance computation altogether.
- near optimal algorithms in parallel, external-memory, distributed 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

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) requiredO(kn1+1/k)

3. time to process the entire stream O(m)

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) requiredO(kn1+1/k) for (2k+1)-spanner

3. time to process the entire stream O(mn1/k)

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 requiredO(log n) bits

3. time spent in one stream pass O(m)

- slightly different hierarchy
- simple buffering technique

B. & Sen, 2003

Feigenbaum et al.,

2005

Algo 1

Algo 2

Algorithm 1

u

Intuition

Spanner edge

u

Intuition

Spanner edge

u

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

- 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

i

u

i

u

i

u

i

u

x

y

u

x

i

y

u

i+1

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

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

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

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)

- 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

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)

Adding edges to Temp(u)

u

Adding edges to Temp(u)

u

u

Prune(u)

u

- Prune(u) can be executed in O(|Temp(u)| + |Es(u)|) time using an
an auxiliary O(n) space.

- when isPrune(u) executed ?

- Prune(u) can be executed in O(|Temp(u)| + |Es(u)|) time using an
an auxiliary O(n) space.

- Prune(u) is executed only when |Temp(u)| ≥ |Es(u)|

- Prune(u) can be executed in O(|Temp(u)| + |Es(u)|) time using an
an auxiliary O(n) space.

- Prune(u) is executed only when |Temp(u)| ≥ |Es(u)|
- We can charge O(1) cost to each edge in Temp(u).

- Prune(u) can be executed in O(|Temp(u)| + |Es(u)|) time using an
an auxiliary O(n) space.

- Prune(u) is executed only when |Temp(u)| ≥ |Es(u)|
- We can charge O(1) cost to each edge in Temp(u).
- An edge is processed in Temp(u) at most once.

- Prune(u) can be executed in O(|Temp(u)| + |Es(u)|) time using an
an auxiliary O(n) space.

- Prune(u) is executed only when |Temp(u)| ≥ |Es(u)|
- We can charge O(1) cost to each edge in Temp(u).
- An edge is processed in Temp(u) at most once.

Total time spent in processing the stream = O(m)

- Expected size of |Es(u)| = O(n1/k)
- Temp(u) never exceeds |Es(u)| +1.
Expected size of (2k-1)-spanner is O(k n1+1/k)

THEOREM 1 :

Given any k εN, a (2k-1)-spanner of expected size O(kn1+1/k) for any unweighted graph can be computed in one Stream pass with O(m) time to process the entire stream of edges.

THEOREM 2 :

Given any k εN, a (2k-1)-spanner of expected size O(kn1+1/k) for any weighted graph can be computed in O(k)StreamSort passes with O(log n) bits of working memory.