pub struct AdjacencyGraph {
pub n_nodes: usize,
pub adjacency: Vec<Vec<(usize, f64)>>,
}Expand description
Adjacency representation used by the community module.
Uses f64 edge weights directly, avoiding the Eq + Hash constraint
problem present in the generic Graph<F> type.
Fields§
§n_nodes: usizeNumber of nodes.
adjacency: Vec<Vec<(usize, f64)>>Adjacency list: adjacency[u] contains (v, weight) pairs.
The graph is assumed undirected; every edge appears in both directions.
Implementations§
Source§impl AdjacencyGraph
impl AdjacencyGraph
Sourcepub fn from_dense(matrix: &[f64], n: usize) -> Result<Self>
pub fn from_dense(matrix: &[f64], n: usize) -> Result<Self>
Build from a dense adjacency matrix (row-major, n x n). Only positive off-diagonal entries are treated as edges.
Sourcepub fn from_nested(adj: &[Vec<f64>]) -> Result<Self>
pub fn from_nested(adj: &[Vec<f64>]) -> Result<Self>
Build from a symmetric adjacency matrix stored as nested Vec.
Sourcepub fn add_edge(&mut self, u: usize, v: usize, weight: f64) -> Result<()>
pub fn add_edge(&mut self, u: usize, v: usize, weight: f64) -> Result<()>
Add an undirected edge. Does NOT check for duplicates.
Sourcepub fn weighted_degree(&self, node: usize) -> f64
pub fn weighted_degree(&self, node: usize) -> f64
Weighted degree of a node.
Sourcepub fn total_edge_weight(&self) -> f64
pub fn total_edge_weight(&self) -> f64
Total edge weight (each undirected edge counted once).
Sourcepub fn edge_weight(&self, u: usize, v: usize) -> f64
pub fn edge_weight(&self, u: usize, v: usize) -> f64
Get edge weight between two nodes (0 if no edge).
Sourcepub fn modularity(&self, labels: &[usize]) -> f64
pub fn modularity(&self, labels: &[usize]) -> f64
Compute modularity for a given partition.
Q = (1/2m) sum_{ij} [ A_{ij} - k_i k_j / (2m) ] delta(c_i, c_j)
Trait Implementations§
Source§impl Clone for AdjacencyGraph
impl Clone for AdjacencyGraph
Source§fn clone(&self) -> AdjacencyGraph
fn clone(&self) -> AdjacencyGraph
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for AdjacencyGraph
impl Debug for AdjacencyGraph
Source§impl<'de> Deserialize<'de> for AdjacencyGraph
impl<'de> Deserialize<'de> for AdjacencyGraph
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>,
Auto Trait Implementations§
impl Freeze for AdjacencyGraph
impl RefUnwindSafe for AdjacencyGraph
impl Send for AdjacencyGraph
impl Sync for AdjacencyGraph
impl Unpin for AdjacencyGraph
impl UnsafeUnpin for AdjacencyGraph
impl UnwindSafe for AdjacencyGraph
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.