---
sources:
- ../../src/analyses/betweenness.rs
---
# Betweenness centrality
## The concept
**Betweenness centrality** measures how often a node appears on the shortest paths between other nodes. A node with high betweenness acts as a bridge — many shortest paths pass through it.
Scores are normalized between 0 and 1. A score of 0 means the node lies on no shortest paths between other nodes. A score of 1 would mean every shortest path passes through it (rare in practice).
## Why it matters for knowledge systems
Betweenness identifies **bridge documents** — files that connect different parts of the knowledge graph:
- **High betweenness** documents are structurally important connectors. They link otherwise distant parts of the graph. Changes to these documents can disrupt navigation paths.
- **Low betweenness** documents are either leaf nodes (endpoints) or deeply embedded within a cluster. They are less structurally critical.
- **Unexpectedly high betweenness** on a document that shouldn't be a hub may indicate missing cross-links elsewhere.
## What drft surfaces
### As an analysis (`drft report`)
```bash
drft report betweenness
```
```
=== betweenness ===
hub.md 0.7200
index.md 0.4500
setup.md 0.1200
leaf.md 0.0000
```
Nodes are sorted by score (highest first).
JSON output:
```json
{
"betweenness": {
"nodes": [
{ "node": "hub.md", "score": 0.72 },
{ "node": "index.md", "score": 0.45 }
]
}
}
```
## Algorithm
Uses [Brandes' algorithm](https://en.wikipedia.org/wiki/Betweenness_centrality#Brandes'_algorithm) on the directed graph. For each source node, BFS computes shortest paths and predecessor lists, then back-propagation accumulates pair-dependencies. Scores are normalized by `(n-1)*(n-2)` for directed graphs. Complexity is O(V * E).