@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,460 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Lamg.hpp
|
|
3
|
+
*
|
|
4
|
+
* Created on: Oct 20, 2015
|
|
5
|
+
* Author: Michael Wegner (michael.wegner@student.kit.edu)
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#ifndef NETWORKIT_NUMERICS_LAMG_LAMG_HPP_
|
|
9
|
+
#define NETWORKIT_NUMERICS_LAMG_LAMG_HPP_
|
|
10
|
+
|
|
11
|
+
#include <omp.h>
|
|
12
|
+
#include <vector>
|
|
13
|
+
|
|
14
|
+
#include <networkit/algebraic/MatrixTools.hpp>
|
|
15
|
+
#include <networkit/components/ParallelConnectedComponents.hpp>
|
|
16
|
+
#include <networkit/numerics/GaussSeidelRelaxation.hpp>
|
|
17
|
+
#include <networkit/numerics/LAMG/LevelHierarchy.hpp>
|
|
18
|
+
#include <networkit/numerics/LAMG/MultiLevelSetup.hpp>
|
|
19
|
+
#include <networkit/numerics/LAMG/SolverLamg.hpp>
|
|
20
|
+
#include <networkit/numerics/LinearSolver.hpp>
|
|
21
|
+
|
|
22
|
+
namespace NetworKit {
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* @ingroup numerics
|
|
26
|
+
* Represents the interface to the Lean Algebraic Multigrid (LAMG) graph Laplacian linear solver
|
|
27
|
+
* by Oren E. Livne and Achi Brandt.
|
|
28
|
+
* @see Livne, Oren E., and Achi Brandt. "Lean algebraic multigrid (LAMG): Fast graph Laplacian
|
|
29
|
+
* linear solver." SIAM Journal on Scientific Computing 34.4 (2012): B499-B522.
|
|
30
|
+
*/
|
|
31
|
+
template <class Matrix>
|
|
32
|
+
class Lamg : public LinearSolver<Matrix> {
|
|
33
|
+
private:
|
|
34
|
+
// for a graph/matrix with K components and T threads:
|
|
35
|
+
|
|
36
|
+
bool validSetup;
|
|
37
|
+
const GaussSeidelRelaxation<Matrix> smoother;
|
|
38
|
+
const MultiLevelSetup<Matrix> lamgSetup;
|
|
39
|
+
Matrix laplacianMatrix;
|
|
40
|
+
count numComponents;
|
|
41
|
+
|
|
42
|
+
// maps a node id from global index (in L) to its node id in the component (block of L) such
|
|
43
|
+
// that in each component, nodes are indexed from 0 to size(component)-1. Size n
|
|
44
|
+
// not used in case there is only a single component
|
|
45
|
+
std::vector<index> graph2Components;
|
|
46
|
+
|
|
47
|
+
// for each component, a vector of ids that are in this component. Size K
|
|
48
|
+
std::vector<std::vector<index>> components;
|
|
49
|
+
// one LevelHierarchy for each component. Size K
|
|
50
|
+
std::vector<LevelHierarchy<Matrix>> compHierarchies;
|
|
51
|
+
|
|
52
|
+
// these are internal data structures used in the solve function
|
|
53
|
+
// one object for each component and each thread - access: [thread][component]
|
|
54
|
+
mutable std::vector<std::vector<SolverLamg<Matrix>>> compSolvers;
|
|
55
|
+
// one object for each component and each thread - access: [thread][component]
|
|
56
|
+
mutable std::vector<std::vector<LAMGSolverStatus>> compStati;
|
|
57
|
+
|
|
58
|
+
// one object for each component and each thread - access: [thread][component]
|
|
59
|
+
mutable std::vector<std::vector<Vector>> initialVectors;
|
|
60
|
+
// one object for each component and each thread - access: [thread][component]
|
|
61
|
+
mutable std::vector<std::vector<Vector>> rhsVectors;
|
|
62
|
+
|
|
63
|
+
// initializing step 1
|
|
64
|
+
// initializes numComponents, graph2components, components, compHierarchies
|
|
65
|
+
// precondition: laplacianMatrix is set correctly
|
|
66
|
+
void initializeOneComponent();
|
|
67
|
+
void initializeMultipleComponents(const Graph &G, const ComponentDecomposition &decomp);
|
|
68
|
+
|
|
69
|
+
// initializing step 2
|
|
70
|
+
// initializes compSolvers, compStati, initialVectors, rhsVectors
|
|
71
|
+
// Precondition: the following members are set correctly:
|
|
72
|
+
// numComponents, components, compHierarchies
|
|
73
|
+
void initializeInternalDatastructures() const;
|
|
74
|
+
|
|
75
|
+
// solves on the given thread
|
|
76
|
+
SolverStatus solveThread(const Vector &rhs, Vector &result, count maxConvergenceTime,
|
|
77
|
+
count maxIterations, index threadId) const;
|
|
78
|
+
|
|
79
|
+
public:
|
|
80
|
+
/**
|
|
81
|
+
* Construct a solver with the given @a tolerance. The relative residual ||Ax-b||/||b|| will be
|
|
82
|
+
* less than or equal to
|
|
83
|
+
* @a tolerance after the solver finished.
|
|
84
|
+
* @param tolerance
|
|
85
|
+
*/
|
|
86
|
+
Lamg(const double tolerance = 1e-6)
|
|
87
|
+
: LinearSolver<Matrix>(tolerance), validSetup(false), lamgSetup(smoother),
|
|
88
|
+
numComponents(0) {}
|
|
89
|
+
/** Default destructor */
|
|
90
|
+
~Lamg() override = default;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Compute the multigrid hierarchy for the given Laplacian matrix @a laplacianMatrix.
|
|
94
|
+
* @param laplacianMatrix
|
|
95
|
+
* @note This method also works for disconnected graphs. If you know that the graph is
|
|
96
|
+
* connected, it is faster to use @ref setupConnected instead.
|
|
97
|
+
*/
|
|
98
|
+
void setup(const Matrix &laplacianMatrix) override;
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Compute the multigrid hierarchy for the Laplacian matrix that
|
|
102
|
+
* corresponds to the graph @a G.
|
|
103
|
+
* @param laplacianMatrix
|
|
104
|
+
* @param G Graph that corresponds to the @a laplacianMatrix
|
|
105
|
+
*/
|
|
106
|
+
void setup(const Graph &graph) override;
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Compute the multigrid hierarchy for the given Laplacian matrix @a laplacianMatrix that
|
|
110
|
+
* corresponds to the graph @a G.
|
|
111
|
+
* @param laplacianMatrix
|
|
112
|
+
* @param G Graph that corresponds to the @a laplacianMatrix
|
|
113
|
+
* @note This setup method allows you to skip some computation required for setting up LAMG. You
|
|
114
|
+
* can provide your matrix and graph, which are required for setting up LAMG, via this method to
|
|
115
|
+
* prevent duplicate computation. Note that the output is undefined if the two parameters do not
|
|
116
|
+
* correspond the the same graph.
|
|
117
|
+
*/
|
|
118
|
+
void setup(const Matrix &laplacianMatrix, const Graph &G);
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Compute the multigrid hierarchy for the Laplacian matrix that
|
|
122
|
+
* corresponds to the graph @a G using the existing component decomposition @a decomp.
|
|
123
|
+
* @param G Graph that corresponds to the @a laplacianMatrix
|
|
124
|
+
* @param decomp ComponentDecomposition for the graph @a G
|
|
125
|
+
* @note This setup method allows you to skip some computation required for setting up LAMG. You
|
|
126
|
+
* can provide your graph and decomposition, which are required for setting up LAMG, via this
|
|
127
|
+
* method to prevent duplicate computation. Note that the output is undefined if the two
|
|
128
|
+
* parameters do not correspond the the same graph.
|
|
129
|
+
*/
|
|
130
|
+
void setup(const Graph &G, const ComponentDecomposition &decomp);
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Compute the multigrid hierarchy for the given Laplacian matrix @a laplacianMatrix that
|
|
134
|
+
* corresponds to the graph @a G using the existing component decomposition @a decomp.
|
|
135
|
+
* @param laplacianMatrix
|
|
136
|
+
* @param G Graph that corresponds to the @a laplacianMatrix
|
|
137
|
+
* @param decomp ComponentDecomposition for the graph @a G
|
|
138
|
+
* @note This setup method allows you to skip some computation required for setting up LAMG. You
|
|
139
|
+
* can provide your graph and decomposition, which are required for setting up LAMG, via
|
|
140
|
+
* this method to prevent duplicate computation. Note that the output is undefined if the three
|
|
141
|
+
* parameters do not correspond the the same graph.
|
|
142
|
+
*/
|
|
143
|
+
void setup(const Matrix &laplacianMatrix, const Graph &G, const ComponentDecomposition &decomp);
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Compute the multigrid hierarchy for the given Laplacian matrix @a laplacianMatrix.
|
|
147
|
+
* @param laplacianMatrix
|
|
148
|
+
* @note The graph has to be connected for this method to work. Otherwise the output is
|
|
149
|
+
* undefined.
|
|
150
|
+
*/
|
|
151
|
+
void setupConnected(const Matrix &laplacianMatrix) override;
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Computes the @a result for the matrix currently setup and the right-hand side @a rhs.
|
|
155
|
+
* The maximum spent time can be specified by @a maxConvergenceTime and the maximum number of
|
|
156
|
+
* iterations can be set by @a maxIterations.
|
|
157
|
+
* @param rhs
|
|
158
|
+
* @param result
|
|
159
|
+
* @param maxConvergenceTime
|
|
160
|
+
* @param maxIterations
|
|
161
|
+
* @return A @ref SolverStatus object which provides some statistics like the final absolute
|
|
162
|
+
* residual.
|
|
163
|
+
*/
|
|
164
|
+
SolverStatus solve(const Vector &rhs, Vector &result, count maxConvergenceTime = 5 * 60 * 1000,
|
|
165
|
+
count maxIterations = std::numeric_limits<count>::max()) const override;
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Compute the @a results for the matrix currently setup and the right-hand sides @a rhs.
|
|
169
|
+
* The maximum spent time for each system can be specified by @a maxConvergenceTime and the
|
|
170
|
+
* maximum number of iterations can be set by @a maxIterations.
|
|
171
|
+
* @param rhs
|
|
172
|
+
* @param results
|
|
173
|
+
* @param maxConvergenceTime
|
|
174
|
+
* @param maxIterations
|
|
175
|
+
*/
|
|
176
|
+
std::vector<SolverStatus>
|
|
177
|
+
parallelSolve(const std::vector<Vector> &rhs, std::vector<Vector> &results,
|
|
178
|
+
count maxConvergenceTime = 5 * 60 * 1000,
|
|
179
|
+
count maxIterations = std::numeric_limits<count>::max()) const override;
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Abstract parallel solve function that computes and processes results using @a resultProcessor
|
|
183
|
+
* for the matrix currently setup and the right-hand sides (size of @a rhsSize) provided by @a
|
|
184
|
+
* rhsLoader. The maximum spent time for each system can be specified by @a maxConvergenceTime
|
|
185
|
+
* and the maximum number of iterations can be set by @a maxIterations.
|
|
186
|
+
* @param rhsLoader
|
|
187
|
+
* @param resultProcessor
|
|
188
|
+
* @param rhsSize
|
|
189
|
+
* @param maxConvergenceTime
|
|
190
|
+
* @param maxIterations
|
|
191
|
+
* @note If the solver does not support parallelism during solves, this function falls back to
|
|
192
|
+
* solving the systems sequentially.
|
|
193
|
+
* @note The @a rhsLoader and @a resultProcessor are called from multiple threads in parallel.
|
|
194
|
+
*/
|
|
195
|
+
template <typename RHSLoader, typename ResultProcessor>
|
|
196
|
+
void parallelSolve(const RHSLoader &rhsLoader, const ResultProcessor &resultProcessor,
|
|
197
|
+
std::pair<count, count> rhsSize, count maxConvergenceTime = 5 * 60 * 1000,
|
|
198
|
+
count maxIterations = std::numeric_limits<count>::max()) const {
|
|
199
|
+
|
|
200
|
+
const count n = rhsSize.first;
|
|
201
|
+
const count m = rhsSize.second;
|
|
202
|
+
const index numThreads = omp_get_max_threads();
|
|
203
|
+
|
|
204
|
+
std::vector<Vector> results(numThreads, Vector(m));
|
|
205
|
+
std::vector<Vector> RHSs(numThreads, Vector(m));
|
|
206
|
+
|
|
207
|
+
#pragma omp parallel for
|
|
208
|
+
for (omp_index i = 0; i < static_cast<omp_index>(n); ++i) {
|
|
209
|
+
const index threadId = omp_get_thread_num();
|
|
210
|
+
|
|
211
|
+
const Vector &rhs = rhsLoader(i, RHSs[threadId]);
|
|
212
|
+
Vector &result = results[threadId];
|
|
213
|
+
|
|
214
|
+
solveThread(rhs, result, maxConvergenceTime, maxIterations, threadId);
|
|
215
|
+
resultProcessor(i, result);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
template <class Matrix>
|
|
221
|
+
void Lamg<Matrix>::initializeInternalDatastructures() const {
|
|
222
|
+
// preconditions:
|
|
223
|
+
// - numComponents is correct
|
|
224
|
+
// - components vector is correct
|
|
225
|
+
// - compHierarchies is setup
|
|
226
|
+
|
|
227
|
+
// first, resize outer vectors
|
|
228
|
+
// then iterate elements and initialize them correctly
|
|
229
|
+
|
|
230
|
+
initialVectors.resize(omp_get_max_threads());
|
|
231
|
+
rhsVectors.resize(omp_get_max_threads());
|
|
232
|
+
compSolvers.resize(omp_get_max_threads());
|
|
233
|
+
compStati.resize(omp_get_max_threads());
|
|
234
|
+
|
|
235
|
+
#pragma omp parallel for
|
|
236
|
+
for (int thread = 0; thread < omp_get_max_threads(); ++thread) {
|
|
237
|
+
// resize inner vectors
|
|
238
|
+
initialVectors[thread].resize(numComponents);
|
|
239
|
+
rhsVectors[thread].resize(numComponents);
|
|
240
|
+
compStati[thread].resize(numComponents);
|
|
241
|
+
|
|
242
|
+
// there is no default constructor for SolverLamg - reserve memory and construct later
|
|
243
|
+
compSolvers[thread].clear();
|
|
244
|
+
compSolvers[thread].reserve(numComponents);
|
|
245
|
+
|
|
246
|
+
// iterate components
|
|
247
|
+
for (index compIdx = 0; compIdx < numComponents; ++compIdx) {
|
|
248
|
+
auto &component = components[compIdx];
|
|
249
|
+
|
|
250
|
+
// Vector objects do not have a resize method - create new objects instead
|
|
251
|
+
initialVectors[thread][compIdx] = Vector(component.size());
|
|
252
|
+
rhsVectors[thread][compIdx] = Vector(component.size());
|
|
253
|
+
|
|
254
|
+
compSolvers[thread].emplace_back(compHierarchies[compIdx], smoother);
|
|
255
|
+
|
|
256
|
+
LAMGSolverStatus status;
|
|
257
|
+
status.desiredResidualReduction =
|
|
258
|
+
this->tolerance * component.size() / laplacianMatrix.numberOfColumns();
|
|
259
|
+
compStati[thread][compIdx] = status;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
template <class Matrix>
|
|
265
|
+
void Lamg<Matrix>::initializeOneComponent() {
|
|
266
|
+
numComponents = 1;
|
|
267
|
+
components.resize(1);
|
|
268
|
+
components[0].resize(laplacianMatrix.numberOfColumns());
|
|
269
|
+
std::iota(components[0].begin(), components[0].end(), 0);
|
|
270
|
+
graph2Components.clear();
|
|
271
|
+
compHierarchies = std::vector<LevelHierarchy<Matrix>>(1);
|
|
272
|
+
lamgSetup.setup(laplacianMatrix, compHierarchies[0]);
|
|
273
|
+
initializeInternalDatastructures();
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
template <class Matrix>
|
|
277
|
+
void Lamg<Matrix>::initializeMultipleComponents(const Graph &G,
|
|
278
|
+
const ComponentDecomposition &decomp) {
|
|
279
|
+
|
|
280
|
+
numComponents = decomp.numberOfComponents();
|
|
281
|
+
|
|
282
|
+
components.resize(numComponents);
|
|
283
|
+
graph2Components.resize(G.numberOfNodes());
|
|
284
|
+
|
|
285
|
+
compHierarchies.resize(numComponents);
|
|
286
|
+
|
|
287
|
+
index compIdx = 0;
|
|
288
|
+
for (const auto &partitionComponent : decomp.getPartition().getSubsets()) {
|
|
289
|
+
components[compIdx].resize(partitionComponent.size());
|
|
290
|
+
std::copy(partitionComponent.begin(), partitionComponent.end(),
|
|
291
|
+
components[compIdx].begin());
|
|
292
|
+
|
|
293
|
+
auto &component = components[compIdx];
|
|
294
|
+
|
|
295
|
+
index idx = 0;
|
|
296
|
+
for (node u : component) {
|
|
297
|
+
graph2Components[u] = idx;
|
|
298
|
+
idx++;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
// it is not clear to me if LevelHierarchy can be reused for different matrices. Hence,
|
|
302
|
+
// construct new objects
|
|
303
|
+
compHierarchies[compIdx] = LevelHierarchy<Matrix>();
|
|
304
|
+
|
|
305
|
+
// construct block matrix via neighborsOf in G
|
|
306
|
+
std::vector<Triplet> triplets;
|
|
307
|
+
for (node u : component) {
|
|
308
|
+
G.forNeighborsOf(u, [&](node v, edgeweight w) {
|
|
309
|
+
triplets.push_back({graph2Components[u], graph2Components[v], w});
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
Matrix compMatrix(component.size(), component.size(), triplets);
|
|
313
|
+
lamgSetup.setup(compMatrix, compHierarchies[compIdx]);
|
|
314
|
+
|
|
315
|
+
++compIdx;
|
|
316
|
+
}
|
|
317
|
+
initializeInternalDatastructures();
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
template <class Matrix>
|
|
321
|
+
void Lamg<Matrix>::setupConnected(const Matrix &laplacianMatrix) {
|
|
322
|
+
assert([&]() {
|
|
323
|
+
auto G = MatrixTools::matrixToGraph(laplacianMatrix);
|
|
324
|
+
ParallelConnectedComponents cc(G);
|
|
325
|
+
cc.run();
|
|
326
|
+
return cc.numberOfComponents() == 1;
|
|
327
|
+
}());
|
|
328
|
+
this->laplacianMatrix = laplacianMatrix;
|
|
329
|
+
initializeOneComponent();
|
|
330
|
+
validSetup = true;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
template <class Matrix>
|
|
334
|
+
void Lamg<Matrix>::setup(const Matrix &laplacianMatrix, const Graph &G,
|
|
335
|
+
const ComponentDecomposition &decomp) {
|
|
336
|
+
this->laplacianMatrix = laplacianMatrix;
|
|
337
|
+
numComponents = decomp.numberOfComponents();
|
|
338
|
+
if (numComponents == 1) {
|
|
339
|
+
initializeOneComponent();
|
|
340
|
+
} else {
|
|
341
|
+
initializeMultipleComponents(G, decomp);
|
|
342
|
+
}
|
|
343
|
+
validSetup = true;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
template <class Matrix>
|
|
347
|
+
void Lamg<Matrix>::setup(const Graph &G, const ComponentDecomposition &decomp) {
|
|
348
|
+
setup(Matrix::laplacianMatrix(G), G, decomp);
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
template <class Matrix>
|
|
352
|
+
void Lamg<Matrix>::setup(const Graph &G) {
|
|
353
|
+
setup(Matrix::laplacianMatrix(G), G);
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
template <class Matrix>
|
|
357
|
+
void Lamg<Matrix>::setup(const Matrix &laplacianMatrix, const Graph &G) {
|
|
358
|
+
ParallelConnectedComponents con(G, false);
|
|
359
|
+
con.run();
|
|
360
|
+
setup(laplacianMatrix, G, con);
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
template <class Matrix>
|
|
364
|
+
void Lamg<Matrix>::setup(const Matrix &laplacianMatrix) {
|
|
365
|
+
auto G = MatrixTools::matrixToGraph(laplacianMatrix);
|
|
366
|
+
setup(laplacianMatrix, G);
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
template <class Matrix>
|
|
370
|
+
SolverStatus Lamg<Matrix>::solveThread(const Vector &rhs, Vector &result, count maxConvergenceTime,
|
|
371
|
+
count maxIterations, const index threadId) const {
|
|
372
|
+
if (!validSetup)
|
|
373
|
+
throw std::runtime_error("LAMG is not properly setup!");
|
|
374
|
+
if (result.getDimension() != laplacianMatrix.numberOfColumns()
|
|
375
|
+
|| rhs.getDimension() != laplacianMatrix.numberOfRows()) {
|
|
376
|
+
throw std::runtime_error("Wrong matrix dimensions for given vectors.");
|
|
377
|
+
}
|
|
378
|
+
SolverStatus status;
|
|
379
|
+
|
|
380
|
+
if (numComponents == 1) {
|
|
381
|
+
LAMGSolverStatus &stat = compStati[threadId][0];
|
|
382
|
+
stat.desiredResidualReduction =
|
|
383
|
+
this->tolerance * rhs.length() / (laplacianMatrix * result - rhs).length();
|
|
384
|
+
stat.maxIters = maxIterations;
|
|
385
|
+
stat.maxConvergenceTime = maxConvergenceTime;
|
|
386
|
+
compSolvers[threadId][0].solve(result, rhs, stat);
|
|
387
|
+
|
|
388
|
+
status.residual = stat.residual;
|
|
389
|
+
status.numIters = stat.numIters;
|
|
390
|
+
status.converged = stat.converged;
|
|
391
|
+
} else {
|
|
392
|
+
// solve on every component
|
|
393
|
+
count maxIters = 0;
|
|
394
|
+
for (index componentId = 0; componentId < components.size(); ++componentId) {
|
|
395
|
+
LAMGSolverStatus &stat = compStati[threadId][componentId];
|
|
396
|
+
Vector &componentRhs = rhsVectors[threadId][componentId];
|
|
397
|
+
Vector &componentResult = initialVectors[threadId][componentId];
|
|
398
|
+
|
|
399
|
+
// setup component vectors
|
|
400
|
+
for (auto element : components[componentId]) {
|
|
401
|
+
componentResult[graph2Components[element]] = result[element];
|
|
402
|
+
componentRhs[graph2Components[element]] = rhs[element];
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
// setup solver status
|
|
406
|
+
double resReduction =
|
|
407
|
+
this->tolerance * componentRhs.length()
|
|
408
|
+
/ (compHierarchies[componentId].at(0).getLaplacian() * componentResult
|
|
409
|
+
- componentRhs)
|
|
410
|
+
.length();
|
|
411
|
+
stat.desiredResidualReduction =
|
|
412
|
+
resReduction * components[componentId].size() / laplacianMatrix.numberOfRows();
|
|
413
|
+
stat.maxIters = maxIterations;
|
|
414
|
+
stat.maxConvergenceTime = maxConvergenceTime;
|
|
415
|
+
|
|
416
|
+
compSolvers[threadId][componentId].solve(componentResult, componentRhs, stat);
|
|
417
|
+
// write solution back to result
|
|
418
|
+
for (auto element : components[componentId]) {
|
|
419
|
+
result[element] = componentResult[graph2Components[element]];
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
maxIters = std::max(maxIters, stat.numIters);
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
status.residual = (rhs - laplacianMatrix * result).length();
|
|
426
|
+
status.converged = status.residual <= this->tolerance;
|
|
427
|
+
status.numIters = maxIters;
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
return status;
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
template <class Matrix>
|
|
434
|
+
SolverStatus Lamg<Matrix>::solve(const Vector &rhs, Vector &result, count maxConvergenceTime,
|
|
435
|
+
count maxIterations) const {
|
|
436
|
+
return solveThread(rhs, result, maxConvergenceTime, maxIterations, 0);
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
template <class Matrix>
|
|
440
|
+
std::vector<SolverStatus>
|
|
441
|
+
Lamg<Matrix>::parallelSolve(const std::vector<Vector> &rhs, std::vector<Vector> &results,
|
|
442
|
+
count maxConvergenceTime, count maxIterations) const {
|
|
443
|
+
std::vector<SolverStatus> stati(rhs.size());
|
|
444
|
+
|
|
445
|
+
#pragma omp parallel for
|
|
446
|
+
for (omp_index i = 0; i < static_cast<omp_index>(rhs.size()); ++i) {
|
|
447
|
+
const index threadId = omp_get_thread_num();
|
|
448
|
+
stati[i] = solveThread(rhs[i], results[i], maxConvergenceTime, maxIterations, threadId);
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
return stati;
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
extern template class Lamg<CSRMatrix>;
|
|
455
|
+
extern template class Lamg<DenseMatrix>;
|
|
456
|
+
extern template class Lamg<DynamicMatrix>;
|
|
457
|
+
|
|
458
|
+
} /* namespace NetworKit */
|
|
459
|
+
|
|
460
|
+
#endif // NETWORKIT_NUMERICS_LAMG_LAMG_HPP_
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* EliminationStage.hpp
|
|
3
|
+
*
|
|
4
|
+
* Created on: 09.01.2015
|
|
5
|
+
* Author: Michael
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#ifndef NETWORKIT_NUMERICS_LAMG_LEVEL_ELIMINATION_STAGE_HPP_
|
|
9
|
+
#define NETWORKIT_NUMERICS_LAMG_LEVEL_ELIMINATION_STAGE_HPP_
|
|
10
|
+
|
|
11
|
+
#include <networkit/algebraic/Vector.hpp>
|
|
12
|
+
|
|
13
|
+
namespace NetworKit {
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @ingroup numerics
|
|
17
|
+
*/
|
|
18
|
+
template <class Matrix>
|
|
19
|
+
class EliminationStage {
|
|
20
|
+
private:
|
|
21
|
+
Matrix P; // interpolation matrix
|
|
22
|
+
Matrix R;
|
|
23
|
+
Vector q; // coarse result correction vector
|
|
24
|
+
std::vector<index> fSet;
|
|
25
|
+
std::vector<index> cSet;
|
|
26
|
+
|
|
27
|
+
public:
|
|
28
|
+
EliminationStage(const Matrix &P, const Vector &q, const std::vector<index> &fSet,
|
|
29
|
+
const std::vector<index> &cSet)
|
|
30
|
+
: P(P), R(P.transpose()), q(q), fSet(fSet), cSet(cSet) {}
|
|
31
|
+
|
|
32
|
+
inline const Matrix &getP() const { return P; }
|
|
33
|
+
|
|
34
|
+
inline const Matrix &getR() const { return R; }
|
|
35
|
+
|
|
36
|
+
inline const Vector &getQ() const { return q; }
|
|
37
|
+
|
|
38
|
+
inline const std::vector<index> &getFSet() const { return fSet; }
|
|
39
|
+
|
|
40
|
+
inline const std::vector<index> &getCSet() const { return cSet; }
|
|
41
|
+
|
|
42
|
+
inline count getN() const { return fSet.size() + cSet.size(); }
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
} /* namespace NetworKit */
|
|
46
|
+
|
|
47
|
+
#endif // NETWORKIT_NUMERICS_LAMG_LEVEL_ELIMINATION_STAGE_HPP_
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Level.hpp
|
|
3
|
+
*
|
|
4
|
+
* Created on: 09.01.2015
|
|
5
|
+
* Author: Michael
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#ifndef NETWORKIT_NUMERICS_LAMG_LEVEL_LEVEL_HPP_
|
|
9
|
+
#define NETWORKIT_NUMERICS_LAMG_LEVEL_LEVEL_HPP_
|
|
10
|
+
|
|
11
|
+
#include <networkit/algebraic/CSRMatrix.hpp>
|
|
12
|
+
|
|
13
|
+
namespace NetworKit {
|
|
14
|
+
|
|
15
|
+
enum LevelType {
|
|
16
|
+
FINEST, // original problem
|
|
17
|
+
ELIMINATION, // lowdegree node elimination
|
|
18
|
+
AGGREGATION, // aggregation of nodes with high affinity
|
|
19
|
+
COARSEST // coarsest level
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* @ingroup numerics
|
|
24
|
+
* Abstract base class for an LAMG Level.
|
|
25
|
+
*/
|
|
26
|
+
template <class Matrix>
|
|
27
|
+
class Level {
|
|
28
|
+
protected:
|
|
29
|
+
LevelType type;
|
|
30
|
+
Matrix A;
|
|
31
|
+
|
|
32
|
+
public:
|
|
33
|
+
Level(LevelType type) : type(type) {}
|
|
34
|
+
Level(LevelType type, const Matrix &A) : type(type), A(A) {}
|
|
35
|
+
virtual ~Level() {}
|
|
36
|
+
|
|
37
|
+
inline const Matrix &getLaplacian() const { return A; }
|
|
38
|
+
|
|
39
|
+
inline count getNumberOfNodes() const { return A.numberOfRows(); }
|
|
40
|
+
|
|
41
|
+
virtual void coarseType(const Vector & /*xf*/, Vector & /*xc*/) const {}
|
|
42
|
+
|
|
43
|
+
virtual void restrict(const Vector & /*bf*/, Vector & /*bc*/) const {}
|
|
44
|
+
|
|
45
|
+
virtual void restrict(const Vector & /*bf*/, Vector & /*bc*/,
|
|
46
|
+
std::vector<Vector> & /*bStages*/) const {}
|
|
47
|
+
|
|
48
|
+
virtual void interpolate(const Vector & /*xc*/, Vector & /*xf*/) const {}
|
|
49
|
+
|
|
50
|
+
virtual void interpolate(const Vector & /*xc*/, Vector & /*xf*/,
|
|
51
|
+
const std::vector<Vector> & /*bStages*/) const {}
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
} /* namespace NetworKit */
|
|
55
|
+
|
|
56
|
+
#endif // NETWORKIT_NUMERICS_LAMG_LEVEL_LEVEL_HPP_
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* LevelAggregation.hpp
|
|
3
|
+
*
|
|
4
|
+
* Created on: 10.01.2015
|
|
5
|
+
* Author: Michael
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#ifndef NETWORKIT_NUMERICS_LAMG_LEVEL_LEVEL_AGGREGATION_HPP_
|
|
9
|
+
#define NETWORKIT_NUMERICS_LAMG_LEVEL_LEVEL_AGGREGATION_HPP_
|
|
10
|
+
|
|
11
|
+
#include <networkit/numerics/LAMG/Level/Level.hpp>
|
|
12
|
+
|
|
13
|
+
namespace NetworKit {
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @ingroup numerics
|
|
17
|
+
*/
|
|
18
|
+
template <class Matrix>
|
|
19
|
+
class LevelAggregation : public Level<Matrix> {
|
|
20
|
+
private:
|
|
21
|
+
Matrix P; // interpolation matrix (n x nc)
|
|
22
|
+
Matrix R; // restriction matrix (nc x n)
|
|
23
|
+
|
|
24
|
+
public:
|
|
25
|
+
LevelAggregation(const Matrix &A, const Matrix &P, const Matrix &R)
|
|
26
|
+
: Level<Matrix>(LevelType::AGGREGATION, A), P(P), R(R) {}
|
|
27
|
+
|
|
28
|
+
void coarseType(const Vector &xf, Vector &xc) const override;
|
|
29
|
+
|
|
30
|
+
void restrict(const Vector &bf, Vector &bc) const override;
|
|
31
|
+
|
|
32
|
+
void interpolate(const Vector &xc, Vector &xf) const override;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
template <class Matrix>
|
|
36
|
+
void LevelAggregation<Matrix>::coarseType(const Vector & /*xf*/, Vector &xc) const {
|
|
37
|
+
xc = Vector(P.numberOfColumns(), 0.0);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
template <class Matrix>
|
|
41
|
+
void LevelAggregation<Matrix>::restrict(const Vector &bf, Vector &bc) const {
|
|
42
|
+
bc = R * bf;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
template <class Matrix>
|
|
46
|
+
void LevelAggregation<Matrix>::interpolate(const Vector &xc, Vector &xf) const {
|
|
47
|
+
xf = P * xc;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
} /* namespace NetworKit */
|
|
51
|
+
|
|
52
|
+
#endif // NETWORKIT_NUMERICS_LAMG_LEVEL_LEVEL_AGGREGATION_HPP_
|