Struct rs_graph::maxflow::pushrelabel::PushRelabel [−][src]
pub struct PushRelabel<'a, G, F> where
G: 'a + IndexDigraph<'a>, { pub cnt_relabel: usize, pub use_global_relabelling: bool, // some fields omitted }
The push-relabel algorithm.
This struct contains all algorithmic working data.
Fields
cnt_relabel: usizeThe number of relabel operations performed during the algorithm.
use_global_relabelling: boolWhether to use the global relabelling heuristic.
Trait Implementations
impl<'a, G, F> MaxFlow<'a> for PushRelabel<'a, G, F> where
G: IndexDigraph<'a>,
F: NumAssign + Ord + Copy, [src]
impl<'a, G, F> MaxFlow<'a> for PushRelabel<'a, G, F> where
G: IndexDigraph<'a>,
F: NumAssign + Ord + Copy, [src]type Graph = G
Type of the underlying graph.
type Flow = F
Type of flows.
fn new(g: &'a G) -> Self[src]
Return a new push-relabel algorithm data structure for the digraph g.
fn as_graph(&self) -> &'a Self::Graph[src]
Return a reference to the underlying graph.
fn value(&self) -> F[src]
Return the flow value.
The function returns 0 if the flow has not been computed, yet.
fn flow(&self, e: G::Edge) -> F[src]
Return the flow value over some edge.
The function returns 0 if the flow has not been computed, yet.
fn solve<Us>(&mut self, src: G::Node, snk: G::Node, upper: Us) where
Us: Fn(G::Edge) -> Self::Flow, [src]
Us: Fn(G::Edge) -> Self::Flow,
Run the push-relabel algorithm from some source to some sink node.
fn mincut(&self) -> Vec<G::Node>[src]
Return the minimal cut.
fn flow_vec(&self) -> EdgeVec<'a, &'a Self::Graph, Self::Flow>[src]
Auto Trait Implementations
impl<'a, G, F> RefUnwindSafe for PushRelabel<'a, G, F> where
F: RefUnwindSafe,
G: RefUnwindSafe,
<G as GraphType<'a>>::Edge: RefUnwindSafe,
<G as Directed<'a>>::IncidentIt: RefUnwindSafe,
<G as GraphType<'a>>::Node: RefUnwindSafe,
impl<'a, G, F> RefUnwindSafe for PushRelabel<'a, G, F> where
F: RefUnwindSafe,
G: RefUnwindSafe,
<G as GraphType<'a>>::Edge: RefUnwindSafe,
<G as Directed<'a>>::IncidentIt: RefUnwindSafe,
<G as GraphType<'a>>::Node: RefUnwindSafe, impl<'a, G, F> Send for PushRelabel<'a, G, F> where
F: Send,
G: Sync,
<G as GraphType<'a>>::Edge: Send,
<G as Directed<'a>>::IncidentIt: Send,
<G as GraphType<'a>>::Node: Send,
impl<'a, G, F> Send for PushRelabel<'a, G, F> where
F: Send,
G: Sync,
<G as GraphType<'a>>::Edge: Send,
<G as Directed<'a>>::IncidentIt: Send,
<G as GraphType<'a>>::Node: Send, impl<'a, G, F> Sync for PushRelabel<'a, G, F> where
F: Sync,
G: Sync,
<G as GraphType<'a>>::Edge: Sync,
<G as Directed<'a>>::IncidentIt: Sync,
<G as GraphType<'a>>::Node: Sync,
impl<'a, G, F> Sync for PushRelabel<'a, G, F> where
F: Sync,
G: Sync,
<G as GraphType<'a>>::Edge: Sync,
<G as Directed<'a>>::IncidentIt: Sync,
<G as GraphType<'a>>::Node: Sync, impl<'a, G, F> Unpin for PushRelabel<'a, G, F> where
F: Unpin,
<G as GraphType<'a>>::Edge: Unpin,
<G as Directed<'a>>::IncidentIt: Unpin,
<G as GraphType<'a>>::Node: Unpin,
impl<'a, G, F> Unpin for PushRelabel<'a, G, F> where
F: Unpin,
<G as GraphType<'a>>::Edge: Unpin,
<G as Directed<'a>>::IncidentIt: Unpin,
<G as GraphType<'a>>::Node: Unpin, impl<'a, G, F> UnwindSafe for PushRelabel<'a, G, F> where
F: UnwindSafe,
G: RefUnwindSafe,
<G as GraphType<'a>>::Edge: UnwindSafe,
<G as Directed<'a>>::IncidentIt: UnwindSafe,
<G as GraphType<'a>>::Node: UnwindSafe,
impl<'a, G, F> UnwindSafe for PushRelabel<'a, G, F> where
F: UnwindSafe,
G: RefUnwindSafe,
<G as GraphType<'a>>::Edge: UnwindSafe,
<G as Directed<'a>>::IncidentIt: UnwindSafe,
<G as GraphType<'a>>::Node: UnwindSafe,