pub struct VfState<'a, NodeWeight, EdgeWeight, NRef, ERef, N2Ref, E2Ref, P: PatternGraph<NodeWeight, EdgeWeight, NodeRef = NRef, EdgeRef = ERef>, B: Graph<NodeWeight, EdgeWeight, NodeRef = N2Ref, EdgeRef = E2Ref>>{ /* private fields */ }Expand description
Implements an subgraph isomorphism algorithm based on the papers “A (Sub)Graph Isomorphism Algorithm for Matching Large Graphs” by Cordella, Foggia, Sansone, and Vento, published in 2004 (doi 10.1109/TPAMI.2004.75) as well as “Performance Evaluation of the VF Graph Matching Algorithm” by the same authors in 1999 (doi 10.1109/ICIAP.1999.797762). The paper referenced above call this algorithm VF2 respectively VF. VfState defines the required data structures as defined in Subsection 2.4 of the 2004 paper, as well as the algorithms to run them.
Trait Implementations§
Source§impl<'a, NodeWeight, EdgeWeight, NRef, ERef, N2Ref, E2Ref, P, B> SubgraphAlgorithm<'a, NodeWeight, EdgeWeight, NRef, ERef, N2Ref, E2Ref, P, B> for VfState<'a, NodeWeight, EdgeWeight, NRef, ERef, N2Ref, E2Ref, P, B>
impl<'a, NodeWeight, EdgeWeight, NRef, ERef, N2Ref, E2Ref, P, B> SubgraphAlgorithm<'a, NodeWeight, EdgeWeight, NRef, ERef, N2Ref, E2Ref, P, B> for VfState<'a, NodeWeight, EdgeWeight, NRef, ERef, N2Ref, E2Ref, P, B>
Source§fn eval(
pattern_graph: &'a P,
base_graph: &'a B,
) -> Vec<FilterMap<'a, PatternElement<NodeWeight>, PatternElement<EdgeWeight>, &'a NodeWeight, &'a EdgeWeight, P>>
fn eval( pattern_graph: &'a P, base_graph: &'a B, ) -> Vec<FilterMap<'a, PatternElement<NodeWeight>, PatternElement<EdgeWeight>, &'a NodeWeight, &'a EdgeWeight, P>>
Creates and evaluates a query to find all subgraphs of
base_graph that match pattern_graph. Read moreAuto Trait Implementations§
impl<'a, NodeWeight, EdgeWeight, NRef, ERef, N2Ref, E2Ref, P, B> Freeze for VfState<'a, NodeWeight, EdgeWeight, NRef, ERef, N2Ref, E2Ref, P, B>
impl<'a, NodeWeight, EdgeWeight, NRef, ERef, N2Ref, E2Ref, P, B> RefUnwindSafe for VfState<'a, NodeWeight, EdgeWeight, NRef, ERef, N2Ref, E2Ref, P, B>where
P: RefUnwindSafe,
B: RefUnwindSafe,
NRef: RefUnwindSafe,
N2Ref: RefUnwindSafe,
ERef: RefUnwindSafe,
NodeWeight: RefUnwindSafe,
EdgeWeight: RefUnwindSafe,
impl<'a, NodeWeight, EdgeWeight, NRef, ERef, N2Ref, E2Ref, P, B> Send for VfState<'a, NodeWeight, EdgeWeight, NRef, ERef, N2Ref, E2Ref, P, B>
impl<'a, NodeWeight, EdgeWeight, NRef, ERef, N2Ref, E2Ref, P, B> Sync for VfState<'a, NodeWeight, EdgeWeight, NRef, ERef, N2Ref, E2Ref, P, B>
impl<'a, NodeWeight, EdgeWeight, NRef, ERef, N2Ref, E2Ref, P, B> Unpin for VfState<'a, NodeWeight, EdgeWeight, NRef, ERef, N2Ref, E2Ref, P, B>
impl<'a, NodeWeight, EdgeWeight, NRef, ERef, N2Ref, E2Ref, P, B> UnwindSafe for VfState<'a, NodeWeight, EdgeWeight, NRef, ERef, N2Ref, E2Ref, P, B>where
P: RefUnwindSafe,
B: RefUnwindSafe,
NRef: UnwindSafe + RefUnwindSafe,
N2Ref: UnwindSafe + RefUnwindSafe,
ERef: UnwindSafe,
NodeWeight: RefUnwindSafe,
EdgeWeight: RefUnwindSafe,
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