Trait graph::prelude::RelabelByDegreeOp
source · pub trait RelabelByDegreeOp<NI, EV> {
// Required method
fn make_degree_ordered(&mut self);
}
Required Methods§
sourcefn make_degree_ordered(&mut self)
fn make_degree_ordered(&mut self)
Creates a new graph by relabeling the node ids of the given graph.
Ids are relabaled using descending degree-order, i.e., given n
nodes,
the node with the largest degree will become node id 0
, the node with
the smallest degree will become node id n - 1
.
Note, that this method creates a new graph with the same space requirements as the input graph.
Example
use graph_builder::prelude::*;
let mut graph: UndirectedCsrGraph<u32> = GraphBuilder::new()
.edges(vec![(0, 1), (1, 2), (1, 3), (3, 0)])
.build();
assert_eq!(graph.degree(0), 2);
assert_eq!(graph.degree(1), 3);
assert_eq!(graph.degree(2), 1);
assert_eq!(graph.degree(3), 2);
let mut neighbors = graph.neighbors(0);
assert_eq!(neighbors.next(), Some(&1));
assert_eq!(neighbors.next(), Some(&3));
assert_eq!(neighbors.next(), None);
graph.make_degree_ordered();
assert_eq!(graph.degree(0), 3);
assert_eq!(graph.degree(1), 2);
assert_eq!(graph.degree(2), 2);
assert_eq!(graph.degree(3), 1);
assert_eq!(graph.neighbors(0).as_slice(), &[1, 2, 3]);