Rustのndarrayを使ってグラフの隣接行列を表示する。
実装
main.rs
extern crate ndarray;
use ndarray::prelude::*;
struct Model {
adjacency: Array2<u8>,
}
impl Model {
fn add_edge(&mut self, src: usize, dest: usize) {
self.adjacency[[src, dest]] = 1;
self.adjacency[[dest, src]] = 1;
}
fn new(n: usize) -> Self {
let adjacency = Array2::<u8>::zeros((n, n));
Self {
adjacency,
}
}
}
fn main() {
let mut model = Model::new(5);
model.add_edge(1, 2);
model.add_edge(0, 4);
model.add_edge(2, 3);
println!("{}", model.adjacency);
}
結果
[[0, 0, 0, 0, 1],
[0, 0, 1, 0, 0],
[0, 1, 0, 1, 0],
[0, 0, 1, 0, 0],
[1, 0, 0, 0, 0]]