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]]