0% found this document useful (0 votes)
3 views

05 Dynamic Programming i i

The document discusses dynamic programming techniques, particularly focusing on sequence alignment and algorithms such as Hirschberg's and Bellman-Ford-Moore. It explains concepts like edit distance, gap and mismatch penalties, and applications in various fields including bioinformatics and machine translation. The document also presents theorems related to optimal alignment and computational complexity.

Uploaded by

ahmed.s.g9800
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views

05 Dynamic Programming i i

The document discusses dynamic programming techniques, particularly focusing on sequence alignment and algorithms such as Hirschberg's and Bellman-Ford-Moore. It explains concepts like edit distance, gap and mismatch penalties, and applications in various fields including bioinformatics and machine translation. The document also presents theorems related to optimal alignment and computational complexity.

Uploaded by

ahmed.s.g9800
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 64

6.

D YNAMIC P ROGRAMMING II

‣ sequence alignment
‣ Hirschberg′s algorithm
‣ Bellman–Ford–Moore algorithm
‣ distance-vector protocols
‣ negative cycles

Lecture slides by Kevin Wayne


Copyright © 2005 Pearson-Addison Wesley
http://www.cs.princeton.edu/~wayne/kleinberg-tardos

Last updated on 4/8/18 7:52 PM


6. D YNAMIC P ROGRAMMING II

‣ sequence alignment
‣ Hirschberg′s algorithm
‣ Bellman–Ford–Moore algorithm
‣ distance-vector protocols
‣ negative cycles

SECTION 6.6
String similarity

Q. How similar are two strings?

Ex. ocurrance and occurrence.

o c u r r a n c e – o c – u r r a n c e

o c c u r r e n c e o c c u r r e n c e

6 mismatches, 1 gap 1 mismatch, 1 gap

o c – u r r – a n c e

o c c u r r e – n c e

0 mismatches, 3 gaps

3
Edit distance

Edit distance. [Levenshtein 1966, Needleman–Wunsch 1970]


Gap penalty δ; mismatch penalty αpq.
Cost = sum of gap and mismatch penalties.

C T – G A C C T A C G

C T G G A C G A A C G

cost = δ + αCG + αTA


assuming αAA = αCC = αGG = αTT = 0

Applications. Bioinformatics, spell correction, machine translation,


speech recognition, information extraction, ...

Spokesperson confirms senior government adviser was found


Spokesperson said the senior adviser was found

4
BLOSUM matrix for proteins

5
Dynamic programming: quiz 1

What is edit distance between these two strings?

P A L E T T E P A L A T E

Assume gap penalty = 2 and mismatch penalty = 1.

A. 1

B. 2

C. 3

D. 4
P A L E T T E
E. 5
P A L A – T E

1 mismatch, 1 gap

6
Sequence alignment

Goal. Given two strings x1 x2 ... xm and y1 y2 ... yn , find a min-cost alignment.

Def. An alignment M is a set of ordered pairs xi – yj such that each character


appears in at most one pair and no crossings.

xi – yj and xiʹ – yj′ cross if i < i ′, but j > j ʹ


Def. The cost of an alignment M is:
cost(M ) = ∑ α xi y j + ∑ δ+ ∑ δ
(x , y j ) ∈ M i : x unmatched j : y unmatched
!i## "## $ !#i### #"#j#### $
mismatch gap

€ x1 x2 x3 x4 x5 x6

C T A C C – G

– T A C A T G

y1 y2 y3 y4 y5 y6

an alignment of CTACCG and TACATG


M = { x2–y1, x3–y2, x4–y3, x5–y4, x6–y6 }
7
Sequence alignment: problem structure

Def. OPT(i, j) = min cost of aligning prefix strings x1 x2 ... xi and y1 y2 ... yj.
Goal. OPT(m, n).

Case 1. OPT(i, j) matches xi – yj.


Pay mismatch for xi – yj + min cost of aligning x1 x2 ... xi–1 and y1 y2 ... yj–1.

Case 2a. OPT(i, j) leaves xi unmatched.


Pay gap for xi + min cost of aligning x1 x2 ... xi–1 and y1 y2 ... yj.

optimal substructure property


Case 2b. OPT(i, j) leaves yj unmatched. (proof via exchange argument)

Pay gap for yj + min cost of aligning x1 x2 ... xi and y1 y2 ... yj–1.

Bellman equation. j i=0


i j=0
OP T (i, j) = x i yj + OP T (i 1, j 1)
min + OP T (i 1, j)
+ OP T (i, j 1)
<latexit sha1_base64="60wUnMrLdnu23FwG/Nh5FwbDvxY=">AAADS3ichVJdaxNBFJ3dWq3xq62PvgwGpUUbdsViIRQKvvhmhKYtZEKYnb1JJp2dXWbu1oQlz/4aX/VX+AP8Hb6JD85uFslHwQsDl3PPPefOnYkyJS0GwU/P37qzfffezv3Gg4ePHj/Z3du/sGluBHRFqlJzFXELSmrookQFV5kBnkQKLqPr92X98gaMlak+x1kG/YSPtBxKwdFBgz2PfuycH8jXdHJIWfuUtRssgpHUhXCidt5gbTqhLAaFnL6kDGGKhRzOHZdKekoDylivdQxJv1EhtzMnG0yWSL3hxLjKxnxQTAdyNpiUna8ctZrvKHQTHoWHyyK11zrrP5yFToOBjmvnf9OmOAbzWVqYL5cHu82gFVRBN5OwTpqkjo7b6T6LU5EnoFEobm0vDDLsF9ygFKoUzy1kXFzzEfRcqnkCtl9UbzmnLxwS02Fq3NFIK3S5o+CJtbMkcsyE49iu10rwtlovx+FJv5A6yxG0WBgNc0UxpeXHoLE0IFDNXMKFkW5WKsbccIHu+6y4VNoZiJWbFNNcS5HGsIYqnKLh5RbD9Z1tJhdvWmHQCj+9bZ6d1PvcIc/Ic3JAQvKOnJEPpEO6RHhfvK/eN++7/8P/5f/2/yyovlf3PCUrsbX9Fz1PAsg=</latexit>

8
Sequence alignment: bottom-up algorithm

SEQUENCE-ALIGNMENT(m, n, x1, …, xm, y1, …, yn, δ, α)


________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

FOR i = 0 TO m
M [i, 0] ← i δ.
FOR j = 0 TO n
M [0, j] ← j δ.

FOR i = 1 TO m
FOR j = 1 TO n
M [i, j] ← min { αxi yj + M [i – 1, j – 1],
δ + M [i – 1, j], already
computed
δ + M [i, j – 1] }.

RETURN M [m, n].


________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

9
Sequence alignment: traceback

S I M I L A R I T Y

0 2 4 6 8 10 12 14 16 18 20

I 2 4 1 3 2 4 6 8 7 9 11

D 4 6 3 3 4 4 6 8 9 9 11

E 6 8 5 5 6 6 6 8 10 11 11

N 8 10 7 7 8 8 8 8 10 12 13

T 10 12 9 9 9 10 10 10 10 9 11

I 12 14 8 10 8 10 12 12 9 11 11

T 14 16 10 10 10 10 12 14 11 8 11

Y 16 18 12 12 12 12 12 14 13 10 7

10
Sequence alignment: analysis

Theorem. The DP algorithm computes the edit distance (and an optimal


alignment) of two strings of lengths m and n in Θ(mn) time and space.
Pf.
Algorithm computes edit distance.
Can trace back to extract optimal alignment itself. ▪

Theorem. [Backurs–Indyk 2015] If can compute edit distance of two strings


of length n in O(n2−ε) time for some constant ε > 0, then can solve SAT
with n variables and m clauses in poly(m) 2(1−δ) n time for some constant δ > 0.

which would disprove SETH


Edit Distance Cannot Be Computed (strong exponential time hypothesis)
in Strongly Subquadratic Time
(unless SETH is false)∗

Arturs Backurs† Piotr Indyk‡


MIT MIT

11
Abstract
Dynamic programming: quiz 3

It is easy to modify the DP algorithm for edit distance to…

A. Compute edit distance in O(mn) time and O(m + n) space.

B. Compute an optimal alignment in O(mn) time and O(m + n) space.

C. Both A and B.

D. Neither A nor B.

j i=0
i j=0
OP T (i, j) = x i yj + OP T (i 1, j 1)
min + OP T (i 1, j)
+ OP T (i, j 1)
<latexit sha1_base64="60wUnMrLdnu23FwG/Nh5FwbDvxY=">AAADS3ichVJdaxNBFJ3dWq3xq62PvgwGpUUbdsViIRQKvvhmhKYtZEKYnb1JJp2dXWbu1oQlz/4aX/VX+AP8Hb6JD85uFslHwQsDl3PPPefOnYkyJS0GwU/P37qzfffezv3Gg4ePHj/Z3du/sGluBHRFqlJzFXELSmrookQFV5kBnkQKLqPr92X98gaMlak+x1kG/YSPtBxKwdFBgz2PfuycH8jXdHJIWfuUtRssgpHUhXCidt5gbTqhLAaFnL6kDGGKhRzOHZdKekoDylivdQxJv1EhtzMnG0yWSL3hxLjKxnxQTAdyNpiUna8ctZrvKHQTHoWHyyK11zrrP5yFToOBjmvnf9OmOAbzWVqYL5cHu82gFVRBN5OwTpqkjo7b6T6LU5EnoFEobm0vDDLsF9ygFKoUzy1kXFzzEfRcqnkCtl9UbzmnLxwS02Fq3NFIK3S5o+CJtbMkcsyE49iu10rwtlovx+FJv5A6yxG0WBgNc0UxpeXHoLE0IFDNXMKFkW5WKsbccIHu+6y4VNoZiJWbFNNcS5HGsIYqnKLh5RbD9Z1tJhdvWmHQCj+9bZ6d1PvcIc/Ic3JAQvKOnJEPpEO6RHhfvK/eN++7/8P/5f/2/yyovlf3PCUrsbX9Fz1PAsg=</latexit>

12
6. D YNAMIC P ROGRAMMING II

‣ sequence alignment
‣ Hirschberg′s algorithm
‣ Bellman–Ford–Moore algorithm
‣ distance-vector protocols
‣ negative cycles

SECTION 6.7
Sequence alignment in linear space

Theorem. [Hirschberg] There exists an algorithm to find an optimal


alignment in O(mn) time and O(m + n) space.
Clever combination of divide-and-conquer and dynamic programming.
Inspired by idea of Savitch from complexity theory.

A = a x a 2 . . . a m if and only if there is a mapping F:


{1, 2, . . . , p} ~ {1, 2, . . . , m} such that f(i) = k only
if c~ is ak and F is a m o n o t o n e strictly increasing func-
tion (i.e. F(i) = u, F ( j ) = v, and i < j imply that
u<v).
Programming G. Manacher
String C is a c o m m o n subsequence of strings A and B
Techniques Editor
if and only if C is a subsequence of A and C is a subse-
A Linear Space quence of B.
The problem can be stated as follows: Given strings
Algorithm for A = aia.2.. "am and B = b x b 2 . . . b n (over alphabet Z),
find a string C = ClC2...cp such that C, is a c o m m o n
Computing Maximal subsequence of A and B and p is maximized.
We call C an example of a m a x i m a l c o m m o n subse-
Common Subsequences quence.
Notation. F o r string D = dld2. • • dr, Dk t is dkdk+l. • • d,
i f k < t ; d k d k _ x . . . d , i f k >__ t. When k > t, we shall
D.S. Hirschberg
write ]3kt so as to make clear that we are referring to a
Princeton University
"reverse substring" of D.
L(i, j ) is the m a x i m u m length possible of any com-
mon subsequence of Ax~ and B~s.
x[ lY is the concatenation of strings x and y.
The problem of finding a longest common subse- We present the algorithm described in [3], which
quence of two strings has been solved in quadratic time takes quadratic time and space.
and space. An algorithm is presented which will solve
this problem in quadratic time and in linear space.
Key Words and Phrases: subsequence, longest Algorithm A
common subsequence, string correction, editing
CR Categories: 3.63, 3.73, 3.79, 4.22, 5.25 Algorithm A accepts as input strings A~m and Bx.
and produces as output the matrix L (where the ele-
ment L(i, j ) corresponds to our notation of m a x i m u m
length possible of any c o m m o n subsequence of Axl and
B.).
Introduction ALGA (m, n, A, B, L)
1. Initialization: L(i, 0) ~ 0 [i=0...m]; 14
The problem of finding a longest c o m m o n subse- L(O,j) +-- 0 [j=0...n];
Hirschberg′s algorithm

Edit distance graph.


Let f (i, j) denote length of shortest path from (0,0) to (i, j).
Lemma: f (i, j) = OPT(i, j) for all i and j.

ε y1 y2 y3 y4 y5 y6

ε 0–0

x1
α xi y j
δ

x2 i–j
€ δ

x3 m–n
15
Hirschberg′s algorithm

Edit distance graph.


Let f (i, j) denote length of shortest path from (0,0) to (i, j).
Lemma: f (i, j) = OPT(i, j) for all i and j.

Pf of Lemma. [ by strong induction on i + j ]


Base case: f (0, 0) = OPT (0, 0) = 0.
Inductive hypothesis: assume true for all (iʹ, jʹ) with iʹ + jʹ < i + j.
Last edge on shortest path to (i, j) is from (i – 1, j – 1), (i – 1, j), or (i, j – 1).
Thus,
ff (i,
(i, j)
j) =
= min{
min{ x
xii y
yjj
+
+ ff (i
(i 1,
1, jj 1),
1), +
+ ff (i
(i 1,
1, j),
j), +
+ ff (i,
(i, jj 1)}
1)}

=
= min{
min{ x
xii y
yjj
+
+ OP
OP T
T (i
(i 1,
1, jj 1),
1), +
+ OP
OP T
T (i
(i 1,
1, j),
j), +
+ OP
OP T
T (i,
(i, jj 1)}
1)}
inductive =
hypothesis
= OP
OP T
T (i,
(i, j)
j) ▪

Bellman
α xi y j
δ
equation

i–j
€ δ 16
Hirschberg’s algorithm

Edit distance graph.


Let f (i, j) denote length of shortest path from (0,0) to (i, j).
Lemma: f (i, j) = OPT(i, j) for all i and j.
Can compute f (·, j) for any j in O(mn) time and O(m + n) space.

ε y1 y2 y3 y4 y5 y6

ε 0–0

x1

x2 i–j

x3 m–n
17
Hirschberg’s algorithm

Edit distance graph.


Let g(i, j) denote length of shortest path from (i, j) to (m, n).

ε y1 y2 y3 y4 y5 y6

ε 0–0

x1 i–j

x2

x3 m–n
18
Hirschberg’s algorithm

Edit distance graph.


Let g(i, j) denote length of shortest path from (i, j) to (m, n).
Can compute g(i, j) by reversing the edge orientations and
inverting the roles of (0, 0) and (m, n).

ε y1 y2 y3 y4 y5 y6

ε 0–0

δ
x1 i–j

δ xi+1 yj+1

x2

x3 m–n
19
Hirschberg’s algorithm

Edit distance graph.


Let g(i, j) denote length of shortest path from (i, j) to (m, n).
Can compute g(·, j) for any j in O(mn) time and O(m + n) space.

ε y1 y2 y3 y4 y5 y6

ε 0–0

x1 i–j

x2

x3 m–n
20
Hirschberg’s algorithm

Observation 1. The length of a shortest path that uses (i, j) is f (i, j) + g(i, j).

ε y1 y2 y3 y4 y5 y6

ε 0–0

x1 i–j

x2

x3 m–n
21
Hirschberg’s algorithm

Observation 2. let q be an index that minimizes f(q, n / 2) + g(q, n / 2).


Then, there exists a shortest path from (0, 0) to (m, n) that uses (q, n / 2).

n/2

ε y1 y2 y3 y4 y5 y6

ε 0–0

x1 i–j q

x2

x3 m–n
22
Hirschberg’s algorithm

Divide. Find index q that minimizes f (q, n / 2) + g(q, n / 2); save node i–j as
part of solution.

Conquer. Recursively compute optimal alignment in each piece.

n/2

ε y1 y2 y3 y4 y5 y6

ε 0–0

x1 i–j q

x2

x3 m–n
23
Hirschberg’s algorithm: space analysis

Theorem. Hirschberg’s algorithm uses Θ(m + n) space.

Pf.
Each recursive call uses Θ(m) space to compute f (·, n / 2) and g(·, n / 2).
Only Θ(1) space needs to be maintained per recursive call.
Number of recursive calls ≤ n. ▪

24
Dynamic programming: quiz 4

What is the worst-case running time of Hirschberg’s algorithm?

A. O(mn)

B. O(mn log m)

C. O(mn log n)

D. O(mn log m log n)

25
Hirschberg’s algorithm: running time analysis warmup

Theorem. Let T(m, n) = max running time of Hirschberg’s algorithm on


strings of lengths at most m and n. Then, T(m, n) = O(m n log n).

Pf.
T(m, n) is monotone nondecreasing in both m and n.
T(m, n) ≤ 2 T(m, n / 2) + O(m n)
⇒ T(m, n) = O(m n log n).

Remark. Analysis is not tight because two subproblems are of size


(q, n / 2) and (m – q, n / 2). Next, we prove T(m, n) = O(m n).

26
Hirschberg′s algorithm: running time analysis

Theorem. Let T(m, n) = max running time of Hirschberg’s algorithm on


strings of lengths at most m and n. Then, T(m, n) = O(m n).

Pf. [ by strong induction on m + n ]


O(m n) time to compute f ( ·, n / 2) and g ( ·, n / 2) and find index q.
T(q, n / 2) + T(m – q, n / 2) time for two recursive calls.
Choose constant c so that: T(m, 2) ≤ c m
T(2, n) ≤ c n
T(m, n) ≤ c m n + T(q, n / 2) + T(m – q, n / 2)
Claim. T(m, n) ≤ 2 c m n.
Base cases: m = 2 and n = 2.
Inductive hypothesis: T(m, n) ≤ 2 c m n for all (mʹ, nʹ) with mʹ + nʹ < m + n.

T(m, n) ≤ T(q, n / 2) + T(m – q, n / 2) + c m n


≤ 2 c q n / 2 + 2 c (m – q) n / 2 + c m n
inductive = cq n + cmn – cqn + cmn
hypothesis
= 2 cmn ▪
27
LONGEST COMMON SUBSEQUENCE

Problem. Given two strings x1 x2 ... xm and y1 y2 ... yn , find a common


subsequence that is as long as possible.

Alternative viewpoint. Delete some characters from x ; delete some


character from y ; a common subsequence if it results in the same string.

Ex. LCS(GGCACCACG, ACGGCGGATACG ) = GGCAACG.

Applications. Unix diff, git, bioinformatics.

28
6. D YNAMIC P ROGRAMMING II

‣ sequence alignment
‣ Hirschberg′s algorithm
‣ Bellman–Ford–Moore algorithm
‣ distance-vector protocols
‣ negative cycles

SECTION 6.8
Shortest paths with negative weights

Shortest-path problem. Given a digraph G = (V, E), with arbitrary edge


lengths vw, find shortest path from source node s to destination node t.

assume there exists a path


from every node to t

5
4 12
s 5
8
9
7

9 1
6
5 11
5
3 13

4 10 t

length of shortest path from s to t = 9 − 3 − 6 + 11 = 11


32
Shortest paths with negative weights: failed attempts

Dijkstra. May not produce shortest paths when edge lengths are negative.

s 6 v

8 Dijkstra selects the vertices in the order s, t, w, v


2 4
But shortest path from s to t is s→v→w→t.

t 3 w

Reweighting. Adding a constant to every edge length does not necessarily


make Dijkstra’s algorithm produce shortest paths.

s 14 v

Adding 8 to each edge weight changes the


10 0 shortest path from s→v→w→t to s→t.
12

t 11 w
33
Negative cycles

Def. A negative cycle is a directed cycle for which the sum of its edge
lengths is negative.

3 3

4 4

a negative cycle W : (W ) = e < 0


<latexit sha1_base64="RSPr2SRjQX4pLklN8jDnfDJBxfc=">AAACWHicbVDLSsNAFJ3ER+u7rUs3g0XQTU1EsKKC4MZlBWuFpoTJ9FYHJ5MwcyMtoZ/h17jVjxB/xknbha1emMvhnPuYe6JUCoOe9+W4S8srq6Xy2vrG5tb2TqVaezBJpjm0eSIT/RgxA1IoaKNACY+pBhZHEjrRy02hd15BG5Goexyl0IvZkxIDwRlaKqwcByDlYeeIBhf0qkiByeIwBxoIRTtjWsghFMJlkbywUvca3iToX+DPQJ3MohVWnVrQT3gWg0IumTFd30uxlzONgksYrweZgZTxF/YEXQsVi8H08sllY3pgmT4dJNo+hXTC/u7IWWzMKI5sZczw2SxqBfmf1s1w0OzlQqUZguLTRYNMUkxoYRPtCw0c5cgCxrWwf6X8mWnG0Zo5t2UyOwU+d0k+zJTgSR8WWIlD1GxsXfQXPfsL2ieN84Z/d1q/bs7sLJM9sk8OiU/OyDW5JS3SJpy8kXfyQT6db9dxS+7atNR1Zj27ZC7c2g+AELL2</latexit>
e W

34
Shortest paths and negative cycles

Lemma 1. If some v↝t path contains a negative cycle, then there does not
exist a shortest v↝t path.

Pf. If there exists such a cycle W, then can build a v↝t path of arbitrarily
negative length by detouring around W as many times as desired. ▪

v t
W

(W) < 0

35
Shortest paths and negative cycles

Lemma 2. If G has no negative cycles, then there exists a shortest v↝t path
that is simple (and has ≤ n – 1 edges).

Pf.
Among all shortest v↝t paths, consider one that uses the fewest edges.
If that path P contains a directed cycle W, can remove the portion of P
corresponding to W without increasing its length. ▪

v t
W

(W) ≥ 0

36
Shortest-paths and negative-cycle problems

Single-destination shortest-paths problem. Given a digraph G = (V, E) with


edge lengths vw (but no negative cycles) and a distinguished node t,
find a shortest v↝t path for every node v.

Negative-cycle problem. Given a digraph G = (V, E) with edge lengths vw,

find a negative cycle (if one exists).

1 5

4 2 3 5 3 3

t 4 4

shortest-paths tree negative cycle

37
Dynamic programming: quiz 5

Which subproblems to find shortest v↝t paths for every node v?

A. OPT(i, v) = length of shortest v↝t path that uses exactly i edges.

B. OPT(i, v) = length of shortest v↝t path that uses at most edges.

C. Neither A nor B.

38
Shortest paths with negative weights: dynamic programming

Def. OPT(i, v) = length of shortest v↝t path that uses ≤ i edges.

Goal. OPT(n – 1, v) for each v. by Lemma 2, if no negative cycles,


there exists a shortest v↝t path that is simple

Case 1. Shortest v↝t path uses ≤ i – 1 edges.


OPT(i, v) = OPT(i – 1, v). optimal substructure property
(proof via exchange argument)

Case 2. Shortest v↝t path uses exactly i edges.


if (v, w) is first edge in shortest such v↝t path, incur a cost of vw.

Then, select best w↝t path using ≤ i – 1 edges.

Bellman equation.

0 i=0 v=t

OP T (i, v) = i=0 v=t

min OP T (i 1, v), min {OP T (i 1, w) + vw } i>0


<latexit sha1_base64="XuctLUoOwYWddz7b+9lLeQH116s=">AAADV3icjVJdaxNBFJ1NtMb40aY++nIxKBFj2LWChVApiOCbEZq2kAlhdvZuMnR2djszmyYs+RX+Gl/1V/TX6GwaWpP44IWFu+eec+fs2QkzKYz1/WuvUr13f+dB7WH90eMnT3f3GvunJs01xz5PZarPQ2ZQCoV9K6zE80wjS0KJZ+HFp3J+NkVtRKpO7DzDYcLGSsSCM+ugUcNrf+2dtEQbpq+Bdo9ot05DHAtVcLfULOq068MroBZnFgoQMSxAwBH4txBTkcOmDrNA6aBzgMnQqahQsZ3/n5QqvNxQJ0IBlRg7tADahqXJt0Fps+18QkmgUiTCmlHRmrbhytl3ms+LO9mtxs3eAEUpR8X0yhG0GE8cYwHl5ru3La8fS6+0TlFFqzhGe02/4y8Ltptg1TTJqnou330apTxPUFkumTGDwM/ssGDaCi7R5ZsbzBi/YGMcuFaxBM2wWP7XBbx0SARxqt2jLCzRvxUFS4yZJ6FjJsxOzOasBP81G+Q2PhwWQmW5RcVvDopzCTaF8pJAJDRyK+euYVwL5xX4hGnGrbtKa6csd2fI176kmOVK8DTCDVTamdWsTDHYzGy7OX3XCfxO8O198/hwlWeNPCcvSIsE5AM5Jl9Ij/QJ9757P7yf3q/KdeV3dadau6FWvJXmGVmrauMP2c4DqA==</latexit>
(v,w) E

39
Shortest paths with negative weights: implementation

SHORTEST-PATHS(V, E, , t)
_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

FOREACH node v ∈ V :
M [0, v] ← ∞.
M [0, t] ← 0.
FOR i = 1 TO n – 1
FOREACH node v ∈ V :
M [i, v] ← M [i – 1, v].
FOREACH edge (v, w) ∈ E :
M [i, v] ← min { M [i, v], M [i – 1, w] + vw }.
_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

40
Shortest paths with negative weights: implementation

Theorem 1. Given a digraph G = (V, E) with no negative cycles, the DP


algorithm computes the length of a shortest v↝t path for every node v
in Θ(mn) time and Θ(n2) space.

Pf.
Table requires Θ(n2) space.
Each iteration i takes Θ(m) time since we examine each edge once. ▪

Finding the shortest paths.


Approach 1: Maintain successor[i, v] that points to next node
on a shortest v↝t path using ≤ i edges.
Approach 2: Compute optimal lengths M[i, v] and consider
only edges with M[i, v] = M[i – 1, w] + vw. Any directed path in this
subgraph is a shortest path.

41
Dynamic programming: quiz 6

It is easy to modify the DP algorithm for shortest paths to…

A. Compute lengths of shortest paths in O(mn) time and O(m + n) space.

B. Compute shortest paths in O(mn) time and O(m + n) space.

C. Both A and B.

D. Neither A nor B.

42
Shortest paths with negative weights: practical improvements

Space optimization. Maintain two 1D arrays (instead of 2D array).


d[v] = length of a shortest v↝t path that we have found so far.
successor[v] = next node on a v↝t path.

Performance optimization. If d[w] was not updated in iteration i – 1,


then no reason to consider edges entering w in iteration i.

43
Bellman–Ford–Moore: efficient implementation

BELLMAN–FORD–MOORE(V, E, c, t)
_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

FOREACH node v ∈ V :
d[v] ← ∞.
successor[v] ← null.
d[t] ← 0.
FOR i = 1 TO n – 1
FOREACH node w ∈ V :
IF (d[w] was updated in previous pass)
FOREACH edge (v, w) ∈ E :
pass i
IF (d[v] > d[w] + O(m) time
vw)

d[v] ← d[w] + vw.

successor[v] ← w.
IF (no d[⋅] value changed in pass i) STOP.
_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

44
Dynamic programming: quiz 7

Which properties must hold after pass i of Bellman–Ford–Moore?

A. d[v] = length of a shortest v↝t path using ≤ i edges.

B. d[v] = length of a shortest v↝t path using exactly i edges.

C. Both A and B.

D. Neither A nor B.

d[v] = 3 d[w] = 2 d[t] = 0


v 1 w 2 t

if node w considered before node v,


then d[v] = 3 after 1 pass

45
Bellman–Ford–Moore: analysis

Lemma 3. For each node v : d[v] is the length of some v↝t path.
Lemma 4. For each node v : d[v] is monotone non-increasing.

Lemma 5. After pass i, d[v] ≤ length of a shortest v↝t path using ≤ i edges.
Pf. [ by induction on i ]
Base case: i = 0.
Assume true after pass i.
Let P be any v↝t path with ≤ i + 1 edges.
Let (v, w) be first edge in P and let Pʹ be subpath from w to t.
By inductive hypothesis, at the end of pass i, d[w] ≤ c(Pʹ)
because Pʹ is a w↝t path with ≤ i edges.
and by Lemma 4,
After considering edge (v, w) in pass i + 1: d[w] does not increase

d[v] ≤ vw + d[w]
≤ vw + c(Pʹ)
and by Lemma 4,
d[v] does not increase = (P) ▪
46
Bellman–Ford–Moore: analysis

Theorem 2. Assuming no negative cycles, Bellman–Ford–Moore computes


the lengths of the shortest v↝t paths in O(mn) time and Θ(n) extra space.
Pf. Lemma 2 + Lemma 5. ▪

shortest path exists and after i passes,


has at most n−1 edges d[v] ≤ length of shortest path
that uses ≤ i edges

Remark. Bellman–Ford–Moore is typically faster in practice.


Edge (v, w) considered in pass i + 1 only if d[w] updated in pass i.
If shortest path has k edges, then algorithm finds it after ≤ k passes.

47
Dynamic programming: quiz 8

Assuming no negative cycles, which properties must hold throughout


Bellman–Ford–Moore?

A. Following successor[v] pointers gives a directed v↝t path.

B. If following successor[v] pointers gives a directed v↝t path,


then the length of that v↝t path is d[v].

C. Both A and B.

D. Neither A nor B.

48
Bellman–Ford–Moore: analysis

Claim. Throughout Bellman–Ford–Moore, following the successor[v]


pointers gives a directed path from v to t of length d[v].

Counterexample. Claim is false!


Length of successor v↝t path may be strictly shorter than d[v].

consider nodes in order: t, 1, 2, 3

successor[2] = 1 successor[1] = t
d[2] = 20 d[1] = 10 d[t] = 0
2 10 1 10 t

1 1

successor[3] = t 3
d[3] = 1
49
Bellman–Ford–Moore: analysis

Claim. Throughout Bellman–Ford–Moore, following the successor[v]


pointers gives a directed path from v to t of length d[v].

Counterexample. Claim is false!


Length of successor v↝t path may be strictly shorter than d[v].

consider nodes in order: t, 1, 2, 3

successor[2] = 1 successor[1] = 3
d[2] = 20 d[1] = 2 d[t] = 0
2 10 1 10 t

1 1

successor[3] = t 3
d[3] = 1
50
Bellman–Ford–Moore: analysis

Claim. Throughout Bellman–Ford–Moore, following the successor[v]


pointers gives a directed path from v to t of length d[v].

Counterexample. Claim is false!


Length of successor v↝t path may be strictly shorter than d[v].
If negative cycle, successor graph may have directed cycles.

consider nodes in order: t, 1, 2, 3, 4

d[3] = 10 d[2] = 8
3 2 2
9 d[t] = 0
t
1 3

4 8 1

d[4] = 11 d[1] = 5 51
Bellman–Ford–Moore: analysis

Claim. Throughout Bellman–Ford–Moore, following the successor[v]


pointers gives a directed path from v to t of length d[v].

Counterexample. Claim is false!


Length of successor v↝t path may be strictly shorter than d[v].
If negative cycle, successor graph may have directed cycles.

consider nodes in order: t, 1, 2, 3, 4

d[3] = 10 d[2] = 8
3 2 2
9 d[t] = 0
t
1 3

4 8 1

d[4] = 11 d[1] = 3 52
Bellman–Ford–Moore: finding the shortest paths

Lemma 6. Any directed cycle W in the successor graph is a negative cycle.


Pf.
If successor[v] = w, we must have d[v] ≥ d[w] + vw.

(LHS and RHS are equal when successor[v] is set; d[w] can only decrease;
d[v] decreases only when successor[v] is reset)
Let v1 → v2 → … → vk → v1 be the sequence of nodes in a directed cycle W.
Assume that (vk, v1) is the last edge in W added to the successor graph.
Just prior to that: d[v1] ≥ d[v2] + (v1, v2)
d[v2] ≥ d[v3] + (v2, v3)
⋮ ⋮ ⋮
d[vk–1] ≥ d[vk] + (vk–1, vk)
holds with strict inequality
d[vk] > d[v1] + (vk, v1) since we are updating d[vk]

Adding inequalities yields (v1, v2) + (v2, v3) + … + (vk–1, vk) + (vk, v1) < 0. ▪

W is a negative cycle

53
Bellman–Ford–Moore: finding the shortest paths

Theorem 3. Assuming no negative cycles, Bellman–Ford–Moore finds


shortest v↝t paths for every node v in O(mn) time and Θ(n) extra space.
Pf.
The successor graph cannot have a directed cycle. [Lemma 6]
Thus, following the successor pointers from v yields a directed path to t.
Let v = v1 → v2 → … → vk = t be the nodes along this path P.
Upon termination, if successor[v] = w, we must have d[v] = d[w] + vw.

(LHS and RHS are equal when successor[v] is set; d[·] did not change)
Thus, d[v1] = d[v2] + (v1, v2)
since algorithm
d[v2] = d[v3] + (v2, v3) terminated

⋮ ⋮ ⋮
d[vk–1] = d[vk] + (vk–1, vk)

Adding equations yields d[v] = d[t] + (v1, v2) + (v2, v3) + … + (vk–1, vk). ▪

length of path P
min length of any v↝t path 0
(Theorem 2)

54
Single-source shortest paths with negative weights

year worst case discovered by

1955 O(n4) Shimbel

1956 O(m n2 W) Ford

1958 O(m n) Bellman, Moore

1983 O(n3/4 m log W) Gabow

1989 O(m n1/2 log(nW)) Gabow–Tarjan

1993 O(m n1/2 log W) Goldberg

2005 O(n2.38 W) Sankowsi, Yuster–Zwick

2016 Õ(n10/7 log W) Cohen–Mądry–Sankowski–Vladu

20xx

single-source shortest paths with weights between –W and W

55
6. D YNAMIC P ROGRAMMING II

‣ sequence alignment
‣ Hirschberg′s algorithm
‣ Bellman–Ford–Moore algorithm
‣ distance-vector protocols
‣ negative cycles

SECTION 6.9
Distance-vector routing protocols

Communication network.
Node ≈ router.
Edge ≈ direct communication link.
non-negative, but
Length of edge ≈ latency of link. Bellman–Ford–Moore used anyway!

Dijkstra’s algorithm. Requires global information of network.

Bellman–Ford–Moore. Uses only local knowledge of neighboring nodes.

Synchronization. We don’t expect routers to run in lockstep. The order in


which each edges are processed in Bellman–Ford–Moore is not important.
Moreover, algorithm converges even if updates are asynchronous.

57
Distance-vector routing protocols

Distance-vector routing protocols. [ “routing by rumor” ]


Each router maintains a vector of shortest-path lengths to every other
node (distances) and the first hop on each path (directions).
Algorithm: each router performs n separate computations, one for each
potential destination node.

Ex. RIP, Xerox XNS RIP, Novell’s IPX RIP, Cisco’s IGRP, DEC’s DNA Phase IV,
AppleTalk’s RTMP.

Caveat. Edge lengths may change during algorithm (or fail completely).

suppose this edge


1 gets deleted

s 1 v 1 t

d(s) = 2 d(v) = 1 d(t) = 0

“counting to infinity” 58
Path-vector routing protocols

not just the distance


Link-state routing protocols. and first hop
Each router stores the whole network topology.
Based on Dijkstra’s algorithm.
Avoids “counting-to-infinity” problem and related difficulties.
Requires significantly more storage.

Ex. Border Gateway Protocol (BGP), Open Shortest Path First (OSPF).

59
6. D YNAMIC P ROGRAMMING II

‣ sequence alignment
‣ Hirschberg′s algorithm
‣ Bellman–Ford–Moore algorithm
‣ distance vector protocol
‣ negative cycles

SECTION 6.10
Detecting negative cycles

Negative cycle detection problem. Given a digraph G = (V, E), with edge
lengths vw, find a negative cycle (if one exists).

5 6

3 2 4 3 3

4 4

61
Detecting negative cycles: application

Currency conversion. Given n currencies and exchange rates between pairs


of currencies, is there an arbitrage opportunity?

Remark. Fastest algorithm very valuable!

0.741 * 1.366 * .995 = 1.00714497


EUR
0.
88
350 8
1.

1.4
66
741

1.3
0. 1.

33
12
6
0.657
USD GBP
1. 1.521
06
1 8
53
1.0

14
1
11

1.6
32

0
0.9

0.6

2
0.7

0.6
5
.6
95

0. 98
0 94
3
1.049
CAD CHF
0.953
62
Detecting negative cycles

Lemma 7. If OPT(n, v) = OPT(n – 1, v) for every node v, then no negative cycles.


Pf. The OPT(n, v) values have converged ⇒ shortest v↝t path exists. ▪

Lemma 8. If OPT(n, v) < OPT(n – 1, v) for some node v, then (any) shortest v↝t
path of length ≤ n contains a cycle W. Moreover W is a negative cycle.

Pf. [by contradiction]


Since OPT(n, v) < OPT(n – 1, v), we know that shortest v↝t path P has
exactly n edges.
By pigeonhole principle, the path P must contain a repeated node x.
Let W be any cycle in P.
Deleting W yields a v↝t path with < n edges ⇒ W is a negative cycle. ▪

x
v t
W

c(W) < 0 63
Detecting negative cycles

Theorem 4. Can find a negative cycle in Θ(mn) time and Θ(n2) space.
Pf.
Add new sink node t and connect all nodes to t with 0-length edge.
G has a negative cycle iff G ʹ has a negative cycle.
Case 1. [ OPT(n, v) = OPT(n – 1, v) for every node v ]
By Lemma 7, no negative cycles.
Case 2. [ OPT(n, v) < OPT(n – 1, v) for some node v ]
Using proof of Lemma 8, can extract negative cycle from v↝t path.
(cycle cannot contain t since no edge leaves t) ▪

5 6 G′

0
0
3 2 4 3 3 t
0
0
4 4

64
Detecting negative cycles

Theorem 5. Can find a negative cycle in O(mn) time and O(n) extra space.
Pf.
Run Bellman–Ford–Moore on G ʹ for nʹ = n + 1 passes (instead of nʹ – 1).
If no d[v] values updated in pass nʹ, then no negative cycles.
Otherwise, suppose d[s] updated in pass nʹ.
Define pass(v) = last pass in which d[v] was updated.
Observe pass(s) = nʹ and pass(successor[v]) ≥ pass(v) – 1 for each v.
Following successor pointers, we must eventually repeat a node.
Lemma 6 ⇒ the corresponding cycle is a negative cycle. ▪

Remark. See p. 304 for improved version and early termination rule.
(Tarjan’s subtree disassembly trick)

65
Dynamic programming: quiz 9

How difficult to find a negative cycle in an undirected graph?

A. O(m log n)

B. O(mn)

C. O(mn + n2 log n)

D. O(n2.38)
Chapter 46
E. No poly-time algorithm is known.
Chapter Data
46 Structures for Weighted Matching and
Nearest Common Ancestors with Linking

Structures
Data Harold for Weighted
N. Gabow* Matching and
Nearest Common Ancestors with Linking

Harold N. Gabow*

Abstract. This paper shows that the weighted match- optimization; detailed discussions are in [L, LP, PS].
ing problem on general graphs can be solved in time Edmonds gave the first polynomial-time algorithm for
O(n(m + n log n)), f or n and m the number of vertices weighted matching [El. Several implementations of Ed-
and edges, respectively. This was previously known monds’ algorithm have been proposed, with increas-
Abstract. only This forpaper that the Itweighted
shows graphs.
bipartite also showsmatch- optimization;
that a sequence detailedfast discussions
ingly running times: [L, LP,[G73,
are in O(n3) PS]. L], O(mn log n)
on general graphs can be solved
ing problemof m nca and link operations on n nodes can be pro-in time Edmonds gave [BD, GMG], O(n(m log Tog log 2++,nfor + n log n))
the first polynomial-time algorithm
O(n(m + n log n)), f or n and m the number
cessed on-line in time O(ma(m, n)+n). of vertices weighted
This was previ- Several implementations
‘[GGS].[El.Edmonds’
matching Ed-
algorithm is aofgeneralization of the’
and edges,ously respectively. This was previously known
known only for a restricted type of link operation. monds’ algorithm have been proposed, with increas-
Hungarian algorithm, due to Kuhn, for weighted match-
L], O(mn log n)
[G73, [K55,
O(n3) graphs
only for bipartite graphs. It also shows that a sequence ingly fast running ing ontimes:bipartite K56]. Fredman and Tar-
of m nca and link operations on n nodes can be pro- [BD, GMG], O(n(m log Tog log
jan implement the Hungarian2++,n + n log n))algorithm in O(n(m +
1. Introduction. This was previ- ‘[GGS]. Edmonds’ algorithm is a generalization of the’
cessed on-line in time O(ma(m, n)+n).
This paper solves two well-known problems in data n logn)) time using Fibonacci heaps [FT]. They ask if
ously known only for a restricted type of link operation. Hungarian algorithm, due to Kuhn, for weighted match-
structures and gives some related results. The ing starting general matching can be done in this
Tar- time. Our first
on bipartite graphs [K55, K56]. Fredman and 66
point is the matching problem for graphs, which jan leads to
implement result is an affirmative
the Hungarian algorithm answer: We
in O(n(m + show that a search
1. Introduction.
in Edmonds’ algorithm can be implemented in time

You might also like