Calculates the (normalized) majorization gap of an undirected graph. The majorization gap indicates how far the degree sequence of a graph is from a degree sequence of a threshold_graph.
Details
The distance is measured by the number of reverse unit
transformations necessary to turn the degree sequence into a threshold sequence.
First, the corrected conjugated degree sequence d' is calculated from the degree sequence d as follows:
$$d'_k= |\{ i : i<k \land d_i\geq k-1 \} | +
| \{ i : i>k \land d_i\geq k \} |.$$
the majorization gap is then defined as
$$1/2 \sum_{k=1}^n \max\{d'_k - d_k,0\}$$
The higher the value, the further away is a graph to be a threshold graph.
If norm = TRUE, the gap is divided by the number of edges.
For disconnected graphs, the gaps of all components are added up
(and then normalised by the total number of edges).
References
Schoch, D., Valente, T. W. and Brandes, U., 2017. Correlations among centrality indices and a class of uniquely ranked graphs. Social Networks 50, 46–54.
Arikati, S.R. and Peled, U.N., 1994. Degree sequences and majorization. Linear Algebra and its Applications, 199, 179-211.
Examples
library(igraph)
g <- make_star(5, "undirected")
majorization_gap(g) # 0 since star graphs are threshold graphs
#> [1] 0
g <- sample_gnp(100, 0.15)
majorization_gap(g, norm = TRUE) # fraction of reverse unit transformation
#> [1] 0.7296248
majorization_gap(g, norm = FALSE) # number of reverse unit transformation
#> [1] 564
