pub fn layout_davidson_harel(
graph: &Graph,
seed: Option<&[[f64; 2]]>,
params: &DhParams,
) -> IgraphResult<Vec<[f64; 2]>>Expand description
Compute the Davidson-Harel simulated annealing layout.
Uses a multi-component energy function minimized via simulated annealing followed by a fine-tuning phase without stochastic acceptance.
§Arguments
graph— input graph (edge directions ignored).seed— optional initial positions. IfNone, random positions are generated.params— algorithm parameters.
Returns [x, y] positions for each vertex.
§Errors
Returns InvalidArgument if cool_fact is not in (0, 1) or
seed length doesn’t match vertex count.
§Examples
use rust_igraph::{Graph, layout_davidson_harel, DhParams};
let mut g = Graph::with_vertices(5);
g.add_edge(0, 1).unwrap();
g.add_edge(1, 2).unwrap();
g.add_edge(2, 3).unwrap();
g.add_edge(3, 4).unwrap();
g.add_edge(4, 0).unwrap();
let params = DhParams::for_graph(&g);
let pos = layout_davidson_harel(&g, None, ¶ms).unwrap();
assert_eq!(pos.len(), 5);
assert!(pos.iter().all(|p| p[0].is_finite() && p[1].is_finite()));