bfs and dfs bfs and dfs in directed graphs bfs in undirected graphs an improved undirected...

77
BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS- algorithm

Upload: hugo-norman

Post on 18-Dec-2015

305 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

BFS and DFS

• BFS and DFS in directed graphs• BFS in undirected graphs• An improved undirected BFS-algorithm

Page 2: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

The Buffered Repository Tree (BRT)

• Stores key-value pairs (k,v)• Supported operations:

• INSERT(k,v) inserts a new pair (k,v) into T• EXTRACT(k) extracts all pairs with key k

• Complexity:

• INSERT: O((1/B)log2(N/B)) amortized

• EXTRACT: O(log2(N/B) + K/B) amortized (K = number of reported

elements)

Page 3: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

The Buffered Repository Tree (BRT)

• (2,4)-tree• Leaves store between B/4 and B elements• Internal nodes have buffers of size B• Root in main memory, rest on disk

Main memory

Disk

Page 4: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Main memory

Disk

INSERT(k,v)

• O(X/B) I/Os to empty buffer of size X B• Amortized charge per element and level: O(1/B)

• Height of tree: O(log2(N/B))

• Insertion cost: O((1/B)log2(N/B)) amortized

Main memory

Disk

Page 5: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Elements with key k

EXTRACT(k)

• Number of traversed nodes: O(log2(N/B) + K/B)

• I/Os per node: O(1)

• Cost of operation: O(log2(N/B) + K/B)

• But careful with removal of extracted elements

Main memory

Disk

Main memory

Disk

Page 6: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Cost of Rebalancing

• O(N/B) leaf creations and deletions O(N/B) node splits, fusions, merges• Each such operation costs O(1) I/Os O(N/B) I/Os for rebalancing

Theorem: The BRT supports INSERT and EXTRACT operations in O((1/B)log2(N/B)) andO(log2(N/B) + K/B) I/Os amortized.

Page 7: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Directed DFS

• Algorithm proceeds as internal memory algorithm:• Use stack to determine order in which

vertices are visited• For current vertex v:

• Find unvisited out-neighbor w• Push w on the stack• Continue search at w• If no unvisited out-neighbor exists

• Remove v from stack• Continue search at v’s parent

• Stack operations cost O(N/B) I/Os• Problem: Finding an unvisited vertex

Page 8: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Directed DFS

• Data structures:• BRT T

• Stores directed edges (v,w) with key v

• Priority queues P(v), one per vertex• Stores unexplored out-edges of v

• Invariant:

Not in P(v)In P(v) and in TIn P(v), but not in T

Page 9: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Directed DFS

• Finding next vertex after vertex v:

v

EXTRACT(v): Retrieve red edges from T

Remove these edges from P(v) using DELETE

Retrieve next edge using DELETEMIN on P(v)

Insert in-edges of w into T

w

Push w on the stack

O(log2(|E|/B) + K1/B)

O(sort(K1))

O(1 + (K2/B)log2(|E|/B))

O(1/B) amortized

O((1/B)logm(|E|/B))

O(|V| log2(|E|/B) + |E|/B)O(|V| + sort(|E|))

O((|E|/B)log2(|E|/B))

O(|V|/B)

O(sort(|E|))

Total:O((|V| + |E|/B)log2(|E|/B))

Page 10: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Directed DFS + BFS

• BFS can be solved using same algorithm• Only modification: Use queue (FIFO) instead of

stack

Theorem: Depth first-search and breadth-first search in a directed graph G = (V,E) can be solved in O((|V|+|E|/B)log2(|E|/B)) I/Os.

Exercise: Convince yourself that the priority queues P(v) are not necessary in the case of BFS.

Page 11: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Undirected BFS

Observation: For v L(i), all its neighbors are inL(i – 1) L(i) L(i + 1).

Build BFS-tree level by level:• Initially, L(0) = {r}• Given levels L(i – 1) and L(i):

• Let X(i) = set of all neighbors of vertices in L(i)• Let L(i + 1) = X(i) \ (L(i – 1) L(i))

Partition graph into levels L(0), L(1), ...around source:L(0), L(1), L(2), L(3)

Page 12: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Undirected BFS

Constructing L(i + 1):• Retrieve adjacency lists of vertices in L(i)

X(i)• Sort X(i)• Scan L(i – 1), L(i), and X(i) to

• Remove duplicates from X(i)• Compute X(i) \ (L(i – 1) L(i))

Complexity: O(|L(i)| + sort(|L(i – 1)| + |X(i)|)) I/Os

O( ) I/Os|V| +sort(|E|)

Theorem: Breadth-first search in an undirected graph G = (V,E) can be solved in O(|V| + sort(|E|)) I/Os.

Page 13: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

A Faster BFS-Algorithm

Problem with simple BFS-algorithm:• Random accesses to retrieve adjacency lists

Idea for a faster algorithm:• Load more than one adjacency list at a time

• Reduces number of random accesses• Causes edges to be involved in more than one

iteration of the algorithm Trade-off

Page 14: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

A Faster BFS-Algorithm (Randomized)

• Let 0 < < 1 be a parameter (specified later)

• Two phases:• Build |V| disjoint clusters of diameter O(1/)• Perform modified version of SIMPLEBFS

• Clusters C1,...,Cq formed using BFS from randomly chosen set V’ = {r1,...,rq} of masters

• Vertex is chosen as a master with probability (coin flip)

Observation: E[|V’|] = |V|. That is, the expected number of clusters is |V|.

Page 15: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Forming Clusters (Randomized)

• Apply SIMPLEBFS to form clusters• L(0) = V’

• v Ci if v is descendant of ri

s

Page 16: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Forming Clusters (Randomized)

Lemma: The expected diameter of a cluster is 2/.

• E[k] 1/

Corollary: The clusters are formed in expected O((1/)sort(|E|)) I/Os.

xv1

v2

v3

v4

v5

s

vk

Page 17: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Forming Clusters (Randomized)

• Form files F1,...,Fq, one per clusterFi = concatenation of adjacency lists of vertices in Ci

• Augment every edge (v,w) Fi with the start position of file Fj s.t. w Cj:

• Edge = triple (v,w,pj)

s

Page 18: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

The BFS-Phase

• Maintain a sorted pool H of edges s.t. adjacency lists of vertices in L(i) are contained in H

• Scan L(i) and H to find vertices in L(i) whose adjacency lists are not in H

• Form list of start positions of files containing these adjacency lists and remove duplicates

• Retrieve files, sort them, and merge resulting list H’ with H

• Scan L(i) and H to build X(i)• Construct L(i + 1) from L(i – 1), L(i), and X(i) as

before

O((|L(i)| + |H|)/B)

O(sort(|L(i)|))

O(K + sort(|H’|) + |H|/B)

O((|L(i)| + |H|)/B)

O(sort(|L(i)| + |L(i–1)| + |X(i)|))

Page 19: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

The BFS-Phase

I/O-complexity of single step:• O(K + |H|/B +

sort(|H’| + |L(i – 1)| + |L(i)| + |X(i)|))

Expected I/O-complexity:O(|V| + |E|/(B) + sort(|E|))

• Choose

Theorem: BFS in an undirected graph G = (V,E) canbe solved in I/Os.

,1max EBV

Escan1EsortO EBV

Page 20: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Single Source Shortest Paths

• The tournament tree• SSSP in undirected graphs• SSSP in planar graphs

Page 21: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Single Source Shortest Paths

Need:

• I/O-efficient priority queue

• I/O-efficient method to update only unvisited vertices

Page 22: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

The Tournament Tree

= I/O-efficient priority queue

• Supports:• INSERT(x,p)• DELETE(x)• DELETEMIN

• DECREASEKEY(x,p)

• All operations take O((1/B)log2(N/B)) I/Os amortized

Note: N = size of the universe # elements in the tree

Page 23: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

The Tournament Tree

• Static binary tree over all elements in the universe• Elements map to leaves, M elements per leaf

• Internal nodes have signal buffers of size M• Root in main memory, rest on disk

Main memory

Disk

• Internal nodes store between M/2 and M elements

Page 24: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Main memory

Disk

The Tournament Tree

• Elements stored at each node are sorted by priority

• Elements at node v have smaller priority than elements at v’s descendants

• Convention: x T if and only if p(x) is finite

Page 25: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

The Tournament TreeDeletions

• Operation DELETE(x) signal DELETE(x)

x

DELETE(x)UPDATE(x,)

v

Page 26: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

The Tournament TreeInsertions and Updates

• Operations INSERT(x,p) and DECREASEKEY(x,p) signal UPDATE(x,p)

x

w

v

Current priority p’

If p < p’: UpdateIf p p’: Do nothing

All elements < p• Forward signal to w

At least one element p• Insert x• Send DELETE(x) to w

Page 27: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

The Tournament TreeHandling Overflow

• Let y be element with highest priority py

• Send signal PUSH(y,py) to appropriate child of v

y

w

v

Page 28: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

The Tournament TreeKeeping the Nodes Filled

w

v

O(M/B) I/Os to moveM/2 elements one level up the tree

Page 29: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Main memory

Disk

The Tournament TreeSignal Propagation

• Scan v’s signal, partition into sets Xu and Xw

• Load u into memory, apply signals in Xu to u,insert signals into u’s signal buffer

• Do the same for w• O((|X| + M)/B) = O(|X|/B) I/Os

Page 30: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

The Tournament TreeAnalysis

• Elements travel up the tree• Cost: O(1/B) I/Os amortized per element and

level

• O((K/B)log2(N/B)) I/Os for K operations

• Signals travel down the tree• Cost: O(1/B) I/Os amortized per signal and

level• O(K) signals for K operations

• O((K/B)log2(N/B)) I/Os

Theorem: The tournament tree supports INSERT, DELETE, DELETEMIN, and DECREASEKEY operations in O((1/B)log2(N/B)) I/Os amortized.

Page 31: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Single Source Shortest Paths

Modified Dijkstra:• Retrieve next vertex v from priority queue Q

using DELETEMIN

• Retrieve v’s adjacency list• Update distances of all of v’s neighbors, except

predecessor u on the path from s to v

• Repeat

• O(|V| + (E/B)log2(V/B)) I/Os using tournament tree

Page 32: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Single Source Shortest Paths

Problem:

Observation: If v performs a spurious update of u,u has tried to update v before.

• Record this update attempt of u on v by insterting u into another priority queue Q’

Priority: d(s,u) + w({u,v})

u

v

Page 33: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Single Source Shortest Paths

Second modification:• Retrieve next vertex using two DELETEMIN’s,

one on Q, one on Q’

• Let (x,px) be the element retrieved from Q,let (y,py) be the element retrieved from Q’

• If px py: re-insert (y,py) into Q’ and proceed as normal

• If px < py: re-insert (x,px) into Q and perform a DELETE(y) on Q

Page 34: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Single Source Shortest Paths

Lemma: A spurious update is removed from Q before the targeted vertex can be retrieved using DELETEMIN.

• Event A: Spurious update happens (“time”: d(s,v))• Event B: Vertex u is deleted by retrieval of u

from Q’ (“time”: d(s,u) + w(e))

• Event C: Vertex u is retrieved from Q using DELETEMIN operation (“time”: d(s,v) + w(e))

u

v

Page 35: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Single Source Shortest Paths

• Assume that all vertices have different distance from source s

d(u) < d(v)• d(v) d(u) + w(e) < d(u) + w(e)

• Sequence of events: A B C

Theorem: The single source shortest path problem on an undirected graph G = (V,E) can be solved inO(|V| + (|E|/B)log2(|V|/B)) I/Os.

Page 36: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Planar Graphs

• Shortest paths in planar graphs• Planar separators• Planar DFS

Page 37: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Shortest Paths in Planar Graphs

s

GR

Page 38: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

s v

vs

Shortest Paths in Planar Graphs

Observation: For every separator vertex v, the distances from s to v in G and GR are the same.

The distances from s to all separator vertices can be computed in GR.

Page 39: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

s

Shortest Paths in Planar Graphs

Observation: For every vertex v in Gi,dist(s,v) = min{dist(s,x) + dist(x,v) : v Gi}.

Can compute dist(s,v) in the following graph:

vs

Page 40: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Shortest Paths in Planar Graphs

Three main steps:

• Solve all-pairs shortest paths in subgraphs Gi

• Compute shortest paths from s to separator vertices in GR

• Compute shortest paths from s to all remaining vertices

Page 41: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Shortest Paths in Planar Graphs

Regular h-partition:

• O(N/h) subgraphs G1,...,Gr

• Each Gi has size at most h

• Each Gi has boundary size at most

• Total number of separator vertices• Number of boundary sets is O(N/h)

h

h/NO

Page 42: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Shortest Paths in Planar Graphs

Three main steps:

• Solve all-pairs shortest paths in subgraphs Gi

• Compute shortest paths from s to separator vertices in GR

• Compute shortest paths from s to all remaining vertices

• Assume the given partition is regular B2-partition

Steps 1 and 3 take O(scan(N)) I/Os Graph GR has O(N/B) vertices and O(N) edges

Page 43: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Shortest Paths in Planar Graphs

Data structures:• List L storing tentative distances of all vertices• Priority queue Q storing vertices with their

tentative distances as priorities

One step:• Retrieve next vertex v using DELETEMIN

• Get distances of v’s neighbors from L• Update their distances in Q using DELETE and

INSERT

O(N + sort(N)) I/Os

Page 44: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Shortest Paths in Planar Graphs

• One I/O per boundary set• Each boundary set is touched O(B) times:

• Once per vertex on the boundary of the region• O(N/B2) boundary sets O(N/B) I/Os

Page 45: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Planar Separator

Goal: Compute a separator S of size whose removal partitions G into subgraphs of size at most h.

Basic idea:• Compute hierarchy of log(DB) graphs of

geometrically decreasing size using graph contraction

• Compute a separator of the smallest graph• Undo the contractions and maintain the

separator while doing this

Assumption: M = (h log2 B)

h/NO

Page 46: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

G0

Planar Separator

G1

G2

Page 47: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Planar Separator

Properties:

• All Gi are planar

• |Gi+1| |Gi|/2

• Every vertex in Gi+1 represents only a constant number of vertices in Gi

• Every vertex in Gi+1 represents at most 2i+2 vertices in G0

• r = log2(DB) graphs G0,…,Gr

|Gr| = O(N/(DB))

Page 48: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Planar Separator

G0

G1

G2

Page 49: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Planar Separator

• Compute separator Sr of Gr:

• Sr = Sr partitions Gr into connected components of size at most hlog2(DB)

• Takes O(|Gr|) = O(N/B) I/Os [AD96]

Page 50: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Planar Separator

• Compute Si from Si+1:

• Let Si be the set of vertices in Gi represented by the vertices in Si+1

• Connected components of Gi – Si have size at most chlog2(DB)

• Partition every connected components of size more than hlog2(DB) into components of size hlog2(DB) separator Si

• Takes O(sort(|Gi|)) I/Os:• Connected components O(sort(|Gi|))

• Partitioning happens in internal memory

• Total: O(sort(N)) I/Os

Page 51: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Planar Separator

• Separator S0 partitions G0 into connected components of size at most hlog2(DB)

• Size of S0:

h/NO

Blogh/NO

Blogh/GO2

S2S

r

0i

r

0ii

i

r

0ii

i0

Page 52: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Planar Separator

• Compute a superset S of S0 so that no connected component of G – S has size more than h:• Partition every connected component of G –

S0 separately in internal memory

• Total number of extra separator vertices is

• Extra cost: O(sort(N)) I/Os

h/NO

h/NOTheorem: A separator S of size whose removal partitions G into subgraphs of size at most h can be obtained in O(sort(N)) I/Os, provided that M = (h log2 B).

Page 53: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Building the Graph Hierarchy

Properties:

• All Gi are planar

• |Gi+1| |Gi|/2

• Every vertex in Gi+1 represents only a constant number of vertices in Gi

• Every vertex in Gi+1 represents at most 2i+2 vertices in G0

• Build Gi+1 from Gi by

• Contracting edges• Merging vertices of degree 2 with the same

neighbors

Page 54: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Building the Graph Hierarchy

Iterative approach:• Extract set of edges that can be contracted• Contract subset of these edges to reduce

number of vertices by a factor of two• Repeat until no contractible edges remain

Problem:• Standard graph contraction procedure may

contract too many vertices into a single vertex.

Page 55: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Building the Graph Hierarchy

Solution:• Compute maximal matching of contractible

subgraph• Contract edges in the matching

New problem:• We may not contract sufficient number of edges to

reduce number of vertices by a constant factor

Two-stage contraction:• Contract maximal matching• Contract edges between matched and

unmatched vertices

Page 56: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Building the Graph Hierarchy

Why is this two-stage approach good?• No unmatched vertex remains in contractible

subgraph• Every matched vertex represents at least two

vertices before the contraction

Size of graph reduces by a factor of two If a single iteration takes O(sort(|Gi|)) I/Os, the

whole construction of Gi+1 from Gi takesO(sort(|Gi|)) I/Os

Page 57: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

A Single Contraction Phase

• Maximal matching can be computed and contracted in O(sort(|H|)) I/Os, where H is the current contractible subgraph

• Bipartite contraction:

• Takes O(sort(|H|)) I/Os using buffer tree as priority queue

Page 58: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Building the Graph Hierarchy

Lemma: Graph Gi+1 can be constructed from Gi in O(sort(|Gi|)) I/Os.

Corollary: The whole graph hierarchy can be built in O(sort(|G0|)) = O(sort(N)) I/Os.

Page 59: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Level 0Level 1Level 2

Planar DFS

s

Page 60: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Planar DFS

s

Page 61: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Planar DFS

ObservationObservation: Every cycle in the i-th layer is a boundary cycle of graph Gi.

Every bicomp of a layer is a cycle.

Level > i

Level < i

Page 62: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

DFS in a Layer

Page 63: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Planar DFS

• DFS in a single layer Hi takes O(sort(|Hi|)) I/Os:

• Compute the bicomps• Root the bicomp tree• Remove one of the edges incident to parent

cutpoint in each cycle

Total I/O-complexity: O(sort(N))

Page 64: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Planar DFS

Gi

v

Page 65: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

r

Planar DFS

Page 66: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Building the Face-on-Vertex Graph

Page 67: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Lower Bounds and Open Problems

• Lower bounds• List ranking, BFS, DFS, and shortest paths• Connected and biconnected components

• Open problems

Page 68: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Lower BoundsSplit Proximate Neighbors

1 2 3 4 5 6 7 8 1 23 45 67 8

123 456 7 8123 456 7 8

Page 69: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Lower BoundsSplit Proximate Neighbors

Lemma: Split proximate neighbors requires (perm(N)) I/Os.

1 2 3 4 5 6 7 8 1 23 45 67 8

1 2 3 4 5 6 7 8 1 23 45 67 8

123 456 7 8123 456 7 8

I(N)

1 2 3 4 5 6 7 8 1 23 45 67 8

I(N)123 456 7 8123 456 7 8

O(scan(N))

Total: O(I(N) + scan(N)) = O(I(N)) I(N) = (perm(N))

Page 70: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Lower BoundsList Ranking

• Consider general algorithms for weighted list ranking

• Algorithm is only allowed to use associativity of sum operator

Algorithm can be made to have the following property:• For every vertex v, v and succ(v) are both in

main memory at some point during the course of the algorithm

Note: The lower bound we show does not hold for unweighted list ranking or weighted list ranking over groups.

Page 71: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

1 2 3 4 5 6 7 8 1 23 45 67 81 2 3 4 5 6 7 8 1 23 45 67 8

Lower BoundsList Ranking

• When both copies of x are in main memory, move to buffer of size B

• When buffer full, flush to disk• Split proximate neighbors could be solved in

O(I(N) + scan(N)) I/Os I(N) = (perm(N))

Page 72: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Lower BoundsList Ranking, BFS, DFS, and Shortest

PathsTheorem: List ranking requires (perm(N)) I/Os.

• List ranking can be solved using BFS, DFS, or SSSP from the head of the list.

Theorem: BFS, DFS, and SSSP require (perm(N)) I/Os.

Note: Again, lower bound holds only for algorithms that compute distances from source only by adding path lengths.

Page 73: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Lower BoundsSegmented Duplicate Elimination

• Let P N P2

• Elements drawn from interval [2P+1,3P]• Construct Boolean array C[2P+1..3P] s.t.

C[i] = 1 iff i S

Proposition: Segmented duplicate elimination requires (perm(N)) I/Os.

17 181920 22 2319 1920 20222018 231719S:

P/2 P/2 P/2 P/2

Page 74: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

17 181920 22 2319 1920 20222018 231719

S1 S2 S3 S4

17

18

19

20

21

22

23

24

1

2

3

4

Lower BoundsConnected Components

• Graph construction O(scan(N)) I/Os• |V| = (P), |E| = N

Page 75: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Lower BoundsConnected and Biconnected Components

Theorem: Computing the connected components of a graph G = (V,E) requires (perm(|E|)) I/Os.

Theorem: Computing the biconnected components of a graph G = (V,E) requires (perm(|E|)) I/Os.

Page 76: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

More Classes of Sparse Graphs

• Grid graphs• Separators: Size in O(sort(N)) I/Os• BFS/SSSP: O(sort(N))• DFS:

• Graphs of bounded treewidth• Separators: O(N/h) in O(sort(N)) I/Os• BFS/SSSP: O(sort(N))• DFS: ???

h/NO

B/NO

Page 77: BFS and DFS BFS and DFS in directed graphs BFS in undirected graphs An improved undirected BFS-algorithm

Open Problems

• Optimal separators for grid graphs• DFS

• Grid graphs• Graphs of bounded treewidth

• Semi-external shortest paths• Optimal connectivity• Optimal BFS, DFS, and shortest paths or lower

bounds• Directed graphs

• Topological sorting• Strongly connected components