56
Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths CSE 548: (Design and ) Analysis of Algorithms Dynamic Programming R. Sekar 1 / 56

CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths

CSE 548: (Design and) Analysis of AlgorithmsDynamic Programming

R. Sekar

1 / 56

Page 2: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Overview Topological Sort DAGs and Dynamic Programming

Overview

Another approach for optimization problems, more general and

versatile than greedy algorithms.

Optimal substructure The optimal solution contains optimal

solutions to subproblems.

Overlapping subproblems. Typically, the same subproblems are

solved repeatedly.

Solve subproblems in a certain order, and remember solutions for

later reuse.

2 / 56

Page 3: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Overview Topological Sort DAGs and Dynamic Programming

Topics

1. IntroOverviewTopological SortDAGs and DynamicProgramming

2. LISDAG FormulationAlgorithm

3. LCSDefnTowards Soln.VariationsSeq. Alignment

UNIX apps

4. KnapsackKnapsack w/ Repetition0-1 Knapsack

5. Chain MMMemoization

6. Fixpoints & Shortest PathsIterative SolvingShortest PathSSPASP IASP II

3 / 56

Page 4: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Overview Topological Sort DAGs and Dynamic Programming

Topological Sort

A way to linearize DAGs while ensuring that for every vertex, all its

ancestors appear before itself.

Applications: Instruction scheduling, spreadsheet recomputation of

formulas, Make (and other compile/build systems) and Task

scheduling/project management.

Captures dependencies, and hence arises frequently in all types of

programming tasks, and of course, dynamic programming!

4 / 56

Page 5: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Overview Topological Sort DAGs and Dynamic Programming

Topological Sort

topoSort(V , E)

while |V | 6= 0

if there is a vertex v in V with in-degree of 0

output v

V = V − {v}; E = E − {e ∈ E |e is incident on v})else output “graph is cyclic”; break

return

Chapter 6

Dynamic programming

In the preceding chapters we have seen some elegant design principles—such as divide-and-conquer, graph exploration, and greedy choice—that yield definitive algorithms for a varietyof important computational tasks. The drawback of these tools is that they can only be usedon very specific types of problems. We now turn to the two sledgehammers of the algorithmscraft, dynamic programming and linear programming, techniques of very broad applicabilitythat can be invoked when more specialized methods fail. Predictably, this generality oftencomes with a cost in efficiency.

6.1 Shortest paths in dags, revisitedAt the conclusion of our study of shortest paths (Chapter 4), we observed that the problem isespecially easy in directed acyclic graphs (dags). Let’s recapitulate this case, because it lies atthe heart of dynamic programming.The special distinguishing feature of a dag is that its nodes can be linearized; that is, they

can be arranged on a line so that all edges go from left to right (Figure 6.1). To see whythis helps with shortest paths, suppose we want to figure out distances from node S to theother nodes. For concreteness, let’s focus on node D. The only way to get to it is through itspredecessors, B or C; so to find the shortest path toD, we need only compare these two routes:

dist(D) = min{dist(B) + 1,dist(C) + 3}.

A similar relation can be written for every node. If we compute these dist values in the

Figure 6.1 A dag and its linearization (topological ordering).

B

DC

A

S E1

2

4 1

6

3 1

2

S C A B D E4 6

3

1

2

1

1

2

1615 / 56

Page 6: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Overview Topological Sort DAGs and Dynamic Programming

Topological Sort

topoSort(V , E)

while |V | 6= 0

if there is a vertex v in V with in-degree of 0

output v

V = V − {v}; E = E − {e ∈ E |e is incident on v})else output “graph is cyclic”; break

return

Correctness:

If there is no vertex with in-degree 0, it is not a DAGWhen the algorithm outputs v , it has already output v ’sancestors

Performance: What is the runtime? Can it be improved?6 / 56

Page 7: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Overview Topological Sort DAGs and Dynamic Programming

Shortest paths in DAGs

SSPDag(V , E ,w, s)

for u in V do

dist(u) =∞dist(s) = 0

for v ∈ V − {s} in topological order do

dist(v) = min(u,v)∈E(dist(u) + w(u, v))

Thats all!

7 / 56

Page 8: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Overview Topological Sort DAGs and Dynamic Programming

DAGs and Dynamic Programming

Canonical way to represent dynamic programming

Nodes in the DAG represent subproblems

Edges capture dependencies between subproblems

Topological sorting solves subproblems in the right order

Remember subproblem solutions to avoid recomputation

Many bottom-up computations on trees/dags are instances of

dynamic programming

applies to trees of recursive calls (w/ duplication), e.g., Fib

For problems in other domains, DAGs are implicit, and topological

sort is also done implicitly

Can you think of a way to do topological sorting implicitly, without

modifying the dag at all?

8 / 56

Page 9: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths DAG Formulation Algorithm

Longest Increasing Subsequence

DefinitionGiven a sequence a1, a2, . . . , an, its LIS is a

sequence ai1, ai2, . . . , aik that maximizes k

subject to ij < ij+1 and aij ≤ aij+1.

left-to-right order of Figure 6.1, we can always be sure that by the time we get to a node v,we already have all the information we need to compute dist(v). We are therefore able tocompute all distances in a single pass:

initialize all dist(·) values to ∞dist(s) = 0for each v ∈ V \{s}, in linearized order:

dist(v) = min(u,v)∈E{dist(u) + l(u, v)}

Notice that this algorithm is solving a collection of subproblems, {dist(u) : u ∈ V }. Westart with the smallest of them, dist(s), since we immediately know its answer to be 0. Wethen proceed with progressively “larger” subproblems—distances to vertices that are furtherand further along in the linearization—where we are thinking of a subproblem as large if weneed to have solved a lot of other subproblems before we can get to it.This is a very general technique. At each node, we compute some function of the values

of the node’s predecessors. It so happens that our particular function is a minimum of sums,but we could just as well make it amaximum, in which case we would get longest paths in thedag. Or we could use a product instead of a sum inside the brackets, in which case we wouldend up computing the path with the smallest product of edge lengths.

Dynamic programming is a very powerful algorithmic paradigm in which a problem issolved by identifying a collection of subproblems and tackling them one by one, smallest first,using the answers to small problems to help figure out larger ones, until the whole lot of themis solved. In dynamic programming we are not given a dag; the dag is implicit. Its nodes arethe subproblems we define, and its edges are the dependencies between the subproblems: ifto solve subproblem B we need the answer to subproblem A, then there is a (conceptual) edgefrom A to B. In this case, A is thought of as a smaller subproblem than B—and it will alwaysbe smaller, in an obvious sense.But it’s time we saw an example.

6.2 Longest increasing subsequencesIn the longest increasing subsequence problem, the input is a sequence of numbers a1, . . . , an.A subsequence is any subset of these numbers taken in order, of the form ai1 , ai2 , . . . , aik where1 ≤ i1 < i2 < · · · < ik ≤ n, and an increasing subsequence is one in which the numbers aregetting strictly larger. The task is to find the increasing subsequence of greatest length. Forinstance, the longest increasing subsequence of 5, 2, 8, 6, 3, 6, 9, 7 is 2, 3, 6, 9:

5 2 8 6 3 6 9 7

In this example, the arrows denote transitions between consecutive elements of the opti-mal solution. More generally, to better understand the solution space, let’s create a graph ofall permissible transitions: establish a node i for each element ai, and add directed edges (i, j)whenever it is possible for ai and aj to be consecutive elements in an increasing subsequence,that is, whenever i < j and ai < aj (Figure 6.2).

162

9 / 56

Page 10: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths DAG Formulation Algorithm

Casting LIS problem using a DAG

Nodes: represent elements in the sequence

Edges: connect an element to all followers that are larger

Topological sorting: sequence already topologically sorted

Remember: Using an array L[1..n]Figure 6.2 The dag of increasing subsequences.

5 2 8 3 9 766

Notice that (1) this graph G = (V,E) is a dag, since all edges (i, j) have i < j, and (2)there is a one-to-one correspondence between increasing subsequences and paths in this dag.Therefore, our goal is simply to find the longest path in the dag!Here is the algorithm:

for j = 1, 2, . . . , n:L(j) = 1 + max{L(i) : (i, j) ∈ E}

return maxj L(j)

L(j) is the length of the longest path—the longest increasing subsequence—ending at j (plus1, since strictly speaking we need to count nodes on the path, not edges). By reasoning in thesame way as we did for shortest paths, we see that any path to node j must pass through oneof its predecessors, and therefore L(j) is 1 plus the maximum L(·) value of these predecessors.If there are no edges into j, we take the maximum over the empty set, zero. And the finalanswer is the largest L(j), since any ending position is allowed.

This is dynamic programming. In order to solve our original problem, we have defined acollection of subproblems {L(j) : 1 ≤ j ≤ n} with the following key property that allows themto be solved in a single pass:

(*) There is an ordering on the subproblems, and a relation that shows how to solvea subproblem given the answers to “smaller” subproblems, that is, subproblemsthat appear earlier in the ordering.

In our case, each subproblem is solved using the relation

L(j) = 1 + max{L(i) : (i, j) ∈ E},

an expression which involves only smaller subproblems. How long does this step take? Itrequires the predecessors of j to be known; for this the adjacency list of the reverse graph GR,constructible in linear time (recall Exercise 3.5), is handy. The computation of L(j) then takestime proportional to the indegree of j, giving an overall running time linear in |E|. This is atmost O(n2), the maximum being when the input array is sorted in increasing order. Thus thedynamic programming solution is both simple and efficient.There is one last issue to be cleared up: the L-values only tell us the length of the optimal

subsequence, so how do we recover the subsequence itself? This is easily managed with the

163

10 / 56

Page 11: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths DAG Formulation Algorithm

Algorithm for LIS

LIS(E)

for j = 1 to n do

L[j] = 1 + max(i,j)∈EL[i]

return maxnj=1L[j]Figure 6.2 The dag of increasing subsequences.

5 2 8 3 9 766

Notice that (1) this graph G = (V,E) is a dag, since all edges (i, j) have i < j, and (2)there is a one-to-one correspondence between increasing subsequences and paths in this dag.Therefore, our goal is simply to find the longest path in the dag!Here is the algorithm:

for j = 1, 2, . . . , n:L(j) = 1 + max{L(i) : (i, j) ∈ E}

return maxj L(j)

L(j) is the length of the longest path—the longest increasing subsequence—ending at j (plus1, since strictly speaking we need to count nodes on the path, not edges). By reasoning in thesame way as we did for shortest paths, we see that any path to node j must pass through oneof its predecessors, and therefore L(j) is 1 plus the maximum L(·) value of these predecessors.If there are no edges into j, we take the maximum over the empty set, zero. And the finalanswer is the largest L(j), since any ending position is allowed.

This is dynamic programming. In order to solve our original problem, we have defined acollection of subproblems {L(j) : 1 ≤ j ≤ n} with the following key property that allows themto be solved in a single pass:

(*) There is an ordering on the subproblems, and a relation that shows how to solvea subproblem given the answers to “smaller” subproblems, that is, subproblemsthat appear earlier in the ordering.

In our case, each subproblem is solved using the relation

L(j) = 1 + max{L(i) : (i, j) ∈ E},

an expression which involves only smaller subproblems. How long does this step take? Itrequires the predecessors of j to be known; for this the adjacency list of the reverse graph GR,constructible in linear time (recall Exercise 3.5), is handy. The computation of L(j) then takestime proportional to the indegree of j, giving an overall running time linear in |E|. This is atmost O(n2), the maximum being when the input array is sorted in increasing order. Thus thedynamic programming solution is both simple and efficient.There is one last issue to be cleared up: the L-values only tell us the length of the optimal

subsequence, so how do we recover the subsequence itself? This is easily managed with the

163

Correctness: Straight-forward

Complexity: What is it? Can it be improved?11 / 56

Page 12: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths DAG Formulation Algorithm

Key step in Dyn. Prog.: Identifying subproblemsCommon subproblemsFinding the right subproblem takes creativity and experimentation. But there are a fewstandard choices that seem to arise repeatedly in dynamic programming.

i. The input is x1, x2, . . . , xn and a subproblem is x1, x2, . . . , xi.

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10

The number of subproblems is therefore linear.

ii. The input is x1, . . . , xn, and y1, . . . , ym. A subproblem is x1, . . . , xi and y1, . . . , yj.

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10

y1 y2 y3 y4 y5 y6 y7 y8

The number of subproblems is O(mn).

iii. The input is x1, . . . , xn and a subproblem is xi, xi+1, . . . , xj .

x1 x2 x3 x4 x5 x6 x7 x8 x9 x10

The number of subproblems is O(n2).

iv. The input is a rooted tree. A subproblem is a rooted subtree.

If the tree has n nodes, how many subproblems are there?

We’ve already encountered the first two cases, and the others are coming up shortly.

169

12 / 56

Page 13: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Defn Towards Soln. Variations Seq. Alignment UNIX apps

Subsequence

Definition

A sequence a[1..m] is a subsequence of b[1..n] occurring at position

r if there exist i1, ..., ik such that a[r..(r+l − 1)] = b[i1]b[i2] · · · b[il ],

where ij < ij+1

The relative order of elements is preserved in a subsequence, but

unlike a substring, the elements needs not be contiguous.

Example: BDEFHJ is a subsequence of ABCDEFGHIJK

13 / 56

Page 14: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Defn Towards Soln. Variations Seq. Alignment UNIX apps

Longest Common Subsequence

Definition (LCS)

The LCS of two sequences x[1..m] and y[1..n] is the longest sequence

z[1..k] that is a subsequence of both x and y.

Example: BEHJ is a common subsequence of ABCDEFGHIJKLM and

AABBXEJHJZ

By aligning elements of z with the corresponding elements of x and

y , we can compare x and yx : P R O F − E S S O R

z : P R O F − E S − − R

y : P R O F Fins E S −del Usub Rto identify the edit operations (insert, delete, substitute) operations

needed to map x to y14 / 56

Page 15: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Defn Towards Soln. Variations Seq. Alignment UNIX apps

Edit (Levenshtein) distance

Definition (ED)

Given sequences x and y and functions I , D and S that associate

costs with each insert, delete and substitute operations, what is the

minimum cost of any the edit sequence that transforms x into y.

Applications

Spell correction (Levenshtein automata)

diffIn the context of version control, reconcile/merge concurrent

updates by di�erent users.

DNA sequence alignment, evolutionary trees and other

applications in computational biology

15 / 56

Page 16: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Defn Towards Soln. Variations Seq. Alignment UNIX apps

Towards a dynamic programming solution (1)

What subproblems to consider?

Just like the LIS problem, we proceed from left to right, i.e.,

compute L[j] as j goes from1 to n

But there are two strings x and y for LCS, so the subproblems

correspond to prefixes of both x and y — there are O(mn) such

prefixes.

E X P O N E N T I A L

P O L Y N O M I A L

The subproblem above can be represented as E [7, 5].

E [i, j] represents the edit distance of x[1..i] and y[1..j]

16 / 56

Page 17: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Defn Towards Soln. Variations Seq. Alignment UNIX apps

Towards a dynamic programming solution (2)

For E [k, l], consider the following possibilities:

x[k] = y[l]: in this case, E [k, l] = E [k − 1, l − 1] — the edit

distance has not increased as we extend the string by one

character, since these characters match

x[k] 6= y[l]: Three possibilities

extend E[k − 1, l] by deleting x[k]: E[k, l] = E[k − 1, l] + DC(x[k])

extend E[k, l − 1] by inserting y[l]: E[k, l] = E[k, l − 1] + IC(y[l])

extend E[k − 1, l − 1] by substituting x[k] with y[l]:

E[k, l] = E[k − 1, l − 1] + SC(x[k], y[l])

17 / 56

Page 18: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Defn Towards Soln. Variations Seq. Alignment UNIX apps

Towards a dynamic programming solution (3)

E [k, l] = min( E [k − 1, l] + DC(x[k]), // ↓E [k, l − 1] + IC(y[l]), // →E [k − 1, l − 1] + SC(x[k], y[l])) // ↘

E [0, l] =∑l

i=1 IC(y[i])

E [k, 0] =∑k

i=1 DC(x[i])

Edit distance = E [m, n]

(Recall: m and n are lengths of strings x and y)

18 / 56

Page 19: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Defn Towards Soln. Variations Seq. Alignment UNIX apps

Towards a dynamic programming solution (4)Figure 6.4 (a) The table of subproblems. Entries E(i− 1, j − 1), E(i− 1, j), and E(i, j − 1) areneeded to fill in E(i, j). (b) The final table of values found by dynamic programming.

(a)

i

j − 1 j

i − 1

m GOAL

n

(b)

P O L Y N O M I A L0 1 2 3 4 5 6 7 8 9 10

E 1 1 2 3 4 5 6 7 8 9 10X 2 2 2 3 4 5 6 7 8 9 10P 3 2 3 3 4 5 6 7 8 9 10O 4 3 2 3 4 5 5 6 7 8 9N 5 4 3 3 4 4 5 6 7 8 9E 6 5 4 4 4 5 5 6 7 8 9N 7 6 5 5 5 4 5 6 7 8 9T 8 7 6 6 6 5 5 6 7 8 9I 9 8 7 7 7 6 6 6 6 7 8A 10 9 8 8 8 7 7 7 7 6 7L 11 10 9 8 9 8 8 8 8 7 6

for i = 0, 1, 2, . . . ,m:E(i, 0) = i

for j = 1, 2, . . . , n:E(0, j) = j

for i = 1, 2, . . . ,m:for j = 1, 2, . . . , n:

E(i, j) = min{E(i − 1, j) + 1, E(i, j − 1) + 1, E(i − 1, j − 1) + diff(i, j)}return E(m,n)

This procedure fills in the table row by row, and left to right within each row. Each entry takesconstant time to fill in, so the overall running time is just the size of the table, O(mn).

And in our example, the edit distance turns out to be 6:

E X P O N E N − T I A L− − P O L Y N O M I A L

The underlying dagEvery dynamic program has an underlying dag structure: think of each node as representing asubproblem, and each edge as a precedence constraint on the order in which the subproblemscan be tackled. Having nodes u1, . . . , uk point to v means “subproblem v can only be solvedonce the answers to u1, . . . , uk are known.”In our present edit distance application, the nodes of the underlying dag correspond to

subproblems, or equivalently, to positions (i, j) in the table. Its edges are the precedenceconstraints, of the form (i−1, j) → (i, j), (i, j−1) → (i, j), and (i−1, j−1) → (i, j) (Figure 6.5).In fact, we can take things a little further and put weights on the edges so that the edit

167

E[k, l] = min(E[k − 1, l] + DC(x[k]), // ↓E[k, l − 1] + IC(y[l]), // →E[k − 1, l − 1] + SC(x[k], y[l])) // ↘

19 / 56

Page 20: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Defn Towards Soln. Variations Seq. Alignment UNIX apps

Towards a dynamic programming solution (5)Figure 6.5 The underlying dag, and a path of length 6.

P O L Y N O M A LI

EXPONENT

AL

I

distances are given by shortest paths in the dag! To see this, set all edge lengths to 1, exceptfor {(i − 1, j − 1) → (i, j) : x[i] = y[j]} (shown dotted in the figure), whose length is 0. Thefinal answer is then simply the distance between nodes s = (0, 0) and t = (m,n). One possibleshortest path is shown, the one that yields the alignment we found earlier. On this path, eachmove down is a deletion, each move right is an insertion, and each diagonal move is either amatch or a substitution.By altering the weights on this dag, we can allow generalized forms of edit distance, in

which insertions, deletions, and substitutions have different associated costs.

168

E[k, l] = min(E[k−1, l]+DC(x[k]), E[k, l−1]+IC(y[l]), E[k−1, l−1]+SC(x[k], y[l]))20 / 56

Page 21: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Defn Towards Soln. Variations Seq. Alignment UNIX apps

Variations

Approximate prefix:

Is y approx. prefix of x? Decide based on

max1≤k≤mE [k, n]

Approximate su�x:

Initialize E [k, 0] = 0, use E [m, n] to determine if y is an

approximate su�x of x

Approximate substring:

Initialize E [k, 0] = 0, use max1≤k≤mE [k, n] to decide if y is an

approximate substring of x.

21 / 56

Page 22: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Defn Towards Soln. Variations Seq. Alignment UNIX apps

More variations

Supporting transpositions:

Use a fourth term within min:

E [k − 2, l − 2] + TC(x[k − 1]x[k], y[l − 1]y[l])

where TC is a small value for transposed characters, and ∞otherwise.

22 / 56

Page 23: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Defn Towards Soln. Variations Seq. Alignment UNIX apps

Similarity Vs Edit-distance

Edit-distance cannot be interpreted on its own, and needs to take

into account the lengths of strings involved.

Similarity can stand on its own.S[k, l] = max(S[k − 1, l]− DC(x[k]), // ↓

S[k, l − 1]− IC(y[l]), // →S[k − 1, l − 1]− SC(x[k], y[l])) // ↘

S[0, l] = −∑li=1 IC(y[i])

S[k, 0] = −∑ki=1 DC(x[i])

SC(r, r) should be negative, while IC and DC should be positive.

Formulations in biology are usually based on similarity

23 / 56

Page 24: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Defn Towards Soln. Variations Seq. Alignment UNIX apps

Global alignment (DNA, proteins, ...)

Similar to edit distance, but uses similarity scores

Gaps are scored di�erently: a contiguous sequence of n deletions does

not get penalized as much as n times a single deletion. (same applies to

insertions.)

Captures the idea that large deletions/insertions are much more likely in

nature than many small ones. (Think of chromosomal crossover during

meiotic cell division.)

Obvious formulation to support such gap metrics will lead to more

expensive algorithms: S[k, l] depends on S[k − d, l] and S[k, l − i] forany d < k and i < l . But a more careful formulation can get back to

quadratic time

Quadratic time still too slow for sequence alignment.24 / 56

Page 25: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Defn Towards Soln. Variations Seq. Alignment UNIX apps

Local alignment

Aimed at identifying local regions of similarity, specifically, the best

matches between subsequences of x and y

S[i, j] now represents the best alignment of some su�x of x[1..i]

and y[1..j].

A new term is introduced within max, namely, zero. This means

that costs can never become negative.

In other words, a subsequence does not incur costs because of

mismatches preceding the subsequence.

This change enables regions of similarity to stand out as positive

scores.

Initialize F [i, 0] = F [0, j] = 025 / 56

Page 26: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Defn Towards Soln. Variations Seq. Alignment UNIX apps

Improvements to ED AlgorithmLinear-space: O(mn) is not so good for large m, n.

Slow in terms of runtime

(Possibly) unacceptable in terms of space usage

If we are only interested in ED, we can use linear space:

retain only the last column computed.

But if want the actual edits, we need O(mn) space with the

algorithms discussed so far.

Linear-space algorithms developed to overcome this problem.

Better overall performance: O(md) space and runtime if the

maximum distance is limited to d .

In the interest of time, we won’t cover these extensions. They are

fairly involved, but not necessarily hard.26 / 56

Page 27: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Defn Towards Soln. Variations Seq. Alignment UNIX apps

LCS application: UNIX diff

Each line is considered a “character:”

Number of lines far smaller than number of characters

Di�erence at the level of lines is easy to convey to users

Much higher degree of confidence when things line up. Leads

to better results on programs.

But does not work that well on document types where line

breaks are not meaningful, e.g., text files where each paragraph

is a line.

Aligns lines that are preserved.

The edits are then printed in the familiar “di�” format.

27 / 56

Page 28: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Defn Towards Soln. Variations Seq. Alignment UNIX apps

LCS applications: version control, patch,...

Software patches often distributed as “di�s.” Programs such as

patch can apply these patches to source code or any other file.

Concurrent updates in version control systems are resolved using

LCS.

Let x be the version in the repository

Suppose that user A checks it out, edits it to get version y

Meanwhile, B also checks out x, edits it to z.

If x −→ y edits target a disjoint set of locations from those

targeted by the x −→ z edits, both edits can be committed;

otherwise a conflict is reported.

28 / 56

Page 29: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Defn Towards Soln. Variations Seq. Alignment UNIX apps

Summary

A general approach for optimization problems

Applicable in the presence of:

Optimal substructure

A natural ordering among subproblems

Numerous subproblems (often, exponential), but only some (polynomial

number) are distinct

29 / 56

Page 30: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Knapsack w/ Repetition 0-1 Knapsack

Knapsack Problem (Recap)

You have a choice of items you can pack in the sack

Maximize value of sack, subject to a weight limit of W

item calories/lb weight

bread 1100 5butter 3300 1tomato 80 1cucumber 55 2

Fractional knapsack: Fractional quantities acceptable

0-1 knapsack: Take all of one item or none at all

Knapsack w/ repetition: Take any integral number of items.

No polynomial solution for the last two, but dynamic programming can

solve them in pseudo-polynomial time of O(nW ).30 / 56

Page 31: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Knapsack w/ Repetition 0-1 Knapsack

Knapsack w/ repetition: Identify subproblems

Consider subproblems by reducing the weight

Compute K(W ) in terms of K(W ′) for W ′ < W

Which W ′ values to consider?

Since the ith item has a weight wi , we should consider only W −wi fordi�erent i .

Optimal substructure: If K(W ) is the optimal solution and it

includes item i , then K(W ) = K(W − wi) + vi

31 / 56

Page 32: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Knapsack w/ Repetition 0-1 Knapsack

Knapsack w/ repetition

KnapWithRep(w, v, n,W )

K [0] = 0

for w = 1 to W do

K [w] = max1≤i≤n,w[i]≤w(K [w − w[i]] + v[i])

return K [W ]

Fills the array K from left-to-right

If you construct the dag explicitly, you will see that we are looking for

the longest path!

Runtime: Outer loop iterates W times, max takes O(n) time, for a

total of O(nW ) time

Not polynomial: input size logarithmic (not linear) in W .

32 / 56

Page 33: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Knapsack w/ Repetition 0-1 Knapsack

0-1 Knapsack

Previous algorithm does not work. We need to keep track of which

items have been used up.

Key idea: Define 2-d array K [u, j] which computes optimal value for

weight u achievable using items 1..j

K [u, j] can be computed from K [_, j − 1]

Either item j is not included in the optimal solution. Then

K [u, j] = K [u, j−1]Or, j is included, so K [u, j] = v[j] + K [u−w[j], j−1]

So, fill up the array K as j goes from 1 to n

For each j , fill K as u goes from 1 to W

33 / 56

Page 34: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Knapsack w/ Repetition 0-1 Knapsack

0-1 Knapsack Algorithm

Knap01(w, v, n,W )

K [u, 0] = K [0, j] = 0, ∀1 ≤ u ≤ W , 1 ≤ j ≤ n

for j = 1 to n do

for u = 1 to W do

if w[j] > u then K [u, j] = K [u, j−1]else K [u, j] = max(K [u, j−1],

K [u−w[j], j−1] + v[j])

return K [W , n]

Runtime: As compared to unbounded knapsack, we have a nested

loop here, but the inner loop now executes in O(1) time. So

runtime is still O(nW )

34 / 56

Page 35: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Memoization

Chain Matrix MultiplicationFigure 6.6 A × B × C × D = (A × (B × C)) × D.(a)

× ×

C DBA

×

20 × 1 1 × 1050 × 20 10 × 100

(b)

×

A B × C

×

50 × 20 20 × 10

D10 × 100

(c)

A × (B × C)

×

50 × 10

D10 × 100

(d)

(A × (B × C)) × D50 × 100

6.5 Chain matrix multiplicationSuppose that we want to multiply four matrices, A×B ×C ×D, of dimensions 50× 20, 20× 1,1 × 10, and 10 × 100, respectively (Figure 6.6). This will involve iteratively multiplying twomatrices at a time. Matrix multiplication is not commutative (in general, A×B �= B×A), but itis associative, which means for instance that A× (B×C) = (A×B)×C. Thus we can computeour product of four matrices in many different ways, depending on how we parenthesize it.Are some of these better than others?Multiplying an m × n matrix by an n × p matrix takes mnp multiplications, to a good

enough approximation. Using this formula, let’s compare several different ways of evaluatingA × B × C × D:

Parenthesization Cost computation CostA × ((B × C) × D) 20 · 1 · 10 + 20 · 10 · 100 + 50 · 20 · 100 120, 200(A × (B × C)) × D 20 · 1 · 10 + 50 · 20 · 10 + 50 · 10 · 100 60, 200(A × B) × (C × D) 50 · 20 · 1 + 1 · 10 · 100 + 50 · 1 · 100 7, 000

As you can see, the order of multiplications makes a big difference in the final running time!Moreover, the natural greedy approach, to always perform the cheapest matrix multiplicationavailable, leads to the second parenthesization shown here and is therefore a failure.How do we determine the optimal order, if we want to compute A1 × A2 × · · · × An, where

the Ai’s are matrices with dimensions m0 × m1,m1 × m2, . . . ,mn−1 × mn, respectively? Thefirst thing to notice is that a particular parenthesization can be represented very naturally bya binary tree in which the individual matrices correspond to the leaves, the root is the finalproduct, and interior nodes are intermediate products (Figure 6.7). The possible orders inwhich to do the multiplication correspond to the various full binary trees with n leaves, whose

174

Figure 6.6 A × B × C × D = (A × (B × C)) × D.(a)

× ×

C DBA

×

20 × 1 1 × 1050 × 20 10 × 100

(b)

×

A B × C

×

50 × 20 20 × 10

D10 × 100

(c)

A × (B × C)

×

50 × 10

D10 × 100

(d)

(A × (B × C)) × D50 × 100

6.5 Chain matrix multiplicationSuppose that we want to multiply four matrices, A×B ×C ×D, of dimensions 50× 20, 20× 1,1 × 10, and 10 × 100, respectively (Figure 6.6). This will involve iteratively multiplying twomatrices at a time. Matrix multiplication is not commutative (in general, A×B �= B×A), but itis associative, which means for instance that A× (B×C) = (A×B)×C. Thus we can computeour product of four matrices in many different ways, depending on how we parenthesize it.Are some of these better than others?Multiplying an m × n matrix by an n × p matrix takes mnp multiplications, to a good

enough approximation. Using this formula, let’s compare several different ways of evaluatingA × B × C × D:

Parenthesization Cost computation CostA × ((B × C) × D) 20 · 1 · 10 + 20 · 10 · 100 + 50 · 20 · 100 120, 200(A × (B × C)) × D 20 · 1 · 10 + 50 · 20 · 10 + 50 · 10 · 100 60, 200(A × B) × (C × D) 50 · 20 · 1 + 1 · 10 · 100 + 50 · 1 · 100 7, 000

As you can see, the order of multiplications makes a big difference in the final running time!Moreover, the natural greedy approach, to always perform the cheapest matrix multiplicationavailable, leads to the second parenthesization shown here and is therefore a failure.How do we determine the optimal order, if we want to compute A1 × A2 × · · · × An, where

the Ai’s are matrices with dimensions m0 × m1,m1 × m2, . . . ,mn−1 × mn, respectively? Thefirst thing to notice is that a particular parenthesization can be represented very naturally bya binary tree in which the individual matrices correspond to the leaves, the root is the finalproduct, and interior nodes are intermediate products (Figure 6.7). The possible orders inwhich to do the multiplication correspond to the various full binary trees with n leaves, whose

174

Greedy

35 / 56

Page 36: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Memoization

Chain MM: Formulating Optimal Solution

Consider outermost multiplication:

(M1 × · · · ×Mj)× (Mj+1 × · · · ×Mn) — we could

compute j using dynamic programming

Optimal substructure: Note that the optimal solution for

(M1 × · · · ×Mj)× (Mj+1 × · · · ×Mn) must rely on

optimal solutions to M1 × · · · ×Mj and Mj+1 × · · · ×Mn

— or else we could improve the overall solution still

Cost function: This suggests a cost function C [k, l] to denote the

optimal cost of Mk × · · · ×Ml

36 / 56

Page 37: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Memoization

Chain MM: Formulating Optimal Solution

Figure 6.7 (a) ((A × B) × C) × D; (b) A × ((B × C) × D); (c) (A × (B × C)) × D.

D A

C

BA

D

B C

D

A

CB

(a) (b) (c)

number is exponential in n (Exercise 2.13). We certainly cannot try each tree, and with bruteforce thus ruled out, we turn to dynamic programming.

The binary trees of Figure 6.7 are suggestive: for a tree to be optimal, its subtrees mustalso be optimal. What are the subproblems corresponding to the subtrees? They are productsof the form Ai × Ai+1 × · · · × Aj . Let’s see if this works: for 1 ≤ i ≤ j ≤ n, define

C(i, j) =minimum cost of multiplying Ai × Ai+1 × · · · × Aj .

The size of this subproblem is the number of matrix multiplications, |j − i|. The smallestsubproblem is when i = j, in which case there’s nothing to multiply, so C(i, i) = 0. For j > i,consider the optimal subtree for C(i, j). The first branch in this subtree, the one at the top,will split the product in two pieces, of the form Ai × · · · × Ak and Ak+1 × · · · × Aj , for some kbetween i and j. The cost of the subtree is then the cost of these two partial products, plusthe cost of combining them: C(i, k) + C(k + 1, j) + mi−1 · mk · mj. And we just need to find thesplitting point k for which this is smallest:

C(i, j) = mini≤k<j

{C(i, k) + C(k + 1, j) + mi−1 · mk · mj} .

We are ready to code! In the following, the variable s denotes subproblem size.for i = 1 to n: C(i, i) = 0for s = 1 to n − 1:for i = 1 to n − s:

j = i + sC(i, j) = min{C(i, k) + C(k + 1, j) + mi−1 · mk · mj : i ≤ k < j}

return C(1, n)

The subproblems constitute a two-dimensional table, each of whose entries takes O(n) timeto compute. The overall running time is thus O(n3).

6.6 Shortest pathsWe started this chapter with a dynamic programming algorithm for the elementary task offinding the shortest path in a dag. We now turn to more sophisticated shortest-path problems

175

Subproblems correspond to one of the subtrees

Since order of multiplications can’t be changed, each subtree must

correspond to a “substring” of multiplications, i.e., Mk × · · · ×Ml

37 / 56

Page 38: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Memoization

Chain MM Algorithm

chainMM(m, n)

C [i, i] = 0 ∀1 ≤ i ≤ n

for s = 1 to n− 1 do

for k = 1 to n− s dol = k + s

C [k, l] = mink≤i<l(C [k, i] + C [i + 1, l] + mk−1 ∗mi ∗ml)

return C [1, n]

Note: mi ’s give us the dimension of matrices, specifically, Mi is an

mi−1 ×mi matrix

Complexity: O(n3)

38 / 56

Page 39: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Memoization

Recursive formulation of Dynamic programming

Recursive formulation can often simplify algorithm presentation,

avoiding need for explicit scheduling

Dependencies between subproblems can be left implicit an equation

such as K [w] = K [w − w[j]] + v[j]

A call to compute K [w] will automatically result in a call to compute

K [w − w[j]] because of dependency

Can avoid solving (some) unneeded subproblems

Memoization: Remember solutions to function calls so that repeat

invocations can use previously returned solutions

39 / 56

Page 40: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Memoization

Recursive 0-1 Knapsack Algorithm

BestVal01(u, j)

if u = 0 or j = 0 return 0

if w[j] > u return BestVal01(u, j−1)else return max(BestVal01(u, j−1), v[j] + BestVal01(u−w[j], j−1))

Much simpler in structure than iterative version

Unneeded entries are not computed, e.g. BestVal01(3, _) when all

weights involved are even

Exercise: Write a recursive version of ChainMM.

Note: mi ’s give us the dimension of matrices, specifically, Mi is an

mi−1 ×mi matrix

Complexity: O(n3)40 / 56

Page 41: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Iterative Solving Shortest Path SSP ASP I ASP II

Dyn. Prog. and Equation Solving

The crux of a dynamic programming solution: set up equation to

captures a problem’s optimal substructure.

The equation implies dependencies on subproblem solutions.

Dynamic programming algorithm: finds a schedule that respects

these dependencies

Typically, dependencies form a DAG: its topological sort yields the

right schedule

Cyclic dependencies: What if dependencies don’t form a DAG, but

is a general graph.

Key Idea: Use iterative techniques to solve (recursive) equations

41 / 56

Page 42: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Iterative Solving Shortest Path SSP ASP I ASP II

Fixpoints

A fixpoint is a solution to an equation:

Substitute the solution on the rhs, it yields the lhs.

Example 1: y = y2 − 12.

A fixpoint is y = 4, another is y = −3.rhs∣∣y=4 = 42 − 12 = 4 = lhs

∣∣y=4

— a fixpoint

42 / 56

Page 43: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Iterative Solving Shortest Path SSP ASP I ASP II

Fixpoints (2)

A fixpoint is a solution to an equation:Example 2: 7x = 2y − 4, y = x2 + y/x + 0.5.One fixpoint is x = 2, y = 9.

rhs1 |x=2,y=9 = 14 = lhs1|x=2,y=9

rhs2 |x=2,y=9 = 9 = lhs2|x=2,y=9

The term “fixpoint” emphasizes an iterative strategy.

Example techniques: Gauss-Seidel method (linear system of

equations), Newton’s method (finding roots), ...

43 / 56

Page 44: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Iterative Solving Shortest Path SSP ASP I ASP II

Convergence

Convergence is a major concern in iterative methods

For real-values variables, need to start close enough to the solution, or

else the iterative procedure may not converge.

In discrete domains, rely on monotonicity and well-foundedness.

Well-founded order: An order that has no infinite ascending chain (i.e.,

sequence of elements a0 < a1 < a2 < · · · where there is no

maximum)

Monotonicity: Successive iterations produce larger values with respect

to the order, i.e., rhs|soli ≥ soliResult: Start with an initial guess S0, note S i = rhs|S i−1 .

Due to monotonicity, S i ≥ S i−1, and

by well-foundedness, the chain S0, S 1, . . . can’t go on forever.

Hence iteration must converge, i.e., ∃k ∀i > k S i = Sk

44 / 56

Page 45: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Iterative Solving Shortest Path SSP ASP I ASP II

Role of Iterative Solutions

Fixpoint iteration resembles an inductive construction

S0 is the base case, S i construction from S i−1 is the induction step.

Drawback of explicit fixpoint iteration: hard to analyze the number

of iterations, and hence the runtime complexity

So, algorithms tend to rely on inductive, bottom-up constructions

with enough detail to reason about runtime.

Fixpoint iteration thus serves two main purposes:

When it is possible to bound its complexity in advance, e.g.,

non-recursive definitions

As an intermediate step that can be manually analyzed to uncover

inductive structure explicitly.

45 / 56

Page 46: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Iterative Solving Shortest Path SSP ASP I ASP II

Shortest Path Problems

Graphs with cycles: Natural example where the optimal substructure

equations are recursive.

Single source: dv = minu|(u,v)∈E (du + luv)

All pairs: duv = minw|(w,v)∈E (duw + lwv)

or, alternatively, duv = minw∈V (duw + dwv)

Our study of shortest path algorithms is based on fixpoint formulation

Shows how di�erent shortest path algorithms can be derived from thisperspective

Highlights the similarities between these algorithms, making them easierto understand/remember

46 / 56

Page 47: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Iterative Solving Shortest Path SSP ASP I ASP II

Single-source shortest paths

For the source vertex s, ds = 0. For v 6= s, we have the following equation

that captures the optimal substructure of the problem. We use the

convention luu = 0 for all u, as it simplifies the equation:

dv = minu|(u,v)∈E (du + luv)

Expressing edge lengths as a matrix, this equation becomes:

d1d2...dj...dn

=

l11 l21 · · · ln1112 l22 · · · ln2...

......

...l1j l2j · · · ljn...

......

...l1n l2n · · · lnn

d1d2...dj...dn

Matches the form of linear simultaneous equations, except that point-wise

multiplication and addition become the integer “+” and min operations

respectively.47 / 56

Page 48: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Iterative Solving Shortest Path SSP ASP I ASP II

Single-source shortest paths

SSP, written as a recursive matrix equation is:

D = LD

Now, solve this equation iteratively:

D0 = Z (Z is the column matrix consisting of all ∞ except ds = 0)

D1 = LZ

D2 = LD1 = L(LZ) = L2Z

Or, more generally, Di = LiZ

L is the generalized adjacency matrix, with entries being edge weights

(aka edge lengths) rather than booleans.

Side note: In this domain, multiplicative identity I is a matrix with zeroes

on the main diagonal, and ∞ in all other places.

So, L = I+ L, and hence L∗ = limr→∞ Lr48 / 56

Page 49: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Iterative Solving Shortest Path SSP ASP I ASP II

Single-source shortest paths

Recall the connection between paths and the entries in Li .

Thus, Di represents the shortest path using i or fewer edges!

Unless there are cycles with negative cost in the graph, all shortest

paths must have a length less than n, so:

Dn contains all of the shortest paths from the source vertex s

dni is the shortest path length from s to the vertex i .

Computing L× L takes O(n3), so overall SSP cost is O(n4).

49 / 56

Page 50: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Iterative Solving Shortest Path SSP ASP I ASP II

SSP: Improving E�ciency of Matrix Formulation

Compute the product from right: (L× (L× · · · (L× Z) · · · )Each multiplication involves n× n and 1× n matrix, so takes O(n2)

instead of O(n3) time.

Overall time reduced to O(n3).

To compute L× dj , enough to consider neighbors of j , and not all n

verticesd ij = mink|(k,j)∈E(d

i−1k + lkj)

Computes each matrix multiplication in O(|E |) time, so we have an

overall O(|E ||V |) algorithm.

We have stumbled onto the Bellman-Ford algorithm!

50 / 56

Page 51: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Iterative Solving Shortest Path SSP ASP I ASP II

Further Optimization on Iteration

d ij = mink|(k,j)∈E(d i−1k + lkj)

Optimization 1: If none of the dk ’s on the rhs changed in the

previous iteration, then d ij will be the same as d i−1j , so we can skip

recomputing it in this iteration.

Can be an useful improvement in practice, but asymptotic

complexity unchanged from O(|V ||E |)

51 / 56

Page 52: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Iterative Solving Shortest Path SSP ASP I ASP II

Optimizing Iteration

d ij = mink|(k,j)∈E(d i−1k + lkj))

Optimization 2: Wait to update dj on account of dk on the rhs until

dk ’s cost stabilizes

Avoids repeated propagation of min cost from k to j — instead

propagation takes place just once per edge, i.e., O(|E |) times

If all weights are non-negative, we can determine when costs

have stabilized for a vertex k

There must be at least r vertices whose shortest path from the

source s uses r or fewer edges.

In other words, if d ik has the rth lowest value, then d ik has stabilized

if r ≤ i

Voila! We have Dijkstra’s Algorithm!52 / 56

Page 53: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Iterative Solving Shortest Path SSP ASP I ASP II

All pairs Shortest Path (I)

d iuv = minw|(w,v)∈E(d i−1uw + lwv)

Note that duv depends on duw , but not on any dxy , where x 6= u.

So, solutions for dxy don’t a�ect duv .

i.e., we can solve a separate SSP, each with one of the vertices as

source

i.e., we run Dijkstra’s |V | times, overall complexity O(|E ||V | log |V |)

53 / 56

Page 54: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Iterative Solving Shortest Path SSP ASP I ASP II

All pairs Shortest Path (II)

d iuv = minw∈E (d i−1uw + d i−1wv )

Matrix formulation:D = D×D

with D0 = L.

Iterative formulation of the above equation yields

Di = L2i

We need only consider paths of length ≤ n, so stop at i = log n.

Thus, overall complexity is O(n3 log n), as each step requires O(n3)

multiplication.

We have just uncovered a variant of Floyd-Warshall algorithm!

Typically used with matrix-multiplication based formulation.

Matches ASP I complexity for dense graphs (|E | = Θ(|V |2))54 / 56

Page 55: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Iterative Solving Shortest Path SSP ASP I ASP II

Further Improving ASP II

Each step has O(n3) complexity as it considers all (u,w, v) combinations

Note: Blind fixpoint iteration “breaks” recursion by limiting path length.

Converts duv into d iuv where i is the path length

Worked well for SSP & ASP I, not so well for ASP II

Can we break cycles by limiting something else, say, vertices on the path?

Floyd-Warshall: Define dkuv as the shortest path from u to v that only uses

intermediate vertices 1 to k.

dkuv = min(dk−1uv , dk−1uk + dk−1kv )

Complexity: Need n iterations to consider k = 1, . . . , n but each iteration

considers only n2 pairs, so overall runtime becomes O(n3)

55 / 56

Page 56: CSE 548: (Design and) Analysis of Algorithms - …seclab.cs.sunysb.edu/sekar/cse548/ln/dynamic1.pdfTopological Sort A way to linearize DAGswhile ensuring that for every vertex, all

Intro LIS LCS Knapsack Chain MM Fixpoints & Shortest Paths Iterative Solving Shortest Path SSP ASP I ASP II

Summary

A versatile, robust technique to solve optimization problems

Key step: Identify optimal substructure in the form of an equation

for optimal cost

If equations are non-recursive, then either

identify underlying DAG, compute costs in topological order, or,

write down a memoized recursive procedure

For recursive equations, “break” recursion by introducing

additional parameters.

A fixpoint iteration can help expose such parameters.

Remember the choices made while computing the optimal cost,

use these to construct optimal solution.56 / 56