### Document

```Dynamic Graph Algorithms - I
Surender Baswana
Department of CSE, IIT Kanpur.
• Prerequisite: a course on data structure and algorithms
• Survey of the results: (not the main objective of the talk)
-- A novel data structure
-- A fully dynamic algorithm for a fundamental graph problem
AIM:
To give an exposure to the beautiful area of dynamic algorithms
A (static) Graph Algorithm
G=(V,E)
Algorithm
Solution
A dynamic graph algorithm
• For problems involving queries (connectivity, distance,…):
initial graph G=(V,E) followed by a sequence
q,u,u,q,u,u,u,q,u,q,q,u, …
q: query
u: insertion/deletion of edge
Each query has to be answered in an online manner.
• For problems that aim to maintain some structure (matching, spanner,
min-cut,…)
initial graph G=(V,E) followed by a sequence
u,u,u,u,u,u,u, …
The structure has to be maintained in an online manner.
Dynamic graph algorithm
Aim: Maintain a data structure which can
• answer each query efficiently (or maintain the structure), and
• process each update efficiently (much faster than the static algo)
Types of dynamic graph algorithms:
• Incremental (only insertion of edges)
• Decremental (only deletion of edges)
• Fully dynamic (both insertion and deletion of edges)
A motivating example :
Undirected Connectivity
u
Static
solution:
v
a b
b
a
c
a d
c
d
a
d b
c
c
c
c
b
d
b
b
A motivating example :
Undirected Connectivity
• Incremental Algorithm: O(log* n) update time
(Disjoint Set Union Algorithm [Tarjan 1975])
• Decremental Algorithm:
– O(n) update time [Even and Shiloach, 1981]
– O(log n) update time [Thorup 1997]
A motivating example :
Undirected Connectivity
Fully Dynamic Algorithms:
1. O( ) update time [Frederickson, 1982]
2. O( ) update time [Eppstein, Galil, Italiano, Nissenzweig 1991]
3. O(polylog n) expected update time, O(log n) query time
[King and Henzinger 1995]
4. O(polylog n) update time, O(log n) query time
[Holm, Litchenberg, Thorup 1998]
Outline of the talk
• Dynamic graph algorithms for some important problems
• Data structure for dynamic trees
• Fully dynamic connectivity with polylog n update time
• Open problems
Fully dynamic algorithms for undirected graphs
1.
Connectivity
2. 2-edge connectivity
3.
Bi-connectivity
4.
Bipartiteness
5. Min. spanning tree
O(polylog n) update time [Holm, Litchenberg, Thorup 1998]
Fully dynamic algorithms for undirected graphs
• Min-cut
– Best static algorithm:
O(m polylog n) (Randomized) [Karger, 1996]
– Fully dynamic algorithm: O( ) update time [Thorup, 2001]
• Graph spanner
Definition:
A subgraph which is sparse and yet preserves all-pairs distances approximately.
– Best static algorithm: O(m) [Halperin, Zwick, 1996]
– Fully dynamic algorithm: O(polylog n) update time
[Baswana, Khurana, and Sarkar, 2008]
Dynamic algorithms for directed graphs
Not as good bounds as
undirected graphs
Maintaining BFS tree under deletion of edges :
O(n) time per edge deletion [Even & Shiloach, 1981]
• Unbeaten till date.
• Used in many dynamic algorithms for directed graphs.
Dynamic algorithms for directed graphs
Transitive Closure
• Incremental algorithm: O(n) update time [Italiano, 1986]
• Decremental algorithm: O(n) update time
– Randomized [Roditty and Zwick, 2002]
– Deterministic [Lacki, 2011 ]
• Fully Dynamic algorithm: O( ) update time [Roditty, 2003]
All-pairs Shortest paths
• Fully dynamic algorithms:
– Amortized O( ) update time [Demetrescu and Italiano, 2003]
– Worst case O(. ) update time [Thorup, 2005]
Data structures
•
•
•
•
Stacks
Queues
Binary heap
Binary search tree
...
• Fibinaacci heap
• Too elementary
• Limited applications
• Too complex
• Hardly any application !
Power of Data structures:
An inspirational example
Maintain n records r(1),…,r(n) under the following operations
Add x to each record from r(i),…,r(j).
• All-swap(i,j) : r(i)↔r(j), r(i+1) ↔ r(j-1), r(i+2) ↔ r(j-2).
• Report(i) :
report record r(i).
• Report-min(i,j) : report the smallest record from r(i),…,r(j).
Each operation in O(log n)
worst case time.
Balanced Binary Tree : a very powerful data structure
Dynamic Trees
a
j
b
g
f
e
c
d
u
w
v
u
Dynamic Trees
Aim : Maintain a forest of trees on n vertices under the
following operation.
• Cut(u,v) : Delete an edge between u and v
• Update() : Update information associated with nodes/edges
• Query() :
– Topological
– information associated with a tree, or a path
Data Structures for Dynamic Trees
• ST Tree [Sleator & Tarjan, 1983]
Operations and queries on edges of paths
• ET tree [Henzinger and King, 1995]
Operations and queries on nodes of a tree
• Top tree [Alstrup et al., TALG 2005]
(generalization of Topology Tree [Frederickson, 1982])
Topological properties (diameter, center)
Dynamic Trees
Operations :
• Cut(u,v)
a
b
j
g
5
3
2
17
f 41
32
• Update-weight-node(v,a):
weight(v)  a
c
add x to weight of each node
of tree of v
d
• ReportMin(u):
report min weight in the
entire tree containing u
-3
u
44
w
7
12
67
15
v
u
e
Dynamic Trees
ReportMin(v) = 12
Operations :
• Cut(u,v)
a
b
j
g
5
3
2
17
f 41
32
• Update-weight-node(v,a):
weight(v)  a
c
add x to weight of each node
of tree of v
d
• ReportMin(u):
report min weight in the
entire tree containing u
-3
u
44
w
7
12
67
15
v
u
e
Dynamic Trees
ReportMin(v) changes …
Operations :
• Cut(u,v)
a
b
j
g
5
3
2
17
f 41
32
• Update-weight-node(v,a):
weight(v)  a
c
add x to weight of each node
of tree of v
d
• ReportMin(u):
report min weight in the
entire tree containing u
-3
u
44
w
7
12
67
1
v
u
e
Euler tour tree :
h
A data structure for
dynamic trees
g
d
a
e
c
b
f
b-c-d-c-b-a-e-f-e-g-e-h-e-a-b
How to transform a tree into
a one dimensional data
structure ?
f
c
c
b
h
g
a
d
b
e
e
a
e
e
b
Euler tour tree :
h
A data structure for
dynamic trees
g
d
a
e
c
b
f
b-c-d-c-b-a-e-f-e-g-e-h-e-a-b
: minimum value of all nodes
in the subtree.
f
a
b
c
c
d
e
f
g
h
c
b
h
g
a
d
b
e
e
a
e
e
b
Euler tour tree :
A data structure for
dynamic trees
h
g
d
e
a
b
f
b-c-d-c-b-a- e-f-e-g-e-h-e -a-b
c
Euler tour tree :
A data structure for
dynamic trees
h
g
d
e
a
b
f
b-c-d-c-b-a-e-f-e-g-e-h-e-a-b
c
Euler tour tree :
A data structure for
dynamic trees
h
T1
g
d
e
a
c
b
f
b-c-d-c-b-a
a-b
T1
e-f-e-g-e-h-e
T2
Euler tour tree :
A data structure for
dynamic trees
h
T1
g
d
e
a
c
b
f
b-c-d-c-b-a
a-b
T1
e-f-e-g-e-h-e
T1
T2
Euler tour tree :
A data structure for
dynamic trees
h
T1
g
d
e
a
c
b
f
b-c-d-c-b-a
a-b
T1
e-f-e-g-e-h-e
T1
T2
Euler tour tree :
A data structure for
dynamic trees
h
T1
g
d
e
a
c
b
f
b-c-d-c-b-a
a-b
T1
e-f-e-g-e-h-e
T1
T2
Euler tour tree :
A data structure for
dynamic trees
h
T1
g
d
e
a
b
f
• Split(T,(e,a))
T1
e-f-e-g-e-h-e
T2
b-c-d-c-b-a-b
• Merge(T1,T2,(u,v))
• Change-origin(T,x) :
change the origin of Euler tour
to vertex x.
T1
T2
c
T2
Fully dynamic randomized algorithm for
connectivity with polylogarithmic update time
Fully dynamic randomized algorithm for
connectivity with polylogarithmic update time
Maintain ET tree for each tree in
the spanning forest
Fully dynamic randomized algorithm for
connectivity with polylogarithmic update time
Maintain ET tree for each tree in
the spanning forest
Fully dynamic randomized algorithm for
connectivity with polylogarithmic update time
A Hierarchical algorithm
2 log n
3
2
1
Fully dynamic randomized algorithm for
connectivity with O( ) update time
A 2-level algorithm
2
1
Decremental O( ) update time algorithm for
connectivity
Key tools in addition to ET tree data structure:
• Trivial algorithm (for handling deletion of a tree edge) :
Let (u,v) be a tree edge in the spanning forest.
Let its deletion creates trees T1 and T2.
Let µ be the number of non-tree edges incident on T2.
Replacement edge can be found in time O(µ log n) time.
• Random sampling
The role of random sampling
Uniform random sampling
with replacement
• Exercise: If none of 2k log n balls is blue, then with probability
1 − −2 , the fraction of blue balls is less than 1/k.
Handling the deletion of a tree edge
How to augment ET-tree
Few samplings
to sample an edge ?
needed
if the of
What
if fraction
fraction
blue ?
blue
edges of
is small
edges is large
T2
T1
T
T2
Handling the deletion of a tree edge
2-Level approach
• A partition of E into two levels : (E1, E2)
In the beginning, E1 = E and E1 = Ø
• F1 : spanning forest of E1
• F2 : spanning forest of E, F1 is subset of F2
Level 2
Level 1
Handling the deletion of a tree edge
Level 2
Level 1
Handling the deletion of a tree edge
Trivial algorithm at level 2
Level 2
Level 1
Random sampling at level 1
Algorithm for handling deletion of a tree edge
If (e ϵ F2 \ F1) scan non-tree edges at level 2 to find replacement edge.
Else
Let T be the tree to which e belongs;
(T1,T2)  Split(T,e);
Repeat k log n times
{
(u,v)  Sample-edge(T2);
If (u,v) is a cut-edge
Merge(T1,T2, (u,v)); return;
}
}
Scan all non-tree edges incident on T2;
If less than 1/k fraction are cut-edges
move all edges of cut(T1,T2) to Level 2 and add one of them to F2.
Else add an edge of cut(T1,T2) to F1
O(µ2) time
O(k logn) time
O(µ1(T2)) time
1 − −2 probability
Bounding µ2 (number of non-tree edges at level 2)
Upon splitting T into T1 and T2, how many edges are passed to level 2 ?
≤
_    2

charge
()

to each  ϵ T2
Level 2
Level 1
T1
T2
Analysis
• A vertex v is processed only O(log n) times.
Whenever v is processed
The processing cost of v is O(deg(v))
The number of edges that move to level 2 is less than
Hence
µ2 , the number of edges at level 2 is
• Processing cost per update :

log n + k + O(m) [1 − −2 ]
= O( )
O(

()

log n)
Transforming to fully dynamic environment
• Add every newly inserted edge to level 2.
• Periodically rebuild the data structure after every ( )
insertions.
Expected amortized time per update : O(   )
Fully dynamic randomized algorithm for
connectivity with polylogarithmic update time
• A partition of E into 2log n levels : (E1, E2, …)
In the beginning, E1 = E and Ei = Ø for all i>1
• F1 : spanning forest of E1
• Fi : spanning forest of

=1
• Fi-1 is subset of Fi for all i>1
Fully dynamic randomized algorithm for
connectivity with polylogarithmic update time
A Hierarchical algorithm
2 log n
2
c
2
1
Open problems
• Amortized cost versus worst case bounds
• Specific problems : Min-cut, s-t min cut, max-flow, …
• Specific graph family : Planar graphs
• Better lower bounds ?
```