use hypergraphx::prelude::*;
use nalgebra::DMatrix;
fn main() {
undirected();
directed();
}
fn undirected() {
hypergraph! {
let mut graph: UndirectedHypergraph<_, _> {
nodes: {
let v0 = 0;
let v1 = 1;
let v2 = 2;
let v3 = 3;
let v4 = 4;
let v5 = 5;
let v6 = 6;
let v7 = 7;
};
edges: {
[v0, v1] = 5;
[v0, v2] = 7;
[v1, v2] = 10;
[v1, v3, v7] = 15;
[v2, v3, v5] = 20;
[v3, v4, v6] = 25;
[v4, v5, v6] = 30;
[v5, v6, v7] = 35;
[v6, v7] = 40;
[v0, v5, v6] = 45;
};
}
}
let u: DMatrix<i8> = graph.binary_incidence_matrix().into();
let a = graph.adjacency_matrix();
let d = graph.dual_adjacency_matrix();
dbg!(u);
dbg!(a);
dbg!(d);
let leig = graph.lambdas();
dbg!(leig);
let aeig = graph.alphas();
dbg!(aeig);
}
fn directed() {
hypergraph! {
let mut graph: DirectedHypergraph<_, _> {
nodes: {
let v0 = 0;
let v1 = 1;
let v2 = 2;
let v3 = 3;
let v4 = 4;
let v5 = 5;
let v6 = 6;
let v7 = 7;
let v8 = 8;
};
edges: {
([v0, v1] -> [v4, v7]) = 5;
([v0, v2] -> [v1, v8]) = 7;
([v1, v2] -> [v8]) = 10;
([v1, v3, v7] -> [v2, v5]) = 15;
([v2, v3, v5] -> [v8]) = 20;
([v3, v4, v6] -> [v0, v1, v2]) = 25;
([v4, v5, v6] -> [v7]) = 30;
([v5, v6, v7] -> [v8, v0, v1]) = 35;
([v6, v7] -> [v8, v1]) = 40;
([v0, v5, v6] -> [v3]) = 45;
};
}
}
let u: DMatrix<i8> = graph.binary_incidence_matrix().into();
let a: DMatrix<usize> = graph.adjacency_matrix().into();
let d: DMatrix<usize> = graph.dual_adjacency_matrix().into();
dbg!(u);
dbg!(a);
dbg!(d);
let leig = graph.lambdas();
dbg!(leig);
let aeig = graph.alphas();
dbg!(aeig);
}