# communicability: Compute Communicability between Nodes in an HBM In hbm: Hierarchical Block Matrix Analysis

## Description

`communicability` computes the scale communicability between nodes (rows) in a hierarchical block matrix `hm`, generated with `hbm`.

## Usage

 `1` ```communicability(hm) ```

## Arguments

 `hm` a hierarchical block matrix computed with `hbm`, with: hm_{i,j} = the minimal scale (iteration) at which i and j were clustered together, or 0 if i=j

## Details

The communicability of an adjacency matrix `A` can be expressed as e^A (Estrada et al., 2012), so that the i,j-th entry is a weighted sum of all paths from i to j, where shortest paths are assigned with larger weights. For a hierarchical block matrix, computed with `hbm`, each scale `s` defines its own adjacency matrix, where all entries with values larger than s are set to 0. The scale-communicability between 2 nodes i and j in this matrix is defined here as the mean communicability across scales (excluding the largest scale).

## Value

`communicability` returns a matrix of the same dimensions as `hm`, where the (i,j)-th entry gives the scale-communicability between i and j in `hm`.

Yoli Shavit

## References

Estrada, E., Hatano, N. and Benzi, M. The physics of communicability in complex networks. Physics Reports 514, 89-119 (2012).

hbm's website: http://www.cl.cam.ac.uk/~ys388/hbm/

`hbm` to learn how to build hierarchical block matrices
`hbm`'s tutorials at http://www.cl.cam.ac.uk/~ys388/hbm/
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19``` ```set.seed(2) n = 100 # chain size conf = generate.random.conf(n, scale = FALSE) # compute the HBM hm.control = hbm(exp(-1*as.matrix(dist(conf))), 2)\$hm # compute scale communicability comm = communicability(hm.control) # explore for position 50 plot(1:n, comm[50,], xlab = "Position", ylab = "Communicability", main = "Communicability for Position 50", pch=16) # plot in original configuration cols = rep("black", n) cols[which(comm[50,] > 100)] = "blue" plot(conf, xlab = "X", ylab = "Y", type = "n") text(conf, labels = 1:n, col = cols) ```