Function rustworkx_core::connectivity::core_number
source · pub fn core_number<G>(graph: G) -> DictMap<G::NodeId, usize>where
G: GraphBase + NodeCount,
for<'b> &'b G: GraphBase<NodeId = G::NodeId> + IntoNodeIdentifiers + IntoNeighborsDirected,
G::NodeId: Eq + Hash + Send + Sync,
Expand description
Return the core number for each node in the graph.
A k-core is a maximal subgraph that contains nodes of degree k or more.
The function implicitly assumes that there are no parallel edges or self loops. It may produce incorrect/unexpected results if the input graph has self loops or parallel edges.
Arguments:
graph
- The graph in which to find the core numbers.
Example
use petgraph::prelude::*;
use rustworkx_core::connectivity::core_number;
let edge_list = vec![(0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3)];
let graph = DiGraph::<i32, i32>::from_edges(&edge_list);
let res: Vec<(usize, usize)> = core_number(graph)
.iter()
.map(|(k, v)| (k.index(), *v))
.collect();
assert_eq!(res, vec![(0, 3), (1, 3), (2, 3), (3, 3)]);