For each of the top n_nodes nodes ranked by risk_score and
the top k_paths paths ranked by path_risk_score, the function
sets the risk of that node to 0 along the path (for all its occurrences)
and recomputes the path risk score under the independence assumption,
using
$$P_k = 1 - \prod_{i=1}^{n_k} (1 - r_{k(v_i)})$$
The improvement
$$\Delta P_k = R_{\mathrm{orig}} - R_{\mathrm{fix}}$$
is used as the fill value in the heatmap cells.
Bright cells indicate nodes that act as chokepoints for a given path.
Rows with many bright cells correspond to nodes whose refactoring would
improve many risky paths (global chokepoints), while columns with a few
very bright cells correspond to paths dominated by a single risky node.