
Node Contraction Centrality (IMC and IIMC)
Source:R/centrality-batch9.R
centrality_node_contraction.RdTan, Wu and Deng's (2006) node-contraction importance, as restated by
Wang et al. (2011). The agglomeration (cohesion) of a graph is
\(\partial(G) = 1 / (N \bar{L})\), with \(\bar{L}\) the mean
shortest-path length over ordered pairs; contracting a node merges it
with all its neighbors into one node, and
$$IMC(v) = 1 - \partial(G) / \partial(G_v).$$
The improved form (node_contraction_improved) adds the same score
of the node's edges computed on the line graph:
\(IIMC(v) = \alpha\, IMC(v) + \beta \sum_{e \ni v} IMC_{L(G)}(e)\),
with \(\alpha / \beta = 5\) (contraction_rho) and
\(\alpha + \beta = 1\), the normalization that reproduces the paper's
Table 1. Higher = more important. Both reproduce Table 1 of Wang et al.
(2011). The Zoo entry describes the contracted graph as the graph with
the node removed; the sources define it by contraction, which is what
is implemented.
Usage
centrality_node_contraction(x, ...)
centrality_node_contraction_improved(x, contraction_rho = 5, ...)Arguments
- x
Network input (matrix, igraph, network, cograph_network, tna object).
- ...
Additional arguments passed to
centrality.- contraction_rho
Ratio \(\alpha / \beta\) for the improved form. Default 5.
Details
On a disconnected graph the mean path length is taken over the mutually reachable ordered pairs (a cograph choice; the sources assume connected graphs). Direction, weights and loops are ignored. Cost is one all-pairs computation per node, so \(O(n^2 (n + m))\); the improved form does the same on the line graph, \(O(m^2 (m + m'))\).
References
Tan, Y.-J., Wu, J., & Deng, H.-Z. (2006). Evaluation method for node importance based on node contraction in complex networks. Systems Engineering: Theory & Practice, 26(11), 79-83.
Wang, J., Li, C., & Xia, C. (2011). Improved centrality indicators to characterize the nodal spreading capability in complex networks. Procedia Engineering, 15, 3304-3308.
Examples
path5 <- matrix(0, 5, 5)
path5[cbind(1:4, 2:5)] <- 1; path5 <- path5 + t(path5)
rownames(path5) <- colnames(path5) <- LETTERS[1:5]
centrality_node_contraction(path5)
#> A B C D E
#> 0.3333333 0.6000000 0.6000000 0.6000000 0.3333333
centrality_node_contraction_improved(path5)
#> A B C D E
#> 0.3444444 0.6833333 0.7333333 0.6833333 0.3444444