Semi-dynamic shortest-path tree algorithms for directed graphs with arbitrary weights
Given a directed graph $G$ with arbitrary real-valued weights, the single source shortest-path problem (SSSP) asks for, given a source $s$ in $G$, finding a shortest path from $s$ to each vertex $v$ in $G$. A classical SSSP algorithm detects a negative cycle of $G$ or constructs a shortest-path tree (SPT) rooted at $s$ in $O(mn)$ time, where $m,n$ are the numbers of edges and vertices in $G$ respectively. In many practical applications, new constraints come from time to time and we need to update the SPT frequently. Given an SPT $T$ of $G$, suppose the weight on a certain edge is modified. We show by rigorous proof that the well-known {\sf Ball-String} algorithm for positively weighted graphs can be adapted to solve the dynamic SPT problem for directed graphs with arbitrary weights. Let $n_0$ be the number of vertices that are affected (i.e., vertices that have different distances from $s$ or different parents in the input and output SPTs) and $m_0$ the number of edges incident to an affected vertex. The adapted algorithms terminate in $O(m_0+n_0 \log n_0)$ time, either detecting a negative cycle (only in the decremental case) or constructing a new SPT $T'$ for the updated graph. We show by an example that the output SPT $T'$ may have more than necessary edge changes to $T$. To remedy this, we give a general method for transforming $T'$ into an SPT with minimal edge changes in time $O(n_0)$ provided that $G$ has no cycles with zero length.