Yog.FSharp
Getting Started Examples API Reference GitHub

Centrality Module

Centrality measures for identifying important nodes in graphs.

Provides degree, closeness, harmonic, betweenness, PageRank, eigenvector, Katz, and alpha centrality measures. All functions return a Map mapping nodes to their centrality scores.

Overview

Measure

Function

Best For

Complexity

Degree

degree

Local connectivity

O(V + E)

Closeness

closeness

Distance to all others

O(V(V+E)logV)

Harmonic

harmonicCentrality

Disconnected graphs

O(V(V+E)logV)

Betweenness

betweenness

Bridge/gatekeeper detection

O(VE)

PageRank

pagerank

Link-quality importance

O(iterations×(V+E))

Eigenvector

eigenvector

Neighbor importance

O(iterations×(V+E))

Katz

katz

Attenuated paths

O(iterations×(V+E))

Alpha

alphaCentrality

Directed influence

O(iterations×(V+E))

Types

Type Description

Centrality

A mapping of Node IDs to their calculated centrality scores.

DegreeMode

Specifies which edges to consider for directed graphs.

PageRankOptions

PageRank options for convergence.

Functions and values

Function or value Description

alphaCentrality alpha initial maxIterations tolerance graph

Full Usage: alphaCentrality alpha initial maxIterations tolerance graph

Parameters:
    alpha : float
    initial : float
    maxIterations : int
    tolerance : float
    graph : Graph<'n, 'e>

Returns: Map<NodeId, float>

Calculates Alpha Centrality for all nodes.

Alpha centrality is a generalization of Katz centrality for directed graphs. Unlike Katz, it does not include a constant beta term.

Formula: C(v) = α * Σ C(u) for all predecessors u (or neighbors for undirected)

Time Complexity: O(max_iterations * (V + E))

Parameters: - alpha: Attenuation factor (typically 0.1-0.5) - initial: Initial centrality value for all nodes

alpha : float
initial : float
maxIterations : int
tolerance : float
graph : Graph<'n, 'e>
Returns: Map<NodeId, float>

betweenness zero add compare graph

Full Usage: betweenness zero add compare graph

Parameters:
    zero : 'e
    add : 'e -> 'e -> 'e
    compare : 'e -> 'e -> int
    graph : Graph<'n, 'e>

Returns: Centrality

Calculates Betweenness Centrality using Brandes' Algorithm.

zero : 'e
add : 'e -> 'e -> 'e
compare : 'e -> 'e -> int
graph : Graph<'n, 'e>
Returns: Centrality

betweennessFloat graph

Full Usage: betweennessFloat graph

Parameters:
    graph : Graph<'a, float>

Returns: Centrality
graph : Graph<'a, float>
Returns: Centrality

betweennessInt graph

Full Usage: betweennessInt graph

Parameters:
Returns: Centrality
graph : Graph<'a, int>
Returns: Centrality

closeness zero add compare toFloat graph

Full Usage: closeness zero add compare toFloat graph

Parameters:
    zero : 'e
    add : 'e -> 'e -> 'e
    compare : 'e -> 'e -> int
    toFloat : 'e -> float
    graph : Graph<'n, 'e>

Returns: Centrality

Calculates Closeness Centrality for all nodes.

Closeness centrality measures how close a node is to all other nodes. Formula: C(v) = (n - 1) / Σ d(v, u) for all u ≠ v

Note: In disconnected graphs, nodes that cannot reach all others get 0.0. Consider using harmonicCentrality for disconnected graphs.

Time Complexity: O(V * (V + E) log V) using Dijkstra from each node

zero : 'e
add : 'e -> 'e -> 'e
compare : 'e -> 'e -> int
toFloat : 'e -> float
graph : Graph<'n, 'e>
Returns: Centrality

closenessFloat graph

Full Usage: closenessFloat graph

Parameters:
    graph : Graph<'a, float>

Returns: Centrality
graph : Graph<'a, float>
Returns: Centrality

closenessInt graph

Full Usage: closenessInt graph

Parameters:
Returns: Centrality
graph : Graph<'a, int>
Returns: Centrality

defaultPageRankOptions

Full Usage: defaultPageRankOptions

Returns: PageRankOptions

degree mode graph

Full Usage: degree mode graph

Parameters:
Returns: Centrality

Calculates the Degree Centrality for all nodes in the graph.

mode : DegreeMode
graph : Graph<'n, 'e>
Returns: Centrality

degreeTotal graph

Full Usage: degreeTotal graph

Parameters:
Returns: Centrality
graph : Graph<'a, 'b>
Returns: Centrality

eigenvector maxIterations tolerance graph

Full Usage: eigenvector maxIterations tolerance graph

Parameters:
    maxIterations : int
    tolerance : float
    graph : Graph<'n, 'e>

Returns: Map<NodeId, float>

Calculates Eigenvector Centrality for all nodes. Node importance is based on the importance of its neighbors.

maxIterations : int
tolerance : float
graph : Graph<'n, 'e>
Returns: Map<NodeId, float>

harmonicCentrality zero add compare toFloat graph

Full Usage: harmonicCentrality zero add compare toFloat graph

Parameters:
    zero : 'e
    add : 'e -> 'e -> 'e
    compare : 'e -> 'e -> int
    toFloat : 'e -> float
    graph : Graph<'n, 'e>

Returns: Centrality

Calculates Harmonic Centrality for all nodes.

Harmonic centrality is a variation of closeness that handles disconnected graphs gracefully. It sums the reciprocals of shortest path distances.

Formula: H(v) = Σ (1 / d(v, u)) / (n - 1) for all reachable u ≠ v

Time Complexity: O(V * (V + E) log V)

zero : 'e
add : 'e -> 'e -> 'e
compare : 'e -> 'e -> int
toFloat : 'e -> float
graph : Graph<'n, 'e>
Returns: Centrality

harmonicCentralityFloat graph

Full Usage: harmonicCentralityFloat graph

Parameters:
    graph : Graph<'a, float>

Returns: Centrality
graph : Graph<'a, float>
Returns: Centrality

harmonicCentralityInt graph

Full Usage: harmonicCentralityInt graph

Parameters:
Returns: Centrality
graph : Graph<'a, int>
Returns: Centrality

katz alpha beta maxIterations tolerance graph

Full Usage: katz alpha beta maxIterations tolerance graph

Parameters:
    alpha : float
    beta : float
    maxIterations : int
    tolerance : float
    graph : Graph<'n, 'e>

Returns: Map<NodeId, float>

Calculates Katz Centrality for all nodes.

Katz centrality adds an attenuation factor (alpha) to prevent infinite accumulation in cycles, plus a constant term (beta) for base centrality.

Formula: C(v) = α * Σ C(u) + β for all neighbors u

Time Complexity: O(max_iterations * (V + E))

Parameters: - alpha: Attenuation factor (must be < 1/largest_eigenvalue, typically 0.1-0.3) - beta: Base centrality (typically 1.0)

alpha : float
beta : float
maxIterations : int
tolerance : float
graph : Graph<'n, 'e>
Returns: Map<NodeId, float>

pagerank options graph

Full Usage: pagerank options graph

Parameters:
Returns: Centrality

Calculates PageRank Centrality for all nodes.

options : PageRankOptions
graph : Graph<'n, 'e>
Returns: Centrality