@ladybugmem/icebug 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (624) hide show
  1. package/README.md +14 -0
  2. package/binding.gyp +54 -0
  3. package/build/Release/.deps/Release/icebug.node.d +1 -0
  4. package/build/Release/.deps/Release/obj.target/icebug/src/addon.o.d +291 -0
  5. package/build/Release/icebug.node +0 -0
  6. package/build/Release/obj.target/icebug/src/addon.o +0 -0
  7. package/lib/index.d.ts +361 -0
  8. package/lib/index.js +102 -0
  9. package/package.json +42 -0
  10. package/src/addon.cpp +1253 -0
  11. package/vendor/include/networkit/GlobalState.hpp +86 -0
  12. package/vendor/include/networkit/Globals.hpp +41 -0
  13. package/vendor/include/networkit/algebraic/AlgebraicGlobals.hpp +27 -0
  14. package/vendor/include/networkit/algebraic/CSRGeneralMatrix.hpp +1292 -0
  15. package/vendor/include/networkit/algebraic/CSRMatrix.hpp +11 -0
  16. package/vendor/include/networkit/algebraic/DenseMatrix.hpp +537 -0
  17. package/vendor/include/networkit/algebraic/DynamicMatrix.hpp +514 -0
  18. package/vendor/include/networkit/algebraic/GraphBLAS.hpp +323 -0
  19. package/vendor/include/networkit/algebraic/MatrixTools.hpp +156 -0
  20. package/vendor/include/networkit/algebraic/Semirings.hpp +171 -0
  21. package/vendor/include/networkit/algebraic/SparseAccumulator.hpp +111 -0
  22. package/vendor/include/networkit/algebraic/Vector.hpp +371 -0
  23. package/vendor/include/networkit/algebraic/algorithms/AlgebraicBFS.hpp +72 -0
  24. package/vendor/include/networkit/algebraic/algorithms/AlgebraicBellmanFord.hpp +88 -0
  25. package/vendor/include/networkit/algebraic/algorithms/AlgebraicMatchingCoarsening.hpp +96 -0
  26. package/vendor/include/networkit/algebraic/algorithms/AlgebraicPageRank.hpp +145 -0
  27. package/vendor/include/networkit/algebraic/algorithms/AlgebraicSpanningEdgeCentrality.hpp +122 -0
  28. package/vendor/include/networkit/algebraic/algorithms/AlgebraicTriangleCounting.hpp +76 -0
  29. package/vendor/include/networkit/auxiliary/AlignedAllocator.hpp +113 -0
  30. package/vendor/include/networkit/auxiliary/ArrayTools.hpp +85 -0
  31. package/vendor/include/networkit/auxiliary/BloomFilter.hpp +70 -0
  32. package/vendor/include/networkit/auxiliary/BucketPQ.hpp +142 -0
  33. package/vendor/include/networkit/auxiliary/Enforce.hpp +117 -0
  34. package/vendor/include/networkit/auxiliary/FunctionTraits.hpp +74 -0
  35. package/vendor/include/networkit/auxiliary/HashUtils.hpp +28 -0
  36. package/vendor/include/networkit/auxiliary/IncrementalUniformRandomSelector.hpp +52 -0
  37. package/vendor/include/networkit/auxiliary/Log.hpp +119 -0
  38. package/vendor/include/networkit/auxiliary/MissingMath.hpp +48 -0
  39. package/vendor/include/networkit/auxiliary/Multiprecision.hpp +17 -0
  40. package/vendor/include/networkit/auxiliary/NumberParsing.hpp +307 -0
  41. package/vendor/include/networkit/auxiliary/NumericTools.hpp +57 -0
  42. package/vendor/include/networkit/auxiliary/Parallel.hpp +56 -0
  43. package/vendor/include/networkit/auxiliary/Parallelism.hpp +33 -0
  44. package/vendor/include/networkit/auxiliary/PrioQueue.hpp +252 -0
  45. package/vendor/include/networkit/auxiliary/Random.hpp +122 -0
  46. package/vendor/include/networkit/auxiliary/SetIntersector.hpp +72 -0
  47. package/vendor/include/networkit/auxiliary/SignalHandling.hpp +39 -0
  48. package/vendor/include/networkit/auxiliary/SortedList.hpp +128 -0
  49. package/vendor/include/networkit/auxiliary/SparseVector.hpp +215 -0
  50. package/vendor/include/networkit/auxiliary/SpinLock.hpp +23 -0
  51. package/vendor/include/networkit/auxiliary/StringBuilder.hpp +322 -0
  52. package/vendor/include/networkit/auxiliary/StringTools.hpp +76 -0
  53. package/vendor/include/networkit/auxiliary/TemplateUtils.hpp +76 -0
  54. package/vendor/include/networkit/auxiliary/Timer.hpp +145 -0
  55. package/vendor/include/networkit/auxiliary/VectorComparator.hpp +32 -0
  56. package/vendor/include/networkit/base/Algorithm.hpp +41 -0
  57. package/vendor/include/networkit/base/DynAlgorithm.hpp +31 -0
  58. package/vendor/include/networkit/centrality/ApproxBetweenness.hpp +62 -0
  59. package/vendor/include/networkit/centrality/ApproxCloseness.hpp +136 -0
  60. package/vendor/include/networkit/centrality/ApproxElectricalCloseness.hpp +156 -0
  61. package/vendor/include/networkit/centrality/ApproxGroupBetweenness.hpp +124 -0
  62. package/vendor/include/networkit/centrality/ApproxSpanningEdge.hpp +84 -0
  63. package/vendor/include/networkit/centrality/Betweenness.hpp +47 -0
  64. package/vendor/include/networkit/centrality/Centrality.hpp +98 -0
  65. package/vendor/include/networkit/centrality/Closeness.hpp +107 -0
  66. package/vendor/include/networkit/centrality/ComplexPaths.hpp +113 -0
  67. package/vendor/include/networkit/centrality/CoreDecomposition.hpp +161 -0
  68. package/vendor/include/networkit/centrality/DegreeCentrality.hpp +55 -0
  69. package/vendor/include/networkit/centrality/DynApproxBetweenness.hpp +95 -0
  70. package/vendor/include/networkit/centrality/DynBetweenness.hpp +99 -0
  71. package/vendor/include/networkit/centrality/DynBetweennessOneNode.hpp +98 -0
  72. package/vendor/include/networkit/centrality/DynKatzCentrality.hpp +115 -0
  73. package/vendor/include/networkit/centrality/DynTopHarmonicCloseness.hpp +223 -0
  74. package/vendor/include/networkit/centrality/EigenvectorCentrality.hpp +41 -0
  75. package/vendor/include/networkit/centrality/EstimateBetweenness.hpp +51 -0
  76. package/vendor/include/networkit/centrality/ForestCentrality.hpp +112 -0
  77. package/vendor/include/networkit/centrality/GedWalk.hpp +225 -0
  78. package/vendor/include/networkit/centrality/GroupCloseness.hpp +115 -0
  79. package/vendor/include/networkit/centrality/GroupClosenessGrowShrink.hpp +78 -0
  80. package/vendor/include/networkit/centrality/GroupClosenessLocalSearch.hpp +77 -0
  81. package/vendor/include/networkit/centrality/GroupClosenessLocalSwaps.hpp +106 -0
  82. package/vendor/include/networkit/centrality/GroupDegree.hpp +155 -0
  83. package/vendor/include/networkit/centrality/GroupHarmonicCloseness.hpp +83 -0
  84. package/vendor/include/networkit/centrality/HarmonicCloseness.hpp +48 -0
  85. package/vendor/include/networkit/centrality/KPathCentrality.hpp +52 -0
  86. package/vendor/include/networkit/centrality/KadabraBetweenness.hpp +242 -0
  87. package/vendor/include/networkit/centrality/KatzCentrality.hpp +62 -0
  88. package/vendor/include/networkit/centrality/LaplacianCentrality.hpp +44 -0
  89. package/vendor/include/networkit/centrality/LocalClusteringCoefficient.hpp +60 -0
  90. package/vendor/include/networkit/centrality/LocalPartitionCoverage.hpp +43 -0
  91. package/vendor/include/networkit/centrality/LocalSquareClusteringCoefficient.hpp +42 -0
  92. package/vendor/include/networkit/centrality/PageRank.hpp +101 -0
  93. package/vendor/include/networkit/centrality/PermanenceCentrality.hpp +48 -0
  94. package/vendor/include/networkit/centrality/Sfigality.hpp +45 -0
  95. package/vendor/include/networkit/centrality/SpanningEdgeCentrality.hpp +86 -0
  96. package/vendor/include/networkit/centrality/TopCloseness.hpp +136 -0
  97. package/vendor/include/networkit/centrality/TopHarmonicCloseness.hpp +151 -0
  98. package/vendor/include/networkit/clique/MaximalCliques.hpp +83 -0
  99. package/vendor/include/networkit/coarsening/ClusteringProjector.hpp +59 -0
  100. package/vendor/include/networkit/coarsening/CoarsenedGraphView.hpp +156 -0
  101. package/vendor/include/networkit/coarsening/GraphCoarsening.hpp +57 -0
  102. package/vendor/include/networkit/coarsening/MatchingCoarsening.hpp +43 -0
  103. package/vendor/include/networkit/coarsening/ParallelPartitionCoarsening.hpp +33 -0
  104. package/vendor/include/networkit/coarsening/ParallelPartitionCoarseningView.hpp +62 -0
  105. package/vendor/include/networkit/community/AdjustedRandMeasure.hpp +31 -0
  106. package/vendor/include/networkit/community/ClusteringGenerator.hpp +75 -0
  107. package/vendor/include/networkit/community/CommunityDetectionAlgorithm.hpp +58 -0
  108. package/vendor/include/networkit/community/Conductance.hpp +32 -0
  109. package/vendor/include/networkit/community/CoverF1Similarity.hpp +53 -0
  110. package/vendor/include/networkit/community/CoverHubDominance.hpp +38 -0
  111. package/vendor/include/networkit/community/Coverage.hpp +25 -0
  112. package/vendor/include/networkit/community/CutClustering.hpp +62 -0
  113. package/vendor/include/networkit/community/DissimilarityMeasure.hpp +31 -0
  114. package/vendor/include/networkit/community/DynamicNMIDistance.hpp +44 -0
  115. package/vendor/include/networkit/community/EdgeCut.hpp +24 -0
  116. package/vendor/include/networkit/community/GraphClusteringTools.hpp +103 -0
  117. package/vendor/include/networkit/community/GraphStructuralRandMeasure.hpp +28 -0
  118. package/vendor/include/networkit/community/HubDominance.hpp +46 -0
  119. package/vendor/include/networkit/community/IntrapartitionDensity.hpp +44 -0
  120. package/vendor/include/networkit/community/IsolatedInterpartitionConductance.hpp +40 -0
  121. package/vendor/include/networkit/community/IsolatedInterpartitionExpansion.hpp +40 -0
  122. package/vendor/include/networkit/community/JaccardMeasure.hpp +25 -0
  123. package/vendor/include/networkit/community/LFM.hpp +49 -0
  124. package/vendor/include/networkit/community/LPDegreeOrdered.hpp +48 -0
  125. package/vendor/include/networkit/community/LocalCommunityEvaluation.hpp +100 -0
  126. package/vendor/include/networkit/community/LocalCoverEvaluation.hpp +31 -0
  127. package/vendor/include/networkit/community/LocalPartitionEvaluation.hpp +31 -0
  128. package/vendor/include/networkit/community/LouvainMapEquation.hpp +135 -0
  129. package/vendor/include/networkit/community/Modularity.hpp +54 -0
  130. package/vendor/include/networkit/community/NMIDistance.hpp +28 -0
  131. package/vendor/include/networkit/community/NodeStructuralRandMeasure.hpp +27 -0
  132. package/vendor/include/networkit/community/OverlappingCommunityDetectionAlgorithm.hpp +51 -0
  133. package/vendor/include/networkit/community/OverlappingNMIDistance.hpp +175 -0
  134. package/vendor/include/networkit/community/PLM.hpp +89 -0
  135. package/vendor/include/networkit/community/PLP.hpp +83 -0
  136. package/vendor/include/networkit/community/ParallelAgglomerativeClusterer.hpp +37 -0
  137. package/vendor/include/networkit/community/ParallelLeiden.hpp +96 -0
  138. package/vendor/include/networkit/community/ParallelLeidenView.hpp +138 -0
  139. package/vendor/include/networkit/community/PartitionFragmentation.hpp +30 -0
  140. package/vendor/include/networkit/community/PartitionHubDominance.hpp +37 -0
  141. package/vendor/include/networkit/community/PartitionIntersection.hpp +25 -0
  142. package/vendor/include/networkit/community/QualityMeasure.hpp +27 -0
  143. package/vendor/include/networkit/community/SampledGraphStructuralRandMeasure.hpp +40 -0
  144. package/vendor/include/networkit/community/SampledNodeStructuralRandMeasure.hpp +40 -0
  145. package/vendor/include/networkit/community/StablePartitionNodes.hpp +48 -0
  146. package/vendor/include/networkit/components/BiconnectedComponents.hpp +116 -0
  147. package/vendor/include/networkit/components/ComponentDecomposition.hpp +72 -0
  148. package/vendor/include/networkit/components/ConnectedComponents.hpp +55 -0
  149. package/vendor/include/networkit/components/DynConnectedComponents.hpp +71 -0
  150. package/vendor/include/networkit/components/DynWeaklyConnectedComponents.hpp +73 -0
  151. package/vendor/include/networkit/components/ParallelConnectedComponents.hpp +44 -0
  152. package/vendor/include/networkit/components/RandomSpanningForest.hpp +36 -0
  153. package/vendor/include/networkit/components/StronglyConnectedComponents.hpp +50 -0
  154. package/vendor/include/networkit/components/WeaklyConnectedComponents.hpp +59 -0
  155. package/vendor/include/networkit/correlation/Assortativity.hpp +64 -0
  156. package/vendor/include/networkit/distance/APSP.hpp +70 -0
  157. package/vendor/include/networkit/distance/AStar.hpp +68 -0
  158. package/vendor/include/networkit/distance/AStarGeneral.hpp +110 -0
  159. package/vendor/include/networkit/distance/AdamicAdarDistance.hpp +52 -0
  160. package/vendor/include/networkit/distance/AffectedNodes.hpp +130 -0
  161. package/vendor/include/networkit/distance/AlgebraicDistance.hpp +63 -0
  162. package/vendor/include/networkit/distance/BFS.hpp +43 -0
  163. package/vendor/include/networkit/distance/BidirectionalBFS.hpp +51 -0
  164. package/vendor/include/networkit/distance/BidirectionalDijkstra.hpp +69 -0
  165. package/vendor/include/networkit/distance/CommuteTimeDistance.hpp +89 -0
  166. package/vendor/include/networkit/distance/Diameter.hpp +97 -0
  167. package/vendor/include/networkit/distance/Dijkstra.hpp +50 -0
  168. package/vendor/include/networkit/distance/DynAPSP.hpp +67 -0
  169. package/vendor/include/networkit/distance/DynBFS.hpp +56 -0
  170. package/vendor/include/networkit/distance/DynDijkstra.hpp +57 -0
  171. package/vendor/include/networkit/distance/DynPrunedLandmarkLabeling.hpp +67 -0
  172. package/vendor/include/networkit/distance/DynSSSP.hpp +87 -0
  173. package/vendor/include/networkit/distance/Eccentricity.hpp +32 -0
  174. package/vendor/include/networkit/distance/EffectiveDiameter.hpp +47 -0
  175. package/vendor/include/networkit/distance/EffectiveDiameterApproximation.hpp +57 -0
  176. package/vendor/include/networkit/distance/FloydWarshall.hpp +93 -0
  177. package/vendor/include/networkit/distance/GraphDistance.hpp +49 -0
  178. package/vendor/include/networkit/distance/HopPlotApproximation.hpp +62 -0
  179. package/vendor/include/networkit/distance/IncompleteDijkstra.hpp +66 -0
  180. package/vendor/include/networkit/distance/IncompleteSSSP.hpp +41 -0
  181. package/vendor/include/networkit/distance/JaccardDistance.hpp +57 -0
  182. package/vendor/include/networkit/distance/MultiTargetBFS.hpp +32 -0
  183. package/vendor/include/networkit/distance/MultiTargetDijkstra.hpp +40 -0
  184. package/vendor/include/networkit/distance/NeighborhoodFunction.hpp +47 -0
  185. package/vendor/include/networkit/distance/NeighborhoodFunctionApproximation.hpp +56 -0
  186. package/vendor/include/networkit/distance/NeighborhoodFunctionHeuristic.hpp +56 -0
  187. package/vendor/include/networkit/distance/NodeDistance.hpp +54 -0
  188. package/vendor/include/networkit/distance/PrunedLandmarkLabeling.hpp +76 -0
  189. package/vendor/include/networkit/distance/ReverseBFS.hpp +46 -0
  190. package/vendor/include/networkit/distance/SPSP.hpp +143 -0
  191. package/vendor/include/networkit/distance/SSSP.hpp +216 -0
  192. package/vendor/include/networkit/distance/STSP.hpp +193 -0
  193. package/vendor/include/networkit/distance/Volume.hpp +66 -0
  194. package/vendor/include/networkit/dynamics/DGSStreamParser.hpp +40 -0
  195. package/vendor/include/networkit/dynamics/DGSWriter.hpp +30 -0
  196. package/vendor/include/networkit/dynamics/GraphDifference.hpp +110 -0
  197. package/vendor/include/networkit/dynamics/GraphEvent.hpp +55 -0
  198. package/vendor/include/networkit/dynamics/GraphEventHandler.hpp +39 -0
  199. package/vendor/include/networkit/dynamics/GraphEventProxy.hpp +55 -0
  200. package/vendor/include/networkit/dynamics/GraphUpdater.hpp +38 -0
  201. package/vendor/include/networkit/edgescores/ChibaNishizekiQuadrangleEdgeScore.hpp +26 -0
  202. package/vendor/include/networkit/edgescores/ChibaNishizekiTriangleEdgeScore.hpp +33 -0
  203. package/vendor/include/networkit/edgescores/EdgeScore.hpp +50 -0
  204. package/vendor/include/networkit/edgescores/EdgeScoreAsWeight.hpp +33 -0
  205. package/vendor/include/networkit/edgescores/EdgeScoreBlender.hpp +33 -0
  206. package/vendor/include/networkit/edgescores/EdgeScoreLinearizer.hpp +32 -0
  207. package/vendor/include/networkit/edgescores/EdgeScoreNormalizer.hpp +35 -0
  208. package/vendor/include/networkit/edgescores/GeometricMeanScore.hpp +29 -0
  209. package/vendor/include/networkit/edgescores/PrefixJaccardScore.hpp +23 -0
  210. package/vendor/include/networkit/edgescores/TriangleEdgeScore.hpp +39 -0
  211. package/vendor/include/networkit/embedding/Node2Vec.hpp +83 -0
  212. package/vendor/include/networkit/flow/EdmondsKarp.hpp +112 -0
  213. package/vendor/include/networkit/generators/BarabasiAlbertGenerator.hpp +87 -0
  214. package/vendor/include/networkit/generators/ChungLuGenerator.hpp +46 -0
  215. package/vendor/include/networkit/generators/ChungLuGeneratorAlamEtAl.hpp +63 -0
  216. package/vendor/include/networkit/generators/ClusteredRandomGraphGenerator.hpp +56 -0
  217. package/vendor/include/networkit/generators/ConfigurationModel.hpp +36 -0
  218. package/vendor/include/networkit/generators/DorogovtsevMendesGenerator.hpp +33 -0
  219. package/vendor/include/networkit/generators/DynamicBarabasiAlbertGenerator.hpp +33 -0
  220. package/vendor/include/networkit/generators/DynamicDGSParser.hpp +51 -0
  221. package/vendor/include/networkit/generators/DynamicDorogovtsevMendesGenerator.hpp +34 -0
  222. package/vendor/include/networkit/generators/DynamicForestFireGenerator.hpp +55 -0
  223. package/vendor/include/networkit/generators/DynamicGraphGenerator.hpp +40 -0
  224. package/vendor/include/networkit/generators/DynamicGraphSource.hpp +79 -0
  225. package/vendor/include/networkit/generators/DynamicHyperbolicGenerator.hpp +143 -0
  226. package/vendor/include/networkit/generators/DynamicPathGenerator.hpp +26 -0
  227. package/vendor/include/networkit/generators/DynamicPubWebGenerator.hpp +54 -0
  228. package/vendor/include/networkit/generators/EdgeSwitchingMarkovChainGenerator.hpp +65 -0
  229. package/vendor/include/networkit/generators/ErdosRenyiEnumerator.hpp +318 -0
  230. package/vendor/include/networkit/generators/ErdosRenyiGenerator.hpp +56 -0
  231. package/vendor/include/networkit/generators/HavelHakimiGenerator.hpp +48 -0
  232. package/vendor/include/networkit/generators/HyperbolicGenerator.hpp +236 -0
  233. package/vendor/include/networkit/generators/LFRGenerator.hpp +175 -0
  234. package/vendor/include/networkit/generators/MocnikGenerator.hpp +147 -0
  235. package/vendor/include/networkit/generators/MocnikGeneratorBasic.hpp +58 -0
  236. package/vendor/include/networkit/generators/PowerlawDegreeSequence.hpp +128 -0
  237. package/vendor/include/networkit/generators/PubWebGenerator.hpp +94 -0
  238. package/vendor/include/networkit/generators/RegularRingLatticeGenerator.hpp +37 -0
  239. package/vendor/include/networkit/generators/RmatGenerator.hpp +67 -0
  240. package/vendor/include/networkit/generators/StaticDegreeSequenceGenerator.hpp +42 -0
  241. package/vendor/include/networkit/generators/StaticGraphGenerator.hpp +30 -0
  242. package/vendor/include/networkit/generators/StochasticBlockmodel.hpp +41 -0
  243. package/vendor/include/networkit/generators/WattsStrogatzGenerator.hpp +43 -0
  244. package/vendor/include/networkit/generators/quadtree/QuadNode.hpp +857 -0
  245. package/vendor/include/networkit/generators/quadtree/QuadNodeCartesianEuclid.hpp +587 -0
  246. package/vendor/include/networkit/generators/quadtree/QuadNodePolarEuclid.hpp +726 -0
  247. package/vendor/include/networkit/generators/quadtree/Quadtree.hpp +232 -0
  248. package/vendor/include/networkit/generators/quadtree/QuadtreeCartesianEuclid.hpp +149 -0
  249. package/vendor/include/networkit/generators/quadtree/QuadtreePolarEuclid.hpp +143 -0
  250. package/vendor/include/networkit/geometric/HyperbolicSpace.hpp +248 -0
  251. package/vendor/include/networkit/geometric/Point2DWithIndex.hpp +145 -0
  252. package/vendor/include/networkit/global/ClusteringCoefficient.hpp +42 -0
  253. package/vendor/include/networkit/global/GlobalClusteringCoefficient.hpp +24 -0
  254. package/vendor/include/networkit/graph/Attributes.hpp +568 -0
  255. package/vendor/include/networkit/graph/BFS.hpp +111 -0
  256. package/vendor/include/networkit/graph/DFS.hpp +71 -0
  257. package/vendor/include/networkit/graph/Dijkstra.hpp +83 -0
  258. package/vendor/include/networkit/graph/EdgeIterators.hpp +171 -0
  259. package/vendor/include/networkit/graph/Graph.hpp +2083 -0
  260. package/vendor/include/networkit/graph/GraphBuilder.hpp +289 -0
  261. package/vendor/include/networkit/graph/GraphR.hpp +133 -0
  262. package/vendor/include/networkit/graph/GraphTools.hpp +589 -0
  263. package/vendor/include/networkit/graph/GraphW.hpp +1236 -0
  264. package/vendor/include/networkit/graph/KruskalMSF.hpp +50 -0
  265. package/vendor/include/networkit/graph/NeighborIterators.hpp +163 -0
  266. package/vendor/include/networkit/graph/NodeIterators.hpp +127 -0
  267. package/vendor/include/networkit/graph/PrimMSF.hpp +66 -0
  268. package/vendor/include/networkit/graph/RandomMaximumSpanningForest.hpp +133 -0
  269. package/vendor/include/networkit/graph/SpanningForest.hpp +41 -0
  270. package/vendor/include/networkit/graph/TopologicalSort.hpp +87 -0
  271. package/vendor/include/networkit/graph/UnionMaximumSpanningForest.hpp +126 -0
  272. package/vendor/include/networkit/graph/test/GraphBuilderBenchmark.hpp +68 -0
  273. package/vendor/include/networkit/independentset/IndependentSetFinder.hpp +44 -0
  274. package/vendor/include/networkit/independentset/Luby.hpp +27 -0
  275. package/vendor/include/networkit/io/BinaryEdgeListPartitionReader.hpp +45 -0
  276. package/vendor/include/networkit/io/BinaryEdgeListPartitionWriter.hpp +47 -0
  277. package/vendor/include/networkit/io/BinaryPartitionReader.hpp +41 -0
  278. package/vendor/include/networkit/io/BinaryPartitionWriter.hpp +44 -0
  279. package/vendor/include/networkit/io/CoverReader.hpp +27 -0
  280. package/vendor/include/networkit/io/CoverWriter.hpp +21 -0
  281. package/vendor/include/networkit/io/DGSReader.hpp +39 -0
  282. package/vendor/include/networkit/io/DibapGraphReader.hpp +43 -0
  283. package/vendor/include/networkit/io/DotGraphWriter.hpp +39 -0
  284. package/vendor/include/networkit/io/DotPartitionWriter.hpp +23 -0
  285. package/vendor/include/networkit/io/DynamicGraphReader.hpp +29 -0
  286. package/vendor/include/networkit/io/EdgeListCoverReader.hpp +35 -0
  287. package/vendor/include/networkit/io/EdgeListPartitionReader.hpp +43 -0
  288. package/vendor/include/networkit/io/EdgeListReader.hpp +61 -0
  289. package/vendor/include/networkit/io/EdgeListWriter.hpp +48 -0
  290. package/vendor/include/networkit/io/GMLGraphReader.hpp +33 -0
  291. package/vendor/include/networkit/io/GMLGraphWriter.hpp +33 -0
  292. package/vendor/include/networkit/io/GraphIO.hpp +52 -0
  293. package/vendor/include/networkit/io/GraphReader.hpp +40 -0
  294. package/vendor/include/networkit/io/GraphToolBinaryReader.hpp +71 -0
  295. package/vendor/include/networkit/io/GraphToolBinaryWriter.hpp +61 -0
  296. package/vendor/include/networkit/io/GraphWriter.hpp +27 -0
  297. package/vendor/include/networkit/io/KONECTGraphReader.hpp +44 -0
  298. package/vendor/include/networkit/io/LineFileReader.hpp +42 -0
  299. package/vendor/include/networkit/io/METISGraphReader.hpp +36 -0
  300. package/vendor/include/networkit/io/METISGraphWriter.hpp +29 -0
  301. package/vendor/include/networkit/io/METISParser.hpp +63 -0
  302. package/vendor/include/networkit/io/MTXGraphReader.hpp +31 -0
  303. package/vendor/include/networkit/io/MTXParser.hpp +87 -0
  304. package/vendor/include/networkit/io/MatrixMarketReader.hpp +33 -0
  305. package/vendor/include/networkit/io/MatrixReader.hpp +33 -0
  306. package/vendor/include/networkit/io/MemoryMappedFile.hpp +80 -0
  307. package/vendor/include/networkit/io/NetworkitBinaryGraph.hpp +144 -0
  308. package/vendor/include/networkit/io/NetworkitBinaryReader.hpp +50 -0
  309. package/vendor/include/networkit/io/NetworkitBinaryWriter.hpp +71 -0
  310. package/vendor/include/networkit/io/PartitionReader.hpp +34 -0
  311. package/vendor/include/networkit/io/PartitionWriter.hpp +31 -0
  312. package/vendor/include/networkit/io/RBGraphReader.hpp +37 -0
  313. package/vendor/include/networkit/io/RBMatrixReader.hpp +49 -0
  314. package/vendor/include/networkit/io/RasterReader.hpp +40 -0
  315. package/vendor/include/networkit/io/SNAPEdgeListPartitionReader.hpp +28 -0
  316. package/vendor/include/networkit/io/SNAPGraphReader.hpp +53 -0
  317. package/vendor/include/networkit/io/SNAPGraphWriter.hpp +53 -0
  318. package/vendor/include/networkit/io/ThrillGraphBinaryReader.hpp +44 -0
  319. package/vendor/include/networkit/io/ThrillGraphBinaryWriter.hpp +27 -0
  320. package/vendor/include/networkit/layout/LayoutAlgorithm.hpp +39 -0
  321. package/vendor/include/networkit/linkprediction/AdamicAdarIndex.hpp +37 -0
  322. package/vendor/include/networkit/linkprediction/AdjustedRandIndex.hpp +36 -0
  323. package/vendor/include/networkit/linkprediction/AlgebraicDistanceIndex.hpp +70 -0
  324. package/vendor/include/networkit/linkprediction/CommonNeighborsIndex.hpp +39 -0
  325. package/vendor/include/networkit/linkprediction/EvaluationMetric.hpp +135 -0
  326. package/vendor/include/networkit/linkprediction/JaccardIndex.hpp +44 -0
  327. package/vendor/include/networkit/linkprediction/KatzIndex.hpp +84 -0
  328. package/vendor/include/networkit/linkprediction/LinkPredictor.hpp +98 -0
  329. package/vendor/include/networkit/linkprediction/LinkThresholder.hpp +56 -0
  330. package/vendor/include/networkit/linkprediction/MissingLinksFinder.hpp +60 -0
  331. package/vendor/include/networkit/linkprediction/NeighborhoodDistanceIndex.hpp +42 -0
  332. package/vendor/include/networkit/linkprediction/NeighborhoodUtility.hpp +54 -0
  333. package/vendor/include/networkit/linkprediction/NeighborsMeasureIndex.hpp +48 -0
  334. package/vendor/include/networkit/linkprediction/PrecisionRecallMetric.hpp +40 -0
  335. package/vendor/include/networkit/linkprediction/PredictionsSorter.hpp +66 -0
  336. package/vendor/include/networkit/linkprediction/PreferentialAttachmentIndex.hpp +37 -0
  337. package/vendor/include/networkit/linkprediction/ROCMetric.hpp +39 -0
  338. package/vendor/include/networkit/linkprediction/RandomLinkSampler.hpp +47 -0
  339. package/vendor/include/networkit/linkprediction/ResourceAllocationIndex.hpp +38 -0
  340. package/vendor/include/networkit/linkprediction/SameCommunityIndex.hpp +50 -0
  341. package/vendor/include/networkit/linkprediction/TotalNeighborsIndex.hpp +39 -0
  342. package/vendor/include/networkit/linkprediction/UDegreeIndex.hpp +35 -0
  343. package/vendor/include/networkit/linkprediction/VDegreeIndex.hpp +35 -0
  344. package/vendor/include/networkit/matching/BMatcher.hpp +52 -0
  345. package/vendor/include/networkit/matching/BMatching.hpp +115 -0
  346. package/vendor/include/networkit/matching/BSuitorMatcher.hpp +170 -0
  347. package/vendor/include/networkit/matching/DynamicBSuitorMatcher.hpp +78 -0
  348. package/vendor/include/networkit/matching/LocalMaxMatcher.hpp +35 -0
  349. package/vendor/include/networkit/matching/Matcher.hpp +55 -0
  350. package/vendor/include/networkit/matching/Matching.hpp +111 -0
  351. package/vendor/include/networkit/matching/PathGrowingMatcher.hpp +46 -0
  352. package/vendor/include/networkit/matching/SuitorMatcher.hpp +62 -0
  353. package/vendor/include/networkit/numerics/ConjugateGradient.hpp +163 -0
  354. package/vendor/include/networkit/numerics/GaussSeidelRelaxation.hpp +99 -0
  355. package/vendor/include/networkit/numerics/LAMG/LAMGSettings.hpp +70 -0
  356. package/vendor/include/networkit/numerics/LAMG/Lamg.hpp +460 -0
  357. package/vendor/include/networkit/numerics/LAMG/Level/EliminationStage.hpp +47 -0
  358. package/vendor/include/networkit/numerics/LAMG/Level/Level.hpp +56 -0
  359. package/vendor/include/networkit/numerics/LAMG/Level/LevelAggregation.hpp +52 -0
  360. package/vendor/include/networkit/numerics/LAMG/Level/LevelElimination.hpp +133 -0
  361. package/vendor/include/networkit/numerics/LAMG/Level/LevelFinest.hpp +28 -0
  362. package/vendor/include/networkit/numerics/LAMG/LevelHierarchy.hpp +165 -0
  363. package/vendor/include/networkit/numerics/LAMG/MultiLevelSetup.hpp +1090 -0
  364. package/vendor/include/networkit/numerics/LAMG/SolverLamg.hpp +316 -0
  365. package/vendor/include/networkit/numerics/LinearSolver.hpp +151 -0
  366. package/vendor/include/networkit/numerics/Preconditioner/DiagonalPreconditioner.hpp +61 -0
  367. package/vendor/include/networkit/numerics/Preconditioner/IdentityPreconditioner.hpp +36 -0
  368. package/vendor/include/networkit/numerics/Smoother.hpp +37 -0
  369. package/vendor/include/networkit/overlap/HashingOverlapper.hpp +28 -0
  370. package/vendor/include/networkit/overlap/Overlapper.hpp +27 -0
  371. package/vendor/include/networkit/planarity/LeftRightPlanarityCheck.hpp +113 -0
  372. package/vendor/include/networkit/randomization/Curveball.hpp +49 -0
  373. package/vendor/include/networkit/randomization/CurveballGlobalTradeGenerator.hpp +39 -0
  374. package/vendor/include/networkit/randomization/CurveballUniformTradeGenerator.hpp +39 -0
  375. package/vendor/include/networkit/randomization/DegreePreservingShuffle.hpp +82 -0
  376. package/vendor/include/networkit/randomization/EdgeSwitching.hpp +157 -0
  377. package/vendor/include/networkit/randomization/GlobalCurveball.hpp +69 -0
  378. package/vendor/include/networkit/randomization/GlobalTradeSequence.hpp +303 -0
  379. package/vendor/include/networkit/reachability/AllSimplePaths.hpp +122 -0
  380. package/vendor/include/networkit/reachability/ReachableNodes.hpp +83 -0
  381. package/vendor/include/networkit/scd/ApproximatePageRank.hpp +51 -0
  382. package/vendor/include/networkit/scd/CliqueDetect.hpp +55 -0
  383. package/vendor/include/networkit/scd/CombinedSCD.hpp +51 -0
  384. package/vendor/include/networkit/scd/GCE.hpp +42 -0
  385. package/vendor/include/networkit/scd/LFMLocal.hpp +54 -0
  386. package/vendor/include/networkit/scd/LocalT.hpp +40 -0
  387. package/vendor/include/networkit/scd/LocalTightnessExpansion.hpp +46 -0
  388. package/vendor/include/networkit/scd/PageRankNibble.hpp +55 -0
  389. package/vendor/include/networkit/scd/RandomBFS.hpp +33 -0
  390. package/vendor/include/networkit/scd/SCDGroundTruthComparison.hpp +121 -0
  391. package/vendor/include/networkit/scd/SelectiveCommunityDetector.hpp +76 -0
  392. package/vendor/include/networkit/scd/SetConductance.hpp +47 -0
  393. package/vendor/include/networkit/scd/TCE.hpp +41 -0
  394. package/vendor/include/networkit/scd/TwoPhaseL.hpp +40 -0
  395. package/vendor/include/networkit/scoring/EdgeScoring.hpp +44 -0
  396. package/vendor/include/networkit/scoring/ModularityScoring.hpp +79 -0
  397. package/vendor/include/networkit/simulation/EpidemicSimulationSEIR.hpp +59 -0
  398. package/vendor/include/networkit/sparsification/ChanceCorrectedTriangleScore.hpp +28 -0
  399. package/vendor/include/networkit/sparsification/ForestFireScore.hpp +34 -0
  400. package/vendor/include/networkit/sparsification/GlobalThresholdFilter.hpp +40 -0
  401. package/vendor/include/networkit/sparsification/LocalDegreeScore.hpp +30 -0
  402. package/vendor/include/networkit/sparsification/LocalFilterScore.hpp +124 -0
  403. package/vendor/include/networkit/sparsification/LocalSimilarityScore.hpp +63 -0
  404. package/vendor/include/networkit/sparsification/MultiscaleScore.hpp +38 -0
  405. package/vendor/include/networkit/sparsification/RandomEdgeScore.hpp +33 -0
  406. package/vendor/include/networkit/sparsification/RandomNodeEdgeScore.hpp +29 -0
  407. package/vendor/include/networkit/sparsification/SCANStructuralSimilarityScore.hpp +23 -0
  408. package/vendor/include/networkit/sparsification/SimmelianOverlapScore.hpp +35 -0
  409. package/vendor/include/networkit/sparsification/SimmelianScore.hpp +92 -0
  410. package/vendor/include/networkit/sparsification/Sparsifiers.hpp +166 -0
  411. package/vendor/include/networkit/structures/Cover.hpp +248 -0
  412. package/vendor/include/networkit/structures/LocalCommunity.hpp +363 -0
  413. package/vendor/include/networkit/structures/Partition.hpp +335 -0
  414. package/vendor/include/networkit/structures/UnionFind.hpp +66 -0
  415. package/vendor/include/networkit/viz/GraphLayoutAlgorithm.hpp +157 -0
  416. package/vendor/include/networkit/viz/MaxentStress.hpp +346 -0
  417. package/vendor/include/networkit/viz/Octree.hpp +428 -0
  418. package/vendor/include/networkit/viz/PivotMDS.hpp +63 -0
  419. package/vendor/include/networkit/viz/Point.hpp +415 -0
  420. package/vendor/include/networkit/viz/PostscriptWriter.hpp +78 -0
  421. package/vendor/include/tlx/algorithm/exclusive_scan.hpp +56 -0
  422. package/vendor/include/tlx/algorithm/is_sorted_cmp.hpp +56 -0
  423. package/vendor/include/tlx/algorithm/merge_advance.hpp +177 -0
  424. package/vendor/include/tlx/algorithm/merge_combine.hpp +76 -0
  425. package/vendor/include/tlx/algorithm/multisequence_partition.hpp +346 -0
  426. package/vendor/include/tlx/algorithm/multisequence_selection.hpp +351 -0
  427. package/vendor/include/tlx/algorithm/multiway_merge.hpp +1385 -0
  428. package/vendor/include/tlx/algorithm/multiway_merge_splitting.hpp +257 -0
  429. package/vendor/include/tlx/algorithm/parallel_multiway_merge.hpp +408 -0
  430. package/vendor/include/tlx/algorithm/random_bipartition_shuffle.hpp +116 -0
  431. package/vendor/include/tlx/algorithm.hpp +36 -0
  432. package/vendor/include/tlx/allocator_base.hpp +100 -0
  433. package/vendor/include/tlx/backtrace.hpp +54 -0
  434. package/vendor/include/tlx/cmdline_parser.hpp +498 -0
  435. package/vendor/include/tlx/container/btree.hpp +3977 -0
  436. package/vendor/include/tlx/container/btree_map.hpp +634 -0
  437. package/vendor/include/tlx/container/btree_multimap.hpp +627 -0
  438. package/vendor/include/tlx/container/btree_multiset.hpp +612 -0
  439. package/vendor/include/tlx/container/btree_set.hpp +612 -0
  440. package/vendor/include/tlx/container/d_ary_addressable_int_heap.hpp +416 -0
  441. package/vendor/include/tlx/container/d_ary_heap.hpp +311 -0
  442. package/vendor/include/tlx/container/loser_tree.hpp +1009 -0
  443. package/vendor/include/tlx/container/lru_cache.hpp +319 -0
  444. package/vendor/include/tlx/container/radix_heap.hpp +735 -0
  445. package/vendor/include/tlx/container/ring_buffer.hpp +428 -0
  446. package/vendor/include/tlx/container/simple_vector.hpp +304 -0
  447. package/vendor/include/tlx/container/splay_tree.hpp +399 -0
  448. package/vendor/include/tlx/container/string_view.hpp +805 -0
  449. package/vendor/include/tlx/container.hpp +40 -0
  450. package/vendor/include/tlx/counting_ptr.hpp +522 -0
  451. package/vendor/include/tlx/define/attribute_always_inline.hpp +34 -0
  452. package/vendor/include/tlx/define/attribute_fallthrough.hpp +36 -0
  453. package/vendor/include/tlx/define/attribute_format_printf.hpp +34 -0
  454. package/vendor/include/tlx/define/attribute_packed.hpp +34 -0
  455. package/vendor/include/tlx/define/attribute_warn_unused_result.hpp +34 -0
  456. package/vendor/include/tlx/define/constexpr.hpp +31 -0
  457. package/vendor/include/tlx/define/deprecated.hpp +39 -0
  458. package/vendor/include/tlx/define/endian.hpp +49 -0
  459. package/vendor/include/tlx/define/likely.hpp +33 -0
  460. package/vendor/include/tlx/define/visibility_hidden.hpp +34 -0
  461. package/vendor/include/tlx/define.hpp +36 -0
  462. package/vendor/include/tlx/delegate.hpp +524 -0
  463. package/vendor/include/tlx/die/core.hpp +311 -0
  464. package/vendor/include/tlx/die.hpp +106 -0
  465. package/vendor/include/tlx/digest/md5.hpp +81 -0
  466. package/vendor/include/tlx/digest/sha1.hpp +81 -0
  467. package/vendor/include/tlx/digest/sha256.hpp +81 -0
  468. package/vendor/include/tlx/digest/sha512.hpp +81 -0
  469. package/vendor/include/tlx/digest.hpp +30 -0
  470. package/vendor/include/tlx/logger/all.hpp +33 -0
  471. package/vendor/include/tlx/logger/array.hpp +43 -0
  472. package/vendor/include/tlx/logger/core.hpp +287 -0
  473. package/vendor/include/tlx/logger/deque.hpp +42 -0
  474. package/vendor/include/tlx/logger/map.hpp +65 -0
  475. package/vendor/include/tlx/logger/set.hpp +60 -0
  476. package/vendor/include/tlx/logger/tuple.hpp +66 -0
  477. package/vendor/include/tlx/logger/unordered_map.hpp +68 -0
  478. package/vendor/include/tlx/logger/unordered_set.hpp +64 -0
  479. package/vendor/include/tlx/logger/wrap_unprintable.hpp +75 -0
  480. package/vendor/include/tlx/logger.hpp +44 -0
  481. package/vendor/include/tlx/math/abs_diff.hpp +35 -0
  482. package/vendor/include/tlx/math/aggregate.hpp +231 -0
  483. package/vendor/include/tlx/math/aggregate_min_max.hpp +116 -0
  484. package/vendor/include/tlx/math/bswap.hpp +148 -0
  485. package/vendor/include/tlx/math/bswap_be.hpp +79 -0
  486. package/vendor/include/tlx/math/bswap_le.hpp +79 -0
  487. package/vendor/include/tlx/math/clz.hpp +174 -0
  488. package/vendor/include/tlx/math/ctz.hpp +174 -0
  489. package/vendor/include/tlx/math/div_ceil.hpp +36 -0
  490. package/vendor/include/tlx/math/ffs.hpp +123 -0
  491. package/vendor/include/tlx/math/integer_log2.hpp +189 -0
  492. package/vendor/include/tlx/math/is_power_of_two.hpp +74 -0
  493. package/vendor/include/tlx/math/polynomial_regression.hpp +243 -0
  494. package/vendor/include/tlx/math/popcount.hpp +173 -0
  495. package/vendor/include/tlx/math/power_to_the.hpp +44 -0
  496. package/vendor/include/tlx/math/rol.hpp +112 -0
  497. package/vendor/include/tlx/math/ror.hpp +112 -0
  498. package/vendor/include/tlx/math/round_to_power_of_two.hpp +121 -0
  499. package/vendor/include/tlx/math/round_up.hpp +36 -0
  500. package/vendor/include/tlx/math/sgn.hpp +38 -0
  501. package/vendor/include/tlx/math.hpp +46 -0
  502. package/vendor/include/tlx/meta/apply_tuple.hpp +55 -0
  503. package/vendor/include/tlx/meta/call_for_range.hpp +78 -0
  504. package/vendor/include/tlx/meta/call_foreach.hpp +60 -0
  505. package/vendor/include/tlx/meta/call_foreach_tuple.hpp +60 -0
  506. package/vendor/include/tlx/meta/call_foreach_tuple_with_index.hpp +61 -0
  507. package/vendor/include/tlx/meta/call_foreach_with_index.hpp +64 -0
  508. package/vendor/include/tlx/meta/enable_if.hpp +37 -0
  509. package/vendor/include/tlx/meta/fold_left.hpp +63 -0
  510. package/vendor/include/tlx/meta/fold_left_tuple.hpp +60 -0
  511. package/vendor/include/tlx/meta/fold_right.hpp +63 -0
  512. package/vendor/include/tlx/meta/fold_right_tuple.hpp +60 -0
  513. package/vendor/include/tlx/meta/function_chain.hpp +197 -0
  514. package/vendor/include/tlx/meta/function_stack.hpp +189 -0
  515. package/vendor/include/tlx/meta/has_member.hpp +80 -0
  516. package/vendor/include/tlx/meta/has_method.hpp +117 -0
  517. package/vendor/include/tlx/meta/index_sequence.hpp +66 -0
  518. package/vendor/include/tlx/meta/is_std_array.hpp +40 -0
  519. package/vendor/include/tlx/meta/is_std_pair.hpp +39 -0
  520. package/vendor/include/tlx/meta/is_std_tuple.hpp +39 -0
  521. package/vendor/include/tlx/meta/is_std_vector.hpp +39 -0
  522. package/vendor/include/tlx/meta/log2.hpp +101 -0
  523. package/vendor/include/tlx/meta/no_operation.hpp +55 -0
  524. package/vendor/include/tlx/meta/static_index.hpp +42 -0
  525. package/vendor/include/tlx/meta/vexpand.hpp +34 -0
  526. package/vendor/include/tlx/meta/vmap_for_range.hpp +84 -0
  527. package/vendor/include/tlx/meta/vmap_foreach.hpp +63 -0
  528. package/vendor/include/tlx/meta/vmap_foreach_tuple.hpp +59 -0
  529. package/vendor/include/tlx/meta/vmap_foreach_tuple_with_index.hpp +62 -0
  530. package/vendor/include/tlx/meta/vmap_foreach_with_index.hpp +70 -0
  531. package/vendor/include/tlx/meta.hpp +55 -0
  532. package/vendor/include/tlx/multi_timer.hpp +148 -0
  533. package/vendor/include/tlx/port/setenv.hpp +31 -0
  534. package/vendor/include/tlx/port.hpp +27 -0
  535. package/vendor/include/tlx/semaphore.hpp +119 -0
  536. package/vendor/include/tlx/simple_vector.hpp +20 -0
  537. package/vendor/include/tlx/siphash.hpp +282 -0
  538. package/vendor/include/tlx/sort/networks/best.hpp +611 -0
  539. package/vendor/include/tlx/sort/networks/bose_nelson.hpp +412 -0
  540. package/vendor/include/tlx/sort/networks/bose_nelson_parameter.hpp +507 -0
  541. package/vendor/include/tlx/sort/networks/cswap.hpp +60 -0
  542. package/vendor/include/tlx/sort/parallel_mergesort.hpp +398 -0
  543. package/vendor/include/tlx/sort/strings/insertion_sort.hpp +232 -0
  544. package/vendor/include/tlx/sort/strings/multikey_quicksort.hpp +185 -0
  545. package/vendor/include/tlx/sort/strings/parallel_sample_sort.hpp +1647 -0
  546. package/vendor/include/tlx/sort/strings/radix_sort.hpp +934 -0
  547. package/vendor/include/tlx/sort/strings/sample_sort_tools.hpp +756 -0
  548. package/vendor/include/tlx/sort/strings/string_ptr.hpp +426 -0
  549. package/vendor/include/tlx/sort/strings/string_set.hpp +800 -0
  550. package/vendor/include/tlx/sort/strings.hpp +329 -0
  551. package/vendor/include/tlx/sort/strings_parallel.hpp +325 -0
  552. package/vendor/include/tlx/sort.hpp +29 -0
  553. package/vendor/include/tlx/stack_allocator.hpp +226 -0
  554. package/vendor/include/tlx/string/appendline.hpp +35 -0
  555. package/vendor/include/tlx/string/base64.hpp +87 -0
  556. package/vendor/include/tlx/string/bitdump.hpp +139 -0
  557. package/vendor/include/tlx/string/compare_icase.hpp +42 -0
  558. package/vendor/include/tlx/string/contains.hpp +36 -0
  559. package/vendor/include/tlx/string/contains_word.hpp +42 -0
  560. package/vendor/include/tlx/string/ends_with.hpp +79 -0
  561. package/vendor/include/tlx/string/equal_icase.hpp +42 -0
  562. package/vendor/include/tlx/string/erase_all.hpp +70 -0
  563. package/vendor/include/tlx/string/escape_html.hpp +34 -0
  564. package/vendor/include/tlx/string/escape_uri.hpp +34 -0
  565. package/vendor/include/tlx/string/expand_environment_variables.hpp +49 -0
  566. package/vendor/include/tlx/string/extract_between.hpp +40 -0
  567. package/vendor/include/tlx/string/format_iec_units.hpp +32 -0
  568. package/vendor/include/tlx/string/format_si_iec_units.hpp +19 -0
  569. package/vendor/include/tlx/string/format_si_units.hpp +32 -0
  570. package/vendor/include/tlx/string/hash_djb2.hpp +87 -0
  571. package/vendor/include/tlx/string/hash_sdbm.hpp +86 -0
  572. package/vendor/include/tlx/string/hexdump.hpp +154 -0
  573. package/vendor/include/tlx/string/index_of.hpp +56 -0
  574. package/vendor/include/tlx/string/join.hpp +65 -0
  575. package/vendor/include/tlx/string/join_generic.hpp +89 -0
  576. package/vendor/include/tlx/string/join_quoted.hpp +46 -0
  577. package/vendor/include/tlx/string/less_icase.hpp +64 -0
  578. package/vendor/include/tlx/string/levenshtein.hpp +193 -0
  579. package/vendor/include/tlx/string/pad.hpp +39 -0
  580. package/vendor/include/tlx/string/parse_si_iec_units.hpp +46 -0
  581. package/vendor/include/tlx/string/parse_uri.hpp +66 -0
  582. package/vendor/include/tlx/string/parse_uri_form_data.hpp +136 -0
  583. package/vendor/include/tlx/string/replace.hpp +141 -0
  584. package/vendor/include/tlx/string/split.hpp +170 -0
  585. package/vendor/include/tlx/string/split_quoted.hpp +49 -0
  586. package/vendor/include/tlx/string/split_view.hpp +218 -0
  587. package/vendor/include/tlx/string/split_words.hpp +53 -0
  588. package/vendor/include/tlx/string/ssprintf.hpp +45 -0
  589. package/vendor/include/tlx/string/ssprintf_generic.hpp +95 -0
  590. package/vendor/include/tlx/string/starts_with.hpp +44 -0
  591. package/vendor/include/tlx/string/to_lower.hpp +47 -0
  592. package/vendor/include/tlx/string/to_upper.hpp +47 -0
  593. package/vendor/include/tlx/string/trim.hpp +298 -0
  594. package/vendor/include/tlx/string/union_words.hpp +33 -0
  595. package/vendor/include/tlx/string/word_wrap.hpp +35 -0
  596. package/vendor/include/tlx/string.hpp +68 -0
  597. package/vendor/include/tlx/thread_barrier_mutex.hpp +109 -0
  598. package/vendor/include/tlx/thread_barrier_spin.hpp +127 -0
  599. package/vendor/include/tlx/thread_pool.hpp +151 -0
  600. package/vendor/include/tlx/timestamp.hpp +23 -0
  601. package/vendor/include/tlx/unused.hpp +28 -0
  602. package/vendor/include/tlx/vector_free.hpp +30 -0
  603. package/vendor/include/tlx/version.hpp +49 -0
  604. package/vendor/include/ttmath/ttmath.h +2881 -0
  605. package/vendor/include/ttmath/ttmathbig.h +6111 -0
  606. package/vendor/include/ttmath/ttmathdec.h +419 -0
  607. package/vendor/include/ttmath/ttmathint.h +1923 -0
  608. package/vendor/include/ttmath/ttmathmisc.h +250 -0
  609. package/vendor/include/ttmath/ttmathobjects.h +812 -0
  610. package/vendor/include/ttmath/ttmathparser.h +2791 -0
  611. package/vendor/include/ttmath/ttmaththreads.h +252 -0
  612. package/vendor/include/ttmath/ttmathtypes.h +707 -0
  613. package/vendor/include/ttmath/ttmathuint.h +4190 -0
  614. package/vendor/include/ttmath/ttmathuint_noasm.h +1038 -0
  615. package/vendor/include/ttmath/ttmathuint_x86.h +1620 -0
  616. package/vendor/include/ttmath/ttmathuint_x86_64.h +1177 -0
  617. package/vendor/lib/cmake/tlx/tlx-config.cmake +51 -0
  618. package/vendor/lib/cmake/tlx/tlx-targets-release.cmake +19 -0
  619. package/vendor/lib/cmake/tlx/tlx-targets.cmake +106 -0
  620. package/vendor/lib/cmake/tlx/tlx-version.cmake +11 -0
  621. package/vendor/lib/libnetworkit.dylib +0 -0
  622. package/vendor/lib/libtlx.a +0 -0
  623. package/vendor/lib/pkgconfig/networkit.pc +11 -0
  624. package/vendor/lib/pkgconfig/tlx.pc +11 -0
@@ -0,0 +1,175 @@
1
+ #ifndef NETWORKIT_COMMUNITY_OVERLAPPING_NMI_DISTANCE_HPP_
2
+ #define NETWORKIT_COMMUNITY_OVERLAPPING_NMI_DISTANCE_HPP_
3
+
4
+ #include <unordered_map>
5
+
6
+ #include <networkit/auxiliary/HashUtils.hpp>
7
+ #include <networkit/community/DissimilarityMeasure.hpp>
8
+
9
+ namespace NetworKit {
10
+
11
+ /**
12
+ * @ingroup community
13
+ * Compare two covers using the overlapping normalized mutual information measure. This is a
14
+ * dissimilarity measure with a range of [0, 1]. A value of 0 indicates a perfect agreement while
15
+ * a 1 indicates complete disagreement.
16
+ *
17
+ * For the `MAX` normalization, this is the measure introduced in [NMI13]. Other normalization
18
+ * methods result in similar measures.
19
+ *
20
+ * Please note that non-overlapping NMIDistance uses another definition of the normalized mutual
21
+ * information. See NMIDistance for details on its computation. Both NMIDistance and
22
+ * OverlappingNMIDistance can be used with partitions, but produce different values.
23
+ *
24
+ * [NMI13]
25
+ * McDaid, Aaron F., Derek Greene, and Neil Hurley.
26
+ * “Normalized Mutual Information to Evaluate Overlapping Community Finding Algorithms.”
27
+ * ArXiv:1110.2515 [Physics], August 2, 2013. http://arxiv.org/abs/1110.2515.
28
+ */
29
+ class OverlappingNMIDistance final : public DissimilarityMeasure {
30
+
31
+ public:
32
+ enum Normalization { MIN, GEOMETRIC_MEAN, ARITHMETIC_MEAN, MAX, JOINT_ENTROPY };
33
+
34
+ private:
35
+ Normalization mNormalization{Normalization::MAX};
36
+
37
+ public:
38
+ OverlappingNMIDistance() = default;
39
+
40
+ explicit OverlappingNMIDistance(Normalization normalization) : mNormalization(normalization) {}
41
+
42
+ void setNormalization(Normalization normalization) { mNormalization = normalization; }
43
+
44
+ double getDissimilarity(const Graph &G, const Partition &zeta, const Partition &eta) override;
45
+ double getDissimilarity(const Graph &G, const Cover &zeta, const Cover &eta) override;
46
+
47
+ private:
48
+ struct SizesAndIntersections {
49
+ std::vector<count> sizesX;
50
+ std::vector<count> sizesY;
51
+ std::unordered_map<std::pair<index, index>, count, Aux::PairHash> intersectionSizes;
52
+ };
53
+
54
+ /**
55
+ * Calculating cluster sizes of covers and intersection sizes between two covers.
56
+ *
57
+ * @param X
58
+ * @param Y
59
+ * @return The cluster and intersection sizes of X and Y.
60
+ */
61
+ static SizesAndIntersections
62
+ calculateClusterAndIntersectionSizes(const Graph &graph, const Cover &X, const Cover &Y);
63
+
64
+ /**
65
+ * Calculates partial entropy.
66
+ *
67
+ * $$
68
+ * h(w, n) = -w \log_2\left(\frac{w}{n}\right)
69
+ * $$
70
+ *
71
+ * @param w Number of occurrences.
72
+ * @param n Total number of nodes.
73
+ * @return
74
+ */
75
+ static double h(count w, count n);
76
+
77
+ /**
78
+ * Calculates the entropy of a cluster.
79
+ *
80
+ * $$
81
+ * H(X_i) = h(|\{ u | u \in X_i \}, n) + h(\{ u | u \notin X_i \}, n)
82
+ * $$
83
+ *
84
+ * @param size Cluster size.
85
+ * @param n Total number of nodes.
86
+ * @return
87
+ */
88
+ static double entropy(count size, count n);
89
+
90
+ /**
91
+ * Calculates the entropy of a clustering.
92
+ *
93
+ * $$
94
+ * H(X) = \sum_{X_i \in X} H(X_i)
95
+ * $$
96
+ *
97
+ * @param sizesX The sizes of the clusters in X.
98
+ * @param n Total number of nodes.
99
+ * @return
100
+ */
101
+ static double entropy(const std::vector<count> &sizesX, count n);
102
+
103
+ /**
104
+ * Calculates the adjusted conditional entropy between two clusters.
105
+ *
106
+ * $$
107
+ * H^*(X_i|Y_j) =
108
+ * \begin{cases}
109
+ * H(X_i|Y_j), & \text{if $h(a, n) + h(d, n) \geq h(b, n) + h(c, n)$}\\
110
+ * H(X_i), & \text{otherwise}
111
+ * \end{cases}
112
+ * $$
113
+ * where
114
+ * $$
115
+ * H(X_i|Y_j) &= H(X_i, Y_j) - H(Y_j)\\
116
+ * &= h(a, n) + h(b, n) + h(c, n) + h(d, n) - h(b + d, n) - h(a + c, n),
117
+ * $$
118
+ * $a = \sum_u \[X_{i,u} = 0 and Y_{j,u} = 0\]$, $b = \sum_u \[X_{i,u} = 0 and Y_{j,u} = 1\]$,
119
+ * $c = \sum_u \[X_{i,u} = 1 and Y_{j,u} = 0\]$ and $d = \sum_u \[X_{i,u} = 1 and Y_{j,u} =
120
+ * 1\]$.
121
+ *
122
+ * @param sizeXi Size of cluster X_i.
123
+ * @param sizeYj Size of cluster Y_j.
124
+ * @param intersectionSize Size of the intersection of X_i and Y_j.
125
+ * @param n Total number of nodes.
126
+ * @return
127
+ */
128
+ static double adjustedConditionalEntropy(count sizeXi, count sizeYj, count intersectionSize,
129
+ count n);
130
+
131
+ /**
132
+ * Calculates the entropy of the clustering X conditioned by the clustering Y.
133
+ *
134
+ * $$
135
+ * H(X|Y) = \sum_{X_i \in X} \min_{Y_j \in Y} H^*(X_i|Y_j)
136
+ * $$
137
+ *
138
+ * @param sizesX
139
+ * @param sizesY
140
+ * @param intersectionSizes
141
+ * A map which stores the the intersection size between clusters X[i] and Y[j] with indices
142
+ * i and j as keys.
143
+ * @param invertPairIndices
144
+ * Whether to invert the indices of the intersectionSizes map entries.
145
+ * This allows reusing the same map for H(X|Y) and H(Y|X).
146
+ * @param n Total number of nodes.
147
+ * @return
148
+ */
149
+ static double conditionalEntropy(
150
+ const std::vector<count> &sizesX, const std::vector<count> &sizesY,
151
+ const std::unordered_map<std::pair<index, index>, count, Aux::PairHash> &intersectionSizes,
152
+ bool invertPairIndices, count n);
153
+
154
+ static void clampBelow(double &value, double lowerBound, const char *format,
155
+ int printPrecision = 20);
156
+
157
+ static void clampAbove(double &value, double upperBound, const char *format,
158
+ int printPrecision = 20);
159
+
160
+ /**
161
+ * Normalize the given mutual information value.
162
+ *
163
+ * @param normalization
164
+ * @param mutualInformation
165
+ * @param entropyX
166
+ * @param entropyY
167
+ * @return
168
+ */
169
+ static double normalize(OverlappingNMIDistance::Normalization normalization,
170
+ double mutualInformation, double entropyX, double entropyY);
171
+ };
172
+
173
+ } // namespace NetworKit
174
+
175
+ #endif // NETWORKIT_COMMUNITY_OVERLAPPING_NMI_DISTANCE_HPP_
@@ -0,0 +1,89 @@
1
+ /*
2
+ * PLM.hpp
3
+ *
4
+ * Created on: 20.11.2013
5
+ * Author: cls
6
+ */
7
+
8
+ #ifndef NETWORKIT_COMMUNITY_PLM_HPP_
9
+ #define NETWORKIT_COMMUNITY_PLM_HPP_
10
+
11
+ #include <networkit/community/CommunityDetectionAlgorithm.hpp>
12
+
13
+ namespace NetworKit {
14
+
15
+ /**
16
+ * @ingroup community
17
+ * Parallel Louvain Method - a multi-level modularity maximizer.
18
+ */
19
+ class PLM final : public CommunityDetectionAlgorithm {
20
+
21
+ public:
22
+ /**
23
+ * @param[in] G input graph
24
+ * @param[in] refine add a second move phase to refine the communities
25
+ * @param[in] par parallelization strategy
26
+ * @param[in] gammamulti-resolution modularity parameter:
27
+ * 1.0 -> standard modularity
28
+ * 0.0 -> one community
29
+ * 2m -> singleton communities
30
+ * @param[in] maxIter maximum number of iterations for move phase
31
+ * @param[in] parallelCoarsening use parallel graph coarsening
32
+ * @param[in] turbo faster but uses O(n) additional memory per thread
33
+ * @param[in] recurse use recursive coarsening, see
34
+ * http://journals.aps.org/pre/abstract/10.1103/PhysRevE.89.049902 for some explanations
35
+ * (default: true)
36
+ *
37
+ */
38
+ PLM(const Graph &G, bool refine = false, double gamma = 1.0, std::string par = "balanced",
39
+ count maxIter = 32, bool turbo = true, bool recurse = true);
40
+
41
+ PLM(const Graph &G, const PLM &other);
42
+
43
+ /**
44
+ * Detect communities.
45
+ */
46
+ void run() override;
47
+
48
+ /**
49
+ * Coarsens a graph based on a given partition and returns both the coarsened graph and a
50
+ * mapping for the nodes from fine to coarse.
51
+ *
52
+ * @param graph The input graph
53
+ * @param zeta Partition of the graph, which represents the desired state of the coarsened graph
54
+ * @return pair of coarsened graph and node-mappings from fine to coarse graph
55
+ */
56
+ static std::pair<GraphW, std::vector<node>> coarsen(const Graph &G, const Partition &zeta);
57
+
58
+ /**
59
+ * Calculates a partition containing the mapping of node-id from a fine graph
60
+ * to a cluster-id from partition based on a coarse graph.
61
+ *
62
+ * @param Gcoarse Coarsened graph
63
+ * @param zetaCoarse Partition, which contains information about clusters in the coarsened graph
64
+ * @param Gfine Fine graph
65
+ * @param nodeToMetaNode mapping for node-id from fine to coarse graph
66
+ * @return Partition, which contains the cluster-id in the coarse graph for every node from the
67
+ * fine graph
68
+ */
69
+ static Partition prolong(const Graph &Gcoarse, const Partition &zetaCoarse, const Graph &Gfine,
70
+ std::vector<node> nodeToMetaNode);
71
+
72
+ /**
73
+ * Returns fine-grained running time measurements for algorithm engineering purposes.
74
+ */
75
+ const std::map<std::string, std::vector<count>> &getTiming() const;
76
+
77
+ private:
78
+ std::string parallelism;
79
+ bool refine;
80
+ double gamma = 1.0;
81
+ count maxIter;
82
+ bool turbo;
83
+ bool recurse;
84
+ std::map<std::string, std::vector<count>> timing; // fine-grained running time measurement
85
+ };
86
+
87
+ } /* namespace NetworKit */
88
+
89
+ #endif // NETWORKIT_COMMUNITY_PLM_HPP_
@@ -0,0 +1,83 @@
1
+ /*
2
+ * PLP.hpp
3
+ *
4
+ * Created on: 07.12.2012
5
+ * Author: Christian Staudt
6
+ */
7
+
8
+ #ifndef NETWORKIT_COMMUNITY_PLP_HPP_
9
+ #define NETWORKIT_COMMUNITY_PLP_HPP_
10
+
11
+ #include <networkit/community/CommunityDetectionAlgorithm.hpp>
12
+ #include <networkit/structures/Partition.hpp>
13
+
14
+ namespace NetworKit {
15
+
16
+ /**
17
+ * @ingroup community
18
+ * As described in Ovelgoenne et al: An Ensemble Learning Strategy for Graph Clustering
19
+ * Raghavan et al. proposed a label propagation algorithm for graph clustering.
20
+ * This algorithm initializes every vertex of a graph with a unique label. Then, in iterative
21
+ * sweeps over the set of vertices the vertex labels are updated. A vertex gets the label
22
+ * that the maximum number of its neighbors have. The procedure is stopped when every vertex
23
+ * has the label that at least half of its neighbors have.
24
+ *
25
+ */
26
+ class PLP final : public CommunityDetectionAlgorithm {
27
+
28
+ private:
29
+ count updateThreshold = 0;
30
+ count maxIterations;
31
+ count nIterations = 0; //!< number of iterations in last run
32
+ std::vector<count> timing; //!< running times for each iteration
33
+
34
+ public:
35
+ /**
36
+ * Constructor to the label propagation community detection algorithm.
37
+ *
38
+ * @param[in] G input graph
39
+ * @param[in] theta updateThreshold: number of nodes that have to be changed in each iteration
40
+ * so that a new iteration starts.
41
+ */
42
+ PLP(const Graph &G, count theta = none, count maxIterations = none);
43
+
44
+ /**
45
+ * Constructor to the label propagation community detection algorithm.
46
+ *
47
+ * @param[in] G input graph
48
+ * @param[in] baseClustering optional; the algorithm will start from the given clustering.
49
+ * @param[in] theta updateThreshold: number of nodes that have to be changed in each iteration
50
+ * so that a new iteration starts.
51
+ */
52
+ PLP(const Graph &G, const Partition &baseClustering, count theta = none);
53
+
54
+ /**
55
+ * Run the label propagation clustering algorithm.
56
+ */
57
+ void run() override;
58
+
59
+ /**
60
+ * The algorithm runs until a number of nodes less than
61
+ * the threshold is updated.
62
+ *
63
+ * @param th The threshold.
64
+ */
65
+ void setUpdateThreshold(count th);
66
+
67
+ /**
68
+ * Get number of iterations in last run.
69
+ *
70
+ * @return The number of iterations.
71
+ */
72
+ count numberOfIterations();
73
+
74
+ /**
75
+ * Get list of running times for each iteration.
76
+ *
77
+ * @return The list of running times in milliseconds
78
+ */
79
+ const std::vector<count> &getTiming() const;
80
+ };
81
+
82
+ } /* namespace NetworKit */
83
+ #endif // NETWORKIT_COMMUNITY_PLP_HPP_
@@ -0,0 +1,37 @@
1
+ /*
2
+ * ParallelAgglomerativeClusterer.hpp
3
+ *
4
+ * Created on: 30.10.2012
5
+ * Author: Christian Staudt, Henning Meyerhenke
6
+ */
7
+
8
+ #ifndef NETWORKIT_COMMUNITY_PARALLEL_AGGLOMERATIVE_CLUSTERER_HPP_
9
+ #define NETWORKIT_COMMUNITY_PARALLEL_AGGLOMERATIVE_CLUSTERER_HPP_
10
+
11
+ #include <networkit/community/CommunityDetectionAlgorithm.hpp>
12
+ #include <networkit/graph/GraphW.hpp>
13
+
14
+ namespace NetworKit {
15
+
16
+ /**
17
+ * @ingroup community
18
+ * A parallel agglomerative community detection algorithm, maximizing modularity.
19
+ */
20
+ class ParallelAgglomerativeClusterer final : public CommunityDetectionAlgorithm {
21
+
22
+ public:
23
+ /**
24
+ * Constructor to the parallel agglomerative clusterer.
25
+ *
26
+ * @param[in] G input graph
27
+ */
28
+ ParallelAgglomerativeClusterer(const Graph &G);
29
+
30
+ /**
31
+ * Detect communities.
32
+ */
33
+ void run() override;
34
+ };
35
+
36
+ } /* namespace NetworKit */
37
+ #endif // NETWORKIT_COMMUNITY_PARALLEL_AGGLOMERATIVE_CLUSTERER_HPP_
@@ -0,0 +1,96 @@
1
+ #ifndef NETWORKIT_COMMUNITY_PARALLEL_LEIDEN_HPP_
2
+ #define NETWORKIT_COMMUNITY_PARALLEL_LEIDEN_HPP_
3
+
4
+ #include <atomic>
5
+ #include <condition_variable>
6
+ #include <iomanip>
7
+ #include <iostream>
8
+ #include <mutex>
9
+ #include <omp.h>
10
+ #include <thread>
11
+ #include <tlx/unused.hpp>
12
+ #include <networkit/Globals.hpp>
13
+ #include <networkit/auxiliary/Parallel.hpp>
14
+ #include <networkit/auxiliary/Parallelism.hpp>
15
+ #include <networkit/auxiliary/SignalHandling.hpp>
16
+ #include <networkit/auxiliary/Timer.hpp>
17
+ #include <networkit/coarsening/ParallelPartitionCoarsening.hpp>
18
+ #include <networkit/community/CommunityDetectionAlgorithm.hpp>
19
+ #include <networkit/community/Modularity.hpp>
20
+ #include <networkit/community/PLM.hpp>
21
+ #include <networkit/graph/Graph.hpp>
22
+ #include <networkit/structures/Partition.hpp>
23
+
24
+ namespace NetworKit {
25
+
26
+ class ParallelLeiden final : public CommunityDetectionAlgorithm {
27
+ public:
28
+ /**
29
+ * @note As reported by Sahu et. al in "GVE-Leiden: Fast Leiden Algorithm for Community
30
+ * Detection in Shared Memory Setting", the current implementation in NetworKit might create a
31
+ * small fraction of disconnected communities. Since this violates the guarantees from the
32
+ * original algorithm, ParallelLeiden should be used with caution. In addition the modularity
33
+ * value of the resulting partition / clustering can be lower compared to other Leiden
34
+ * implementations and even Louvain.
35
+ *
36
+ * @param graph A networkit graph
37
+ * @param iterations Number of Leiden Iterations to be run
38
+ * @param randomize Randomize node order?
39
+ * @param gamma Resolution parameter
40
+ */
41
+ explicit ParallelLeiden(const Graph &graph, int iterations = 3, bool randomize = true,
42
+ double gamma = 1);
43
+
44
+ void run() override;
45
+
46
+ int VECTOR_OVERSIZE = 10000;
47
+
48
+ private:
49
+ inline double modularityDelta(double cutD, double degreeV, double volD) const {
50
+ return cutD - gamma * degreeV * volD * inverseGraphVolume;
51
+ };
52
+
53
+ inline double modularityThreshold(double cutC, double volC, double degreeV) const {
54
+ return cutC - gamma * (volC - degreeV) * degreeV * inverseGraphVolume;
55
+ }
56
+
57
+ static inline void lockLowerFirst(index a, index b, std::vector<std::mutex> &locks) {
58
+ if (a < b) {
59
+ locks[a].lock();
60
+ locks[b].lock();
61
+ } else {
62
+ locks[b].lock();
63
+ locks[a].lock();
64
+ }
65
+ }
66
+
67
+ void flattenPartition();
68
+
69
+ void calculateVolumes(const Graph &graph);
70
+
71
+ void parallelMove(const Graph &graph);
72
+
73
+ Partition parallelRefine(const Graph &graph);
74
+
75
+ double inverseGraphVolume; // 1/vol(V)
76
+
77
+ std::vector<double> communityVolumes;
78
+
79
+ std::vector<std::vector<node>> mappings;
80
+
81
+ static constexpr int WORKING_SIZE = 1000;
82
+
83
+ double gamma; // Resolution parameter
84
+
85
+ bool changed;
86
+
87
+ int numberOfIterations;
88
+
89
+ Aux::SignalHandler handler;
90
+
91
+ bool random;
92
+ };
93
+
94
+ } // namespace NetworKit
95
+
96
+ #endif // NETWORKIT_COMMUNITY_PARALLEL_LEIDEN_HPP_
@@ -0,0 +1,138 @@
1
+ /*
2
+ * ParallelLeidenView.hpp
3
+ *
4
+ * Memory-efficient version of ParallelLeiden using CoarsenedGraphView
5
+ */
6
+
7
+ #ifndef NETWORKIT_COMMUNITY_PARALLEL_LEIDEN_VIEW_HPP_
8
+ #define NETWORKIT_COMMUNITY_PARALLEL_LEIDEN_VIEW_HPP_
9
+
10
+ #include <atomic>
11
+ #include <condition_variable>
12
+ #include <iomanip>
13
+ #include <iostream>
14
+ #include <limits>
15
+ #include <memory>
16
+ #include <mutex>
17
+ #include <omp.h>
18
+ #include <thread>
19
+ #include <tlx/unused.hpp>
20
+ #include <networkit/Globals.hpp>
21
+ #include <networkit/auxiliary/Parallel.hpp>
22
+ #include <networkit/auxiliary/Parallelism.hpp>
23
+ #include <networkit/auxiliary/SignalHandling.hpp>
24
+ #include <networkit/auxiliary/Timer.hpp>
25
+ #include <networkit/coarsening/CoarsenedGraphView.hpp>
26
+ #include <networkit/coarsening/ParallelPartitionCoarseningView.hpp>
27
+ #include <networkit/community/CommunityDetectionAlgorithm.hpp>
28
+ #include <networkit/community/Modularity.hpp>
29
+ #include <networkit/community/PLM.hpp>
30
+ #include <networkit/graph/Graph.hpp>
31
+ #include <networkit/structures/Partition.hpp>
32
+
33
+ namespace NetworKit {
34
+
35
+ /**
36
+ * Memory-efficient version of ParallelLeiden that uses CoarsenedGraphView
37
+ * instead of creating new graph structures, significantly reducing memory usage
38
+ * during the coarsening process.
39
+ */
40
+ class ParallelLeidenView final : public CommunityDetectionAlgorithm {
41
+ public:
42
+ /**
43
+ * @note As reported by Sahu et. al in "GVE-Leiden: Fast Leiden Algorithm for Community
44
+ * Detection in Shared Memory Setting", the current implementation in NetworKit might create a
45
+ * small fraction of disconnected communities. Since this violates the guarantees from the
46
+ * original algorithm, ParallelLeidenView should be used with caution. In addition the
47
+ * modularity value of the resulting partition / clustering can be lower compared to other
48
+ * Leiden implementations and even Louvain.
49
+ *
50
+ * @param graph A networkit graph
51
+ * @param iterations Number of Leiden Iterations to be run
52
+ * @param randomize Randomize node order?
53
+ * @param gamma Resolution parameter
54
+ */
55
+ explicit ParallelLeidenView(const Graph &graph, int iterations = 3, bool randomize = true,
56
+ double gamma = 1);
57
+
58
+ ~ParallelLeidenView();
59
+
60
+ void run() override;
61
+
62
+ int VECTOR_OVERSIZE = 10000;
63
+
64
+ private:
65
+ struct MoveStats {
66
+ count moved = 0;
67
+ count movedToSingleton = 0;
68
+ count marginalMovesRejected = 0;
69
+ double gainMarginSum = 0.0;
70
+ double gainMarginMin = std::numeric_limits<double>::max();
71
+ double gainMarginMax = std::numeric_limits<double>::lowest();
72
+ };
73
+
74
+ // Template interface to work with both Graph and CoarsenedGraphView
75
+ template <typename GraphType>
76
+ void calculateVolumes(const GraphType &graph);
77
+
78
+ template <typename GraphType>
79
+ MoveStats parallelMove(const GraphType &graph);
80
+
81
+ template <typename GraphType>
82
+ Partition parallelRefine(const GraphType &graph);
83
+
84
+ inline double modularityDelta(double cutD, double degreeV, double volD) const {
85
+ return cutD - gamma * degreeV * volD * inverseGraphVolume;
86
+ };
87
+
88
+ inline double modularityThreshold(double cutC, double volC, double degreeV) const {
89
+ return cutC - gamma * (volC - degreeV) * degreeV * inverseGraphVolume;
90
+ }
91
+
92
+ static inline void lockLowerFirst(index a, index b, std::vector<std::mutex> &locks) {
93
+ if (a < b) {
94
+ locks[a].lock();
95
+ locks[b].lock();
96
+ } else {
97
+ locks[b].lock();
98
+ locks[a].lock();
99
+ }
100
+ }
101
+
102
+ void flattenPartition();
103
+
104
+ double inverseGraphVolume; // 1/vol(V)
105
+
106
+ std::vector<double> communityVolumes;
107
+
108
+ std::vector<node> composedMapping;
109
+
110
+ static constexpr int WORKING_SIZE = 1000;
111
+
112
+ double gamma; // Resolution parameter
113
+
114
+ bool changed;
115
+
116
+ int numberOfIterations;
117
+
118
+ Aux::SignalHandler handler;
119
+
120
+ bool random;
121
+
122
+ // Current coarsened graph view (only keep current, not all historical)
123
+ std::shared_ptr<CoarsenedGraphView> currentCoarsenedView;
124
+
125
+ // Reject moves whose gain margin is too small (numerical-noise churn filter).
126
+ double moveGainMarginEpsilon = 1e-4;
127
+
128
+ // Maximum inner iterations per Leiden iteration.
129
+ int maxInnerIterations = 20;
130
+
131
+ // Optional convergence stop: minimum relative reduction in community count per inner iter.
132
+ // 0.0 disables this criterion.
133
+ double minCommunityReduction = 0.0;
134
+ };
135
+
136
+ } // namespace NetworKit
137
+
138
+ #endif // NETWORKIT_COMMUNITY_PARALLEL_LEIDEN_VIEW_HPP_
@@ -0,0 +1,30 @@
1
+ #ifndef NETWORKIT_COMMUNITY_PARTITION_FRAGMENTATION_HPP_
2
+ #define NETWORKIT_COMMUNITY_PARTITION_FRAGMENTATION_HPP_
3
+
4
+ #include <networkit/community/LocalPartitionEvaluation.hpp>
5
+
6
+ namespace NetworKit {
7
+
8
+ /**
9
+ * This measure evaluates how fragmented a partition is. The fragmentation of a single cluster is
10
+ * defined as one minus the number of nodes in its maximum connected components divided by its total
11
+ * number of nodes. Smaller values thus indicate a smaller fragmentation.
12
+ */
13
+ class PartitionFragmentation final : public LocalPartitionEvaluation {
14
+ public:
15
+ using LocalPartitionEvaluation::LocalPartitionEvaluation;
16
+
17
+ /**
18
+ * Execute the algorithm. The algorithm is not parallel.
19
+ */
20
+ void run() override;
21
+
22
+ /**
23
+ * @return true - smaller values are better than larger values.
24
+ */
25
+ bool isSmallBetter() const override { return true; };
26
+ };
27
+
28
+ } // namespace NetworKit
29
+
30
+ #endif // NETWORKIT_COMMUNITY_PARTITION_FRAGMENTATION_HPP_
@@ -0,0 +1,37 @@
1
+ #ifndef NETWORKIT_COMMUNITY_PARTITION_HUB_DOMINANCE_HPP_
2
+ #define NETWORKIT_COMMUNITY_PARTITION_HUB_DOMINANCE_HPP_
3
+
4
+ #include <networkit/community/LocalPartitionEvaluation.hpp>
5
+
6
+ namespace NetworKit {
7
+
8
+ /**
9
+ * A quality measure that measures the dominance of hubs in clusters. The hub dominance of a single
10
+ * cluster is defined as the maximum cluster-internal degree of a node in that cluster divided by
11
+ * the maximum cluster-internal degree, i.e. the number of nodes in the cluster minus one. The
12
+ * value for all clusters is defined as the average of all clusters.
13
+ * Strictly speaking this is not a quality measure as this is rather dependent on the type of the
14
+ * considered graph, for more information see
15
+ * Lancichinetti A, Kivel M, Saramki J, Fortunato S (2010)
16
+ * Characterizing the Community Structure of Complex Networks
17
+ * PLoS ONE 5(8): e11976. doi: 10.1371/journal.pone.0011976
18
+ * http://www.plosone.org/article/info%3Adoi%2F10.1371%2Fjournal.pone.0011976
19
+ */
20
+ class PartitionHubDominance final : public LocalPartitionEvaluation {
21
+ public:
22
+ using LocalPartitionEvaluation::LocalPartitionEvaluation;
23
+
24
+ /**
25
+ * Execute the algorithm. The algorithm is not parallel.
26
+ */
27
+ void run() override;
28
+
29
+ /**
30
+ * @return false - small values are not better, large values indicate better cluster cohesion.
31
+ */
32
+ bool isSmallBetter() const override { return false; }
33
+ };
34
+
35
+ } // namespace NetworKit
36
+
37
+ #endif // NETWORKIT_COMMUNITY_PARTITION_HUB_DOMINANCE_HPP_