Struct flag_algebra::flags::DirectedGraph
source · pub struct DirectedGraph { /* private fields */ }
Expand description
Loopless directed graphs.
The possible relations between two vertices is described by the type Arc
.
Implementations§
source§impl DirectedGraph
impl DirectedGraph
sourcepub fn new<I>(n: usize, arcs: I) -> Self
pub fn new<I>(n: usize, arcs: I) -> Self
Create a directed graph with n
vertices and arcs in arcs
.
§Panics
- If
arcs
contains vertices not in{0, ..., n-1}
- If a loop
(u, u)
is provided - If some arc is provided twice
use flag_algebra::flags::OrientedGraph;
// Oriented path with 3 vertices `0 -> 1 -> 2`
let p3 = OrientedGraph::new(3, [(0, 1), (1, 2)]);
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::OrientedGraph;
let p3 = OrientedGraph::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::OrientedGraph;
let p3 = OrientedGraph::new(3, [(0, 1), (1, 2)]);
assert_eq!(p3.in_nbrs(1), vec![0]);
sourcepub fn arc(&self, u: usize, v: usize) -> Arc
pub fn arc(&self, u: usize, v: usize) -> Arc
Oriented relation between u
to v
.
use flag_algebra::flags::{DirectedGraph, Arc};
let g = DirectedGraph::new(3, [(0, 1), (1, 2), (2, 1)]);
assert_eq!(g.arc(0, 1), Arc::Edge);
assert_eq!(g.arc(1, 0), Arc::BackEdge);
assert_eq!(g.arc(0, 2), Arc::None);
assert_eq!(g.arc(1, 2), Arc::Reciprocal);
Trait Implementations§
source§impl Canonize for DirectedGraph
impl Canonize for DirectedGraph
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>>
fn invariant_coloring(&self) -> Option<Vec<u64>>
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 morphism_to_canonical(&self) -> Vec<usize>
fn morphism_to_canonical(&self) -> Vec<usize>
source§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 Clone for DirectedGraph
impl Clone for DirectedGraph
source§fn clone(&self) -> DirectedGraph
fn clone(&self) -> DirectedGraph
Returns a copy 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 moresource§impl Debug for DirectedGraph
impl Debug for DirectedGraph
source§impl<'de> Deserialize<'de> for DirectedGraph
impl<'de> Deserialize<'de> for DirectedGraph
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 Display for DirectedGraph
impl Display for DirectedGraph
source§impl Draw for DirectedGraph
impl Draw for DirectedGraph
source§impl Flag for DirectedGraph
impl Flag for DirectedGraph
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 = "DirectedGraph"
const NAME: &'static str = "DirectedGraph"
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 DirectedGraph
impl Ord for DirectedGraph
source§fn cmp(&self, other: &DirectedGraph) -> Ordering
fn cmp(&self, other: &DirectedGraph) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
source§impl PartialEq for DirectedGraph
impl PartialEq for DirectedGraph
source§fn eq(&self, other: &DirectedGraph) -> bool
fn eq(&self, other: &DirectedGraph) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.source§impl PartialOrd for DirectedGraph
impl PartialOrd for DirectedGraph
source§fn partial_cmp(&self, other: &DirectedGraph) -> Option<Ordering>
fn partial_cmp(&self, other: &DirectedGraph) -> Option<Ordering>
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 Serialize for DirectedGraph
impl Serialize for DirectedGraph
impl Eq for DirectedGraph
impl StructuralPartialEq for DirectedGraph
Auto Trait Implementations§
impl RefUnwindSafe for DirectedGraph
impl Send for DirectedGraph
impl Sync for DirectedGraph
impl Unpin for DirectedGraph
impl UnwindSafe for DirectedGraph
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.