Single-Source All-Destinations Shortest Paths With Negative Costs

Slides:



Advertisements
Similar presentations
Bellman-Ford algorithm
Advertisements

1 Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 19 Prof. Erik Demaine.
Single Source Shortest Paths
§3 Shortest Path Algorithms Given a digraph G = ( V, E ), and a cost function c( e ) for e  E( G ). The length of a path P from source to destination.
All Pairs Shortest Paths and Floyd-Warshall Algorithm CLRS 25.2
Shortest Paths Definitions Single Source Algorithms –Bellman Ford –DAG shortest path algorithm –Dijkstra All Pairs Algorithms –Using Single Source Algorithms.
Shortest Path Problems Directed weighted graph. Path length is sum of weights of edges on path. The vertex at which the path begins is the source vertex.
Single-Source All-Destinations Shortest Paths With General Weights Directed weighted graph. Edges may have negative cost. No cycle whose cost is < 0.
Shortest Paths Definitions Single Source Algorithms
Tirgul 13. Unweighted Graphs Wishful Thinking – you decide to go to work on your sun-tan in ‘ Hatzuk ’ beach in Tel-Aviv. Therefore, you take your swimming.
Discrete Math for CS Chapter 8: Directed Graphs. Discrete Math for CS digraph: A digraph is a graph G = (V,E) where V is a finite set of vertices and.
1 Shortest Path Algorithms. 2 Routing Algorithms Shortest path routing What is a shortest path? –Minimum number of hops? –Minimum distance? There is a.
CS2420: Lecture 36 Vladimir Kulyukin Computer Science Department Utah State University.
Routing Protocols and the IP Layer CS244A Review Session 2/01/08 Ben Nham Derived from slides by: Paul Tarjan Martin Casado Ari Greenberg.
Theory of Computing Lecture 7 MAS 714 Hartmut Klauck.
Graph Algorithms. Definitions and Representation An undirected graph G is a pair (V,E), where V is a finite set of points called vertices and E is a finite.
Resources: Problems in Evaluating Grammatical Error Detection Systems, Chodorow et al. Helping Our Own: The HOO 2011 Pilot Shared Task, Dale and Kilgarriff.
Minimum Edit Distance Definition of Minimum Edit Distance.
A * Search A* (pronounced "A star") is a best first, graph search algorithm that finds the least-cost path from a given initial node to one goal node out.
Weighted Minimum Edit Distance
Minimum Edit Distance Definition of Minimum Edit Distance.
1 Chapter 6 : Graph – Part 2 교수 : 이상환 강의실 : 113,118 호, 324 호 연구실 : 과학관 204 호 Home :
Spell checking. Spelling Correction and Edit Distance Non-word error detection: – detecting “graffe” “ سوژن ”, “ مصواک ”, “ مداا ” Non-word error correction:
Shortest Paths.
Definition of Minimum Edit Distance
Lecture 13 Shortest Path.
CSC317 Shortest path algorithms
Algorithm Analysis Fall 2017 CS 4306/03
Definition of Minimum Edit Distance
Algorithms and Data Structures Lecture XIII
Introduction to Graphs
Parallel Graph Algorithms
Shortest Path Problems
Shortest Path Problems
All-Pairs Shortest Paths (26.0/25)
Dynamic Programming Characterize the structure (problem state) of optimal solution Recursively define the value of optimal solution Compute the value of.
Shortest Paths.
Autumn 2016 Lecture 9 Dijkstra’s algorithm
CS200: Algorithm Analysis
Algorithms (2IL15) – Lecture 5 SINGLE-SOURCE SHORTEST PATHS
Autumn 2015 Lecture 9 Dijkstra’s algorithm
Single-Source All-Destinations Shortest Paths With Negative Costs
Algorithms and Data Structures Lecture XIII
Autumn 2015 Lecture 10 Minimum Spanning Trees
Shortest Path Problems
Dynamic Programming Characterize the structure (problem state) of optimal solution Recursively define the value of optimal solution Compute the value of.
Shortest Path Algorithms
Minimum Spanning Tree Algorithms
All pairs shortest path problem
Algorithms (2IL15) – Lecture 7
Lecture 14 Shortest Path (cont’d) Minimum Spanning Tree
Single-Source All-Destinations Shortest Paths With Negative Costs
Chapter 24: Single-Source Shortest Paths
CS 584 Project Write up Poster session for final Due on day of final
Shortest Path Problems
Autumn 2016 Lecture 10 Minimum Spanning Trees
Dijkstra’s Shortest Path Algorithm
Shortest Path Problems
Shortest Paths.
Winter 2019 Lecture 9 Dijkstra’s algorithm
Chapter 24: Single-Source Shortest Paths
Parallel Graph Algorithms
Winter 2019 Lecture 10 Minimum Spanning Trees
Chapter 24: Single-Source Shortest-Path
Lecture 13 Shortest Path (cont’d) Minimum Spanning Tree
Single-Source All-Destinations Shortest Paths With Negative Costs
All-Pairs Shortest Paths
More Graphs Lecture 19 CS2110 – Fall 2009.
Autumn 2019 Lecture 9 Dijkstra’s algorithm
Presentation transcript:

Single-Source All-Destinations Shortest Paths With Negative Costs Directed weighted graph. Edges may have negative cost. No cycle whose cost is < 0. Find a shortest path from a given source vertex s to each of the n vertices of the digraph.

Single-Source All-Destinations Shortest Paths With Negative Costs Dijkstra’s O(n2) single-source greedy algorithm doesn’t work when there are negative-cost edges. Floyd’s Q(n3) all-pairs dynamic-programming algorithm does work in this case.

Bellman-Ford Algorithm Single-source all-destinations shortest paths in digraphs with negative-cost edges. Uses dynamic programming. Runs in O(n3) time when adjacency matrices are used. Runs in O(ne) time when adjacency lists are used.

Decision Sequence s w v To construct a shortest path from the source to vertex v, decide on the max number of edges on the path and on the vertex that comes just before v. Since the digraph has no cycle whose length is < 0, we may limit ourselves to the discovery of cycle-free (acyclic) shortest paths. A path that has no cycle has at most n-1 edges.

Problem State s w v Problem state is given by (u,k), where u is the destination vertex and k is the max number of edges. (v,n-1) is the state in which we want the shortest path to v that has at most n-1 edges.

Cost Function s w v Let d(v,k) be the length of a shortest path from the source vertex to vertex v under the constraint that the path has at most k edges. d(v,n-1) is the length of a shortest unconstrained path from the source vertex to vertex v. We want to determine d(v,n-1) for every vertex v.

Value Of d(*,0) d(v,0) is the length of a shortest path from the source vertex to vertex v under the constraint that the path has at most 0 edges. s d(s,0) = 0. d(v,0) = infinity for v != s.

Recurrence For d(*,k), k > 0 d(v,k) is the length of a shortest path from the source vertex to vertex v under the constraint that the path has at most k edges. If this constrained shortest path goes through no edge, then d(v,k) = d(v,0).

Recurrence For d(*,k), k > 0 If this constrained shortest path goes through at least one edge, then let w be the vertex just before v on this shortest path (note that w may be s). s w v We see that the path from the source to w must be a shortest path from the source vertex to vertex w under the constraint that this path has at most k-1 edges. d(v,k) = d(w,k-1) + length of edge (w,v).

Recurrence For d(*,k), k > 0 d(v,k) = d(w,k-1) + length of edge (w,v). s w v We do not know what w is. We can assert d(v,k) = min{d(w,k-1) + length of edge (w,v)}, where the min is taken over all w such that (w,v) is an edge of the digraph. Combining the two cases considered yields: d(v,k) = min{d(v,0), min{d(w,k-1) + length of edge (w,v)}}

Pseudocode To Compute d(*,*) // initialize d(*,0) d(s,0) = 0; d(v,0) = infinity, v != s; // compute d(*,k), 0 < k < n for (int k = 1; k < n; k++) { d(v,k) = d(v,0), 1 <= v <= n; for (each edge (u,v)) d(v,k) = min{d(v,k), d(u,k-1) + cost(u,v)} } Note d(v,0) is infinity except when v = s.

p(*,*) Let p(v,k) be the vertex just before vertex v on the shortest path for d(v,k). p(v,0) is undefined. Used to construct shortest paths.

Example 1 2 4 3 6 5 7 -6 9 1 Source vertex is 1.

Example v - - - - - - - - - - - k - - - - - - - 3 7 1 1 - 3 7 7 16 8 1 2 4 3 6 5 7 -6 9 1 1 2 3 4 5 6 v - - - - - - - - - - - k - - - - - - - 1 Get from start vertex to every other vertex using at most k edges 3 7 1 1 - 3 7 7 16 8 1 2 1 4 4 2 - 3 2 7 7 10 8 6 2 1 3 4 - 4 2 6 7 10 8 6 2 1 3 4 d(v,k) p(v.k)

Example v - 2 6 7 10 8 6 2 1 3 4 k - 2 6 7 9 8 6 2 1 3 4 d(v,k) p(v.k) 5 7 -6 9 1 1 2 3 4 5 6 v 4 - 2 6 7 10 8 6 2 1 3 4 k - 5 2 6 7 9 8 6 2 1 3 4 d(v,k) p(v.k)

Shortest Path From 1 To 5 - 2 6 7 9 8 6 2 1 3 4 p(v,5) d(v,5) 1 -6 3 4 2 6 7 9 8 6 2 1 3 4 p(v,5) d(v,5)

Observations d(v,k) = min{d(v,0), min{d(w,k-1) + length of edge (w,v)}} d(s,k) = 0 for all k. If d(v,k) = d(v,k-1) for all v, then d(v,j) = d(v,k-1), for all j >= k-1 and all v. i.e. the shortest path uses k-1 edges If we stop computing as soon as we have a d(*,k) that is identical to d(*,k-1) the run time becomes O(n3) when adjacency matrix is used. O(ne) when adjacency lists are used.

Observations The computation may be done in-place. d(v) = min{d(v), min{d(w) + length of edge (w,v)}} instead of d(v,k) = min{d(v,0), min{d(w,k-1) + length of edge (w,v)}} Following iteration k, d(v,k+1) <= d(v) <= d(v,k) On termination d(v) = d(v,n-1). Space requirement becomes O(n) for d(*) and p(*).

Applications Distance-vector routing protocols Routing Information Protocol (RIP) Interior Gateway Routing Protocol (IGRP)

Edit Distance* How similar are two strings? For example: Applications in Spell correction, computational biology, Machine Translation, etc. For example: The user type “Graffe” Which is closest? Graf Graft Grail Giraffe Source *: https://web.stanford.edu/class/cs124/lec/med.pdf

Edit Distance* The minimum edit distance between two strings Editing operations are: Insertion Deletion Substitution  Minimum number of editing operations to transform one string into another Source *: https://web.stanford.edu/class/cs124/lec/med.pdf

Edit Distance* Sequence of edits from one string to another Source *: https://web.stanford.edu/class/cs124/lec/med.pdf

Edit Distance* Initial state: the word we’re transforming Operations: insert, delete, substitute Goal state: the word we’re trying to get to Path cost (target function to be minimized): the number of edits Source *: https://web.stanford.edu/class/cs124/lec/med.pdf

Edit Distance* All edit sequences are too many We cannot explore all of them (brute force) Many paths wind up at the same state Keep the shortest path to each of those revisited states Source *: https://web.stanford.edu/class/cs124/lec/med.pdf

Edit Distance* All edit sequences are too many We cannot explore all of them (brute force) Many paths wind up at the same state Keep the shortest path to each of those revisited states Source *: https://web.stanford.edu/class/cs124/lec/med.pdf

Edit Distance* For two strings Define d(i,j) X of length n Y of length m Define d(i,j) The edit distance between X[1…i] and Y[1..j] i.e. the edit distance concerning the first i characters of X and the first j characters of Y The goal state is d(n,m) i.e. the edit distance concerning all characters of X and all characters of Y Source *: https://web.stanford.edu/class/cs124/lec/med.pdf

Edit Distance* Initialization: Recurrence: d(i,0) = i d(0,j) = j For each i = 1 … N For each j = 1 … M d(i,j) = min { d(i-1,j) + 1, d(i,j-1) + 1, if X(i)==Y(j) { d(i-1,j-1) } else {d(i-1,j-1) + 1 } Source *: https://web.stanford.edu/class/cs124/lec/med.pdf