Struct flag_algebra::flags::Digraph
source · pub struct Digraph { /* private fields */ }Expand description
Loopless oriented graphs.
Every pair of vertices has at most one edge.
The possible relations between two vertices is described by the type Arc.
Implementations§
source§impl Digraph
impl Digraph
sourcepub fn new<I>(n: usize, arcs: I) -> Selfwhere
I: IntoIterator<Item = (usize, usize)>,
pub fn new<I>(n: usize, arcs: I) -> Selfwhere I: IntoIterator<Item = (usize, usize)>,
Create an oriented graph with n vertices and arcs in arcs.
Panics
- If
arcscontains vertices not in{0, ..., n-1} - If a loop
(u, u)is provided - If some arc is provided twice
- If both arcs
(u, v)and(v, u)are provided
use flag_algebra::flags::Digraph;
// Oriented path with 3 vertices `0 -> 1 -> 2`
let p3 = Digraph::new(3, [(0, 1), (1, 2)]);sourcepub fn empty(n: usize) -> Self
pub fn empty(n: usize) -> Self
Oriented graph with n vertices and no edge.
use flag_algebra::flags::Digraph;
assert_eq!(Digraph::empty(4), Digraph::new(4, []));sourcepub fn out_nbrs(&self, v: usize) -> Vec<usize>
pub fn out_nbrs(&self, v: usize) -> Vec<usize>
Out-neigborhood of v.
use flag_algebra::flags::Digraph;
let p3 = Digraph::new(3, [(0,1), (1,2)]);
assert_eq!(p3.out_nbrs(1), vec![2]);sourcepub fn in_nbrs(&self, v: usize) -> Vec<usize>
pub fn in_nbrs(&self, v: usize) -> Vec<usize>
In-neigborhood of v.
use flag_algebra::flags::Digraph;
let p3 = Digraph::new(3, [(0,1), (1,2)]);
assert_eq!(p3.in_nbrs(1), vec![0]);Trait Implementations§
source§impl Canonize for Digraph
impl Canonize for Digraph
source§fn invariant_neighborhood(&self, v: usize) -> Vec<Vec<usize>>
fn invariant_neighborhood(&self, v: usize) -> Vec<Vec<usize>>
Return lists of vertices that are invariant isomorphism. Read more
source§fn apply_morphism(&self, p: &[usize]) -> Self
fn apply_morphism(&self, p: &[usize]) -> Self
Return the result of the action of a permuation
p on the object. Read moresource§fn invariant_coloring(&self) -> Option<Vec<u64, Global>>
fn invariant_coloring(&self) -> Option<Vec<u64, Global>>
Optionally returns a value for each node that is invariant by isomorphism. Read more
source§fn canonical_typed(&self, sigma: usize) -> Self
fn canonical_typed(&self, sigma: usize) -> Self
The “typed” objects refers to the case where only
the action of permutations that are constant
on
0..sigma are considered. Read moresource§fn automorphisms(&self) -> AutomorphismIterator<Self>
fn automorphisms(&self) -> AutomorphismIterator<Self>
Iterator on the automorphism group of
g. Read moresource§fn stabilizer(&self, sigma: usize) -> AutomorphismIterator<Self>
fn stabilizer(&self, sigma: usize) -> AutomorphismIterator<Self>
source§impl<'de> Deserialize<'de> for Digraph
impl<'de> Deserialize<'de> for Digraph
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where __D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
source§impl Flag for Digraph
impl Flag for Digraph
source§fn induce(&self, p: &[usize]) -> Self
fn induce(&self, p: &[usize]) -> Self
Returns the subflag induced by the vertices in the slice
set.source§const NAME: &'static str = "Digraph"
const NAME: &'static str = "Digraph"
A unique name for this type of flags. For instance “Graph”.
This nameis used for naming the associated data subdirectory.
source§fn size_zero_flags() -> Vec<Self>
fn size_zero_flags() -> Vec<Self>
Returns the set of all flags of size 0. Read more
source§fn superflags(&self) -> Vec<Self>
fn superflags(&self) -> Vec<Self>
source§const HEREDITARY: bool = true
const HEREDITARY: bool = true
Setting this parameter to
false deactivate checks that induced subflags exists.
Must be true in every classic case.source§fn generate_next(previous: &[Self]) -> Vec<Self>
fn generate_next(previous: &[Self]) -> Vec<Self>
Return the list of flags of size
self.size() + 1 that contain self
as an induced subflag reduced modulo isomorphism.source§fn generate(n: usize) -> Vec<Self>
fn generate(n: usize) -> Vec<Self>
Return the list of flags of size
n reduced modulo isomorphism.source§fn generate_typed_up(type_flag: &Self, g_vec: &[Self]) -> Vec<Self>
fn generate_typed_up(type_flag: &Self, g_vec: &[Self]) -> Vec<Self>
Return the list of flags of
g_vec that can be rooted on the
flag type_flag.
Each different way to root this flag give a different flag in the result.source§fn generate_typed(type_flag: &Self, size: usize) -> Vec<Self>
fn generate_typed(type_flag: &Self, size: usize) -> Vec<Self>
Return the list of flag of size
size rooted on type_flag
reduced modulo (typed) isomorphism.source§fn select_type(&self, eta: &[usize]) -> Self
fn select_type(&self, eta: &[usize]) -> Self
Reorder self so that the
eta.len() first vertices are the values
of eta in the corresponding order.source§impl Ord for Digraph
impl Ord for Digraph
source§impl PartialEq<Digraph> for Digraph
impl PartialEq<Digraph> for Digraph
source§impl PartialOrd<Digraph> for Digraph
impl PartialOrd<Digraph> for Digraph
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for
self and other) and is used by the <=
operator. Read moresource§impl SubFlag<Digraph> for TriangleFree
impl SubFlag<Digraph> for TriangleFree
source§const SUBCLASS_NAME: &'static str = "Triangle-free digraph"
const SUBCLASS_NAME: &'static str = "Triangle-free digraph"
Unique name for the subclass.
This is used for naming the memoization directory.
source§fn is_in_subclass(flag: &Digraph) -> bool
fn is_in_subclass(flag: &Digraph) -> bool
Identifier function for the subclass.
const HEREDITARY: bool = F::HEREDITARY
impl Eq for Digraph
impl StructuralEq for Digraph
impl StructuralPartialEq for Digraph
Auto Trait Implementations§
impl RefUnwindSafe for Digraph
impl Send for Digraph
impl Sync for Digraph
impl Unpin for Digraph
impl UnwindSafe for Digraph
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
§impl<T> Pointable for T
impl<T> Pointable for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).§unsafe fn to_subset_unchecked(&self) -> SS
unsafe fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.