pub struct BipartiteMatching {
pub match_left: Vec<Option<usize>>,
pub match_right: Vec<Option<usize>>,
pub matching_size: usize,
}Expand description
The result of a Hopcroft-Karp bipartite matching computation.
Fields§
§match_left: Vec<Option<usize>>For each node in the left partition, the matched node in the right
partition (Some(right_node)) or None if unmatched.
Indexed 0..left_size.
match_right: Vec<Option<usize>>For each node in the right partition, the matched node in the left
partition (Some(left_node)) or None if unmatched.
Indexed 0..right_size.
matching_size: usizeThe size of the maximum matching (number of matched pairs).
Implementations§
Source§impl BipartiteMatching
impl BipartiteMatching
Sourcepub fn pairs(&self) -> Vec<(usize, usize)>
pub fn pairs(&self) -> Vec<(usize, usize)>
Returns all matched pairs as (left_node, right_node) tuples.
§Examples
use graph_flow::hopcroft_karp;
// Left: {0, 1}, Right: {0, 1}
// Edges: 0→0, 0→1, 1→1
let adj = vec![vec![0usize, 1], vec![1]];
let matching = hopcroft_karp(&adj, 2);
let pairs = matching.pairs();
assert_eq!(pairs.len(), 2);Trait Implementations§
Source§impl Clone for BipartiteMatching
impl Clone for BipartiteMatching
Source§fn clone(&self) -> BipartiteMatching
fn clone(&self) -> BipartiteMatching
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for BipartiteMatching
impl RefUnwindSafe for BipartiteMatching
impl Send for BipartiteMatching
impl Sync for BipartiteMatching
impl Unpin for BipartiteMatching
impl UnwindSafe for BipartiteMatching
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more