200 likes | 322 Views
A faster computation of the most vital edge of a shortest path. Enrico Nardelli, Guido Proietti, Pete Widmayer. MVE Problem. Given an undirected graph G=(V,E) with positive real edge weight A source node r and a destination node s
E N D
A faster computation of the most vital edge of a shortest path Enrico Nardelli, Guido Proietti, Pete Widmayer
MVE Problem • Given an undirected graph G=(V,E) with positive real edge weight • A source node r and a destination node s • Goal: find out an edge e whose removal from G result in the largest distance from r to s • We refer this edge as the Most Vital Edge
r s
Obviously • The vital edge is in the shortest path PG(r,s) • More precisely, the MVE problem asks for finding an edge e*PG(r,s) such that dG-e*(r,s)dG-e(r,s) for any e PG(r,s)
r e s
Brute force… • Remove one edge of PG(r,s) and recompute new shortest path between r and s
r Mr(e) e Nr(e) s
r s
r s
Non-tree edge • dG-e(r,s)=min {dG-e(r,x)+w(f)+dG-e(y,s)} • That is, one non-tree edge is one possible replacement for an tree edge
Transmuter • A smart idea from R.E. Tarjan Applications of path compression on balanced trees, J. ACM 26(1979)690-715 • Given a spanning tree T of a graph G. The transmuter DG(T) contains source node ve for a tree edge e sink node vffor a non-tree edge f • There is a directed path from a source ve node to a sink node vfiff e and f form a cycle in G
Source nodes …… Sink nodes
e1 e2 f1 ve1 ve2 vf1
e1 e2 f1 ve3 ve1 ve2 e3 f2 vf1 vf2
ve3 ve1 ve2 vf2 vf1
Solve MVE problem • Give every sink node a value a sink node vf is respect to a non-tree edge f (x,y) c(vf)=dG(r,x)+w(f)+dG(y,s) • Afterwards, process the nodes of the transmuter in reverse topological order • Label each nodes with minimum value of it’s children
ve3 ve1 ve2 vf2 vf1
r s
Time complexity • The transmuter can be determined in O(m*(m,n)) is inverse of Acknerman function • Computing shortest path tree rooted r and rooted s needs O(m) • Input sink node value…O(m)
Conclusion • Linear time? • Other vital edge? • Transmuter?