all-pairs shortest paths - university of bristol

71
COMS21103 All-pairs shortest paths Ashley Montanaro [email protected] Department of Computer Science, University of Bristol Bristol, UK 5 November 2013 Ashley Montanaro [email protected] COMS21103: All-pairs shortest paths Slide 1/22

Upload: others

Post on 17-Apr-2022

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: All-pairs shortest paths - University of Bristol

COMS21103

All-pairs shortest paths

Ashley [email protected]

Department of Computer Science, University of BristolBristol, UK

5 November 2013

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 1/22

Page 2: All-pairs shortest paths - University of Bristol

All-pairs shortest pathsI We have seen two different ways of determining the shortest path

from a vertex s to all other vertices.

I What if we want to determine the shortest paths between all pairs ofvertices?

I For example, we might want to store these paths in a database forefficient access later.

I We could use Dijkstra (if the edge weights are non-negative) orBellman-Ford, with each vertex in turn as the source, which wouldachieve complexity O(VE + V 2 log V ) and O(V 2E) respectively.

I Can we do better?

Today: algorithms for general graphs with better runtimes than this.

I The Floyd-Warshall algorithm: time O(V 3).I Johnson’s algorithm: time O(VE + V 2 log V ).

Assume for simplicity that the input graph has no negative-weight cycles.

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 2/22

Page 3: All-pairs shortest paths - University of Bristol

All-pairs shortest pathsI We have seen two different ways of determining the shortest path

from a vertex s to all other vertices.I What if we want to determine the shortest paths between all pairs of

vertices?

I For example, we might want to store these paths in a database forefficient access later.

I We could use Dijkstra (if the edge weights are non-negative) orBellman-Ford, with each vertex in turn as the source, which wouldachieve complexity O(VE + V 2 log V ) and O(V 2E) respectively.

I Can we do better?

Today: algorithms for general graphs with better runtimes than this.

I The Floyd-Warshall algorithm: time O(V 3).I Johnson’s algorithm: time O(VE + V 2 log V ).

Assume for simplicity that the input graph has no negative-weight cycles.

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 2/22

Page 4: All-pairs shortest paths - University of Bristol

All-pairs shortest pathsI We have seen two different ways of determining the shortest path

from a vertex s to all other vertices.I What if we want to determine the shortest paths between all pairs of

vertices?I For example, we might want to store these paths in a database for

efficient access later.

I We could use Dijkstra (if the edge weights are non-negative) orBellman-Ford, with each vertex in turn as the source, which wouldachieve complexity O(VE + V 2 log V ) and O(V 2E) respectively.

I Can we do better?

Today: algorithms for general graphs with better runtimes than this.

I The Floyd-Warshall algorithm: time O(V 3).I Johnson’s algorithm: time O(VE + V 2 log V ).

Assume for simplicity that the input graph has no negative-weight cycles.

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 2/22

Page 5: All-pairs shortest paths - University of Bristol

All-pairs shortest pathsI We have seen two different ways of determining the shortest path

from a vertex s to all other vertices.I What if we want to determine the shortest paths between all pairs of

vertices?I For example, we might want to store these paths in a database for

efficient access later.I We could use Dijkstra (if the edge weights are non-negative) or

Bellman-Ford, with each vertex in turn as the source, which wouldachieve complexity O(VE + V 2 log V ) and O(V 2E) respectively.

I Can we do better?

Today: algorithms for general graphs with better runtimes than this.

I The Floyd-Warshall algorithm: time O(V 3).I Johnson’s algorithm: time O(VE + V 2 log V ).

Assume for simplicity that the input graph has no negative-weight cycles.

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 2/22

Page 6: All-pairs shortest paths - University of Bristol

All-pairs shortest pathsI We have seen two different ways of determining the shortest path

from a vertex s to all other vertices.I What if we want to determine the shortest paths between all pairs of

vertices?I For example, we might want to store these paths in a database for

efficient access later.I We could use Dijkstra (if the edge weights are non-negative) or

Bellman-Ford, with each vertex in turn as the source, which wouldachieve complexity O(VE + V 2 log V ) and O(V 2E) respectively.

I Can we do better?

Today: algorithms for general graphs with better runtimes than this.

I The Floyd-Warshall algorithm: time O(V 3).I Johnson’s algorithm: time O(VE + V 2 log V ).

Assume for simplicity that the input graph has no negative-weight cycles.

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 2/22

Page 7: All-pairs shortest paths - University of Bristol

All-pairs shortest pathsI We have seen two different ways of determining the shortest path

from a vertex s to all other vertices.I What if we want to determine the shortest paths between all pairs of

vertices?I For example, we might want to store these paths in a database for

efficient access later.I We could use Dijkstra (if the edge weights are non-negative) or

Bellman-Ford, with each vertex in turn as the source, which wouldachieve complexity O(VE + V 2 log V ) and O(V 2E) respectively.

I Can we do better?

Today: algorithms for general graphs with better runtimes than this.

I The Floyd-Warshall algorithm: time O(V 3).I Johnson’s algorithm: time O(VE + V 2 log V ).

Assume for simplicity that the input graph has no negative-weight cycles.

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 2/22

Page 8: All-pairs shortest paths - University of Bristol

All-pairs shortest pathsI We have seen two different ways of determining the shortest path

from a vertex s to all other vertices.I What if we want to determine the shortest paths between all pairs of

vertices?I For example, we might want to store these paths in a database for

efficient access later.I We could use Dijkstra (if the edge weights are non-negative) or

Bellman-Ford, with each vertex in turn as the source, which wouldachieve complexity O(VE + V 2 log V ) and O(V 2E) respectively.

I Can we do better?

Today: algorithms for general graphs with better runtimes than this.

I The Floyd-Warshall algorithm: time O(V 3).I Johnson’s algorithm: time O(VE + V 2 log V ).

Assume for simplicity that the input graph has no negative-weight cycles.

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 2/22

Page 9: All-pairs shortest paths - University of Bristol

All-pairs shortest pathsI In the Floyd-Warshall algorithm, we assume we are given access to a

graph G with n vertices as a n × n adjacency matrix W . The weightsof the edges in G are represented as follows:

Wij =

0 if i = jthe weight of the edge i → j if such an edge exists∞ otherwise.

I We use the optimal substructure property of shortest paths (thetriangle inequality) to write down a dynamic programming recurrence.

I For a path p = p1, . . . ,pk , define the intermediate vertices of p to bethe vertices p2, . . . ,pk−1.

I Let d (k)ij be the weight of a shortest path from i to j such that the

intermediate vertices are all in the set {1, . . . , k}.I If there is no shortest path from i to j of this form, then d (k)

ij =∞.

I In the case k = 0, d (0)ij = Wij .

I On the other hand, for k = n, d (n)ij = δ(i , j).

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 3/22

Page 10: All-pairs shortest paths - University of Bristol

All-pairs shortest pathsI In the Floyd-Warshall algorithm, we assume we are given access to a

graph G with n vertices as a n × n adjacency matrix W . The weightsof the edges in G are represented as follows:

Wij =

0 if i = jthe weight of the edge i → j if such an edge exists∞ otherwise.

I We use the optimal substructure property of shortest paths (thetriangle inequality) to write down a dynamic programming recurrence.

I For a path p = p1, . . . ,pk , define the intermediate vertices of p to bethe vertices p2, . . . ,pk−1.

I Let d (k)ij be the weight of a shortest path from i to j such that the

intermediate vertices are all in the set {1, . . . , k}.I If there is no shortest path from i to j of this form, then d (k)

ij =∞.

I In the case k = 0, d (0)ij = Wij .

I On the other hand, for k = n, d (n)ij = δ(i , j).

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 3/22

Page 11: All-pairs shortest paths - University of Bristol

All-pairs shortest pathsI In the Floyd-Warshall algorithm, we assume we are given access to a

graph G with n vertices as a n × n adjacency matrix W . The weightsof the edges in G are represented as follows:

Wij =

0 if i = jthe weight of the edge i → j if such an edge exists∞ otherwise.

I We use the optimal substructure property of shortest paths (thetriangle inequality) to write down a dynamic programming recurrence.

I For a path p = p1, . . . ,pk , define the intermediate vertices of p to bethe vertices p2, . . . ,pk−1.

I Let d (k)ij be the weight of a shortest path from i to j such that the

intermediate vertices are all in the set {1, . . . , k}.I If there is no shortest path from i to j of this form, then d (k)

ij =∞.

I In the case k = 0, d (0)ij = Wij .

I On the other hand, for k = n, d (n)ij = δ(i , j).

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 3/22

Page 12: All-pairs shortest paths - University of Bristol

All-pairs shortest pathsI In the Floyd-Warshall algorithm, we assume we are given access to a

graph G with n vertices as a n × n adjacency matrix W . The weightsof the edges in G are represented as follows:

Wij =

0 if i = jthe weight of the edge i → j if such an edge exists∞ otherwise.

I We use the optimal substructure property of shortest paths (thetriangle inequality) to write down a dynamic programming recurrence.

I For a path p = p1, . . . ,pk , define the intermediate vertices of p to bethe vertices p2, . . . ,pk−1.

I Let d (k)ij be the weight of a shortest path from i to j such that the

intermediate vertices are all in the set {1, . . . , k}.

I If there is no shortest path from i to j of this form, then d (k)ij =∞.

I In the case k = 0, d (0)ij = Wij .

I On the other hand, for k = n, d (n)ij = δ(i , j).

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 3/22

Page 13: All-pairs shortest paths - University of Bristol

All-pairs shortest pathsI In the Floyd-Warshall algorithm, we assume we are given access to a

graph G with n vertices as a n × n adjacency matrix W . The weightsof the edges in G are represented as follows:

Wij =

0 if i = jthe weight of the edge i → j if such an edge exists∞ otherwise.

I We use the optimal substructure property of shortest paths (thetriangle inequality) to write down a dynamic programming recurrence.

I For a path p = p1, . . . ,pk , define the intermediate vertices of p to bethe vertices p2, . . . ,pk−1.

I Let d (k)ij be the weight of a shortest path from i to j such that the

intermediate vertices are all in the set {1, . . . , k}.I If there is no shortest path from i to j of this form, then d (k)

ij =∞.

I In the case k = 0, d (0)ij = Wij .

I On the other hand, for k = n, d (n)ij = δ(i , j).

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 3/22

Page 14: All-pairs shortest paths - University of Bristol

All-pairs shortest pathsI In the Floyd-Warshall algorithm, we assume we are given access to a

graph G with n vertices as a n × n adjacency matrix W . The weightsof the edges in G are represented as follows:

Wij =

0 if i = jthe weight of the edge i → j if such an edge exists∞ otherwise.

I We use the optimal substructure property of shortest paths (thetriangle inequality) to write down a dynamic programming recurrence.

I For a path p = p1, . . . ,pk , define the intermediate vertices of p to bethe vertices p2, . . . ,pk−1.

I Let d (k)ij be the weight of a shortest path from i to j such that the

intermediate vertices are all in the set {1, . . . , k}.I If there is no shortest path from i to j of this form, then d (k)

ij =∞.

I In the case k = 0, d (0)ij = Wij .

I On the other hand, for k = n, d (n)ij = δ(i , j).

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 3/22

Page 15: All-pairs shortest paths - University of Bristol

All-pairs shortest pathsI In the Floyd-Warshall algorithm, we assume we are given access to a

graph G with n vertices as a n × n adjacency matrix W . The weightsof the edges in G are represented as follows:

Wij =

0 if i = jthe weight of the edge i → j if such an edge exists∞ otherwise.

I We use the optimal substructure property of shortest paths (thetriangle inequality) to write down a dynamic programming recurrence.

I For a path p = p1, . . . ,pk , define the intermediate vertices of p to bethe vertices p2, . . . ,pk−1.

I Let d (k)ij be the weight of a shortest path from i to j such that the

intermediate vertices are all in the set {1, . . . , k}.I If there is no shortest path from i to j of this form, then d (k)

ij =∞.

I In the case k = 0, d (0)ij = Wij .

I On the other hand, for k = n, d (n)ij = δ(i , j).

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 3/22

Page 16: All-pairs shortest paths - University of Bristol

A dynamic-programming recurrenceLet p be a shortest (i.e. minimum-weight) path from i to j with allintermediate vertices in the set {1, . . . , k}.

Then observe that:

I If k is not an intermediate vertex of p, then p is also a minimum-weightpath with all intermediate vertices in the set {1, . . . , k − 1}.

I If k is an intermediate vertex of p, then we decompose p into a path p1between i and k , and a path p2 between k and j .

I By the triangle inequality, p1 is a shortest path from i to k . Further, itdoes not include k (as otherwise it would contain a cycle).

I The same reasoning shows that p2 is a shortest path from k to j .

We therefore have the following recurrence for d (k)ij :

d (k)ij =

{Wij if k = 0

min{

d (k−1)ij ,d (k−1)

ik + d (k−1)kj

}if k ≥ 1.

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 4/22

Page 17: All-pairs shortest paths - University of Bristol

A dynamic-programming recurrenceLet p be a shortest (i.e. minimum-weight) path from i to j with allintermediate vertices in the set {1, . . . , k}. Then observe that:

I If k is not an intermediate vertex of p, then p is also a minimum-weightpath with all intermediate vertices in the set {1, . . . , k − 1}.

I If k is an intermediate vertex of p, then we decompose p into a path p1between i and k , and a path p2 between k and j .

I By the triangle inequality, p1 is a shortest path from i to k . Further, itdoes not include k (as otherwise it would contain a cycle).

I The same reasoning shows that p2 is a shortest path from k to j .

We therefore have the following recurrence for d (k)ij :

d (k)ij =

{Wij if k = 0

min{

d (k−1)ij ,d (k−1)

ik + d (k−1)kj

}if k ≥ 1.

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 4/22

Page 18: All-pairs shortest paths - University of Bristol

A dynamic-programming recurrenceLet p be a shortest (i.e. minimum-weight) path from i to j with allintermediate vertices in the set {1, . . . , k}. Then observe that:

I If k is not an intermediate vertex of p, then p is also a minimum-weightpath with all intermediate vertices in the set {1, . . . , k − 1}.

I If k is an intermediate vertex of p, then we decompose p into a path p1between i and k , and a path p2 between k and j .

I By the triangle inequality, p1 is a shortest path from i to k . Further, itdoes not include k (as otherwise it would contain a cycle).

I The same reasoning shows that p2 is a shortest path from k to j .

We therefore have the following recurrence for d (k)ij :

d (k)ij =

{Wij if k = 0

min{

d (k−1)ij ,d (k−1)

ik + d (k−1)kj

}if k ≥ 1.

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 4/22

Page 19: All-pairs shortest paths - University of Bristol

A dynamic-programming recurrenceLet p be a shortest (i.e. minimum-weight) path from i to j with allintermediate vertices in the set {1, . . . , k}. Then observe that:

I If k is not an intermediate vertex of p, then p is also a minimum-weightpath with all intermediate vertices in the set {1, . . . , k − 1}.

I If k is an intermediate vertex of p, then we decompose p into a path p1between i and k , and a path p2 between k and j .

I By the triangle inequality, p1 is a shortest path from i to k . Further, itdoes not include k (as otherwise it would contain a cycle).

I The same reasoning shows that p2 is a shortest path from k to j .

We therefore have the following recurrence for d (k)ij :

d (k)ij =

{Wij if k = 0

min{

d (k−1)ij ,d (k−1)

ik + d (k−1)kj

}if k ≥ 1.

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 4/22

Page 20: All-pairs shortest paths - University of Bristol

A dynamic-programming recurrenceLet p be a shortest (i.e. minimum-weight) path from i to j with allintermediate vertices in the set {1, . . . , k}. Then observe that:

I If k is not an intermediate vertex of p, then p is also a minimum-weightpath with all intermediate vertices in the set {1, . . . , k − 1}.

I If k is an intermediate vertex of p, then we decompose p into a path p1between i and k , and a path p2 between k and j .

I By the triangle inequality, p1 is a shortest path from i to k . Further, itdoes not include k (as otherwise it would contain a cycle).

I The same reasoning shows that p2 is a shortest path from k to j .

We therefore have the following recurrence for d (k)ij :

d (k)ij =

{Wij if k = 0

min{

d (k−1)ij ,d (k−1)

ik + d (k−1)kj

}if k ≥ 1.

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 4/22

Page 21: All-pairs shortest paths - University of Bristol

A dynamic-programming recurrenceLet p be a shortest (i.e. minimum-weight) path from i to j with allintermediate vertices in the set {1, . . . , k}. Then observe that:

I If k is not an intermediate vertex of p, then p is also a minimum-weightpath with all intermediate vertices in the set {1, . . . , k − 1}.

I If k is an intermediate vertex of p, then we decompose p into a path p1between i and k , and a path p2 between k and j .

I By the triangle inequality, p1 is a shortest path from i to k . Further, itdoes not include k (as otherwise it would contain a cycle).

I The same reasoning shows that p2 is a shortest path from k to j .

We therefore have the following recurrence for d (k)ij :

d (k)ij =

{Wij if k = 0

min{

d (k−1)ij ,d (k−1)

ik + d (k−1)kj

}if k ≥ 1.

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 4/22

Page 22: All-pairs shortest paths - University of Bristol

The Floyd-Warshall algorithmBased on the above recurrence, we can give the following bottom-upalgorithm for computing d (n)

ij for all pairs i , j .

FloydWarshall(W )

1. d (0) ←W2. for k = 1 to n3. for i = 1 to n4. for j = 1 to n

5. d (k)ij ← min(d (k−1)

ij ,d (k−1)ik + d (k−1)

kj )

6. return d (n).

I The time complexity is clearly O(n3) and the algorithm is very simple.I Correctness follows from the argument on the previous slide.

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 5/22

Page 23: All-pairs shortest paths - University of Bristol

The Floyd-Warshall algorithmBased on the above recurrence, we can give the following bottom-upalgorithm for computing d (n)

ij for all pairs i , j .

FloydWarshall(W )

1. d (0) ←W2. for k = 1 to n3. for i = 1 to n4. for j = 1 to n

5. d (k)ij ← min(d (k−1)

ij ,d (k−1)ik + d (k−1)

kj )

6. return d (n).

I The time complexity is clearly O(n3) and the algorithm is very simple.I Correctness follows from the argument on the previous slide.

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 5/22

Page 24: All-pairs shortest paths - University of Bristol

The Floyd-Warshall algorithmBased on the above recurrence, we can give the following bottom-upalgorithm for computing d (n)

ij for all pairs i , j .

FloydWarshall(W )

1. d (0) ←W2. for k = 1 to n3. for i = 1 to n4. for j = 1 to n

5. d (k)ij ← min(d (k−1)

ij ,d (k−1)ik + d (k−1)

kj )

6. return d (n).

I The time complexity is clearly O(n3) and the algorithm is very simple.I Correctness follows from the argument on the previous slide.

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 5/22

Page 25: All-pairs shortest paths - University of Bristol

Example

Consider the following graph and its corresponding adjacency matrix:

1 2

34

1

1 4-1

0

2

0 1 ∞ ∞∞ 0 1 ∞2 4 0 0−1 ∞ ∞ 0

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 6/22

Page 26: All-pairs shortest paths - University of Bristol

Example

Consider the following graph and its corresponding adjacency matrix:

1 2

34

1

1 4-1

0

2

0 1 ∞ ∞∞ 0 1 ∞2 4 0 0−1 ∞ ∞ 0

d (1) =

0 1 ∞ ∞∞ 0 1 ∞2 3 0 0−1 0 ∞ 0

, d (2) =

0 1 2 ∞∞ 0 1 ∞2 3 0 0−1 0 1 0

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 6/22

Page 27: All-pairs shortest paths - University of Bristol

Example

Consider the following graph and its corresponding adjacency matrix:

1 2

34

1

1 4-1

0

2

0 1 ∞ ∞∞ 0 1 ∞2 4 0 0−1 ∞ ∞ 0

d (1) =

0 1 ∞ ∞∞ 0 1 ∞2 3 0 0−1 0 ∞ 0

, d (2) =

0 1 2 ∞∞ 0 1 ∞2 3 0 0−1 0 1 0

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 6/22

Page 28: All-pairs shortest paths - University of Bristol

Example

Consider the following graph and its corresponding adjacency matrix:

1 2

34

1

1 4-1

0

2

0 1 ∞ ∞∞ 0 1 ∞2 4 0 0−1 ∞ ∞ 0

d (3) =

0 1 2 23 0 1 12 3 0 0−1 0 1 0

, d (4) =

0 1 2 20 0 1 1−1 0 0 0−1 0 1 0

.

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 7/22

Page 29: All-pairs shortest paths - University of Bristol

Example

Consider the following graph and its corresponding adjacency matrix:

1 2

34

1

1 4-1

0

2

0 1 ∞ ∞∞ 0 1 ∞2 4 0 0−1 ∞ ∞ 0

d (3) =

0 1 2 23 0 1 12 3 0 0−1 0 1 0

, d (4) =

0 1 2 20 0 1 1−1 0 0 0−1 0 1 0

.

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 7/22

Page 30: All-pairs shortest paths - University of Bristol

Constructing the shortest pathsI We would like to construct a predecessor matrix Π such that Πij is the

predecessor vertex of j in a shortest path from i to j .

I We can do this in a similar way to computing the distance matrix. Wedefine a sequence of matrices Π(0), . . . ,Π(n) such that Π

(k)ij is the

predecessor of j in a shortest path from i to j only using vertices in theset {1, . . . , k}.

I Then, for k = 0,

Π(0)ij =

{nil if i = j or Wij =∞i if i 6= j and Wij 6=∞.

I For k ≥ 1, we have essentially the same recurrence as for d (k).Formally,

Π(k)ij =

(k−1)ij if d (k−1)

ij ≤ d (k−1)ik + d (k−1)

kj

Π(k−1)kj otherwise.

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 8/22

Page 31: All-pairs shortest paths - University of Bristol

Constructing the shortest pathsI We would like to construct a predecessor matrix Π such that Πij is the

predecessor vertex of j in a shortest path from i to j .I We can do this in a similar way to computing the distance matrix. We

define a sequence of matrices Π(0), . . . ,Π(n) such that Π(k)ij is the

predecessor of j in a shortest path from i to j only using vertices in theset {1, . . . , k}.

I Then, for k = 0,

Π(0)ij =

{nil if i = j or Wij =∞i if i 6= j and Wij 6=∞.

I For k ≥ 1, we have essentially the same recurrence as for d (k).Formally,

Π(k)ij =

(k−1)ij if d (k−1)

ij ≤ d (k−1)ik + d (k−1)

kj

Π(k−1)kj otherwise.

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 8/22

Page 32: All-pairs shortest paths - University of Bristol

Constructing the shortest pathsI We would like to construct a predecessor matrix Π such that Πij is the

predecessor vertex of j in a shortest path from i to j .I We can do this in a similar way to computing the distance matrix. We

define a sequence of matrices Π(0), . . . ,Π(n) such that Π(k)ij is the

predecessor of j in a shortest path from i to j only using vertices in theset {1, . . . , k}.

I Then, for k = 0,

Π(0)ij =

{nil if i = j or Wij =∞i if i 6= j and Wij 6=∞.

I For k ≥ 1, we have essentially the same recurrence as for d (k).Formally,

Π(k)ij =

(k−1)ij if d (k−1)

ij ≤ d (k−1)ik + d (k−1)

kj

Π(k−1)kj otherwise.

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 8/22

Page 33: All-pairs shortest paths - University of Bristol

Constructing the shortest pathsI We would like to construct a predecessor matrix Π such that Πij is the

predecessor vertex of j in a shortest path from i to j .I We can do this in a similar way to computing the distance matrix. We

define a sequence of matrices Π(0), . . . ,Π(n) such that Π(k)ij is the

predecessor of j in a shortest path from i to j only using vertices in theset {1, . . . , k}.

I Then, for k = 0,

Π(0)ij =

{nil if i = j or Wij =∞i if i 6= j and Wij 6=∞.

I For k ≥ 1, we have essentially the same recurrence as for d (k).Formally,

Π(k)ij =

(k−1)ij if d (k−1)

ij ≤ d (k−1)ik + d (k−1)

kj

Π(k−1)kj otherwise.

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 8/22

Page 34: All-pairs shortest paths - University of Bristol

The Floyd-Warshall algorithm with predecessorsFloydWarshall(W )

1. d (0) ←W2. for k = 1 to n3. for i = 1 to n4. for j = 1 to n

5. if d (k−1)ij ≤ d (k−1)

ik + d (k−1)kj

6. d (k)ij ← d (k−1)

ij

7. Π(k)ij ← Π

(k−1)ij

8. else9. d (k)

ij ← d (k−1)ik + d (k−1)

kj

10. Π(k)ij ← Π

(k−1)kj

11. return d (n).

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 9/22

Page 35: All-pairs shortest paths - University of Bristol

Johnson’s algorithm

I For sparse graphs with non-negative weight edges, running Dijkstrawith each vertex in turn as the source is more efficient than theFloyd-Warshall algorithm.

I Johnson’s algorithm uses Dijkstra’s algorithm to solve the all-pairsshortest paths problem for graphs which may have negative-weightedges. It is based around the idea of first reweighting G so that all theweights are non-negative, then using Dijkstra.

I For sparse graphs, its complexity O(VE + V 2 log V ) (the same asDijkstra) is faster than the Floyd-Warshall algorithm.

I We assume that we are given G as an adjacency list, and haveaccess to a weight function w(u, v) which tells us the weight of theedge u → v .

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 10/22

Page 36: All-pairs shortest paths - University of Bristol

Johnson’s algorithm

I For sparse graphs with non-negative weight edges, running Dijkstrawith each vertex in turn as the source is more efficient than theFloyd-Warshall algorithm.

I Johnson’s algorithm uses Dijkstra’s algorithm to solve the all-pairsshortest paths problem for graphs which may have negative-weightedges. It is based around the idea of first reweighting G so that all theweights are non-negative, then using Dijkstra.

I For sparse graphs, its complexity O(VE + V 2 log V ) (the same asDijkstra) is faster than the Floyd-Warshall algorithm.

I We assume that we are given G as an adjacency list, and haveaccess to a weight function w(u, v) which tells us the weight of theedge u → v .

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 10/22

Page 37: All-pairs shortest paths - University of Bristol

Johnson’s algorithm

I For sparse graphs with non-negative weight edges, running Dijkstrawith each vertex in turn as the source is more efficient than theFloyd-Warshall algorithm.

I Johnson’s algorithm uses Dijkstra’s algorithm to solve the all-pairsshortest paths problem for graphs which may have negative-weightedges. It is based around the idea of first reweighting G so that all theweights are non-negative, then using Dijkstra.

I For sparse graphs, its complexity O(VE + V 2 log V ) (the same asDijkstra) is faster than the Floyd-Warshall algorithm.

I We assume that we are given G as an adjacency list, and haveaccess to a weight function w(u, v) which tells us the weight of theedge u → v .

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 10/22

Page 38: All-pairs shortest paths - University of Bristol

Johnson’s algorithm

I For sparse graphs with non-negative weight edges, running Dijkstrawith each vertex in turn as the source is more efficient than theFloyd-Warshall algorithm.

I Johnson’s algorithm uses Dijkstra’s algorithm to solve the all-pairsshortest paths problem for graphs which may have negative-weightedges. It is based around the idea of first reweighting G so that all theweights are non-negative, then using Dijkstra.

I For sparse graphs, its complexity O(VE + V 2 log V ) (the same asDijkstra) is faster than the Floyd-Warshall algorithm.

I We assume that we are given G as an adjacency list, and haveaccess to a weight function w(u, v) which tells us the weight of theedge u → v .

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 10/22

Page 39: All-pairs shortest paths - University of Bristol

ClaimFor any edge u → v , define

w(u, v) := w(u, v) + h(u)− h(v),

where h is an arbitrary function mapping vertices to real numbers. Thenany path p = v0, . . . , vk is a shortest path from v0 to vk with respect to theweight function w if and only if it is a shortest path with respect to theweight function w .

ProofThe total weights of p under w and w are closely related:

k∑i=1

w(vi−1, vi ) =k∑

i=1

w(vi−1, vi ) + h(vi−1)− h(vi )

= h(v0)− h(vk ) +k∑

i=1

w(vi−1, vi ) . . .

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 11/22

Page 40: All-pairs shortest paths - University of Bristol

ClaimFor any edge u → v , define

w(u, v) := w(u, v) + h(u)− h(v),

where h is an arbitrary function mapping vertices to real numbers. Thenany path p = v0, . . . , vk is a shortest path from v0 to vk with respect to theweight function w if and only if it is a shortest path with respect to theweight function w .

ProofThe total weights of p under w and w are closely related:

k∑i=1

w(vi−1, vi ) =k∑

i=1

w(vi−1, vi ) + h(vi−1)− h(vi )

= h(v0)− h(vk ) +k∑

i=1

w(vi−1, vi ) . . .

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 11/22

Page 41: All-pairs shortest paths - University of Bristol

ClaimFor any edge u → v , define

w(u, v) := w(u, v) + h(u)− h(v),

where h is an arbitrary function mapping vertices to real numbers. Thenany path p = v0, . . . , vk is a shortest path from v0 to vk with respect to theweight function w if and only if it is a shortest path with respect to theweight function w .

ProofThe total weights of p under w and w are closely related:

k∑i=1

w(vi−1, vi ) =k∑

i=1

w(vi−1, vi ) + h(vi−1)− h(vi )

= h(v0)− h(vk ) +k∑

i=1

w(vi−1, vi ) . . .

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 11/22

Page 42: All-pairs shortest paths - University of Bristol

ClaimFor any edge u ← v , define

w(u, v) := w(u, v) + h(u)− h(v),

where h is an arbitrary function mapping vertices to real numbers. Thenany path p = v0, . . . , vk is a shortest path from v0 to vk with respect to theweight function w if and only if it is a shortest path with respect to theweight function w .

Proof

I So the weight of p under w only differs from its weight under w by anadditive term which does not depend on p.

I So p is a shortest path with respect to w if and only if it is a shortestpath with respect to w .

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 12/22

Page 43: All-pairs shortest paths - University of Bristol

ClaimFor any edge u ← v , define

w(u, v) := w(u, v) + h(u)− h(v),

where h is an arbitrary function mapping vertices to real numbers. Thenany path p = v0, . . . , vk is a shortest path from v0 to vk with respect to theweight function w if and only if it is a shortest path with respect to theweight function w .

Proof

I So the weight of p under w only differs from its weight under w by anadditive term which does not depend on p.

I So p is a shortest path with respect to w if and only if it is a shortestpath with respect to w .

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 12/22

Page 44: All-pairs shortest paths - University of Bristol

Negative-weight cycles

ClaimA graph has a negative-weight cycle under weight function w if and only ifif has one under weight function w .

Proof

I Let c = v0, . . . , vk , where v0 = vk , be any cycle.

I As v0 = vk , h(v0) = h(vk ), so the weight of c under w is the same asits weight under w .

I So c is negative-weight under w if and only if it is negative-weightunder w .

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 13/22

Page 45: All-pairs shortest paths - University of Bristol

Negative-weight cycles

ClaimA graph has a negative-weight cycle under weight function w if and only ifif has one under weight function w .

Proof

I Let c = v0, . . . , vk , where v0 = vk , be any cycle.I As v0 = vk , h(v0) = h(vk ), so the weight of c under w is the same as

its weight under w .

I So c is negative-weight under w if and only if it is negative-weightunder w .

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 13/22

Page 46: All-pairs shortest paths - University of Bristol

Negative-weight cycles

ClaimA graph has a negative-weight cycle under weight function w if and only ifif has one under weight function w .

Proof

I Let c = v0, . . . , vk , where v0 = vk , be any cycle.I As v0 = vk , h(v0) = h(vk ), so the weight of c under w is the same as

its weight under w .I So c is negative-weight under w if and only if it is negative-weight

under w .�

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 13/22

Page 47: All-pairs shortest paths - University of Bristol

ReweightingI Given a graph G, to define our new weight function, we add a new

vertex s which has an edge of weight 0 to all other vertices in G.

I This cannot create a new negative-weight cycle if there was not onethere already.

I We then define h(v) = δ(s, v) for all vertices v in G.

I Now observe that δ(s, v) ≤ δ(s,u) + w(u, v) for all edges u → v bythe triangle inequality, so h(v)− h(u) ≤ w(u, v).

I So, if we reweight according to the function h,

w(u, v) = w(u, v) + h(u)− h(v) ≥ 0

for all edges u → v .

I Then, if δ(u, v) is the weight of a shortest path from u to v with weightfunction w , δ(u, v) = δ(u, v) + h(v)− h(u).

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 14/22

Page 48: All-pairs shortest paths - University of Bristol

ReweightingI Given a graph G, to define our new weight function, we add a new

vertex s which has an edge of weight 0 to all other vertices in G.

I This cannot create a new negative-weight cycle if there was not onethere already.

I We then define h(v) = δ(s, v) for all vertices v in G.

I Now observe that δ(s, v) ≤ δ(s,u) + w(u, v) for all edges u → v bythe triangle inequality, so h(v)− h(u) ≤ w(u, v).

I So, if we reweight according to the function h,

w(u, v) = w(u, v) + h(u)− h(v) ≥ 0

for all edges u → v .

I Then, if δ(u, v) is the weight of a shortest path from u to v with weightfunction w , δ(u, v) = δ(u, v) + h(v)− h(u).

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 14/22

Page 49: All-pairs shortest paths - University of Bristol

ReweightingI Given a graph G, to define our new weight function, we add a new

vertex s which has an edge of weight 0 to all other vertices in G.

I This cannot create a new negative-weight cycle if there was not onethere already.

I We then define h(v) = δ(s, v) for all vertices v in G.

I Now observe that δ(s, v) ≤ δ(s,u) + w(u, v) for all edges u → v bythe triangle inequality, so h(v)− h(u) ≤ w(u, v).

I So, if we reweight according to the function h,

w(u, v) = w(u, v) + h(u)− h(v) ≥ 0

for all edges u → v .

I Then, if δ(u, v) is the weight of a shortest path from u to v with weightfunction w , δ(u, v) = δ(u, v) + h(v)− h(u).

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 14/22

Page 50: All-pairs shortest paths - University of Bristol

ReweightingI Given a graph G, to define our new weight function, we add a new

vertex s which has an edge of weight 0 to all other vertices in G.

I This cannot create a new negative-weight cycle if there was not onethere already.

I We then define h(v) = δ(s, v) for all vertices v in G.

I Now observe that δ(s, v) ≤ δ(s,u) + w(u, v) for all edges u → v bythe triangle inequality, so h(v)− h(u) ≤ w(u, v).

I So, if we reweight according to the function h,

w(u, v) = w(u, v) + h(u)− h(v) ≥ 0

for all edges u → v .

I Then, if δ(u, v) is the weight of a shortest path from u to v with weightfunction w , δ(u, v) = δ(u, v) + h(v)− h(u).

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 14/22

Page 51: All-pairs shortest paths - University of Bristol

ReweightingI Given a graph G, to define our new weight function, we add a new

vertex s which has an edge of weight 0 to all other vertices in G.

I This cannot create a new negative-weight cycle if there was not onethere already.

I We then define h(v) = δ(s, v) for all vertices v in G.

I Now observe that δ(s, v) ≤ δ(s,u) + w(u, v) for all edges u → v bythe triangle inequality, so h(v)− h(u) ≤ w(u, v).

I So, if we reweight according to the function h,

w(u, v) = w(u, v) + h(u)− h(v) ≥ 0

for all edges u → v .

I Then, if δ(u, v) is the weight of a shortest path from u to v with weightfunction w , δ(u, v) = δ(u, v) + h(v)− h(u).

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 14/22

Page 52: All-pairs shortest paths - University of Bristol

ReweightingI Given a graph G, to define our new weight function, we add a new

vertex s which has an edge of weight 0 to all other vertices in G.

I This cannot create a new negative-weight cycle if there was not onethere already.

I We then define h(v) = δ(s, v) for all vertices v in G.

I Now observe that δ(s, v) ≤ δ(s,u) + w(u, v) for all edges u → v bythe triangle inequality, so h(v)− h(u) ≤ w(u, v).

I So, if we reweight according to the function h,

w(u, v) = w(u, v) + h(u)− h(v) ≥ 0

for all edges u → v .

I Then, if δ(u, v) is the weight of a shortest path from u to v with weightfunction w , δ(u, v) = δ(u, v) + h(v)− h(u).

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 14/22

Page 53: All-pairs shortest paths - University of Bristol

Example

Imagine we want to reweight the following graph:

A B

CD

1

1 40

-1

-2

I Using Bellman-Ford, we compute

h(A) = −2, h(B) = −1, h(C) = 0, h(D) = −1.

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 15/22

Page 54: All-pairs shortest paths - University of Bristol

Example

Imagine we want to reweight the following graph:

A B

CD

s

1

1 40

-1

-2

00

00

I Using Bellman-Ford, we compute

h(A) = −2, h(B) = −1, h(C) = 0, h(D) = −1.

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 15/22

Page 55: All-pairs shortest paths - University of Bristol

Example

Imagine we want to reweight the following graph:

A B

CD

s

1

1 40

-1

-2

00

00

I Using Bellman-Ford, we compute

h(A) = −2, h(B) = −1, h(C) = 0, h(D) = −1.

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 15/22

Page 56: All-pairs shortest paths - University of Bristol

Example

Reweighting according to h gives the following graph:

A B

CD

0

0 51

0

0

I For each pair of vertices u, v , δ(u, v) = δ(u, v) + h(v)− h(u).

I For example, δ(C,A) = 0− 2− 0 = −2 as expected.

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 16/22

Page 57: All-pairs shortest paths - University of Bristol

Example

Reweighting according to h gives the following graph:

A B

CD

0

0 51

0

0

I For each pair of vertices u, v , δ(u, v) = δ(u, v) + h(v)− h(u).

I For example, δ(C,A) = 0− 2− 0 = −2 as expected.

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 16/22

Page 58: All-pairs shortest paths - University of Bristol

Johnson’s algorithm

From the above discussion, we can write down the following algorithm.

Johnson(G)

1. form a new graph G′ by adding s to G, as defined above

2. compute δ(s, v) for all v ∈ G using BellmanFord3. for each edge u → v in G4. w(u, v)← w(u, v) + δ(s,u)− δ(s, v)

5. for each vertex u ∈ G6. compute δ(u, v) for all v using Dijkstra7. for each vertex v ∈ G8. duv ← δ(u, v) + δ(s, v)− δ(s,u)

9. return d

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 17/22

Page 59: All-pairs shortest paths - University of Bristol

Johnson’s algorithm

From the above discussion, we can write down the following algorithm.

Johnson(G)

1. form a new graph G′ by adding s to G, as defined above2. compute δ(s, v) for all v ∈ G using BellmanFord

3. for each edge u → v in G4. w(u, v)← w(u, v) + δ(s,u)− δ(s, v)

5. for each vertex u ∈ G6. compute δ(u, v) for all v using Dijkstra7. for each vertex v ∈ G8. duv ← δ(u, v) + δ(s, v)− δ(s,u)

9. return d

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 17/22

Page 60: All-pairs shortest paths - University of Bristol

Johnson’s algorithm

From the above discussion, we can write down the following algorithm.

Johnson(G)

1. form a new graph G′ by adding s to G, as defined above2. compute δ(s, v) for all v ∈ G using BellmanFord3. for each edge u → v in G4. w(u, v)← w(u, v) + δ(s,u)− δ(s, v)

5. for each vertex u ∈ G6. compute δ(u, v) for all v using Dijkstra7. for each vertex v ∈ G8. duv ← δ(u, v) + δ(s, v)− δ(s,u)

9. return d

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 17/22

Page 61: All-pairs shortest paths - University of Bristol

Johnson’s algorithm

From the above discussion, we can write down the following algorithm.

Johnson(G)

1. form a new graph G′ by adding s to G, as defined above2. compute δ(s, v) for all v ∈ G using BellmanFord3. for each edge u → v in G4. w(u, v)← w(u, v) + δ(s,u)− δ(s, v)

5. for each vertex u ∈ G6. compute δ(u, v) for all v using Dijkstra7. for each vertex v ∈ G8. duv ← δ(u, v) + δ(s, v)− δ(s,u)

9. return d

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 17/22

Page 62: All-pairs shortest paths - University of Bristol

Summary of all-pairs shortest paths algorithmsWe have now seen two different algorithms for this problem.

I Both algorithms work for graphs which may have negative-weightedges.

I The Floyd-Warshall algorithm runs in time O(V 3) and is based onideas from dynamic programming.

I Johnson’s algorithm is based on reweighting edges in the graph andrunning Dijkstra’s algorithm.

I The runtime of Johnson’s algorithm is dominated by the complexity ofrunning Dijkstra’s algorithm once for each vertex, which isO(VE + V 2 log V ) if implemented using a Fibonacci heap, andO(VE log V ) if implemented using a binary heap.

I This can be significantly smaller than the runtime of theFloyd-Warshall algorithm if the input graph is sparse.

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 18/22

Page 63: All-pairs shortest paths - University of Bristol

Summary of all-pairs shortest paths algorithmsWe have now seen two different algorithms for this problem.

I Both algorithms work for graphs which may have negative-weightedges.

I The Floyd-Warshall algorithm runs in time O(V 3) and is based onideas from dynamic programming.

I Johnson’s algorithm is based on reweighting edges in the graph andrunning Dijkstra’s algorithm.

I The runtime of Johnson’s algorithm is dominated by the complexity ofrunning Dijkstra’s algorithm once for each vertex, which isO(VE + V 2 log V ) if implemented using a Fibonacci heap, andO(VE log V ) if implemented using a binary heap.

I This can be significantly smaller than the runtime of theFloyd-Warshall algorithm if the input graph is sparse.

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 18/22

Page 64: All-pairs shortest paths - University of Bristol

Summary of all-pairs shortest paths algorithmsWe have now seen two different algorithms for this problem.

I Both algorithms work for graphs which may have negative-weightedges.

I The Floyd-Warshall algorithm runs in time O(V 3) and is based onideas from dynamic programming.

I Johnson’s algorithm is based on reweighting edges in the graph andrunning Dijkstra’s algorithm.

I The runtime of Johnson’s algorithm is dominated by the complexity ofrunning Dijkstra’s algorithm once for each vertex, which isO(VE + V 2 log V ) if implemented using a Fibonacci heap, andO(VE log V ) if implemented using a binary heap.

I This can be significantly smaller than the runtime of theFloyd-Warshall algorithm if the input graph is sparse.

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 18/22

Page 65: All-pairs shortest paths - University of Bristol

Summary of all-pairs shortest paths algorithmsWe have now seen two different algorithms for this problem.

I Both algorithms work for graphs which may have negative-weightedges.

I The Floyd-Warshall algorithm runs in time O(V 3) and is based onideas from dynamic programming.

I Johnson’s algorithm is based on reweighting edges in the graph andrunning Dijkstra’s algorithm.

I The runtime of Johnson’s algorithm is dominated by the complexity ofrunning Dijkstra’s algorithm once for each vertex, which isO(VE + V 2 log V ) if implemented using a Fibonacci heap, andO(VE log V ) if implemented using a binary heap.

I This can be significantly smaller than the runtime of theFloyd-Warshall algorithm if the input graph is sparse.

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 18/22

Page 66: All-pairs shortest paths - University of Bristol

Summary of all-pairs shortest paths algorithmsWe have now seen two different algorithms for this problem.

I Both algorithms work for graphs which may have negative-weightedges.

I The Floyd-Warshall algorithm runs in time O(V 3) and is based onideas from dynamic programming.

I Johnson’s algorithm is based on reweighting edges in the graph andrunning Dijkstra’s algorithm.

I The runtime of Johnson’s algorithm is dominated by the complexity ofrunning Dijkstra’s algorithm once for each vertex, which isO(VE + V 2 log V ) if implemented using a Fibonacci heap, andO(VE log V ) if implemented using a binary heap.

I This can be significantly smaller than the runtime of theFloyd-Warshall algorithm if the input graph is sparse.

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 18/22

Page 67: All-pairs shortest paths - University of Bristol

Shortest path algorithms: the summary

To compute single-source shortest paths in a directed graph G which is. . .

I unweighted: use breadth-first search in time O(V + E);I weighted with non-negative weights: use Dijkstra’s algorithm in time

O(E + V log V );I weighted with negative weights: use Bellman-Ford in time O(VE).

To compute all-pairs shortest paths in a directed graph G which is. . .

I unweighted: use breadth-first search from each vertex in timeO(VE + V 2);

I weighted with non-negative weights: use Dijkstra’s algorithm fromeach vertex in time O(VE + V 2 log V );

I weighted with negative weights: use Johnson’s algorithm in timeO(VE + V 2 log V ).

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 19/22

Page 68: All-pairs shortest paths - University of Bristol

Shortest path algorithms: the summary

To compute single-source shortest paths in a directed graph G which is. . .

I unweighted: use breadth-first search in time O(V + E);I weighted with non-negative weights: use Dijkstra’s algorithm in time

O(E + V log V );I weighted with negative weights: use Bellman-Ford in time O(VE).

To compute all-pairs shortest paths in a directed graph G which is. . .

I unweighted: use breadth-first search from each vertex in timeO(VE + V 2);

I weighted with non-negative weights: use Dijkstra’s algorithm fromeach vertex in time O(VE + V 2 log V );

I weighted with negative weights: use Johnson’s algorithm in timeO(VE + V 2 log V ).

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 19/22

Page 69: All-pairs shortest paths - University of Bristol

Further Reading

I Introduction to AlgorithmsT.H. Cormen, C.E. Leiserson, R.L. Rivest and C. Stein.MIT Press/McGraw-Hill, ISBN: 0-262-03293-7.

I Chapter 25 – All-Pairs Shortest Paths

I Algorithms lecture notes, University of IllinoisJeff Ericksonhttp://www.cs.uiuc.edu/~jeffe/teaching/algorithms/

I Lecture 20 – All-pairs shortest paths

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 20/22

Page 70: All-pairs shortest paths - University of Bristol

Biographical notes

The Floyd-Warshall algorithm was invented independently by Floyd andWarshall (and also Bernard Roy).

Robert W. Floyd (1936–2001)

I American computer scientist who did major workon compilers and initiated the field ofprogramming language semantics.

I He completed his first degree (in liberal arts) atthe age of 17 and won the Turing Award in 1978.

I Had his middle name legally changed to “W”.

Pic: IEEE

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 21/22

Page 71: All-pairs shortest paths - University of Bristol

Biographical notes

Stephen Warshall (1935–2006)

I Another American computer scientist whose other work includedoperating systems and compiler design.

I Supposedly he and a colleague bet a bottle of rum on who could firstprove correctness of his algorithm.

I Warshall found his proof overnight and won the bet (and the rum).

Donald B. Johnson (d. 1994)

I Yet another American computer scientist. Founded the computerscience department at Dartmouth College and invented the d-aryheap.

Ashley [email protected]

COMS21103: All-pairs shortest paths Slide 22/22