17
Portl and St ate University Lecture 6 Topological order cont’d Shortest/longest path in DAGs Dynamic progr amming intro W’21 CS 584/684 Algorithm Design & Analysis Fang Song Credit: based on slides by K. Wayne

w21 5684 lec6 - Fang SongLongest increasing subsequence / longest path 16 Input: a sequence of numbers . Output: a longest increasing subsequence . a 1,…,a n a i 1,…,a i k Recap

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: w21 5684 lec6 - Fang SongLongest increasing subsequence / longest path 16 Input: a sequence of numbers . Output: a longest increasing subsequence . a 1,…,a n a i 1,…,a i k Recap

Portland State University

Lecture 6• Topological order cont’d • Shortest/longest path in

DAGs • Dynamic programming intro

W’21 CS 584/684 Algorithm Design &

Analysis

Fang Song

Credit: based on slides by K. Wayne

Page 2: w21 5684 lec6 - Fang SongLongest increasing subsequence / longest path 16 Input: a sequence of numbers . Output: a longest increasing subsequence . a 1,…,a n a i 1,…,a i k Recap

Exercise

2

๏ Let be a graph with vertices and edges. Which of the following statements are TRUE?

• BFS/DFS always run in time .

• If is undirected, the connected components of two vertices can be identical.

• If is directed, the strong components of two vertices can be neither identical nor disjoint.

• There is an algorithm to test strong connectivity of directed in time in the worst-case.

G n m

O(m + n)G

G

Go(n(m + n))

Page 3: w21 5684 lec6 - Fang SongLongest increasing subsequence / longest path 16 Input: a sequence of numbers . Output: a longest increasing subsequence . a 1,…,a n a i 1,…,a i k Recap

Review: Directed acyclic graphs (DAG)

3

๏ Def. A DAG is a directed graph that contains no directed cycles.

๏ Application: precedence constraints. • Course prerequisite: 350 must be taken before 584/684.

• Compilation: module must be complied before .

• Pipeline of computing jobs: output of job determines input of job .

i j

i j

1

2

3

4

5

6

7

G 1

2

3

4

5

6

7

G′

Page 4: w21 5684 lec6 - Fang SongLongest increasing subsequence / longest path 16 Input: a sequence of numbers . Output: a longest increasing subsequence . a 1,…,a n a i 1,…,a i k Recap

Topological order

4

๏ Def. A topological order of a directed graph is an ordering of its nodes , so that for every edge we have . v1, …, vn vi → vj i < j

1

2

3

4

5

6

7

v2

v6

v7

v5

v3

v4

v1

v2 v6 v7v5v3 v4v1

A topological order

All edges go from left to right

A

C

F

D

B

E

G

Page 5: w21 5684 lec6 - Fang SongLongest increasing subsequence / longest path 16 Input: a sequence of numbers . Output: a longest increasing subsequence . a 1,…,a n a i 1,…,a i k Recap

1. If has a topological order, is necessarily a DAG?

2. Does every DAG have a topological order?

G G

5

Page 6: w21 5684 lec6 - Fang SongLongest increasing subsequence / longest path 16 Input: a sequence of numbers . Output: a longest increasing subsequence . a 1,…,a n a i 1,…,a i k Recap

Q2: Dose every DAG have a topological order?

6

๏ Proof of corollary given Lemma 1 [by induction on number of nodes] • Base case: true if . • Given a DAG on nodes, find a node with no entering edges [Lemma 2].

• is a DAG, since deleting cannot create cycles. • Induction hypothesis, (with nodes) has a topological order. • Place first then append nodes of in topological order [valid because

has no entering edges].

n = 1n > 1 v

G − {v} vG − {v} n − 1

v G − {v}v

Lemma 2. A DAG has a node with no entering edges.G

Corollary. If is a DAG, then has a topological order.G G

DAG

v

Page 7: w21 5684 lec6 - Fang SongLongest increasing subsequence / longest path 16 Input: a sequence of numbers . Output: a longest increasing subsequence . a 1,…,a n a i 1,…,a i k Recap

Topological sorting algorithm

7

TopSort( ): // count(w)= remaining number of incoming edges // S = set of remaining nodes with no incoming edges // topological order 1. Initialize and for all nodes 2. For Append to

For all with // delete from

If add to

G

V[1,…, n]S Count( ⋅ )

v ∈ Sv Vw v → w v G

Count(w) − −Count(w) = = 0 w S

Theorem. TopSort computes a topological order in time. O(n + m)

, a single scan of adjacency listO(n + m)

, run once per edgeO(1)

Page 8: w21 5684 lec6 - Fang SongLongest increasing subsequence / longest path 16 Input: a sequence of numbers . Output: a longest increasing subsequence . a 1,…,a n a i 1,…,a i k Recap

Completing the proof

8

๏ Proof [by contradiction]

• Suppose is a DAG, and every node has at least one entering edge.

• Pick any node , and follow edges backwards from .

• Continue till we visit a node, say , twice. ( )

• Let be the sequence of nodes between successive visits to .

• is a cycle. Contradiction!

G

v v

w v ← u ← x… ← w… ← w

C w

C

Lemma 2. A DAG has a node with no entering edges. G

Directed cycle C

u vxw …

Page 9: w21 5684 lec6 - Fang SongLongest increasing subsequence / longest path 16 Input: a sequence of numbers . Output: a longest increasing subsequence . a 1,…,a n a i 1,…,a i k Recap

Shortest path in a graph

9

Input: Graph , nodes and

Output: .

G s t .dist(s, t)

1

2 3

4 5

6

7

8

G1

2 3

4 5

6

7 8

BFS(1)

dist(1,6) = 3

1

2

3

4

5

6

7

G1

2

3

4 5

6

BFS(1)

dist(1 → 6) = 2

Page 10: w21 5684 lec6 - Fang SongLongest increasing subsequence / longest path 16 Input: a sequence of numbers . Output: a longest increasing subsequence . a 1,…,a n a i 1,…,a i k Recap

Shortest path in a weighted graph

10

๏ Weighted graphs

• Every edge has a length .

• Length of a path .

• Distance .

ℓe

ℓ(P) = ∑e∈P

ℓe

dist(s, t) = minP:u⇝v

ℓ(P)

๏ Length function:

• if not an edge • Model time, distance, cost … • Can be negative: fund transfer,

heat in chemistry reaction …

ℓ : E → ℤℓ(u, v) = ∞

๏ : BFS solves it. ๏ How to solve weighted case?

∀e ∈ E, ℓ(e) = 1

Page 11: w21 5684 lec6 - Fang SongLongest increasing subsequence / longest path 16 Input: a sequence of numbers . Output: a longest increasing subsequence . a 1,…,a n a i 1,…,a i k Recap

Shortest path in DAGs

11

Input: DAG , length function , nodes and

Output: .

G ℓ s t .d(t) := dist(s, t)

v2 v6 v7v5v3 v4v1

5

-12

6

273 6

-3 3

1d(7) = min{d(6) + 3,d(5) + 1}

๏ Example. What is ?dist(1 → 7)

d(6) = min{d(5) − 3,d(2) + 5}

d(5) = min{d(4) + 2,d(3) + 2,d(2) + 6,d(1) + 6}d(4) = min{d(3) + 7,d(1) + 3}

d(3) = d(2) − 1d(2) = ∞d(1) = 0

dist(1 → 7) = 5,1 → 4 → 5 → 6 → 7

Page 12: w21 5684 lec6 - Fang SongLongest increasing subsequence / longest path 16 Input: a sequence of numbers . Output: a longest increasing subsequence . a 1,…,a n a i 1,…,a i k Recap

Shortest path in DAGs: algorithm

12

v2 v6 v7v5v3 v4v1

5

-12

6

27

36

-3 3

1

d(7) = min{d(6) + 3,d(5) + 1}d(6) = min{d(5) − 3,d(2) + 5}

d(5) = min{d(4) + 2,d(3) + 2,d(2) + 6,d(1) + 6}d(4) = min{d(3) + 7,d(1) + 3}

d(3) = d(2) − 1

d(2) = ∞d(1) = 0

๏ Key observations

• Reduce to subproblems

• Subproblems overlap: e.g., both involve .

• An ordering of subproblems (DAG: edges go left to right)

d(6), d(5), …d(6), d(5)

d(2)

Distance( ): // Initialize all 1. 2. For in topological order

G, sd( ⋅ ) = ∞

d(s) = 0v ∈ V − {s}

d(v) = minu→v

{d(u) + ℓ(u, v)}

Page 13: w21 5684 lec6 - Fang SongLongest increasing subsequence / longest path 16 Input: a sequence of numbers . Output: a longest increasing subsequence . a 1,…,a n a i 1,…,a i k Recap

Algorithm design arsenal

13

๏ Dynamic programming • Break up a problem into a series of overlapping subproblems. • Combine solutions to smaller subproblems to form a solution to large problem.

๏ Divide-&-Conquer • Break up a problem into a series of independent subproblems, typically of much

smaller size. • Combine solutions to smaller subproblems to form a solution to large problem.

An implicit DAG: nodes = subproblems, edges = dependencies

Page 14: w21 5684 lec6 - Fang SongLongest increasing subsequence / longest path 16 Input: a sequence of numbers . Output: a longest increasing subsequence . a 1,…,a n a i 1,…,a i k Recap

Longest increasing subsequences

14

Input: a sequence of numbers .

Output: a longest increasing subsequence .

a1, …, an

ai1, …, aik

ai1 < ai2 < … < aik (1 ≤ i1, …, ik ≤ n)

5 2 8 6 3 6 9 7

๏ Brute-force algorithm

• For each , check if exists an increasing subsequence of length .

• Running time:

1 ≤ k ≤ n k

Ω(2n)

Page 15: w21 5684 lec6 - Fang SongLongest increasing subsequence / longest path 16 Input: a sequence of numbers . Output: a longest increasing subsequence . a 1,…,a n a i 1,…,a i k Recap

Dynamic programming approach

15

Input: a sequence of numbers .

Output: a longest increasing subsequence .

a1, …, an

ai1, …, aik

2 6 938 65 7a1

๏ Form a DAG : if , add an edge . G ai ≤ aj i → j

Increasing subsequence path in Amounts to finding a longest path in the DAG

⇔ G

Page 16: w21 5684 lec6 - Fang SongLongest increasing subsequence / longest path 16 Input: a sequence of numbers . Output: a longest increasing subsequence . a 1,…,a n a i 1,…,a i k Recap

Longest increasing subsequence / longest path

16

Input: a sequence of numbers .

Output: a longest increasing subsequence .

a1, …, an

ai1, …, aik

Recap on DP • There is an ordering on the

subproblems. • A relation showing how to

solve a subproblem given answers to smaller subproblems (= those appear earlier in the ordering).

LSeq( ): // Initialize all ; length of longest path ending at . 1. For

2. Return

aL( j) = 1 j

j = 1,2,…, nL( j) = max

i→j{1 + L(i)}

maxj

L( j)

๏ Running time: . • What is the worst case scenario?

๏ Can you output the subsequence?

O(n + m) = O(n2)

Page 17: w21 5684 lec6 - Fang SongLongest increasing subsequence / longest path 16 Input: a sequence of numbers . Output: a longest increasing subsequence . a 1,…,a n a i 1,…,a i k Recap

Scratch