@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.
- package/README.md +14 -0
- package/binding.gyp +54 -0
- package/build/Release/.deps/Release/icebug.node.d +1 -0
- package/build/Release/.deps/Release/obj.target/icebug/src/addon.o.d +291 -0
- package/build/Release/icebug.node +0 -0
- package/build/Release/obj.target/icebug/src/addon.o +0 -0
- package/lib/index.d.ts +361 -0
- package/lib/index.js +102 -0
- package/package.json +42 -0
- package/src/addon.cpp +1253 -0
- package/vendor/include/networkit/GlobalState.hpp +86 -0
- package/vendor/include/networkit/Globals.hpp +41 -0
- package/vendor/include/networkit/algebraic/AlgebraicGlobals.hpp +27 -0
- package/vendor/include/networkit/algebraic/CSRGeneralMatrix.hpp +1292 -0
- package/vendor/include/networkit/algebraic/CSRMatrix.hpp +11 -0
- package/vendor/include/networkit/algebraic/DenseMatrix.hpp +537 -0
- package/vendor/include/networkit/algebraic/DynamicMatrix.hpp +514 -0
- package/vendor/include/networkit/algebraic/GraphBLAS.hpp +323 -0
- package/vendor/include/networkit/algebraic/MatrixTools.hpp +156 -0
- package/vendor/include/networkit/algebraic/Semirings.hpp +171 -0
- package/vendor/include/networkit/algebraic/SparseAccumulator.hpp +111 -0
- package/vendor/include/networkit/algebraic/Vector.hpp +371 -0
- package/vendor/include/networkit/algebraic/algorithms/AlgebraicBFS.hpp +72 -0
- package/vendor/include/networkit/algebraic/algorithms/AlgebraicBellmanFord.hpp +88 -0
- package/vendor/include/networkit/algebraic/algorithms/AlgebraicMatchingCoarsening.hpp +96 -0
- package/vendor/include/networkit/algebraic/algorithms/AlgebraicPageRank.hpp +145 -0
- package/vendor/include/networkit/algebraic/algorithms/AlgebraicSpanningEdgeCentrality.hpp +122 -0
- package/vendor/include/networkit/algebraic/algorithms/AlgebraicTriangleCounting.hpp +76 -0
- package/vendor/include/networkit/auxiliary/AlignedAllocator.hpp +113 -0
- package/vendor/include/networkit/auxiliary/ArrayTools.hpp +85 -0
- package/vendor/include/networkit/auxiliary/BloomFilter.hpp +70 -0
- package/vendor/include/networkit/auxiliary/BucketPQ.hpp +142 -0
- package/vendor/include/networkit/auxiliary/Enforce.hpp +117 -0
- package/vendor/include/networkit/auxiliary/FunctionTraits.hpp +74 -0
- package/vendor/include/networkit/auxiliary/HashUtils.hpp +28 -0
- package/vendor/include/networkit/auxiliary/IncrementalUniformRandomSelector.hpp +52 -0
- package/vendor/include/networkit/auxiliary/Log.hpp +119 -0
- package/vendor/include/networkit/auxiliary/MissingMath.hpp +48 -0
- package/vendor/include/networkit/auxiliary/Multiprecision.hpp +17 -0
- package/vendor/include/networkit/auxiliary/NumberParsing.hpp +307 -0
- package/vendor/include/networkit/auxiliary/NumericTools.hpp +57 -0
- package/vendor/include/networkit/auxiliary/Parallel.hpp +56 -0
- package/vendor/include/networkit/auxiliary/Parallelism.hpp +33 -0
- package/vendor/include/networkit/auxiliary/PrioQueue.hpp +252 -0
- package/vendor/include/networkit/auxiliary/Random.hpp +122 -0
- package/vendor/include/networkit/auxiliary/SetIntersector.hpp +72 -0
- package/vendor/include/networkit/auxiliary/SignalHandling.hpp +39 -0
- package/vendor/include/networkit/auxiliary/SortedList.hpp +128 -0
- package/vendor/include/networkit/auxiliary/SparseVector.hpp +215 -0
- package/vendor/include/networkit/auxiliary/SpinLock.hpp +23 -0
- package/vendor/include/networkit/auxiliary/StringBuilder.hpp +322 -0
- package/vendor/include/networkit/auxiliary/StringTools.hpp +76 -0
- package/vendor/include/networkit/auxiliary/TemplateUtils.hpp +76 -0
- package/vendor/include/networkit/auxiliary/Timer.hpp +145 -0
- package/vendor/include/networkit/auxiliary/VectorComparator.hpp +32 -0
- package/vendor/include/networkit/base/Algorithm.hpp +41 -0
- package/vendor/include/networkit/base/DynAlgorithm.hpp +31 -0
- package/vendor/include/networkit/centrality/ApproxBetweenness.hpp +62 -0
- package/vendor/include/networkit/centrality/ApproxCloseness.hpp +136 -0
- package/vendor/include/networkit/centrality/ApproxElectricalCloseness.hpp +156 -0
- package/vendor/include/networkit/centrality/ApproxGroupBetweenness.hpp +124 -0
- package/vendor/include/networkit/centrality/ApproxSpanningEdge.hpp +84 -0
- package/vendor/include/networkit/centrality/Betweenness.hpp +47 -0
- package/vendor/include/networkit/centrality/Centrality.hpp +98 -0
- package/vendor/include/networkit/centrality/Closeness.hpp +107 -0
- package/vendor/include/networkit/centrality/ComplexPaths.hpp +113 -0
- package/vendor/include/networkit/centrality/CoreDecomposition.hpp +161 -0
- package/vendor/include/networkit/centrality/DegreeCentrality.hpp +55 -0
- package/vendor/include/networkit/centrality/DynApproxBetweenness.hpp +95 -0
- package/vendor/include/networkit/centrality/DynBetweenness.hpp +99 -0
- package/vendor/include/networkit/centrality/DynBetweennessOneNode.hpp +98 -0
- package/vendor/include/networkit/centrality/DynKatzCentrality.hpp +115 -0
- package/vendor/include/networkit/centrality/DynTopHarmonicCloseness.hpp +223 -0
- package/vendor/include/networkit/centrality/EigenvectorCentrality.hpp +41 -0
- package/vendor/include/networkit/centrality/EstimateBetweenness.hpp +51 -0
- package/vendor/include/networkit/centrality/ForestCentrality.hpp +112 -0
- package/vendor/include/networkit/centrality/GedWalk.hpp +225 -0
- package/vendor/include/networkit/centrality/GroupCloseness.hpp +115 -0
- package/vendor/include/networkit/centrality/GroupClosenessGrowShrink.hpp +78 -0
- package/vendor/include/networkit/centrality/GroupClosenessLocalSearch.hpp +77 -0
- package/vendor/include/networkit/centrality/GroupClosenessLocalSwaps.hpp +106 -0
- package/vendor/include/networkit/centrality/GroupDegree.hpp +155 -0
- package/vendor/include/networkit/centrality/GroupHarmonicCloseness.hpp +83 -0
- package/vendor/include/networkit/centrality/HarmonicCloseness.hpp +48 -0
- package/vendor/include/networkit/centrality/KPathCentrality.hpp +52 -0
- package/vendor/include/networkit/centrality/KadabraBetweenness.hpp +242 -0
- package/vendor/include/networkit/centrality/KatzCentrality.hpp +62 -0
- package/vendor/include/networkit/centrality/LaplacianCentrality.hpp +44 -0
- package/vendor/include/networkit/centrality/LocalClusteringCoefficient.hpp +60 -0
- package/vendor/include/networkit/centrality/LocalPartitionCoverage.hpp +43 -0
- package/vendor/include/networkit/centrality/LocalSquareClusteringCoefficient.hpp +42 -0
- package/vendor/include/networkit/centrality/PageRank.hpp +101 -0
- package/vendor/include/networkit/centrality/PermanenceCentrality.hpp +48 -0
- package/vendor/include/networkit/centrality/Sfigality.hpp +45 -0
- package/vendor/include/networkit/centrality/SpanningEdgeCentrality.hpp +86 -0
- package/vendor/include/networkit/centrality/TopCloseness.hpp +136 -0
- package/vendor/include/networkit/centrality/TopHarmonicCloseness.hpp +151 -0
- package/vendor/include/networkit/clique/MaximalCliques.hpp +83 -0
- package/vendor/include/networkit/coarsening/ClusteringProjector.hpp +59 -0
- package/vendor/include/networkit/coarsening/CoarsenedGraphView.hpp +156 -0
- package/vendor/include/networkit/coarsening/GraphCoarsening.hpp +57 -0
- package/vendor/include/networkit/coarsening/MatchingCoarsening.hpp +43 -0
- package/vendor/include/networkit/coarsening/ParallelPartitionCoarsening.hpp +33 -0
- package/vendor/include/networkit/coarsening/ParallelPartitionCoarseningView.hpp +62 -0
- package/vendor/include/networkit/community/AdjustedRandMeasure.hpp +31 -0
- package/vendor/include/networkit/community/ClusteringGenerator.hpp +75 -0
- package/vendor/include/networkit/community/CommunityDetectionAlgorithm.hpp +58 -0
- package/vendor/include/networkit/community/Conductance.hpp +32 -0
- package/vendor/include/networkit/community/CoverF1Similarity.hpp +53 -0
- package/vendor/include/networkit/community/CoverHubDominance.hpp +38 -0
- package/vendor/include/networkit/community/Coverage.hpp +25 -0
- package/vendor/include/networkit/community/CutClustering.hpp +62 -0
- package/vendor/include/networkit/community/DissimilarityMeasure.hpp +31 -0
- package/vendor/include/networkit/community/DynamicNMIDistance.hpp +44 -0
- package/vendor/include/networkit/community/EdgeCut.hpp +24 -0
- package/vendor/include/networkit/community/GraphClusteringTools.hpp +103 -0
- package/vendor/include/networkit/community/GraphStructuralRandMeasure.hpp +28 -0
- package/vendor/include/networkit/community/HubDominance.hpp +46 -0
- package/vendor/include/networkit/community/IntrapartitionDensity.hpp +44 -0
- package/vendor/include/networkit/community/IsolatedInterpartitionConductance.hpp +40 -0
- package/vendor/include/networkit/community/IsolatedInterpartitionExpansion.hpp +40 -0
- package/vendor/include/networkit/community/JaccardMeasure.hpp +25 -0
- package/vendor/include/networkit/community/LFM.hpp +49 -0
- package/vendor/include/networkit/community/LPDegreeOrdered.hpp +48 -0
- package/vendor/include/networkit/community/LocalCommunityEvaluation.hpp +100 -0
- package/vendor/include/networkit/community/LocalCoverEvaluation.hpp +31 -0
- package/vendor/include/networkit/community/LocalPartitionEvaluation.hpp +31 -0
- package/vendor/include/networkit/community/LouvainMapEquation.hpp +135 -0
- package/vendor/include/networkit/community/Modularity.hpp +54 -0
- package/vendor/include/networkit/community/NMIDistance.hpp +28 -0
- package/vendor/include/networkit/community/NodeStructuralRandMeasure.hpp +27 -0
- package/vendor/include/networkit/community/OverlappingCommunityDetectionAlgorithm.hpp +51 -0
- package/vendor/include/networkit/community/OverlappingNMIDistance.hpp +175 -0
- package/vendor/include/networkit/community/PLM.hpp +89 -0
- package/vendor/include/networkit/community/PLP.hpp +83 -0
- package/vendor/include/networkit/community/ParallelAgglomerativeClusterer.hpp +37 -0
- package/vendor/include/networkit/community/ParallelLeiden.hpp +96 -0
- package/vendor/include/networkit/community/ParallelLeidenView.hpp +138 -0
- package/vendor/include/networkit/community/PartitionFragmentation.hpp +30 -0
- package/vendor/include/networkit/community/PartitionHubDominance.hpp +37 -0
- package/vendor/include/networkit/community/PartitionIntersection.hpp +25 -0
- package/vendor/include/networkit/community/QualityMeasure.hpp +27 -0
- package/vendor/include/networkit/community/SampledGraphStructuralRandMeasure.hpp +40 -0
- package/vendor/include/networkit/community/SampledNodeStructuralRandMeasure.hpp +40 -0
- package/vendor/include/networkit/community/StablePartitionNodes.hpp +48 -0
- package/vendor/include/networkit/components/BiconnectedComponents.hpp +116 -0
- package/vendor/include/networkit/components/ComponentDecomposition.hpp +72 -0
- package/vendor/include/networkit/components/ConnectedComponents.hpp +55 -0
- package/vendor/include/networkit/components/DynConnectedComponents.hpp +71 -0
- package/vendor/include/networkit/components/DynWeaklyConnectedComponents.hpp +73 -0
- package/vendor/include/networkit/components/ParallelConnectedComponents.hpp +44 -0
- package/vendor/include/networkit/components/RandomSpanningForest.hpp +36 -0
- package/vendor/include/networkit/components/StronglyConnectedComponents.hpp +50 -0
- package/vendor/include/networkit/components/WeaklyConnectedComponents.hpp +59 -0
- package/vendor/include/networkit/correlation/Assortativity.hpp +64 -0
- package/vendor/include/networkit/distance/APSP.hpp +70 -0
- package/vendor/include/networkit/distance/AStar.hpp +68 -0
- package/vendor/include/networkit/distance/AStarGeneral.hpp +110 -0
- package/vendor/include/networkit/distance/AdamicAdarDistance.hpp +52 -0
- package/vendor/include/networkit/distance/AffectedNodes.hpp +130 -0
- package/vendor/include/networkit/distance/AlgebraicDistance.hpp +63 -0
- package/vendor/include/networkit/distance/BFS.hpp +43 -0
- package/vendor/include/networkit/distance/BidirectionalBFS.hpp +51 -0
- package/vendor/include/networkit/distance/BidirectionalDijkstra.hpp +69 -0
- package/vendor/include/networkit/distance/CommuteTimeDistance.hpp +89 -0
- package/vendor/include/networkit/distance/Diameter.hpp +97 -0
- package/vendor/include/networkit/distance/Dijkstra.hpp +50 -0
- package/vendor/include/networkit/distance/DynAPSP.hpp +67 -0
- package/vendor/include/networkit/distance/DynBFS.hpp +56 -0
- package/vendor/include/networkit/distance/DynDijkstra.hpp +57 -0
- package/vendor/include/networkit/distance/DynPrunedLandmarkLabeling.hpp +67 -0
- package/vendor/include/networkit/distance/DynSSSP.hpp +87 -0
- package/vendor/include/networkit/distance/Eccentricity.hpp +32 -0
- package/vendor/include/networkit/distance/EffectiveDiameter.hpp +47 -0
- package/vendor/include/networkit/distance/EffectiveDiameterApproximation.hpp +57 -0
- package/vendor/include/networkit/distance/FloydWarshall.hpp +93 -0
- package/vendor/include/networkit/distance/GraphDistance.hpp +49 -0
- package/vendor/include/networkit/distance/HopPlotApproximation.hpp +62 -0
- package/vendor/include/networkit/distance/IncompleteDijkstra.hpp +66 -0
- package/vendor/include/networkit/distance/IncompleteSSSP.hpp +41 -0
- package/vendor/include/networkit/distance/JaccardDistance.hpp +57 -0
- package/vendor/include/networkit/distance/MultiTargetBFS.hpp +32 -0
- package/vendor/include/networkit/distance/MultiTargetDijkstra.hpp +40 -0
- package/vendor/include/networkit/distance/NeighborhoodFunction.hpp +47 -0
- package/vendor/include/networkit/distance/NeighborhoodFunctionApproximation.hpp +56 -0
- package/vendor/include/networkit/distance/NeighborhoodFunctionHeuristic.hpp +56 -0
- package/vendor/include/networkit/distance/NodeDistance.hpp +54 -0
- package/vendor/include/networkit/distance/PrunedLandmarkLabeling.hpp +76 -0
- package/vendor/include/networkit/distance/ReverseBFS.hpp +46 -0
- package/vendor/include/networkit/distance/SPSP.hpp +143 -0
- package/vendor/include/networkit/distance/SSSP.hpp +216 -0
- package/vendor/include/networkit/distance/STSP.hpp +193 -0
- package/vendor/include/networkit/distance/Volume.hpp +66 -0
- package/vendor/include/networkit/dynamics/DGSStreamParser.hpp +40 -0
- package/vendor/include/networkit/dynamics/DGSWriter.hpp +30 -0
- package/vendor/include/networkit/dynamics/GraphDifference.hpp +110 -0
- package/vendor/include/networkit/dynamics/GraphEvent.hpp +55 -0
- package/vendor/include/networkit/dynamics/GraphEventHandler.hpp +39 -0
- package/vendor/include/networkit/dynamics/GraphEventProxy.hpp +55 -0
- package/vendor/include/networkit/dynamics/GraphUpdater.hpp +38 -0
- package/vendor/include/networkit/edgescores/ChibaNishizekiQuadrangleEdgeScore.hpp +26 -0
- package/vendor/include/networkit/edgescores/ChibaNishizekiTriangleEdgeScore.hpp +33 -0
- package/vendor/include/networkit/edgescores/EdgeScore.hpp +50 -0
- package/vendor/include/networkit/edgescores/EdgeScoreAsWeight.hpp +33 -0
- package/vendor/include/networkit/edgescores/EdgeScoreBlender.hpp +33 -0
- package/vendor/include/networkit/edgescores/EdgeScoreLinearizer.hpp +32 -0
- package/vendor/include/networkit/edgescores/EdgeScoreNormalizer.hpp +35 -0
- package/vendor/include/networkit/edgescores/GeometricMeanScore.hpp +29 -0
- package/vendor/include/networkit/edgescores/PrefixJaccardScore.hpp +23 -0
- package/vendor/include/networkit/edgescores/TriangleEdgeScore.hpp +39 -0
- package/vendor/include/networkit/embedding/Node2Vec.hpp +83 -0
- package/vendor/include/networkit/flow/EdmondsKarp.hpp +112 -0
- package/vendor/include/networkit/generators/BarabasiAlbertGenerator.hpp +87 -0
- package/vendor/include/networkit/generators/ChungLuGenerator.hpp +46 -0
- package/vendor/include/networkit/generators/ChungLuGeneratorAlamEtAl.hpp +63 -0
- package/vendor/include/networkit/generators/ClusteredRandomGraphGenerator.hpp +56 -0
- package/vendor/include/networkit/generators/ConfigurationModel.hpp +36 -0
- package/vendor/include/networkit/generators/DorogovtsevMendesGenerator.hpp +33 -0
- package/vendor/include/networkit/generators/DynamicBarabasiAlbertGenerator.hpp +33 -0
- package/vendor/include/networkit/generators/DynamicDGSParser.hpp +51 -0
- package/vendor/include/networkit/generators/DynamicDorogovtsevMendesGenerator.hpp +34 -0
- package/vendor/include/networkit/generators/DynamicForestFireGenerator.hpp +55 -0
- package/vendor/include/networkit/generators/DynamicGraphGenerator.hpp +40 -0
- package/vendor/include/networkit/generators/DynamicGraphSource.hpp +79 -0
- package/vendor/include/networkit/generators/DynamicHyperbolicGenerator.hpp +143 -0
- package/vendor/include/networkit/generators/DynamicPathGenerator.hpp +26 -0
- package/vendor/include/networkit/generators/DynamicPubWebGenerator.hpp +54 -0
- package/vendor/include/networkit/generators/EdgeSwitchingMarkovChainGenerator.hpp +65 -0
- package/vendor/include/networkit/generators/ErdosRenyiEnumerator.hpp +318 -0
- package/vendor/include/networkit/generators/ErdosRenyiGenerator.hpp +56 -0
- package/vendor/include/networkit/generators/HavelHakimiGenerator.hpp +48 -0
- package/vendor/include/networkit/generators/HyperbolicGenerator.hpp +236 -0
- package/vendor/include/networkit/generators/LFRGenerator.hpp +175 -0
- package/vendor/include/networkit/generators/MocnikGenerator.hpp +147 -0
- package/vendor/include/networkit/generators/MocnikGeneratorBasic.hpp +58 -0
- package/vendor/include/networkit/generators/PowerlawDegreeSequence.hpp +128 -0
- package/vendor/include/networkit/generators/PubWebGenerator.hpp +94 -0
- package/vendor/include/networkit/generators/RegularRingLatticeGenerator.hpp +37 -0
- package/vendor/include/networkit/generators/RmatGenerator.hpp +67 -0
- package/vendor/include/networkit/generators/StaticDegreeSequenceGenerator.hpp +42 -0
- package/vendor/include/networkit/generators/StaticGraphGenerator.hpp +30 -0
- package/vendor/include/networkit/generators/StochasticBlockmodel.hpp +41 -0
- package/vendor/include/networkit/generators/WattsStrogatzGenerator.hpp +43 -0
- package/vendor/include/networkit/generators/quadtree/QuadNode.hpp +857 -0
- package/vendor/include/networkit/generators/quadtree/QuadNodeCartesianEuclid.hpp +587 -0
- package/vendor/include/networkit/generators/quadtree/QuadNodePolarEuclid.hpp +726 -0
- package/vendor/include/networkit/generators/quadtree/Quadtree.hpp +232 -0
- package/vendor/include/networkit/generators/quadtree/QuadtreeCartesianEuclid.hpp +149 -0
- package/vendor/include/networkit/generators/quadtree/QuadtreePolarEuclid.hpp +143 -0
- package/vendor/include/networkit/geometric/HyperbolicSpace.hpp +248 -0
- package/vendor/include/networkit/geometric/Point2DWithIndex.hpp +145 -0
- package/vendor/include/networkit/global/ClusteringCoefficient.hpp +42 -0
- package/vendor/include/networkit/global/GlobalClusteringCoefficient.hpp +24 -0
- package/vendor/include/networkit/graph/Attributes.hpp +568 -0
- package/vendor/include/networkit/graph/BFS.hpp +111 -0
- package/vendor/include/networkit/graph/DFS.hpp +71 -0
- package/vendor/include/networkit/graph/Dijkstra.hpp +83 -0
- package/vendor/include/networkit/graph/EdgeIterators.hpp +171 -0
- package/vendor/include/networkit/graph/Graph.hpp +2083 -0
- package/vendor/include/networkit/graph/GraphBuilder.hpp +289 -0
- package/vendor/include/networkit/graph/GraphR.hpp +133 -0
- package/vendor/include/networkit/graph/GraphTools.hpp +589 -0
- package/vendor/include/networkit/graph/GraphW.hpp +1236 -0
- package/vendor/include/networkit/graph/KruskalMSF.hpp +50 -0
- package/vendor/include/networkit/graph/NeighborIterators.hpp +163 -0
- package/vendor/include/networkit/graph/NodeIterators.hpp +127 -0
- package/vendor/include/networkit/graph/PrimMSF.hpp +66 -0
- package/vendor/include/networkit/graph/RandomMaximumSpanningForest.hpp +133 -0
- package/vendor/include/networkit/graph/SpanningForest.hpp +41 -0
- package/vendor/include/networkit/graph/TopologicalSort.hpp +87 -0
- package/vendor/include/networkit/graph/UnionMaximumSpanningForest.hpp +126 -0
- package/vendor/include/networkit/graph/test/GraphBuilderBenchmark.hpp +68 -0
- package/vendor/include/networkit/independentset/IndependentSetFinder.hpp +44 -0
- package/vendor/include/networkit/independentset/Luby.hpp +27 -0
- package/vendor/include/networkit/io/BinaryEdgeListPartitionReader.hpp +45 -0
- package/vendor/include/networkit/io/BinaryEdgeListPartitionWriter.hpp +47 -0
- package/vendor/include/networkit/io/BinaryPartitionReader.hpp +41 -0
- package/vendor/include/networkit/io/BinaryPartitionWriter.hpp +44 -0
- package/vendor/include/networkit/io/CoverReader.hpp +27 -0
- package/vendor/include/networkit/io/CoverWriter.hpp +21 -0
- package/vendor/include/networkit/io/DGSReader.hpp +39 -0
- package/vendor/include/networkit/io/DibapGraphReader.hpp +43 -0
- package/vendor/include/networkit/io/DotGraphWriter.hpp +39 -0
- package/vendor/include/networkit/io/DotPartitionWriter.hpp +23 -0
- package/vendor/include/networkit/io/DynamicGraphReader.hpp +29 -0
- package/vendor/include/networkit/io/EdgeListCoverReader.hpp +35 -0
- package/vendor/include/networkit/io/EdgeListPartitionReader.hpp +43 -0
- package/vendor/include/networkit/io/EdgeListReader.hpp +61 -0
- package/vendor/include/networkit/io/EdgeListWriter.hpp +48 -0
- package/vendor/include/networkit/io/GMLGraphReader.hpp +33 -0
- package/vendor/include/networkit/io/GMLGraphWriter.hpp +33 -0
- package/vendor/include/networkit/io/GraphIO.hpp +52 -0
- package/vendor/include/networkit/io/GraphReader.hpp +40 -0
- package/vendor/include/networkit/io/GraphToolBinaryReader.hpp +71 -0
- package/vendor/include/networkit/io/GraphToolBinaryWriter.hpp +61 -0
- package/vendor/include/networkit/io/GraphWriter.hpp +27 -0
- package/vendor/include/networkit/io/KONECTGraphReader.hpp +44 -0
- package/vendor/include/networkit/io/LineFileReader.hpp +42 -0
- package/vendor/include/networkit/io/METISGraphReader.hpp +36 -0
- package/vendor/include/networkit/io/METISGraphWriter.hpp +29 -0
- package/vendor/include/networkit/io/METISParser.hpp +63 -0
- package/vendor/include/networkit/io/MTXGraphReader.hpp +31 -0
- package/vendor/include/networkit/io/MTXParser.hpp +87 -0
- package/vendor/include/networkit/io/MatrixMarketReader.hpp +33 -0
- package/vendor/include/networkit/io/MatrixReader.hpp +33 -0
- package/vendor/include/networkit/io/MemoryMappedFile.hpp +80 -0
- package/vendor/include/networkit/io/NetworkitBinaryGraph.hpp +144 -0
- package/vendor/include/networkit/io/NetworkitBinaryReader.hpp +50 -0
- package/vendor/include/networkit/io/NetworkitBinaryWriter.hpp +71 -0
- package/vendor/include/networkit/io/PartitionReader.hpp +34 -0
- package/vendor/include/networkit/io/PartitionWriter.hpp +31 -0
- package/vendor/include/networkit/io/RBGraphReader.hpp +37 -0
- package/vendor/include/networkit/io/RBMatrixReader.hpp +49 -0
- package/vendor/include/networkit/io/RasterReader.hpp +40 -0
- package/vendor/include/networkit/io/SNAPEdgeListPartitionReader.hpp +28 -0
- package/vendor/include/networkit/io/SNAPGraphReader.hpp +53 -0
- package/vendor/include/networkit/io/SNAPGraphWriter.hpp +53 -0
- package/vendor/include/networkit/io/ThrillGraphBinaryReader.hpp +44 -0
- package/vendor/include/networkit/io/ThrillGraphBinaryWriter.hpp +27 -0
- package/vendor/include/networkit/layout/LayoutAlgorithm.hpp +39 -0
- package/vendor/include/networkit/linkprediction/AdamicAdarIndex.hpp +37 -0
- package/vendor/include/networkit/linkprediction/AdjustedRandIndex.hpp +36 -0
- package/vendor/include/networkit/linkprediction/AlgebraicDistanceIndex.hpp +70 -0
- package/vendor/include/networkit/linkprediction/CommonNeighborsIndex.hpp +39 -0
- package/vendor/include/networkit/linkprediction/EvaluationMetric.hpp +135 -0
- package/vendor/include/networkit/linkprediction/JaccardIndex.hpp +44 -0
- package/vendor/include/networkit/linkprediction/KatzIndex.hpp +84 -0
- package/vendor/include/networkit/linkprediction/LinkPredictor.hpp +98 -0
- package/vendor/include/networkit/linkprediction/LinkThresholder.hpp +56 -0
- package/vendor/include/networkit/linkprediction/MissingLinksFinder.hpp +60 -0
- package/vendor/include/networkit/linkprediction/NeighborhoodDistanceIndex.hpp +42 -0
- package/vendor/include/networkit/linkprediction/NeighborhoodUtility.hpp +54 -0
- package/vendor/include/networkit/linkprediction/NeighborsMeasureIndex.hpp +48 -0
- package/vendor/include/networkit/linkprediction/PrecisionRecallMetric.hpp +40 -0
- package/vendor/include/networkit/linkprediction/PredictionsSorter.hpp +66 -0
- package/vendor/include/networkit/linkprediction/PreferentialAttachmentIndex.hpp +37 -0
- package/vendor/include/networkit/linkprediction/ROCMetric.hpp +39 -0
- package/vendor/include/networkit/linkprediction/RandomLinkSampler.hpp +47 -0
- package/vendor/include/networkit/linkprediction/ResourceAllocationIndex.hpp +38 -0
- package/vendor/include/networkit/linkprediction/SameCommunityIndex.hpp +50 -0
- package/vendor/include/networkit/linkprediction/TotalNeighborsIndex.hpp +39 -0
- package/vendor/include/networkit/linkprediction/UDegreeIndex.hpp +35 -0
- package/vendor/include/networkit/linkprediction/VDegreeIndex.hpp +35 -0
- package/vendor/include/networkit/matching/BMatcher.hpp +52 -0
- package/vendor/include/networkit/matching/BMatching.hpp +115 -0
- package/vendor/include/networkit/matching/BSuitorMatcher.hpp +170 -0
- package/vendor/include/networkit/matching/DynamicBSuitorMatcher.hpp +78 -0
- package/vendor/include/networkit/matching/LocalMaxMatcher.hpp +35 -0
- package/vendor/include/networkit/matching/Matcher.hpp +55 -0
- package/vendor/include/networkit/matching/Matching.hpp +111 -0
- package/vendor/include/networkit/matching/PathGrowingMatcher.hpp +46 -0
- package/vendor/include/networkit/matching/SuitorMatcher.hpp +62 -0
- package/vendor/include/networkit/numerics/ConjugateGradient.hpp +163 -0
- package/vendor/include/networkit/numerics/GaussSeidelRelaxation.hpp +99 -0
- package/vendor/include/networkit/numerics/LAMG/LAMGSettings.hpp +70 -0
- package/vendor/include/networkit/numerics/LAMG/Lamg.hpp +460 -0
- package/vendor/include/networkit/numerics/LAMG/Level/EliminationStage.hpp +47 -0
- package/vendor/include/networkit/numerics/LAMG/Level/Level.hpp +56 -0
- package/vendor/include/networkit/numerics/LAMG/Level/LevelAggregation.hpp +52 -0
- package/vendor/include/networkit/numerics/LAMG/Level/LevelElimination.hpp +133 -0
- package/vendor/include/networkit/numerics/LAMG/Level/LevelFinest.hpp +28 -0
- package/vendor/include/networkit/numerics/LAMG/LevelHierarchy.hpp +165 -0
- package/vendor/include/networkit/numerics/LAMG/MultiLevelSetup.hpp +1090 -0
- package/vendor/include/networkit/numerics/LAMG/SolverLamg.hpp +316 -0
- package/vendor/include/networkit/numerics/LinearSolver.hpp +151 -0
- package/vendor/include/networkit/numerics/Preconditioner/DiagonalPreconditioner.hpp +61 -0
- package/vendor/include/networkit/numerics/Preconditioner/IdentityPreconditioner.hpp +36 -0
- package/vendor/include/networkit/numerics/Smoother.hpp +37 -0
- package/vendor/include/networkit/overlap/HashingOverlapper.hpp +28 -0
- package/vendor/include/networkit/overlap/Overlapper.hpp +27 -0
- package/vendor/include/networkit/planarity/LeftRightPlanarityCheck.hpp +113 -0
- package/vendor/include/networkit/randomization/Curveball.hpp +49 -0
- package/vendor/include/networkit/randomization/CurveballGlobalTradeGenerator.hpp +39 -0
- package/vendor/include/networkit/randomization/CurveballUniformTradeGenerator.hpp +39 -0
- package/vendor/include/networkit/randomization/DegreePreservingShuffle.hpp +82 -0
- package/vendor/include/networkit/randomization/EdgeSwitching.hpp +157 -0
- package/vendor/include/networkit/randomization/GlobalCurveball.hpp +69 -0
- package/vendor/include/networkit/randomization/GlobalTradeSequence.hpp +303 -0
- package/vendor/include/networkit/reachability/AllSimplePaths.hpp +122 -0
- package/vendor/include/networkit/reachability/ReachableNodes.hpp +83 -0
- package/vendor/include/networkit/scd/ApproximatePageRank.hpp +51 -0
- package/vendor/include/networkit/scd/CliqueDetect.hpp +55 -0
- package/vendor/include/networkit/scd/CombinedSCD.hpp +51 -0
- package/vendor/include/networkit/scd/GCE.hpp +42 -0
- package/vendor/include/networkit/scd/LFMLocal.hpp +54 -0
- package/vendor/include/networkit/scd/LocalT.hpp +40 -0
- package/vendor/include/networkit/scd/LocalTightnessExpansion.hpp +46 -0
- package/vendor/include/networkit/scd/PageRankNibble.hpp +55 -0
- package/vendor/include/networkit/scd/RandomBFS.hpp +33 -0
- package/vendor/include/networkit/scd/SCDGroundTruthComparison.hpp +121 -0
- package/vendor/include/networkit/scd/SelectiveCommunityDetector.hpp +76 -0
- package/vendor/include/networkit/scd/SetConductance.hpp +47 -0
- package/vendor/include/networkit/scd/TCE.hpp +41 -0
- package/vendor/include/networkit/scd/TwoPhaseL.hpp +40 -0
- package/vendor/include/networkit/scoring/EdgeScoring.hpp +44 -0
- package/vendor/include/networkit/scoring/ModularityScoring.hpp +79 -0
- package/vendor/include/networkit/simulation/EpidemicSimulationSEIR.hpp +59 -0
- package/vendor/include/networkit/sparsification/ChanceCorrectedTriangleScore.hpp +28 -0
- package/vendor/include/networkit/sparsification/ForestFireScore.hpp +34 -0
- package/vendor/include/networkit/sparsification/GlobalThresholdFilter.hpp +40 -0
- package/vendor/include/networkit/sparsification/LocalDegreeScore.hpp +30 -0
- package/vendor/include/networkit/sparsification/LocalFilterScore.hpp +124 -0
- package/vendor/include/networkit/sparsification/LocalSimilarityScore.hpp +63 -0
- package/vendor/include/networkit/sparsification/MultiscaleScore.hpp +38 -0
- package/vendor/include/networkit/sparsification/RandomEdgeScore.hpp +33 -0
- package/vendor/include/networkit/sparsification/RandomNodeEdgeScore.hpp +29 -0
- package/vendor/include/networkit/sparsification/SCANStructuralSimilarityScore.hpp +23 -0
- package/vendor/include/networkit/sparsification/SimmelianOverlapScore.hpp +35 -0
- package/vendor/include/networkit/sparsification/SimmelianScore.hpp +92 -0
- package/vendor/include/networkit/sparsification/Sparsifiers.hpp +166 -0
- package/vendor/include/networkit/structures/Cover.hpp +248 -0
- package/vendor/include/networkit/structures/LocalCommunity.hpp +363 -0
- package/vendor/include/networkit/structures/Partition.hpp +335 -0
- package/vendor/include/networkit/structures/UnionFind.hpp +66 -0
- package/vendor/include/networkit/viz/GraphLayoutAlgorithm.hpp +157 -0
- package/vendor/include/networkit/viz/MaxentStress.hpp +346 -0
- package/vendor/include/networkit/viz/Octree.hpp +428 -0
- package/vendor/include/networkit/viz/PivotMDS.hpp +63 -0
- package/vendor/include/networkit/viz/Point.hpp +415 -0
- package/vendor/include/networkit/viz/PostscriptWriter.hpp +78 -0
- package/vendor/include/tlx/algorithm/exclusive_scan.hpp +56 -0
- package/vendor/include/tlx/algorithm/is_sorted_cmp.hpp +56 -0
- package/vendor/include/tlx/algorithm/merge_advance.hpp +177 -0
- package/vendor/include/tlx/algorithm/merge_combine.hpp +76 -0
- package/vendor/include/tlx/algorithm/multisequence_partition.hpp +346 -0
- package/vendor/include/tlx/algorithm/multisequence_selection.hpp +351 -0
- package/vendor/include/tlx/algorithm/multiway_merge.hpp +1385 -0
- package/vendor/include/tlx/algorithm/multiway_merge_splitting.hpp +257 -0
- package/vendor/include/tlx/algorithm/parallel_multiway_merge.hpp +408 -0
- package/vendor/include/tlx/algorithm/random_bipartition_shuffle.hpp +116 -0
- package/vendor/include/tlx/algorithm.hpp +36 -0
- package/vendor/include/tlx/allocator_base.hpp +100 -0
- package/vendor/include/tlx/backtrace.hpp +54 -0
- package/vendor/include/tlx/cmdline_parser.hpp +498 -0
- package/vendor/include/tlx/container/btree.hpp +3977 -0
- package/vendor/include/tlx/container/btree_map.hpp +634 -0
- package/vendor/include/tlx/container/btree_multimap.hpp +627 -0
- package/vendor/include/tlx/container/btree_multiset.hpp +612 -0
- package/vendor/include/tlx/container/btree_set.hpp +612 -0
- package/vendor/include/tlx/container/d_ary_addressable_int_heap.hpp +416 -0
- package/vendor/include/tlx/container/d_ary_heap.hpp +311 -0
- package/vendor/include/tlx/container/loser_tree.hpp +1009 -0
- package/vendor/include/tlx/container/lru_cache.hpp +319 -0
- package/vendor/include/tlx/container/radix_heap.hpp +735 -0
- package/vendor/include/tlx/container/ring_buffer.hpp +428 -0
- package/vendor/include/tlx/container/simple_vector.hpp +304 -0
- package/vendor/include/tlx/container/splay_tree.hpp +399 -0
- package/vendor/include/tlx/container/string_view.hpp +805 -0
- package/vendor/include/tlx/container.hpp +40 -0
- package/vendor/include/tlx/counting_ptr.hpp +522 -0
- package/vendor/include/tlx/define/attribute_always_inline.hpp +34 -0
- package/vendor/include/tlx/define/attribute_fallthrough.hpp +36 -0
- package/vendor/include/tlx/define/attribute_format_printf.hpp +34 -0
- package/vendor/include/tlx/define/attribute_packed.hpp +34 -0
- package/vendor/include/tlx/define/attribute_warn_unused_result.hpp +34 -0
- package/vendor/include/tlx/define/constexpr.hpp +31 -0
- package/vendor/include/tlx/define/deprecated.hpp +39 -0
- package/vendor/include/tlx/define/endian.hpp +49 -0
- package/vendor/include/tlx/define/likely.hpp +33 -0
- package/vendor/include/tlx/define/visibility_hidden.hpp +34 -0
- package/vendor/include/tlx/define.hpp +36 -0
- package/vendor/include/tlx/delegate.hpp +524 -0
- package/vendor/include/tlx/die/core.hpp +311 -0
- package/vendor/include/tlx/die.hpp +106 -0
- package/vendor/include/tlx/digest/md5.hpp +81 -0
- package/vendor/include/tlx/digest/sha1.hpp +81 -0
- package/vendor/include/tlx/digest/sha256.hpp +81 -0
- package/vendor/include/tlx/digest/sha512.hpp +81 -0
- package/vendor/include/tlx/digest.hpp +30 -0
- package/vendor/include/tlx/logger/all.hpp +33 -0
- package/vendor/include/tlx/logger/array.hpp +43 -0
- package/vendor/include/tlx/logger/core.hpp +287 -0
- package/vendor/include/tlx/logger/deque.hpp +42 -0
- package/vendor/include/tlx/logger/map.hpp +65 -0
- package/vendor/include/tlx/logger/set.hpp +60 -0
- package/vendor/include/tlx/logger/tuple.hpp +66 -0
- package/vendor/include/tlx/logger/unordered_map.hpp +68 -0
- package/vendor/include/tlx/logger/unordered_set.hpp +64 -0
- package/vendor/include/tlx/logger/wrap_unprintable.hpp +75 -0
- package/vendor/include/tlx/logger.hpp +44 -0
- package/vendor/include/tlx/math/abs_diff.hpp +35 -0
- package/vendor/include/tlx/math/aggregate.hpp +231 -0
- package/vendor/include/tlx/math/aggregate_min_max.hpp +116 -0
- package/vendor/include/tlx/math/bswap.hpp +148 -0
- package/vendor/include/tlx/math/bswap_be.hpp +79 -0
- package/vendor/include/tlx/math/bswap_le.hpp +79 -0
- package/vendor/include/tlx/math/clz.hpp +174 -0
- package/vendor/include/tlx/math/ctz.hpp +174 -0
- package/vendor/include/tlx/math/div_ceil.hpp +36 -0
- package/vendor/include/tlx/math/ffs.hpp +123 -0
- package/vendor/include/tlx/math/integer_log2.hpp +189 -0
- package/vendor/include/tlx/math/is_power_of_two.hpp +74 -0
- package/vendor/include/tlx/math/polynomial_regression.hpp +243 -0
- package/vendor/include/tlx/math/popcount.hpp +173 -0
- package/vendor/include/tlx/math/power_to_the.hpp +44 -0
- package/vendor/include/tlx/math/rol.hpp +112 -0
- package/vendor/include/tlx/math/ror.hpp +112 -0
- package/vendor/include/tlx/math/round_to_power_of_two.hpp +121 -0
- package/vendor/include/tlx/math/round_up.hpp +36 -0
- package/vendor/include/tlx/math/sgn.hpp +38 -0
- package/vendor/include/tlx/math.hpp +46 -0
- package/vendor/include/tlx/meta/apply_tuple.hpp +55 -0
- package/vendor/include/tlx/meta/call_for_range.hpp +78 -0
- package/vendor/include/tlx/meta/call_foreach.hpp +60 -0
- package/vendor/include/tlx/meta/call_foreach_tuple.hpp +60 -0
- package/vendor/include/tlx/meta/call_foreach_tuple_with_index.hpp +61 -0
- package/vendor/include/tlx/meta/call_foreach_with_index.hpp +64 -0
- package/vendor/include/tlx/meta/enable_if.hpp +37 -0
- package/vendor/include/tlx/meta/fold_left.hpp +63 -0
- package/vendor/include/tlx/meta/fold_left_tuple.hpp +60 -0
- package/vendor/include/tlx/meta/fold_right.hpp +63 -0
- package/vendor/include/tlx/meta/fold_right_tuple.hpp +60 -0
- package/vendor/include/tlx/meta/function_chain.hpp +197 -0
- package/vendor/include/tlx/meta/function_stack.hpp +189 -0
- package/vendor/include/tlx/meta/has_member.hpp +80 -0
- package/vendor/include/tlx/meta/has_method.hpp +117 -0
- package/vendor/include/tlx/meta/index_sequence.hpp +66 -0
- package/vendor/include/tlx/meta/is_std_array.hpp +40 -0
- package/vendor/include/tlx/meta/is_std_pair.hpp +39 -0
- package/vendor/include/tlx/meta/is_std_tuple.hpp +39 -0
- package/vendor/include/tlx/meta/is_std_vector.hpp +39 -0
- package/vendor/include/tlx/meta/log2.hpp +101 -0
- package/vendor/include/tlx/meta/no_operation.hpp +55 -0
- package/vendor/include/tlx/meta/static_index.hpp +42 -0
- package/vendor/include/tlx/meta/vexpand.hpp +34 -0
- package/vendor/include/tlx/meta/vmap_for_range.hpp +84 -0
- package/vendor/include/tlx/meta/vmap_foreach.hpp +63 -0
- package/vendor/include/tlx/meta/vmap_foreach_tuple.hpp +59 -0
- package/vendor/include/tlx/meta/vmap_foreach_tuple_with_index.hpp +62 -0
- package/vendor/include/tlx/meta/vmap_foreach_with_index.hpp +70 -0
- package/vendor/include/tlx/meta.hpp +55 -0
- package/vendor/include/tlx/multi_timer.hpp +148 -0
- package/vendor/include/tlx/port/setenv.hpp +31 -0
- package/vendor/include/tlx/port.hpp +27 -0
- package/vendor/include/tlx/semaphore.hpp +119 -0
- package/vendor/include/tlx/simple_vector.hpp +20 -0
- package/vendor/include/tlx/siphash.hpp +282 -0
- package/vendor/include/tlx/sort/networks/best.hpp +611 -0
- package/vendor/include/tlx/sort/networks/bose_nelson.hpp +412 -0
- package/vendor/include/tlx/sort/networks/bose_nelson_parameter.hpp +507 -0
- package/vendor/include/tlx/sort/networks/cswap.hpp +60 -0
- package/vendor/include/tlx/sort/parallel_mergesort.hpp +398 -0
- package/vendor/include/tlx/sort/strings/insertion_sort.hpp +232 -0
- package/vendor/include/tlx/sort/strings/multikey_quicksort.hpp +185 -0
- package/vendor/include/tlx/sort/strings/parallel_sample_sort.hpp +1647 -0
- package/vendor/include/tlx/sort/strings/radix_sort.hpp +934 -0
- package/vendor/include/tlx/sort/strings/sample_sort_tools.hpp +756 -0
- package/vendor/include/tlx/sort/strings/string_ptr.hpp +426 -0
- package/vendor/include/tlx/sort/strings/string_set.hpp +800 -0
- package/vendor/include/tlx/sort/strings.hpp +329 -0
- package/vendor/include/tlx/sort/strings_parallel.hpp +325 -0
- package/vendor/include/tlx/sort.hpp +29 -0
- package/vendor/include/tlx/stack_allocator.hpp +226 -0
- package/vendor/include/tlx/string/appendline.hpp +35 -0
- package/vendor/include/tlx/string/base64.hpp +87 -0
- package/vendor/include/tlx/string/bitdump.hpp +139 -0
- package/vendor/include/tlx/string/compare_icase.hpp +42 -0
- package/vendor/include/tlx/string/contains.hpp +36 -0
- package/vendor/include/tlx/string/contains_word.hpp +42 -0
- package/vendor/include/tlx/string/ends_with.hpp +79 -0
- package/vendor/include/tlx/string/equal_icase.hpp +42 -0
- package/vendor/include/tlx/string/erase_all.hpp +70 -0
- package/vendor/include/tlx/string/escape_html.hpp +34 -0
- package/vendor/include/tlx/string/escape_uri.hpp +34 -0
- package/vendor/include/tlx/string/expand_environment_variables.hpp +49 -0
- package/vendor/include/tlx/string/extract_between.hpp +40 -0
- package/vendor/include/tlx/string/format_iec_units.hpp +32 -0
- package/vendor/include/tlx/string/format_si_iec_units.hpp +19 -0
- package/vendor/include/tlx/string/format_si_units.hpp +32 -0
- package/vendor/include/tlx/string/hash_djb2.hpp +87 -0
- package/vendor/include/tlx/string/hash_sdbm.hpp +86 -0
- package/vendor/include/tlx/string/hexdump.hpp +154 -0
- package/vendor/include/tlx/string/index_of.hpp +56 -0
- package/vendor/include/tlx/string/join.hpp +65 -0
- package/vendor/include/tlx/string/join_generic.hpp +89 -0
- package/vendor/include/tlx/string/join_quoted.hpp +46 -0
- package/vendor/include/tlx/string/less_icase.hpp +64 -0
- package/vendor/include/tlx/string/levenshtein.hpp +193 -0
- package/vendor/include/tlx/string/pad.hpp +39 -0
- package/vendor/include/tlx/string/parse_si_iec_units.hpp +46 -0
- package/vendor/include/tlx/string/parse_uri.hpp +66 -0
- package/vendor/include/tlx/string/parse_uri_form_data.hpp +136 -0
- package/vendor/include/tlx/string/replace.hpp +141 -0
- package/vendor/include/tlx/string/split.hpp +170 -0
- package/vendor/include/tlx/string/split_quoted.hpp +49 -0
- package/vendor/include/tlx/string/split_view.hpp +218 -0
- package/vendor/include/tlx/string/split_words.hpp +53 -0
- package/vendor/include/tlx/string/ssprintf.hpp +45 -0
- package/vendor/include/tlx/string/ssprintf_generic.hpp +95 -0
- package/vendor/include/tlx/string/starts_with.hpp +44 -0
- package/vendor/include/tlx/string/to_lower.hpp +47 -0
- package/vendor/include/tlx/string/to_upper.hpp +47 -0
- package/vendor/include/tlx/string/trim.hpp +298 -0
- package/vendor/include/tlx/string/union_words.hpp +33 -0
- package/vendor/include/tlx/string/word_wrap.hpp +35 -0
- package/vendor/include/tlx/string.hpp +68 -0
- package/vendor/include/tlx/thread_barrier_mutex.hpp +109 -0
- package/vendor/include/tlx/thread_barrier_spin.hpp +127 -0
- package/vendor/include/tlx/thread_pool.hpp +151 -0
- package/vendor/include/tlx/timestamp.hpp +23 -0
- package/vendor/include/tlx/unused.hpp +28 -0
- package/vendor/include/tlx/vector_free.hpp +30 -0
- package/vendor/include/tlx/version.hpp +49 -0
- package/vendor/include/ttmath/ttmath.h +2881 -0
- package/vendor/include/ttmath/ttmathbig.h +6111 -0
- package/vendor/include/ttmath/ttmathdec.h +419 -0
- package/vendor/include/ttmath/ttmathint.h +1923 -0
- package/vendor/include/ttmath/ttmathmisc.h +250 -0
- package/vendor/include/ttmath/ttmathobjects.h +812 -0
- package/vendor/include/ttmath/ttmathparser.h +2791 -0
- package/vendor/include/ttmath/ttmaththreads.h +252 -0
- package/vendor/include/ttmath/ttmathtypes.h +707 -0
- package/vendor/include/ttmath/ttmathuint.h +4190 -0
- package/vendor/include/ttmath/ttmathuint_noasm.h +1038 -0
- package/vendor/include/ttmath/ttmathuint_x86.h +1620 -0
- package/vendor/include/ttmath/ttmathuint_x86_64.h +1177 -0
- package/vendor/lib/cmake/tlx/tlx-config.cmake +51 -0
- package/vendor/lib/cmake/tlx/tlx-targets-release.cmake +19 -0
- package/vendor/lib/cmake/tlx/tlx-targets.cmake +106 -0
- package/vendor/lib/cmake/tlx/tlx-version.cmake +11 -0
- package/vendor/lib/libnetworkit.dylib +0 -0
- package/vendor/lib/libtlx.a +0 -0
- package/vendor/lib/pkgconfig/networkit.pc +11 -0
- package/vendor/lib/pkgconfig/tlx.pc +11 -0
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* GroupClosenessLocalSwaps.hpp
|
|
3
|
+
*
|
|
4
|
+
* Created on: 19.12.2019
|
|
5
|
+
* Author: Eugenio Angriman <angrimae@hu-berlin.de>
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#ifndef NETWORKIT_CENTRALITY_GROUP_CLOSENESS_LOCAL_SWAPS_HPP_
|
|
9
|
+
#define NETWORKIT_CENTRALITY_GROUP_CLOSENESS_LOCAL_SWAPS_HPP_
|
|
10
|
+
|
|
11
|
+
#ifdef __AVX2__
|
|
12
|
+
#include <immintrin.h>
|
|
13
|
+
#include <networkit/auxiliary/AlignedAllocator.hpp>
|
|
14
|
+
#endif // __AVX2__
|
|
15
|
+
|
|
16
|
+
#include <limits>
|
|
17
|
+
#include <stdexcept>
|
|
18
|
+
#include <unordered_map>
|
|
19
|
+
#include <vector>
|
|
20
|
+
|
|
21
|
+
#include <networkit/base/Algorithm.hpp>
|
|
22
|
+
#include <networkit/graph/Graph.hpp>
|
|
23
|
+
|
|
24
|
+
namespace NetworKit {
|
|
25
|
+
|
|
26
|
+
class GroupClosenessLocalSwaps final : public Algorithm {
|
|
27
|
+
|
|
28
|
+
static constexpr float maxInt16 = static_cast<float>(std::numeric_limits<uint16_t>::max());
|
|
29
|
+
// Number of random numbers generated at once
|
|
30
|
+
static constexpr count K = 16;
|
|
31
|
+
|
|
32
|
+
public:
|
|
33
|
+
GroupClosenessLocalSwaps(const Graph &G, const std::vector<node> &group, count maxSwaps = 100);
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Finds a group of nodes with high group closeness centrality. This is the LS-restrict
|
|
37
|
+
* algorithm presented in Angriman et al. "Local Search for Group Closeness Maximization on Big
|
|
38
|
+
* Graphs" IEEE BigData 2019. The algorithm takes as input a graph and an arbitrary group of
|
|
39
|
+
* nodes, and improves the group closeness of the given group by performing vertex exchanges.
|
|
40
|
+
*
|
|
41
|
+
* @param G A connected, undirected, and unweighted graph.
|
|
42
|
+
* @param first, last A range that contains the initial group of nodes.
|
|
43
|
+
* @param maxSwaps Maximum number of vertex exchanges allowed.
|
|
44
|
+
*/
|
|
45
|
+
template <class InputIt>
|
|
46
|
+
GroupClosenessLocalSwaps(const Graph &graph, InputIt first, InputIt last, count maxSwaps = 100)
|
|
47
|
+
: G(&graph), group(first, last), maxSwaps(maxSwaps) {
|
|
48
|
+
|
|
49
|
+
if (G->isDirected())
|
|
50
|
+
throw std::runtime_error("Error, this algorithm does not support directed graphs.");
|
|
51
|
+
|
|
52
|
+
if (group.empty())
|
|
53
|
+
throw std::runtime_error("Error, empty group.");
|
|
54
|
+
|
|
55
|
+
if (G->isWeighted())
|
|
56
|
+
WARN("This algorithm does not support edge Weights, they will be ignored.");
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Runs the algorithm.
|
|
61
|
+
*/
|
|
62
|
+
void run() override;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Returns the computed group.
|
|
66
|
+
*/
|
|
67
|
+
std::vector<node> groupMaxCloseness() const;
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Returns the total number of vertex exchanges performed by the algorithm.
|
|
71
|
+
*/
|
|
72
|
+
count numberOfSwaps() const;
|
|
73
|
+
|
|
74
|
+
private:
|
|
75
|
+
const Graph *G;
|
|
76
|
+
std::vector<node> group, stack;
|
|
77
|
+
std::vector<uint32_t> distance, sumOfMins;
|
|
78
|
+
std::vector<bool> gamma, visited;
|
|
79
|
+
std::unordered_map<node, index> idxMap;
|
|
80
|
+
std::vector<int64_t> farness, farnessDecrease;
|
|
81
|
+
|
|
82
|
+
count maxSwaps, totalSwaps, stackSize;
|
|
83
|
+
|
|
84
|
+
void init();
|
|
85
|
+
void bfsFromGroup();
|
|
86
|
+
bool findAndSwap();
|
|
87
|
+
node estimateHighestDecrease();
|
|
88
|
+
void initRandomVector();
|
|
89
|
+
int64_t computeFarnessDecrease(node u);
|
|
90
|
+
void resetGamma(node x, index idx);
|
|
91
|
+
|
|
92
|
+
#ifdef __AVX2__
|
|
93
|
+
union RandItem {
|
|
94
|
+
uint16_t items[K];
|
|
95
|
+
__m256i vec;
|
|
96
|
+
};
|
|
97
|
+
std::vector<RandItem, AlignedAllocator<RandItem, sizeof(RandItem)>> randVec;
|
|
98
|
+
#else
|
|
99
|
+
std::vector<uint16_t> randVec;
|
|
100
|
+
#endif // __AVX2__
|
|
101
|
+
|
|
102
|
+
std::vector<std::uniform_int_distribution<uint32_t>> intDistributions;
|
|
103
|
+
};
|
|
104
|
+
} // namespace NetworKit
|
|
105
|
+
|
|
106
|
+
#endif // NETWORKIT_CENTRALITY_GROUP_CLOSENESS_LOCAL_SWAPS_HPP_
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* GroupDegree.hpp
|
|
3
|
+
*
|
|
4
|
+
* Created on: 20.04.2018
|
|
5
|
+
* Author: Eugenio Angriman
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#ifndef NETWORKIT_CENTRALITY_GROUP_DEGREE_HPP_
|
|
9
|
+
#define NETWORKIT_CENTRALITY_GROUP_DEGREE_HPP_
|
|
10
|
+
|
|
11
|
+
#include <omp.h>
|
|
12
|
+
#include <ranges>
|
|
13
|
+
|
|
14
|
+
#include <networkit/auxiliary/BucketPQ.hpp>
|
|
15
|
+
#include <networkit/base/Algorithm.hpp>
|
|
16
|
+
#include <networkit/graph/Graph.hpp>
|
|
17
|
+
|
|
18
|
+
namespace NetworKit {
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @ingroup centrality
|
|
22
|
+
*/
|
|
23
|
+
class GroupDegree : public Algorithm {
|
|
24
|
+
|
|
25
|
+
public:
|
|
26
|
+
/**
|
|
27
|
+
* Finds the group with the highest group degree centrality according to the
|
|
28
|
+
* definition proposed in 'The centrality of groups and classes' by Everett et
|
|
29
|
+
* al. (The Journal of mathematical sociology, 1999). This is a submodular but
|
|
30
|
+
* non monotone function so the algorithm can find a solution that is at least
|
|
31
|
+
* 1/2 of the optimum. Worst-case running time is quadratic, but usually
|
|
32
|
+
* faster in real-world networks.
|
|
33
|
+
* The 'countGroupNodes' option also count the nodes inside the group in the
|
|
34
|
+
* score, this make the group degree monotone and submodular and the algorithm
|
|
35
|
+
* is guaranteed to return a (1 - 1/e)-approximation of the optimal solution.
|
|
36
|
+
*
|
|
37
|
+
* @param G A graph.
|
|
38
|
+
* @param k Size of the group of nodes
|
|
39
|
+
* @param countGroupNodes if nodes inside the group should be counted in the
|
|
40
|
+
* centrality score.
|
|
41
|
+
*/
|
|
42
|
+
GroupDegree(const Graph &G, count k = 1, bool countGroupNodes = true);
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Computes the group with maximum degree centrality of the graph passed in
|
|
46
|
+
* the constructor.
|
|
47
|
+
*/
|
|
48
|
+
void run() override;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Returns the group with maximum degree centrality.
|
|
52
|
+
*/
|
|
53
|
+
std::vector<node> groupMaxDegree();
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Returns the score of the group with maximum degree centrality (i.e. the
|
|
57
|
+
* number of nodes outside the group that can be reached in one hop from at
|
|
58
|
+
* least one node in the group).
|
|
59
|
+
*/
|
|
60
|
+
count getScore();
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Returns the score of the given group.
|
|
64
|
+
*/
|
|
65
|
+
count scoreOfGroup(const std::vector<node> &group) const;
|
|
66
|
+
|
|
67
|
+
protected:
|
|
68
|
+
const Graph &G;
|
|
69
|
+
const count k;
|
|
70
|
+
const bool countGroupNodes;
|
|
71
|
+
count n;
|
|
72
|
+
std::vector<node> group;
|
|
73
|
+
std::vector<int64_t> gain;
|
|
74
|
+
std::vector<bool> reachable;
|
|
75
|
+
std::vector<bool> affected;
|
|
76
|
+
std::vector<bool> inGroup;
|
|
77
|
+
Aux::BucketPQ queue;
|
|
78
|
+
count groupScore;
|
|
79
|
+
|
|
80
|
+
void init();
|
|
81
|
+
void updateQueue();
|
|
82
|
+
void updateGroup();
|
|
83
|
+
void computeScore();
|
|
84
|
+
void checkGroup(const std::vector<node> &group) const;
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
inline std::vector<node> GroupDegree::groupMaxDegree() {
|
|
88
|
+
assureFinished();
|
|
89
|
+
return group;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
inline count GroupDegree::getScore() {
|
|
93
|
+
assureFinished();
|
|
94
|
+
return groupScore;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
inline void GroupDegree::computeScore() {
|
|
98
|
+
groupScore = std::ranges::count(reachable, true);
|
|
99
|
+
|
|
100
|
+
if (!countGroupNodes) {
|
|
101
|
+
groupScore -= k;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
inline void GroupDegree::checkGroup(const std::vector<node> &group) const {
|
|
106
|
+
const count z = G.upperNodeIdBound();
|
|
107
|
+
std::vector<bool> check(z, false);
|
|
108
|
+
#pragma omp parallel for
|
|
109
|
+
for (omp_index i = 0; i < static_cast<omp_index>(group.size()); ++i) {
|
|
110
|
+
node u = group[i];
|
|
111
|
+
if (u >= z) {
|
|
112
|
+
std::stringstream ss;
|
|
113
|
+
ss << "Error: node " << u << " is not in the graph.\n";
|
|
114
|
+
throw std::runtime_error(ss.str());
|
|
115
|
+
}
|
|
116
|
+
if (check[u]) {
|
|
117
|
+
std::stringstream ss;
|
|
118
|
+
ss << "Error: the group contains duplicates of node " << u << ".\n";
|
|
119
|
+
throw std::runtime_error(ss.str());
|
|
120
|
+
}
|
|
121
|
+
check[u] = true;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
inline count GroupDegree::scoreOfGroup(const std::vector<node> &group) const {
|
|
126
|
+
checkGroup(group);
|
|
127
|
+
std::vector<bool> touched(n, false);
|
|
128
|
+
std::vector<bool> inGroup(n, false);
|
|
129
|
+
|
|
130
|
+
for (count i = 0; i < group.size(); ++i) {
|
|
131
|
+
inGroup[group[i]] = true;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
auto processNeighbor = [&](const node u, const node v) {
|
|
135
|
+
if (inGroup[u]) {
|
|
136
|
+
touched[v] = true;
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
G.forNodes([&](node v) {
|
|
141
|
+
if (!inGroup[v]) {
|
|
142
|
+
G.forInNeighborsOf(v, [&](node u) { processNeighbor(u, v); });
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
count result = std::ranges::count(touched, true);
|
|
146
|
+
if (countGroupNodes) {
|
|
147
|
+
result += group.size();
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
return result;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
} // namespace NetworKit
|
|
154
|
+
|
|
155
|
+
#endif // NETWORKIT_CENTRALITY_GROUP_DEGREE_HPP_
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* GroupHarmonicCloseness.hpp
|
|
3
|
+
*
|
|
4
|
+
* Created on: 15.12.2020
|
|
5
|
+
* Author: Eugenio Angriman <angrimae@hu-berlin.de>
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#ifndef NETWORKIT_CENTRALITY_GROUP_HARMONIC_CLOSENESS_HPP_
|
|
9
|
+
#define NETWORKIT_CENTRALITY_GROUP_HARMONIC_CLOSENESS_HPP_
|
|
10
|
+
|
|
11
|
+
#include <memory>
|
|
12
|
+
#include <vector>
|
|
13
|
+
|
|
14
|
+
#include <networkit/base/Algorithm.hpp>
|
|
15
|
+
#include <networkit/graph/Graph.hpp>
|
|
16
|
+
|
|
17
|
+
namespace NetworKit {
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @ingroup centrality
|
|
21
|
+
*/
|
|
22
|
+
class GroupHarmonicCloseness final : public Algorithm {
|
|
23
|
+
|
|
24
|
+
public:
|
|
25
|
+
/**
|
|
26
|
+
* Approximation algorithm for the group-harmonic maximization problem. The computed solutions
|
|
27
|
+
* have a guaranteed $\\lambda(1 - \\frac{1}{2e})$ (directed graphs) and
|
|
28
|
+
* $\\lambda(1 - \\frac{1}/{e})/2$ (undirected graphs) approximation ratio,
|
|
29
|
+
* where $\\lambda$ is the ratio
|
|
30
|
+
* between the minimal and the maximal edge weight. The algorithm is the one proposed in
|
|
31
|
+
* Angriman et al., ALENEX 2021. The worst-case running time of this approach is quadratic, but
|
|
32
|
+
* usually much faster in practice.
|
|
33
|
+
*
|
|
34
|
+
* @param G The input graph.
|
|
35
|
+
* @param k Size of the group of nodes.
|
|
36
|
+
*/
|
|
37
|
+
GroupHarmonicCloseness(const Graph &G, count k = 1);
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Runs the algorithm.
|
|
41
|
+
*/
|
|
42
|
+
void run() override;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Returns the computed group.
|
|
46
|
+
*
|
|
47
|
+
* @return The computed group.
|
|
48
|
+
*/
|
|
49
|
+
const std::vector<node> &groupMaxHarmonicCloseness() const;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Computes the group-harmonic score of the group of nodes in the given range.
|
|
53
|
+
*
|
|
54
|
+
* @param graph The input Graph.
|
|
55
|
+
* @param first,last The range that contains the vertices in the group.
|
|
56
|
+
*
|
|
57
|
+
* @returns The score of the group of nodes in the given range.
|
|
58
|
+
*/
|
|
59
|
+
template <class InputIt>
|
|
60
|
+
static double scoreOfGroup(const Graph &graph, InputIt first, InputIt last);
|
|
61
|
+
|
|
62
|
+
class GroupHarmonicClosenessInterface : public Algorithm {
|
|
63
|
+
public:
|
|
64
|
+
std::vector<node> group;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
private:
|
|
68
|
+
const bool weighted;
|
|
69
|
+
// Always one between GroupHarmonicClosenessUnweighted and GroupHarmonicClosenessWeighted, see
|
|
70
|
+
// implementation.
|
|
71
|
+
std::unique_ptr<GroupHarmonicClosenessInterface> impl;
|
|
72
|
+
|
|
73
|
+
static double scoreOfGroup(const Graph &graph, const std::vector<node> &inputGroup);
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
template <class InputIt>
|
|
77
|
+
double GroupHarmonicCloseness::scoreOfGroup(const Graph &graph, InputIt first, InputIt last) {
|
|
78
|
+
return scoreOfGroup(graph, {first, last});
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
} // namespace NetworKit
|
|
82
|
+
|
|
83
|
+
#endif // NETWORKIT_CENTRALITY_GROUP_HARMONIC_CLOSENESS_HPP_
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* HarmonicCloseness.hpp
|
|
3
|
+
*
|
|
4
|
+
* Created on: 24.02.2018
|
|
5
|
+
* Author: Eugenio Angriman
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#ifndef NETWORKIT_CENTRALITY_HARMONIC_CLOSENESS_HPP_
|
|
9
|
+
#define NETWORKIT_CENTRALITY_HARMONIC_CLOSENESS_HPP_
|
|
10
|
+
|
|
11
|
+
#include <networkit/centrality/Centrality.hpp>
|
|
12
|
+
|
|
13
|
+
namespace NetworKit {
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @ingroup centrality
|
|
17
|
+
*/
|
|
18
|
+
class HarmonicCloseness : public Centrality {
|
|
19
|
+
public:
|
|
20
|
+
/**
|
|
21
|
+
* Constructs the HarmonicCloseness class for the given Graph @a G. If
|
|
22
|
+
* the closeness scores should be normalized, then set @a normalized to
|
|
23
|
+
* <code>true</code>. The run() method takes O(nm) time, where n is the number
|
|
24
|
+
* of nodes and m is the number of edges of the graph.
|
|
25
|
+
*
|
|
26
|
+
* @param G The graph.
|
|
27
|
+
* @param normalized Set this parameter to <code>false</code> if scores should
|
|
28
|
+
* not be normalized into an interval of [0, 1]. Normalization only for
|
|
29
|
+
* unweighted graphs.
|
|
30
|
+
*
|
|
31
|
+
*/
|
|
32
|
+
HarmonicCloseness(const Graph &G, bool normalized = true);
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Computes the harmonic closeness centrality on the graph passed in
|
|
36
|
+
* constructor.
|
|
37
|
+
*/
|
|
38
|
+
void run() override;
|
|
39
|
+
|
|
40
|
+
/*
|
|
41
|
+
* Returns the maximum possible harmonic closeness centrality that a node can
|
|
42
|
+
* have in a star graph with the same amount of nodes.
|
|
43
|
+
*/
|
|
44
|
+
double maximum() override;
|
|
45
|
+
};
|
|
46
|
+
} // namespace NetworKit
|
|
47
|
+
|
|
48
|
+
#endif // NETWORKIT_CENTRALITY_HARMONIC_CLOSENESS_HPP_
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* KPathCentrality.hpp
|
|
3
|
+
*
|
|
4
|
+
* Created on: 05.10.2014
|
|
5
|
+
* Author: nemes
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#ifndef NETWORKIT_CENTRALITY_K_PATH_CENTRALITY_HPP_
|
|
9
|
+
#define NETWORKIT_CENTRALITY_K_PATH_CENTRALITY_HPP_
|
|
10
|
+
|
|
11
|
+
#include <networkit/centrality/Centrality.hpp>
|
|
12
|
+
|
|
13
|
+
namespace NetworKit {
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @ingroup centrality
|
|
17
|
+
*/
|
|
18
|
+
class KPathCentrality : public Centrality {
|
|
19
|
+
public:
|
|
20
|
+
/*
|
|
21
|
+
* the maximum length of paths
|
|
22
|
+
* default value ln(n+m)
|
|
23
|
+
*/
|
|
24
|
+
count k;
|
|
25
|
+
/*
|
|
26
|
+
* value in interval [-0.5, 0.5]
|
|
27
|
+
* tradeoff between runtime and precision
|
|
28
|
+
* -0.5: maximum precision, maximum runtime
|
|
29
|
+
* 0.5: lowest precision, lowest runtime
|
|
30
|
+
* default value 0.2
|
|
31
|
+
*/
|
|
32
|
+
double alpha;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Constructs the K-Path Centrality class for the given Graph @a G.
|
|
36
|
+
*
|
|
37
|
+
* @param G The graph.
|
|
38
|
+
* @param alpha tradeoff between precision and runtime.
|
|
39
|
+
* @param k maximum length of paths.
|
|
40
|
+
* TODO running times
|
|
41
|
+
*/
|
|
42
|
+
KPathCentrality(const Graph &G, double alpha = 0.2, count k = 0);
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Computes k-path centrality on the graph passed in constructor.
|
|
46
|
+
*/
|
|
47
|
+
void run() override;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
} /* namespace NetworKit */
|
|
51
|
+
|
|
52
|
+
#endif // NETWORKIT_CENTRALITY_K_PATH_CENTRALITY_HPP_
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* KadabraBetweenness.hpp
|
|
3
|
+
*
|
|
4
|
+
* Created on: 18.07.2018
|
|
5
|
+
* Authors: Eugenio Angriman <angrimae@hu-berlin.de>
|
|
6
|
+
* Alexander van der Grinten <avdgrinten@hu-berlin.de>
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
#ifndef NETWORKIT_CENTRALITY_KADABRA_BETWEENNESS_HPP_
|
|
10
|
+
#define NETWORKIT_CENTRALITY_KADABRA_BETWEENNESS_HPP_
|
|
11
|
+
|
|
12
|
+
#include <atomic>
|
|
13
|
+
#include <memory>
|
|
14
|
+
#include <random>
|
|
15
|
+
#include <ranges>
|
|
16
|
+
#include <vector>
|
|
17
|
+
|
|
18
|
+
#include <networkit/auxiliary/SortedList.hpp>
|
|
19
|
+
#include <networkit/base/Algorithm.hpp>
|
|
20
|
+
#include <networkit/components/ConnectedComponents.hpp>
|
|
21
|
+
#include <networkit/graph/Graph.hpp>
|
|
22
|
+
|
|
23
|
+
namespace NetworKit {
|
|
24
|
+
|
|
25
|
+
class StateFrame {
|
|
26
|
+
public:
|
|
27
|
+
StateFrame(const count size) { apx.assign(size, 0); };
|
|
28
|
+
count nPairs = 0;
|
|
29
|
+
count epoch = 0;
|
|
30
|
+
std::vector<count> apx;
|
|
31
|
+
|
|
32
|
+
void reset(count newEpoch) {
|
|
33
|
+
std::ranges::fill(apx, 0);
|
|
34
|
+
nPairs = 0;
|
|
35
|
+
epoch = newEpoch;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
class Status {
|
|
40
|
+
public:
|
|
41
|
+
Status(count k);
|
|
42
|
+
const count k;
|
|
43
|
+
std::vector<node> top;
|
|
44
|
+
std::vector<double> approxTop;
|
|
45
|
+
std::vector<bool> finished;
|
|
46
|
+
std::vector<double> bet;
|
|
47
|
+
std::vector<double> errL;
|
|
48
|
+
std::vector<double> errU;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
class SpSampler {
|
|
52
|
+
private:
|
|
53
|
+
const Graph &G;
|
|
54
|
+
const ConnectedComponents &cc;
|
|
55
|
+
|
|
56
|
+
public:
|
|
57
|
+
SpSampler(const Graph &G, const ConnectedComponents &cc);
|
|
58
|
+
void randomPath(StateFrame *curFrame);
|
|
59
|
+
StateFrame *frame;
|
|
60
|
+
std::mt19937_64 rng;
|
|
61
|
+
std::uniform_int_distribution<node> distr;
|
|
62
|
+
|
|
63
|
+
private:
|
|
64
|
+
std::vector<uint8_t> timestamp;
|
|
65
|
+
uint8_t globalTS = 1;
|
|
66
|
+
static constexpr uint8_t stampMask = 0x7F;
|
|
67
|
+
static constexpr uint8_t ballMask = 0x80;
|
|
68
|
+
std::vector<count> dist;
|
|
69
|
+
std::vector<count> nPaths;
|
|
70
|
+
std::vector<node> q;
|
|
71
|
+
std::vector<std::pair<node, node>> spEdges;
|
|
72
|
+
|
|
73
|
+
inline node randomNode() const;
|
|
74
|
+
void backtrackPath(node source, node target, node start);
|
|
75
|
+
void resetSampler(count endQ);
|
|
76
|
+
count getDegree(const Graph &graph, node y, bool useDegreeIn);
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* @ingroup centrality
|
|
81
|
+
*/
|
|
82
|
+
class KadabraBetweenness : public Algorithm {
|
|
83
|
+
public:
|
|
84
|
+
// See EUROPAR'19 paper for the selection of these parameters.
|
|
85
|
+
unsigned int baseItersPerStep = 1000;
|
|
86
|
+
double itersPerStepExp = 1.33;
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Approximation of the betweenness centrality and computation of the top-k
|
|
90
|
+
* nodes with highest betweenness centrality according to the algorithm
|
|
91
|
+
* described in Borassi M., and Natale E. (2016): KADABRA is an ADaptive
|
|
92
|
+
* Algorithm for Betweenness via Random Approximation.
|
|
93
|
+
* Parallel implementation by Van der Grinten A., Angriman E., and
|
|
94
|
+
* Meyerhenke H.: Parallel Adaptive Sampling with almost no
|
|
95
|
+
* Synchronization, Euro-Par 2019.
|
|
96
|
+
* https://link.springer.com/chapter/10.1007/978-3-030-29400-7_31
|
|
97
|
+
* ArXiv pre-print: https://arxiv.org/abs/1903.09422.
|
|
98
|
+
*
|
|
99
|
+
* If k = 0 the algorithm approximates the betweenness centrality of all
|
|
100
|
+
* vertices of the graph so that the scores are within an additive error @a
|
|
101
|
+
* err with probability at least (1 - @a delta). Otherwise, the algorithm
|
|
102
|
+
* computes the exact ranking of the top-k nodes with highest betweenness
|
|
103
|
+
* centrality. The algorithm relies on an adaptive random sampling technique
|
|
104
|
+
* of shortest paths and the number of samples in the worst case is w =
|
|
105
|
+
* ((log(D - 2) + log(2/delta))/err^2 samples, where D is the diameter of
|
|
106
|
+
* the graph. Thus, the worst-case performance is O(w * (|E| + |V|)), but
|
|
107
|
+
* performs better in practice.
|
|
108
|
+
*
|
|
109
|
+
* @param G The graph
|
|
110
|
+
* @param err Maximum additive error guaranteed when approximating the
|
|
111
|
+
* betweenness centrality of all nodes.
|
|
112
|
+
* @param delta probability that the values of the betweenness centrality
|
|
113
|
+
* are within the error guarantee.
|
|
114
|
+
* @param deterministic If true, the algorithm guarantees that the results of two different
|
|
115
|
+
* executions is the same for a fixed random seed, regardless of the number of threads. Note
|
|
116
|
+
* that this guarantee leads to increased computational and memory complexity. Default: false.
|
|
117
|
+
* @param k the number of top-k nodes to be computed. Set it to zero to
|
|
118
|
+
* approximate the betweenness centrality of all the nodes.
|
|
119
|
+
* @param unionSample algorithm parameter that is automatically chosen.
|
|
120
|
+
* @param startFactor algorithm parameter that is automatically chosen.
|
|
121
|
+
*/
|
|
122
|
+
KadabraBetweenness(const Graph &G, double err = 0.01, double delta = 0.1,
|
|
123
|
+
bool deterministic = false, count k = 0, count unionSample = 0,
|
|
124
|
+
count startFactor = 100);
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Executes the Kadabra algorithm.
|
|
128
|
+
*/
|
|
129
|
+
void run() override;
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* @return The ranking of the nodes according to their approximated
|
|
133
|
+
* betweenness centrality.
|
|
134
|
+
*/
|
|
135
|
+
std::vector<std::pair<node, double>> ranking() const;
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* @return Nodes of the graph sorted by their approximated betweenness
|
|
139
|
+
* centrality.
|
|
140
|
+
*/
|
|
141
|
+
std::vector<node> topkNodesList() const {
|
|
142
|
+
assureFinished();
|
|
143
|
+
return topkNodes;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* @return Sorted list of approximated betweenness centrality scores.
|
|
148
|
+
*/
|
|
149
|
+
std::vector<double> topkScoresList() const {
|
|
150
|
+
assureFinished();
|
|
151
|
+
return topkScores;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* @return Approximated betweenness centrality score of all the nodes of the
|
|
156
|
+
* graph.
|
|
157
|
+
*/
|
|
158
|
+
std::vector<double> scores() const {
|
|
159
|
+
assureFinished();
|
|
160
|
+
return approxSum;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* @return Total number of samples.
|
|
165
|
+
*/
|
|
166
|
+
count getNumberOfIterations() const {
|
|
167
|
+
assureFinished();
|
|
168
|
+
return nPairs;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* @return Upper bound to the number of samples.
|
|
173
|
+
*/
|
|
174
|
+
double getOmega() const {
|
|
175
|
+
assureFinished();
|
|
176
|
+
return omega;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
count maxAllocatedFrames() const {
|
|
180
|
+
assureFinished();
|
|
181
|
+
return *std::ranges::max_element(maxFrames);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
protected:
|
|
185
|
+
const Graph &G;
|
|
186
|
+
const double delta, err;
|
|
187
|
+
const bool deterministic;
|
|
188
|
+
const count k, startFactor;
|
|
189
|
+
count unionSample;
|
|
190
|
+
count nPairs;
|
|
191
|
+
const bool absolute;
|
|
192
|
+
double deltaLMinGuess, deltaUMinGuess, omega;
|
|
193
|
+
std::atomic<int32_t> epochToRead;
|
|
194
|
+
int32_t epochRead;
|
|
195
|
+
count seed0, seed1;
|
|
196
|
+
std::vector<count> maxFrames;
|
|
197
|
+
|
|
198
|
+
std::vector<node> topkNodes;
|
|
199
|
+
std::vector<double> topkScores;
|
|
200
|
+
std::vector<std::pair<node, double>> rankingVector;
|
|
201
|
+
std::vector<std::atomic<StateFrame *>> epochFinished;
|
|
202
|
+
std::vector<SpSampler> samplerVec;
|
|
203
|
+
std::unique_ptr<Aux::SortedList> top;
|
|
204
|
+
std::unique_ptr<ConnectedComponents> cc;
|
|
205
|
+
|
|
206
|
+
std::vector<double> approxSum;
|
|
207
|
+
std::vector<double> deltaLGuess;
|
|
208
|
+
std::vector<double> deltaUGuess;
|
|
209
|
+
|
|
210
|
+
std::atomic<bool> stop;
|
|
211
|
+
|
|
212
|
+
void init();
|
|
213
|
+
void computeDeltaGuess();
|
|
214
|
+
void computeBetErr(Status *status, std::vector<double> &bet, std::vector<double> &errL,
|
|
215
|
+
std::vector<double> &errU) const;
|
|
216
|
+
bool computeFinished(Status *status) const;
|
|
217
|
+
void getStatus(Status *status, bool parallel = false) const;
|
|
218
|
+
void computeApproxParallel(const std::vector<StateFrame> &firstFrames);
|
|
219
|
+
double computeF(double btilde, count iterNum, double deltaL) const;
|
|
220
|
+
double computeG(double btilde, count iterNum, double deltaU) const;
|
|
221
|
+
void fillResult();
|
|
222
|
+
void checkConvergence(Status &status);
|
|
223
|
+
|
|
224
|
+
void fillPQ() {
|
|
225
|
+
for (count i = 0; i < G.upperNodeIdBound(); ++i) {
|
|
226
|
+
top->insert(i, approxSum[i]);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
inline std::vector<std::pair<node, double>> KadabraBetweenness::ranking() const {
|
|
232
|
+
assureFinished();
|
|
233
|
+
std::vector<std::pair<node, double>> result(topkNodes.size());
|
|
234
|
+
#pragma omp parallel for
|
|
235
|
+
for (omp_index i = 0; i < static_cast<omp_index>(result.size()); ++i) {
|
|
236
|
+
result[i] = std::make_pair(topkNodes[i], topkScores[i]);
|
|
237
|
+
}
|
|
238
|
+
return result;
|
|
239
|
+
}
|
|
240
|
+
} // namespace NetworKit
|
|
241
|
+
|
|
242
|
+
#endif // NETWORKIT_CENTRALITY_KADABRA_BETWEENNESS_HPP_
|