VfState

Struct VfState 

Source
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>>
where NRef: Debug, ERef: Debug, N2Ref: Debug, E2Ref: Debug,
{ /* 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>
where NRef: Copy + Hash + Ord + Debug, N2Ref: Copy + Hash + Eq + Debug, ERef: Copy + Hash + Eq + Debug, E2Ref: Copy + Debug, P: PatternGraph<NodeWeight, EdgeWeight, NodeRef = NRef, EdgeRef = ERef>, B: Graph<NodeWeight, EdgeWeight, NodeRef = N2Ref, EdgeRef = E2Ref>,

Source§

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 more

Auto 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>
where P: Sync, B: Sync, NRef: Send, N2Ref: Send, ERef: Send, NodeWeight: Sync, EdgeWeight: Sync,

§

impl<'a, NodeWeight, EdgeWeight, NRef, ERef, N2Ref, E2Ref, P, B> Sync for VfState<'a, NodeWeight, EdgeWeight, NRef, ERef, N2Ref, E2Ref, P, B>
where P: Sync, B: Sync, NRef: Sync, N2Ref: Sync, ERef: Sync, NodeWeight: Sync, EdgeWeight: Sync,

§

impl<'a, NodeWeight, EdgeWeight, NRef, ERef, N2Ref, E2Ref, P, B> Unpin for VfState<'a, NodeWeight, EdgeWeight, NRef, ERef, N2Ref, E2Ref, P, B>
where NRef: Unpin, N2Ref: Unpin, ERef: Unpin,

§

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.