  In this article, we study the efficient dynamical computation of all-pairs
SimRanks on time-varying graphs. Li {\em et al}.'s approach requires $O(r^4
n^2)$ time and $O(r^2 n^2)$ memory in a graph with $n$ nodes, where $r$ is the
target rank of the low-rank SVD. (1) We first consider edge update that does
not accompany new node insertions. We show that the SimRank update $\Delta S$
in response to every link update is expressible as a rank-one Sylvester matrix
equation. This provides an incremental method requiring $O(Kn^2)$ time and
$O(n^2)$ memory in the worst case to update all pairs of similarities for $K$
iterations. (2) To speed up the computation further, we propose a lossless
pruning strategy that captures the "affected areas" of $\Delta S$ to eliminate
unnecessary retrieval. This reduces the time of the incremental SimRank to
$O(K(m+|AFF|))$, where $m$ is the number of edges in the old graph, and $|AFF|
(\le n^2)$ is the size of "affected areas" in $\Delta S$, and in practice,
$|AFF| \ll n^2$. (3) We also consider edge updates that accompany node
insertions, and categorize them into three cases, according to which end of the
inserted edge is a new node. For each case, we devise an efficient incremental
algorithm that can support new node insertions. (4) We next design an efficient
batch incremental method that handles "similar sink edges" simultaneously and
eliminates redundant edge updates. (5) To achieve linear memory, we devise a
memory-efficient strategy that dynamically updates all pairs of SimRanks column
by column in just $O(Kn+m)$ memory, without the need to store all $(n^2)$ pairs
of old SimRank scores. Experimental studies on various datasets demonstrate
that our solution substantially outperforms the existing incremental SimRank
methods, and is faster and more memory-efficient than its competitors on
million-scale graphs.
