use graphops::graph::AdjacencyMatrix;
use graphops::random_walk::{generate_biased_walks, generate_walks, WalkConfig};
fn main() {
#[rustfmt::skip]
let adj = vec![
vec![0., 1., 1., 1., 0., 0.], vec![1., 0., 1., 1., 1., 0.], vec![1., 1., 0., 0., 0., 1.], vec![1., 1., 0., 0., 1., 0.], vec![0., 1., 0., 1., 0., 1.], vec![0., 0., 1., 0., 1., 0.], ];
let g = AdjacencyMatrix(&adj);
let config = WalkConfig {
length: 10,
walks_per_node: 3,
seed: 42,
..WalkConfig::default()
};
let walks = generate_walks(&g, config);
println!("=== Uniform random walks ===");
println!("{} walks, length {}\n", walks.len(), config.length);
for (i, walk) in walks.iter().take(6).enumerate() {
println!(" Walk {} from node {}: {:?}", i, walk[0], walk);
}
let biased_config = WalkConfig {
length: 10,
walks_per_node: 3,
p: 1.0,
q: 0.5, seed: 42,
};
let biased_walks = generate_biased_walks(&g, biased_config);
println!("\n=== Biased walks (node2vec: p=1.0, q=0.5) ===");
println!(
"{} walks, length {}\n",
biased_walks.len(),
biased_config.length
);
for (i, walk) in biased_walks.iter().take(6).enumerate() {
println!(" Walk {} from node {}: {:?}", i, walk[0], walk);
}
}