pub fn symmetric_diffuse(
graph: &Graph,
signal: &[f64],
k: usize,
) -> IgraphResult<Vec<f64>>Expand description
Diffuse a signal using symmetric normalized propagation.
Computes D^{-1/2} A D^{-1/2} · signal, the GCN-style propagation
operator (Kipf & Welling, 2017). Can be iterated k times for
multi-hop smoothing.
§Parameters
graph— Undirected graph.signal— Input signal of lengthvcount.k— Number of propagation steps.
§Returns
The propagated signal after k steps.
§Examples
use rust_igraph::{Graph, symmetric_diffuse};
// Triangle: uniform signal is an eigenvector, stays unchanged
let g = Graph::from_edges(&[(0,1),(1,2),(0,2)], false, Some(3)).unwrap();
let signal = vec![1.0, 1.0, 1.0];
let out = symmetric_diffuse(&g, &signal, 1).unwrap();
for &v in &out {
assert!((v - 1.0).abs() < 1e-10);
}