## Appendix A  
In this section, we present the mathematical formulation of SimRank, SimRank\({}^{*}\), JacSim, and JPRank with their detailed description. **SimRank**[11]: for a given graph \(G=(V,E)\) where \(V\) represents a set of nodes and \(E\subseteq(V\times V)\) is a set of links among nodes, the SimRank score of a node-pair \((a,b)\) is defined as follows:  
\[S(a,b)=\left\{ \begin{array}{ll}1,&a=b\\ \frac{C}{|I_{a}||I_{b}|}\Sigma_{i\in I_{a}}\Sigma_{j\in I_{b}}S(i,j),&a\
eq b \end{array} \right. \tag{1}\]  
where \(I_{a}\) is a set of nodes _directly_ pointing to node \(a\), \(|I_{a}|\) is the size of \(I_{a}\), and \(C\in(0,1)\) is a damping factor. If \(I_{a}=\emptyset\) or \(I_{b}=\emptyset\), \(S(a,b)=0\). Equation (1) is a recursive formula initialized by \(S_{0}(a,b)=1\) if \(a=b\); \(S_{0}(a,b)=0\), otherwise. For \(k=1,2,...\), we have  
\[S_{k}(a,b)=\left\{ \begin{array}{ll}1,&a=b\\ \frac{C}{|I_{a}||I_{b}|}\Sigma_{i\in I_{a}}\Sigma_{j\in I_{b}}S_{k-1}(i,j),&a \
eq b\end{array} \right. \tag{2}\]  
where on each iteration \(k\), \(S_{k}(a,b)\) is computed based on similarity scores obtained in the previous iteration \(k-1\). The iterative form of SimRank can be transformed to a closed matrix form [51; 52], which is quite faster than the original iterative form. Let \(S\in\mathbb{R}^{(\{|V|\times|V|\})}\) be a _similarity matrix_ whose entry \([S]_{a,b}\) denotes \(S(a,b)\); then, SimRank scores are computed as follows:  
\[S=C\cdot(Q^{T}\cdot S\cdot Q)+(1-C)\cdot I \tag{3}\]  
where \(Q_{|V|\times|V|}\) is a _column normalized_ adjacency matrix whose entry \([Q]_{a,b}=1/|I_{b}|\) if \(a\) points \(b\); \([Q]_{a,b}=0\), otherwise. \(Q^{T}\) is a transpose matrix of \(Q\), \(I_{|V|\times|V|}\) is an identity matrix,and term \((1-C)\cdot I\) guarantees that the main diagonal entries in \(S\) are always maximum. The recursive computation of the matrix form starts with \(S_{0}=I\) for \(k=1,2,...\), as follows:  
\[S_{k}=C\cdot(Q^{T}\cdot S_{k-1}\cdot Q)+(1-C)\cdot I \tag{10}\]  
**JacSim**[1]: it has both iterative and matrix forms; however, we explain its matrix form since it is more efficient than the iterative form while their accuracies are comparable [1]. Let \(JS\) be the similarity matrix; then,  
\[JS=C\cdot\big{(}\alpha\cdot J+(1-\alpha)\cdot(Q^{T}\cdot JS\cdot Q-E)\big{)}+( 1-C\cdot\alpha)\cdot I \tag{11}\]  
where \(\alpha\in(0,1)\) is an importance factor to control the degree of importance of Jaccard score and the one computed by the pairwise normalization paradigm, \(J\in\mathbb{R}^{(|V|\times|V|)}\) is a matrix whose entry \([J]_{a,b}\) denotes the Jaccard score of \((a,b)\). \(E\in\mathbb{R}^{(|V|\times|V|)}\) is a matrix whose entry \([E]_{a,b}\) denotes the summation of JacSim scores of all node-pairs between \((I_{a}\cap I_{b})\) and itself normalized by value \(|I_{a}||I_{b}|\). For \(k=1,2,...\), the recursive computation is started with \(JS_{0}=I\) as follows:  
\[JS_{k}=C\cdot\big{(}\alpha\cdot J+(1-\alpha)\cdot(Q^{T}\cdot JS_{k-1}\cdot Q- E_{k})\big{)}+(1-C\cdot\alpha)\cdot I,\]  
\[[E_{k}]_{a,b}=\frac{\sum_{i\in I_{a}\cap I_{b}}\sum_{j\in I_{a}\cap I_{b}}JS_{ k-1}(i,j)}{|I_{a}||I_{b}|},\ \forall a,b\in V \tag{12}\]  
**SimRank***[9]; let \(S^{*}\) be the SimRank* similarity matrix; then,  
\[S^{*}=\frac{C}{2}\cdot(Q^{T}\cdot S^{*}+S^{*}\cdot Q)+(1-C)\cdot I \tag{13}\]  
where only one matrix multiplication is required since \(S^{*}\) is a symmetric matrix and \(S^{*}\cdot Q\) is identical to the transpose of \(Q^{T}\cdot S^{*}\). For \(k=1,2,...\), the recursive computation is started with \(S^{*}_{0}=I\) as follows:  
\[S^{*}_{k}=\frac{C}{2}\cdot(Q^{T}\cdot S^{*}_{k-1}+S^{*}_{k-1}\cdot Q)+(1-C)\cdot I \tag{14}\]  
**JPRank**[17]: it has been proposed by both iterative and matrix forms; here, we explain its matrix form since it is more efficient than the iterative form while their accuracies are comparable [17].