Data Structures - PowerPoint PPT Presentation

About This Presentation
Title:

Data Structures

Description:

Data Structures & Algorithms Digraphs and DAGs Richard Newman based on book by R. Sedgewick and s by S. Sahni – PowerPoint PPT presentation

Number of Views:126
Avg rating:3.0/5.0
Slides: 44
Provided by: nemo68
Learn more at: https://www.cise.ufl.edu
Category:

less

Transcript and Presenter's Notes

Title: Data Structures


1
Data Structures Algorithms Digraphs and DAGs
Richard Newman based on book by R. Sedgewick and
slides by S. Sahni
2
Digraphs
  • Edges are directed
  • Number of possible undirected graphs is huge
  • 2V(V1)/2
  • Number of possible directed graphs is huger(?)
  • 2V2

3
Digraphs
V Undir Graphs Digraphs
2 8 16
3 64 512
4 1,024 65,536
5 32,768 33,554,432
6 2,097,152 68,719,476,736
7 268,435,456 562,949,953,421,312
8 wow Wow wow wow
  • Graph enumeration

4
Digraphs
  • Defn. 19.1 A digraph is a set of nodes V and a
    set of distinct directed edges E, each from one
    node to another node in V. (self-loop allowed)
  • Defn. 19.2 A directed path in a digraph is a
    list of nodes for which there is an edge from
    each node to its successor. A node t is reachable
    from node s iff there is a d.p. from s to t.

5
Digraphs
  • Defn. 19.3 A directed acyclic graph (DAG) is a
    digraph with no directed cycles (tours). A node
    with only out-edges is a source a node with only
    in-edges is a sink.
  • Defn. 19.4 A digraph is strongly connected iff
    every node is reachable from every node.

6
DAGs
  • DAGs can be used to model many real-life problems
  • Scheduling
  • Precedence
  • Pre-requisite structures
  • Causality
  • Etc.

7
Digraphs
  • Prop. 19.1 A digraph that is not strongly
    connected comprises a set of strongly connected
    components, which are maximal strongly connected
    subgraphs, and a set of directed edges that go
    from one component to another.

8
DAGs
  • Connected components
  • 0
  • 0-7-4-5-3
  • 2
  • 2-6
  • 1
  • 1

0
2
2
0
7
5
1
1
7
5
6
4
3
6
4
3
9
Digraphs
  • Prop. 19.2 Given a digraph D, define another
    digraph K(D) with one node corresponding to each
    strongly connected component of D, and an edge
    from u to v iff there is one or more edge from
    the component corresponding to u to the component
    corresponding to v. K(D) is a DAG called the
    kernel DAG of D.

10
DAGs
  • DAG Components
  • 0 0-7-4-5-3
  • 1 2-6
  • 2 1
  • Kernel DAG
  • Component 0
  • Component 1
  • Component 2

0
2
2
0
7
5
1
1
7
5
6
4
3
6
4
3
0
1
2
11
Digraphs
  • In undirected graph, we just say two nodes are
    connected if there is a path between them
  • In a digraph, node t is reachable from node s if
    there is a directed path from s to t.
  • In a digraph, s and t are strongly connected if
    they are mutually reachable.

12
Digraphs
  • Classify edges in DFS
  • Tree recursive calls
  • Back to ancestor (including parent!)
  • Down to visited descendent
  • Cross neither ancestor nor descendent (cousins)

13
DFS in Digraphs
Stack 0 572 576 57(2) 541 54 55(6 cross) 53(0
back) 5(4 back) (5 down)
0
down
2
7
0
2
0
2
6
4
1
back
7
5
1
5
7
1
cross
5
6
4
3
4
3
6
3
0
1
2
3
4
5
6
7
pre
0
4
1
7
5
6
2
3
post
7
2
1
3
5
4
0
6
14
DFS Algorithms
  • Cycle Detection
  • If we find a back edge, it represents a cycle
    including link to parent!
  • Cross edges dont make cycles!
  • Reachability
  • Start from one, DFS until find other (or complete
    DFS)
  • Weak connectivity
  • If DFS finds all the nodes, then yes!

15
DFS Algorithms
  • Convert digraph to DAG
  • Remove back edges!
  • Use to generate large DAGs from large digraphs
  • Note that DFS in a digraph only gives
    reachability from the start node, not from all
    nodes

16
Transitive Closure
  • Defn. 19.5 The transitive closure of a digraph D
    is a digraph T with the same vertices but with an
    edge from s to t in T iff t is reachable from s
    in D.

0
2
0
2
0
2
7
5
1
5
7
1
1
5
7
6
4
3
4
3
3
4
6
6
17
Transitive Closure
  • Can also view (and compute) transitive closure by
    Boolean matrix multiplication
  • Use logical AND as x
  • Use logical OR as
  • Ai represents (any) path of length i

A 0 1 2 3 4 5 6 7 0 0 0 1 0 0 1 0 1 1 0 0 0 0
0 0 0 0 2 0 0 0 0 0 0 1 0 3 0 0 0 0 1 0 0 0 4
0 0 0 0 0 1 1 0 5 1 0 0 1 0 0 0 0 6 0 0 1 0 0 0
0 0 7 0 1 0 0 1 0 0 0
A2 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
0
1 1 0 1 1 0 1 0
0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 0 0 0 1 1 0
1 0 1 1 0 0 0 0
0 0 1 0 1 1 0 1
0 0 0 0 0 0 1 0
0 0 0 0 0 1 1 0
18
Transitive Closure
  • Can also view (and compute) transitive closure by
    Boolean matrix multiplication
  • Use logical AND as x
  • Use logical OR as
  • Ai represents (any) path of length i

0 1 2 3 4 5 6 7 0 1 1 1 1 1 1 1 1 1 0 0 0 0
0 0 0 0 2 0 0 1 0 0 0 1 0 3 0 0 0 0 1 1 1 0 4
1 0 1 1 0 1 1 0 5 1 0 1 1 1 1 0 1 6 0 0 1 0 0 0
1 0 7 0 1 0 0 1 1 1 0
A3 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
Alt3
0
0 0 1 0 1 1 1 1
0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0
1 0 1 1 0 0 0 0
0 0 1 0 1 1 1 1
1 1 0 1 1 1 1 0
0 0 1 0 0 0 0 0
1 1 1 1 1 0 1 0
19
Transitive Closure
  • Can also view (and compute) transitive closure by
    Boolean matrix multiplication
  • Use logical AND as x
  • Use logical OR as
  • Ai represents (any) path of length i

0 1 2 3 4 5 6 7 0 1 1 1 1 1 1 1 1 1 0 0 0 0
0 0 0 0 2 0 0 1 0 0 0 1 0 3 1 0 1 1 1 1 1 0 4
1 0 1 1 1 1 1 1 5 1 1 1 1 1 1 1 1 6 0 0 1 0 0 0
1 0 7 1 1 1 1 1 1 1 0
A4 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
Alt4
0
0 0 1 0 1 1 1 1
0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 1 0 1 1 1 1
1 1 1 1 1 1 1 0
1 0 1 1 1 1 1 1
0 0 0 0 0 0 1 0
0 0 1 0 1 1 1 1
20
Transitive Closure
  • Can also view (and compute) transitive closure by
    Boolean matrix multiplication
  • Use logical AND as x
  • Use logical OR as
  • Ai represents (any) path of length i

0 1 2 3 4 5 6 7 0 1 1 1 1 1 1 1 1 1 0 0 0 0
0 0 0 0 2 0 0 1 0 0 0 1 0 3 1 0 1 1 1 1 1 1 4
1 1 1 1 1 1 1 1 5 1 1 1 1 1 1 1 1 6 0 0 1 0 0 0
1 0 7 1 1 1 1 1 1 1 1
A5 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
Alt5
0
0 0 1 0 1 1 1 1
0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0
1 1 1 1 1 1 1 0
1 0 1 1 1 1 1 1
1 1 1 1 1 1 1 1
0 0 1 0 0 0 0 0
1 1 1 1 1 1 1 0
21
Transitive Closure
  • Can also view (and compute) transitive closure by
    Boolean matrix multiplication
  • Use logical AND as x
  • Use logical OR as
  • Ai represents (any) path of length i

0 1 2 3 4 5 6 7 0 1 1 1 1 1 1 1 1 1 0 0 0 0
0 0 0 0 2 0 0 1 0 0 0 1 0 3 1 1 1 1 1 1 1 1 4
1 1 1 1 1 1 1 1 5 1 1 1 1 1 1 1 1 6 0 0 1 0 0 0
1 0 7 1 1 1 1 1 1 1 1
Alt6
0
  • Keep on multiplying and adding until
  • reach fixed point
  • Matrix does not change

22
Transitive Closure
  • Prop. 19.5 We can compute the transitive closure
    of a digraph by adding self-loops, then computing
    AV, taking time V4.
  • Self-loops allow path to be of any length up to
    exponent
  • Must reach fixed point by V why?
  • Efficient approach
  • A, A2, A4, A8, successive squaring
  • Takes lg V matrix multiplies, each V3
  • Total time is V3 lg V

23
Transitive Closure
  • Even faster way!
  • Warshalls algorithm

for (i 0 i lt V i) for (s 0 s lt V
s) for (t 0 t lt V t) if
(Asi Ait) Ast 1
24
Transitive Closure
Correctness by induction on i Base After first
iteration, s-t or s-0-t After second iteration,
s-t, s-0-t, s-1-t, s-0-1-t, s-1-0-t. IH After
ith iteration all paths w/o inner nodes gt
i Inductive step path from s to t w/o i1
(already there) or path via i1 (tested by if
statement)
for (every intermediate node i) for (every
source s) for (every destination t) if
(s reaches i i reaches t) s reaches t
25
Transitive Closure
  • Prop. 19.7 Warshalls algorithm computes the
    transitive closure of a digraph in time V3.
  • Obvious from structure of Warshalls algorithm
    three nested loops of V each

for (i 0 i lt V i) for (s 0 s lt V
s) for (t 0 t lt V t) if
(Asi Ait) Ast 1
26
Transitive Closure
  • Prop. 19.8 We can support constant-time
    reachability testing for a digraph with V nodes
    using space O(V2) and preprocessing time O(V3).
  • Can improve Warshalls algorithm

for (i 0 i lt V i) for (s 0 s lt V
s) for (t 0 t lt V t) if
(Asi Ait) Ast 1
27
Transitive Closure
  • We can improve Warshalls algorithm by moving the
    test of Asi out of the inner loop, avoiding
    innermost loop when s cannot reach i.

for (i 0 i lt V i) for (s 0 s lt V
s) if (Asi) for (t 0 t lt V
t) if (Ait) Ast 1
28
Shortest Path
  • We can modify Warshalls algorithm to compute
    shortest path, if A contains the length of
    the minimum path from s to t (initialized with 1
    for an edge and sentinel value V for no edge).

for (i 0 i lt V i) for (s 0 s lt V
s) for (t 0 t lt V t) if
(Asi Ait lt Ast) Ast
Asi Ait
29
Reduction
  • Prop. 19.9 We can use any transitive-closure
    algorithm to compute the product of two Boolean
    matrices with at most a constant factor
    difference in running time.
  • Prf Construct a 3v x 3v matrix using A, B, and
    VxV identity matrix I. TC is square.

2
I A 0 I A AB 0 I B 0 I B 0 0 I 0
0 I
30
Reduction
  • What this means is that if we can perform
    transitive closure faster, then we can compute
    Boolean matrix products faster.
  • Likewise, a faster Boolean matrix multiply
    algorithm will speed up our TC algorithm.
  • Note that we can compute TC faster for sparse
    graphs time O(V(EV))

31
Topological Sort
  • Relabel Given a DAG, relabel its nodes such that
    every directed edge points from a lower-numbered
    node to a higher-numbered node.
  • Rearrange Given a DAG, rearrange its nodes on a
    horizontal line such that all the directed edges
    point from left to right.
  • Key turn partial order into total order that is
    consistent with the partial order

32
Topological Sort
Relabel
0
2
0
2
0
2
0
7
7
5
1
7
5
1
7
5
1
1
5
2
6
4
3
6
4
3
6
4
3
6
Rearrange
0
6
7
2
4
5
3
1
33
Reverse Topological Sort
  • Relabel Given a DAG, relabel its nodes such that
    every directed edge points from a higher-numbered
    node to a lower-numbered node.
  • Rearrange Given a DAG, rearrange its nodes on a
    horizontal line such that all the directed edges
    point from right to left.
  • Just reverse the regular topological sort

34
Topological Sort
  • Prop. 19.11 Postorder numbering in DFS yields a
    reverse topological sort for any DAG.
  • It is easy to turn reverse topological sort into
    a regular topological sort

35
Topological Sort
  • Prop. 19.12 Every DAG has at least one source
    and at least one sink.
  • Turn this into a topological sort algorithm
  • Make indegreeV vector initialized to 0
  • Scan through DAG (visiting every edge) and
    increment indegreei each time an edge to node i
    is found.
  • Scan through indegree and enqueue all nodes
    with indegree zero (the sources).

36
Topological Sort
  • Prop. 19.12 Every DAG has at least one source
    and at least one sink.
  • Set currentID 0.
  • While the queue is non-empty,
  • remove a node x and label it currentID
  • currentID
  • Decrement indegreej for all edges from node x
    to node j
  • If indegreej 0, enqueue node j

37
Topological Sort
0
2
0
2
0
2
0
7
7
5
1
7
5
1
7
5
1
2
5
3
6
4
3
6
4
3
6
4
1
6
indegree
0
1
2
0
2
3
1
1
0
1
2
1
1
0
0
0
0
0
Source Queue
0
6
7
2
4
5
3
1
38
Topological Sort Application
  • Finding longest path from each node, longest path
    in DAG
  • Critical path for scheduling
  • What is the most urgent thing to do?
  • Reverse topological sort DAG
  • In RTS order, for each node v, longest path from
    v, LPv 1 maxLPx (v,x) in E
  • Guaranteed that LPx is known by time it is
    needed. Example of
  • Dynamic Programming!

39
Topological Sort
0
2
0
2
0
7
7
5
1
7
5
1
2
5
3
6
4
3
6
4
1
6
Longest path
1
5
1
4
3
2
1
4
40
Transitive Closure Redux
  • Reachability from each node in DAG
  • Reverse topological sort DAG
  • Row vector Reachv initially self and
    successors
  • In RTS order, for each node v
  • Reachv OR Reachx (v,x) in E
  • Guaranteed that Reachx is known by time it is
    needed. Another example of
  • Dynamic Programming!

41
Transitive Closure Redux
  • Matrix approach takes time O(VE)
  • Direct recursive DFS approach
  • No back edges (no cycles)
  • Tree edges recursive call
  • Cross edges do OR, no call
  • Down edges skip, no call
  • Prop. 19.13 Using DFS and DP, can compute TC of
    a DAG in time O(V2VX) where X is the number of
    cross edges

42
Strongly Connected Components
  • Kosarajus method
  • Do DFS on reversed digraph
  • Compute post-order numbering
  • Do DFS of original graph using reverse of
    postorder computed on reverse graph
  • Time and space are both linear in VE!

43
Recap
  • Digraphs
  • Strong connectivity
  • Connected components
  • Reachability
  • Digraph kernel
  • Transitive closure
  • Shortest paths (special case)
  • Reduction (from Boolean matrix multiply)
  • Topological Sort
Write a Comment
User Comments (0)
About PowerShow.com