Add KADABRA betweenness centrality approximation algorithm - #518
Open
DerSchmachtin wants to merge 1 commit into
Open
Add KADABRA betweenness centrality approximation algorithm#518DerSchmachtin wants to merge 1 commit into
DerSchmachtin wants to merge 1 commit into
Conversation
DerSchmachtin
force-pushed
the
master
branch
2 times, most recently
from
July 31, 2026 18:26
a71b033 to
47fd306
Compare
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #518 +/- ##
==========================================
+ Coverage 97.46% 97.57% +0.11%
==========================================
Files 127 129 +2
Lines 7766 8341 +575
==========================================
+ Hits 7569 8139 +570
- Misses 197 202 +5 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
DerSchmachtin
force-pushed
the
master
branch
5 times, most recently
from
August 5, 2026 07:42
1b7aaad to
6d1291d
Compare
DerSchmachtin
force-pushed
the
master
branch
4 times, most recently
from
August 14, 2026 11:24
e7d10c9 to
0298521
Compare
Implements the KADABRA approximation algorithm for betweenness centrality (Borassi & Natale, 2019), including the adaptive delta-calibration phase, and registers it in the docs, CHANGELOG and test suite. Also switches the JET testset to `target_modules=(Graphs,)`, since `target_defined_modules` was removed in JET 0.12 and now raises a JETConfigError.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This Pull Request introduces the KADABRA (K-ADaptive Approximation of Betweenness centrAlity) algorithm to
Graphs.jl.Computing exact betweenness centrality can be prohibitively expensive on very large graphs. KADABRA provides a fast and highly scalable randomized approximation of the betweenness centrality, as well as an efficient method to find the top-k nodes with the highest betweenness.
The implementation includes two main exported functions:
kadabra_centrality: Approximates the betweenness centrality for all vertices.kadabra_top_k: Returns the topkvertices with the highest betweenness centrality.Reference:
Checklist
kadabra.jltosrc/centrality/test/centrality/kadabra.jland registered it inruntests.jlJuliaFormatter.jlaccording to BlueStyleGraphs.jlGraphs.jlconventions using standard library importsAll tests pass locally. Let me know if there are any changes or further optimizations you would like me to make!
Benchmarks & Performance
To verify the performance, I ran some benchmarks comparing this Julia implementation against the original, highly optimized C++ version from the authors.
Hardware Setup:
All benchmarks were executed on an AMD Ryzen Threadripper 3960X 24-Core Processor (3.80 GHz, 48 threads) with 125 GiB of RAM running Ubuntu 22.04 LTS.
The Julia implementation is competitive compared to the Original C++ Implementation.
Here are the results (using
k=0,delta=0.1andepsilon=0.0001) on a few test instances taken from SNAP: