@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,316 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* SolverLamg.hpp
|
|
3
|
+
*
|
|
4
|
+
* Created on: 12.01.2015
|
|
5
|
+
* Author: Michael
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#ifndef NETWORKIT_NUMERICS_LAMG_SOLVER_LAMG_HPP_
|
|
9
|
+
#define NETWORKIT_NUMERICS_LAMG_SOLVER_LAMG_HPP_
|
|
10
|
+
|
|
11
|
+
#include <cmath>
|
|
12
|
+
#include <vector>
|
|
13
|
+
|
|
14
|
+
#include <networkit/algebraic/DenseMatrix.hpp>
|
|
15
|
+
#include <networkit/auxiliary/Timer.hpp>
|
|
16
|
+
#include <networkit/numerics/LAMG/LevelHierarchy.hpp>
|
|
17
|
+
#include <networkit/numerics/Smoother.hpp>
|
|
18
|
+
|
|
19
|
+
namespace NetworKit {
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Status parameters of the solver.
|
|
23
|
+
*/
|
|
24
|
+
struct LAMGSolverStatus {
|
|
25
|
+
// in
|
|
26
|
+
count maxIters = std::numeric_limits<count>::max(); // maximum number of iterations
|
|
27
|
+
// Maximum time in milliseconds spent to solve the system
|
|
28
|
+
count maxConvergenceTime = std::numeric_limits<count>::max();
|
|
29
|
+
// Desired reduction of the initial residual (finalResidual <= desiredResReduction *
|
|
30
|
+
// initialResidual)
|
|
31
|
+
double desiredResidualReduction = 1e-8;
|
|
32
|
+
count numPreSmoothIters = 1; // number of pre smoothing iterations
|
|
33
|
+
count numPostSmoothIters = 2; // number of post smoothing iterations
|
|
34
|
+
|
|
35
|
+
// out
|
|
36
|
+
count numIters = 0; // number of iterations needed during solve phase
|
|
37
|
+
double residual = std::numeric_limits<double>::infinity(); // absolute final residual
|
|
38
|
+
bool converged = false; // flag of conversion status
|
|
39
|
+
std::vector<double> residualHistory; // history of absolute residuals
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* @ingroup numerics
|
|
44
|
+
* Implements the solve phase of LAMG (Lean Algebraic Multigrid by Livne et al.).
|
|
45
|
+
*/
|
|
46
|
+
template <class Matrix>
|
|
47
|
+
class SolverLamg {
|
|
48
|
+
private:
|
|
49
|
+
const LevelHierarchy<Matrix> &hierarchy;
|
|
50
|
+
const Smoother<Matrix> &smoother;
|
|
51
|
+
|
|
52
|
+
// data structures for iterate recombination
|
|
53
|
+
std::vector<std::vector<Vector>> history;
|
|
54
|
+
std::vector<std::vector<Vector>> rHistory;
|
|
55
|
+
std::vector<index> latestIterate;
|
|
56
|
+
std::vector<count> numActiveIterates;
|
|
57
|
+
|
|
58
|
+
// bStages for Elimination Levels
|
|
59
|
+
std::vector<std::vector<Vector>> bStages;
|
|
60
|
+
|
|
61
|
+
void solveCycle(Vector &x, const Vector &b, int finest, LAMGSolverStatus &status);
|
|
62
|
+
void cycle(Vector &x, const Vector &b, int finest, int coarsest, std::vector<count> &numVisits,
|
|
63
|
+
std::vector<Vector> &X, std::vector<Vector> &B, const LAMGSolverStatus &status);
|
|
64
|
+
void saveIterate(index level, const Vector &x, const Vector &r);
|
|
65
|
+
void clearHistory(index level);
|
|
66
|
+
void minRes(index level, Vector &x, const Vector &r) const;
|
|
67
|
+
|
|
68
|
+
public:
|
|
69
|
+
/**
|
|
70
|
+
* Constructs a new solver instance for the specified @a hierarchy. The @a smoother will be used
|
|
71
|
+
* for relaxing and solving the coarser solutions.
|
|
72
|
+
* @param hierarchy Reference to the LevelHierarchy constructed by MultiLevelSetup.
|
|
73
|
+
* @param smoother Reference to a smoother.
|
|
74
|
+
*/
|
|
75
|
+
SolverLamg(const LevelHierarchy<Matrix> &hierarchy, const Smoother<Matrix> &smoother)
|
|
76
|
+
: hierarchy(hierarchy), smoother(smoother),
|
|
77
|
+
bStages(hierarchy.size(), std::vector<Vector>()) {}
|
|
78
|
+
|
|
79
|
+
SolverLamg(const SolverLamg<Matrix> &other) = default;
|
|
80
|
+
|
|
81
|
+
SolverLamg(SolverLamg<Matrix> &&other) noexcept = default;
|
|
82
|
+
|
|
83
|
+
virtual ~SolverLamg() = default;
|
|
84
|
+
|
|
85
|
+
SolverLamg &operator=(SolverLamg<Matrix> &&other) noexcept = default;
|
|
86
|
+
|
|
87
|
+
SolverLamg &operator=(const SolverLamg<Matrix> &other) = default;
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Solves the system A*x = b for the given initial @a x and right-hand side @a b. More
|
|
91
|
+
* parameters can be specified in @a status and additional output is also stored in @a status.
|
|
92
|
+
* After the solver finished, the approximate solution is stored in @a x.
|
|
93
|
+
* @param x[out] Reference to the initial guess to the solution and the approximation after the
|
|
94
|
+
* solver finished.
|
|
95
|
+
* @param b The right-hand side vector.
|
|
96
|
+
* @param status Reference to an LAMGSolverStatus.
|
|
97
|
+
*/
|
|
98
|
+
void solve(Vector &x, const Vector &b, LAMGSolverStatus &status);
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
template <class Matrix>
|
|
102
|
+
void SolverLamg<Matrix>::solve(Vector &x, const Vector &b, LAMGSolverStatus &status) {
|
|
103
|
+
bStages = std::vector<std::vector<Vector>>(hierarchy.size(), std::vector<Vector>());
|
|
104
|
+
if (hierarchy.size() >= 2) {
|
|
105
|
+
Vector bc = b;
|
|
106
|
+
Vector xc = x;
|
|
107
|
+
int finest = 0;
|
|
108
|
+
|
|
109
|
+
if (hierarchy.getType(1) == ELIMINATION) {
|
|
110
|
+
hierarchy.at(1).restrict(b, bc, bStages[1]);
|
|
111
|
+
if (hierarchy.at(1).getLaplacian().numberOfRows() == 1) {
|
|
112
|
+
x = 0.0;
|
|
113
|
+
return;
|
|
114
|
+
} else {
|
|
115
|
+
hierarchy.at(1).coarseType(x, xc);
|
|
116
|
+
finest = 1;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
solveCycle(xc, bc, finest, status);
|
|
120
|
+
|
|
121
|
+
// interpolate from finest == ELIMINATION level back to actual finest level
|
|
122
|
+
if (finest == 1) {
|
|
123
|
+
hierarchy.at(1).interpolate(xc, x, bStages[1]);
|
|
124
|
+
} else {
|
|
125
|
+
x = xc;
|
|
126
|
+
}
|
|
127
|
+
} else {
|
|
128
|
+
solveCycle(x, b, 0, status);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
double residual = (b - hierarchy.at(0).getLaplacian() * x).length();
|
|
132
|
+
status.residual = residual;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
template <class Matrix>
|
|
136
|
+
void SolverLamg<Matrix>::solveCycle(Vector &x, const Vector &b, const int finest,
|
|
137
|
+
LAMGSolverStatus &status) {
|
|
138
|
+
Aux::Timer timer;
|
|
139
|
+
timer.start();
|
|
140
|
+
|
|
141
|
+
// data structures for iterate recombination
|
|
142
|
+
history = std::vector<std::vector<Vector>>(hierarchy.size());
|
|
143
|
+
rHistory = std::vector<std::vector<Vector>>(hierarchy.size());
|
|
144
|
+
latestIterate = std::vector<index>(hierarchy.size(), 0);
|
|
145
|
+
numActiveIterates = std::vector<count>(hierarchy.size(), 0);
|
|
146
|
+
int coarsest = hierarchy.size() - 1;
|
|
147
|
+
std::vector<count> numVisits(coarsest);
|
|
148
|
+
std::vector<Vector> X(hierarchy.size());
|
|
149
|
+
std::vector<Vector> B(hierarchy.size());
|
|
150
|
+
|
|
151
|
+
for (index i = 0; i < hierarchy.size(); ++i) {
|
|
152
|
+
history[i] =
|
|
153
|
+
std::vector<Vector>(MAX_COMBINED_ITERATES, Vector(hierarchy.at(i).getNumberOfNodes()));
|
|
154
|
+
rHistory[i] =
|
|
155
|
+
std::vector<Vector>(MAX_COMBINED_ITERATES, Vector(hierarchy.at(i).getNumberOfNodes()));
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
Vector r = b - hierarchy.at(finest).getLaplacian() * x;
|
|
159
|
+
double residual = r.length();
|
|
160
|
+
double finalResidual = residual * status.desiredResidualReduction;
|
|
161
|
+
double bestResidual = std::numeric_limits<double>::max();
|
|
162
|
+
|
|
163
|
+
count iterations = 0;
|
|
164
|
+
status.residualHistory.emplace_back(residual);
|
|
165
|
+
count noResReduction = 0;
|
|
166
|
+
while (residual > finalResidual && noResReduction < 5 && iterations < status.maxIters
|
|
167
|
+
&& timer.elapsedMilliseconds() <= status.maxConvergenceTime) {
|
|
168
|
+
cycle(x, b, finest, coarsest, numVisits, X, B, status);
|
|
169
|
+
r = b - hierarchy.at(finest).getLaplacian() * x;
|
|
170
|
+
residual = r.length();
|
|
171
|
+
status.residualHistory.emplace_back(residual);
|
|
172
|
+
if (residual < bestResidual) {
|
|
173
|
+
noResReduction = 0;
|
|
174
|
+
bestResidual = residual;
|
|
175
|
+
} else {
|
|
176
|
+
++noResReduction;
|
|
177
|
+
}
|
|
178
|
+
iterations++;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
timer.stop();
|
|
182
|
+
|
|
183
|
+
status.numIters = iterations;
|
|
184
|
+
status.residual = r.length();
|
|
185
|
+
status.converged = r.length() <= finalResidual;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
template <class Matrix>
|
|
189
|
+
void SolverLamg<Matrix>::cycle(Vector &x, const Vector &b, const int finest, const int coarsest,
|
|
190
|
+
std::vector<count> &numVisits, std::vector<Vector> &X,
|
|
191
|
+
std::vector<Vector> &B, const LAMGSolverStatus &status) {
|
|
192
|
+
std::fill(numVisits.begin(), numVisits.end(), 0);
|
|
193
|
+
X[finest] = x;
|
|
194
|
+
B[finest] = b;
|
|
195
|
+
|
|
196
|
+
int currLvl = finest;
|
|
197
|
+
int nextLvl = finest;
|
|
198
|
+
double maxVisits = 0.0;
|
|
199
|
+
|
|
200
|
+
saveIterate(currLvl, X[currLvl],
|
|
201
|
+
B[currLvl] - hierarchy.at(currLvl).getLaplacian() * X[currLvl]);
|
|
202
|
+
while (true) {
|
|
203
|
+
if (currLvl == coarsest) {
|
|
204
|
+
nextLvl = currLvl - 1;
|
|
205
|
+
if (currLvl == finest) { // finest level
|
|
206
|
+
X[currLvl] = smoother.relax(hierarchy.at(currLvl).getLaplacian(), B[currLvl],
|
|
207
|
+
X[currLvl], status.numPreSmoothIters);
|
|
208
|
+
} else {
|
|
209
|
+
Vector bCoarse(B[currLvl].getDimension() + 1, 0.0);
|
|
210
|
+
for (index i = 0; i < B[currLvl].getDimension(); ++i) {
|
|
211
|
+
bCoarse[i] = B[currLvl][i];
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
Vector xCoarse = DenseMatrix::LUSolve(hierarchy.getCoarseMatrix(), bCoarse);
|
|
215
|
+
for (index i = 0; i < X[currLvl].getDimension(); ++i) {
|
|
216
|
+
X[currLvl][i] = xCoarse[i];
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
} else {
|
|
220
|
+
if (currLvl == finest) {
|
|
221
|
+
maxVisits = 1.0;
|
|
222
|
+
} else {
|
|
223
|
+
maxVisits = hierarchy.cycleIndex(currLvl) * numVisits[currLvl - 1];
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
if (numVisits[currLvl] < static_cast<count>(maxVisits)) {
|
|
227
|
+
nextLvl = currLvl + 1;
|
|
228
|
+
} else {
|
|
229
|
+
nextLvl = currLvl - 1;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
if (nextLvl < finest)
|
|
234
|
+
break;
|
|
235
|
+
|
|
236
|
+
if (nextLvl > currLvl) { // preProcess
|
|
237
|
+
numVisits[currLvl]++;
|
|
238
|
+
|
|
239
|
+
if (hierarchy.getType(nextLvl) != ELIMINATION) {
|
|
240
|
+
X[currLvl] = smoother.relax(hierarchy.at(currLvl).getLaplacian(), B[currLvl],
|
|
241
|
+
X[currLvl], status.numPreSmoothIters);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
if (hierarchy.getType(nextLvl) == ELIMINATION) {
|
|
245
|
+
hierarchy.at(nextLvl).restrict(B[currLvl], B[nextLvl], bStages[nextLvl]);
|
|
246
|
+
} else {
|
|
247
|
+
hierarchy.at(nextLvl).restrict(
|
|
248
|
+
B[currLvl] - hierarchy.at(currLvl).getLaplacian() * X[currLvl], B[nextLvl]);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
hierarchy.at(nextLvl).coarseType(X[currLvl], X[nextLvl]);
|
|
252
|
+
|
|
253
|
+
clearHistory(nextLvl);
|
|
254
|
+
} else { // postProcess
|
|
255
|
+
if (currLvl == coarsest || hierarchy.getType(currLvl + 1) != ELIMINATION) {
|
|
256
|
+
minRes(currLvl, X[currLvl],
|
|
257
|
+
B[currLvl] - hierarchy.at(currLvl).getLaplacian() * X[currLvl]);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
if (nextLvl > finest) {
|
|
261
|
+
saveIterate(nextLvl, X[nextLvl],
|
|
262
|
+
B[nextLvl] - hierarchy.at(nextLvl).getLaplacian() * X[nextLvl]);
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
if (hierarchy.getType(currLvl) == ELIMINATION) {
|
|
266
|
+
hierarchy.at(currLvl).interpolate(X[currLvl], X[nextLvl], bStages[currLvl]);
|
|
267
|
+
} else {
|
|
268
|
+
Vector xf = X[nextLvl];
|
|
269
|
+
hierarchy.at(currLvl).interpolate(X[currLvl], xf);
|
|
270
|
+
X[nextLvl] += xf;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
if (hierarchy.getType(currLvl) != ELIMINATION) {
|
|
274
|
+
X[nextLvl] = smoother.relax(hierarchy.at(nextLvl).getLaplacian(), B[nextLvl],
|
|
275
|
+
X[nextLvl], status.numPostSmoothIters);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
currLvl = nextLvl;
|
|
280
|
+
} // while
|
|
281
|
+
|
|
282
|
+
// post-cycle finest
|
|
283
|
+
if ((int64_t)hierarchy.size() > finest + 1 && hierarchy.getType(finest + 1) != ELIMINATION) {
|
|
284
|
+
// Do an iterate recombination on calculated solutions
|
|
285
|
+
minRes(finest, X[finest], B[finest] - hierarchy.at(finest).getLaplacian() * X[finest]);
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
X[finest] -= X[finest].mean();
|
|
289
|
+
x = X[finest];
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
template <class Matrix>
|
|
293
|
+
void SolverLamg<Matrix>::saveIterate(const index level, const Vector &x, const Vector &r) {
|
|
294
|
+
// update latest pointer
|
|
295
|
+
index i = latestIterate[level];
|
|
296
|
+
latestIterate[level] = (i + 1) % MAX_COMBINED_ITERATES;
|
|
297
|
+
|
|
298
|
+
// update numIterates
|
|
299
|
+
if (numActiveIterates[level] < MAX_COMBINED_ITERATES) {
|
|
300
|
+
numActiveIterates[level]++;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
// update history array
|
|
304
|
+
history[level][i] = x;
|
|
305
|
+
rHistory[level][i] = r;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
template <class Matrix>
|
|
309
|
+
void SolverLamg<Matrix>::clearHistory(const index level) {
|
|
310
|
+
latestIterate[level] = 0;
|
|
311
|
+
numActiveIterates[level] = 0;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
} /* namespace NetworKit */
|
|
315
|
+
|
|
316
|
+
#endif // NETWORKIT_NUMERICS_LAMG_SOLVER_LAMG_HPP_
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* LinearSolver.hpp
|
|
3
|
+
*
|
|
4
|
+
* Created on: 30.10.2014
|
|
5
|
+
* Author: Michael Wegner (michael.wegner@student.kit.edu)
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#ifndef NETWORKIT_NUMERICS_LINEAR_SOLVER_HPP_
|
|
9
|
+
#define NETWORKIT_NUMERICS_LINEAR_SOLVER_HPP_
|
|
10
|
+
|
|
11
|
+
#include <functional>
|
|
12
|
+
#include <limits>
|
|
13
|
+
#include <networkit/algebraic/Vector.hpp>
|
|
14
|
+
#include <networkit/graph/Graph.hpp>
|
|
15
|
+
|
|
16
|
+
namespace NetworKit {
|
|
17
|
+
|
|
18
|
+
/** Describes the status of a LinearSolver after the solver finished. */
|
|
19
|
+
struct SolverStatus {
|
|
20
|
+
count numIters; // number of iterations needed during solve phase
|
|
21
|
+
double residual; // absolute final residual
|
|
22
|
+
bool converged; // flag of conversion status
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Abstract base class for solvers that solve linear systems.
|
|
27
|
+
*/
|
|
28
|
+
template <class Matrix>
|
|
29
|
+
class LinearSolver {
|
|
30
|
+
protected:
|
|
31
|
+
double tolerance;
|
|
32
|
+
|
|
33
|
+
public:
|
|
34
|
+
/**
|
|
35
|
+
* Construct an abstract solver with the given @a tolerance. The relative residual
|
|
36
|
+
* ||Ax-b||/||b|| should be less than or equal to
|
|
37
|
+
* @a tolerance after the solver finished.
|
|
38
|
+
* @param tolerance
|
|
39
|
+
*/
|
|
40
|
+
LinearSolver(const double tolerance) : tolerance(tolerance) {}
|
|
41
|
+
virtual ~LinearSolver() = default;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Sets the solver up for the specified @a matrix.
|
|
45
|
+
* @param matrix
|
|
46
|
+
*/
|
|
47
|
+
virtual void setup(const Matrix &matrix) = 0;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Sets the solver up for the Laplacian matrix of the @a graph specified.
|
|
51
|
+
* @param graph
|
|
52
|
+
*/
|
|
53
|
+
virtual void setup(const Graph &graph);
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Sets the solver up for the specified @a matrix where the underlying graph has to be
|
|
57
|
+
* connected.
|
|
58
|
+
* @param matrix
|
|
59
|
+
*/
|
|
60
|
+
virtual void setupConnected(const Matrix &matrix) = 0;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Sets the solver up for the Laplacian matrix of the @a graph specified. The graph has to be
|
|
64
|
+
* connected.
|
|
65
|
+
* @param graph
|
|
66
|
+
*/
|
|
67
|
+
virtual void setupConnected(const Graph &graph);
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Abstract solve function that computes @a result for the given right-hand side @a rhs and the
|
|
71
|
+
* matrix that has been setup in @ref setup.
|
|
72
|
+
* @param rhs
|
|
73
|
+
* @param result
|
|
74
|
+
* @param maxConvergenceTime
|
|
75
|
+
* @param maxIterations
|
|
76
|
+
* @return A @ref SolverStatus object which provides some statistics like the final absolute
|
|
77
|
+
* residual.
|
|
78
|
+
*/
|
|
79
|
+
virtual SolverStatus solve(const Vector &rhs, Vector &result,
|
|
80
|
+
count maxConvergenceTime = 5 * 60 * 1000,
|
|
81
|
+
count maxIterations = std::numeric_limits<count>::max()) const = 0;
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Abstract parallel solve function that computes the @a results for the matrix currently setup
|
|
85
|
+
* and the right-hand sides @a rhs. The maximum spent time for each system can be specified by
|
|
86
|
+
* @a maxConvergenceTime and the maximum number of iterations can be set by @a maxIterations.
|
|
87
|
+
* @param rhs
|
|
88
|
+
* @param results
|
|
89
|
+
* @param maxConvergenceTime
|
|
90
|
+
* @param maxIterations
|
|
91
|
+
* @return A vector of @ref SolverStatus objects for each right hand side.
|
|
92
|
+
* @note If the solver does not support parallelism during solves, this function falls back to
|
|
93
|
+
* solving the systems sequentially.
|
|
94
|
+
*/
|
|
95
|
+
virtual std::vector<SolverStatus>
|
|
96
|
+
parallelSolve(const std::vector<Vector> &rhs, std::vector<Vector> &results,
|
|
97
|
+
count maxConvergenceTime = 5 * 60 * 1000,
|
|
98
|
+
count maxIterations = std::numeric_limits<count>::max()) const;
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Abstract parallel solve function that computes and processes results using @a resultProcessor
|
|
102
|
+
* for the matrix currently setup and the right-hand sides (size of @a rhsSize) provided by @a
|
|
103
|
+
* rhsLoader. The maximum spent time for each system can be specified by @a maxConvergenceTime
|
|
104
|
+
* and the maximum number of iterations can be set by @a maxIterations.
|
|
105
|
+
* @param rhsLoader
|
|
106
|
+
* @param resultProcessor
|
|
107
|
+
* @param rhsSize
|
|
108
|
+
* @param maxConvergenceTime
|
|
109
|
+
* @param maxIterations
|
|
110
|
+
* @note If the solver does not support parallelism during solves, this function falls back to
|
|
111
|
+
* solving the systems sequentially.
|
|
112
|
+
*/
|
|
113
|
+
template <typename RHSLoader, typename ResultProcessor>
|
|
114
|
+
void parallelSolve(const RHSLoader &rhsLoader, const ResultProcessor &resultProcessor,
|
|
115
|
+
std::pair<count, count> rhsSize, count maxConvergenceTime = 5 * 60 * 1000,
|
|
116
|
+
count maxIterations = std::numeric_limits<count>::max()) const {
|
|
117
|
+
count n = rhsSize.first;
|
|
118
|
+
count m = rhsSize.second;
|
|
119
|
+
Vector rhs(m);
|
|
120
|
+
Vector result(m);
|
|
121
|
+
for (index i = 0; i < n; ++i) {
|
|
122
|
+
solve(rhsLoader(i, rhs), result, maxConvergenceTime, maxIterations);
|
|
123
|
+
resultProcessor(i, result);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
template <class Matrix>
|
|
129
|
+
void LinearSolver<Matrix>::setup(const Graph &graph) {
|
|
130
|
+
setup(Matrix::laplacianMatrix(graph));
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
template <class Matrix>
|
|
134
|
+
void LinearSolver<Matrix>::setupConnected(const Graph &graph) {
|
|
135
|
+
setupConnected(Matrix::laplacianMatrix(graph));
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
template <class Matrix>
|
|
139
|
+
std::vector<SolverStatus>
|
|
140
|
+
LinearSolver<Matrix>::parallelSolve(const std::vector<Vector> &rhs, std::vector<Vector> &results,
|
|
141
|
+
count maxConvergenceTime, count maxIterations) const {
|
|
142
|
+
std::vector<SolverStatus> stats(rhs.size());
|
|
143
|
+
for (index i = 0; i < rhs.size(); ++i) {
|
|
144
|
+
stats[i] = solve(rhs[i], results[i], maxConvergenceTime, maxIterations);
|
|
145
|
+
}
|
|
146
|
+
return stats;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
} /* namespace NetworKit */
|
|
150
|
+
|
|
151
|
+
#endif // NETWORKIT_NUMERICS_LINEAR_SOLVER_HPP_
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* DiagonalPreconditioner.hpp
|
|
3
|
+
*
|
|
4
|
+
* Created on: Apr 23, 2016
|
|
5
|
+
* Author: Michael Wegner (michael.wegner@student.kit.edu)
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#ifndef NETWORKIT_NUMERICS_PRECONDITIONER_DIAGONAL_PRECONDITIONER_HPP_
|
|
9
|
+
#define NETWORKIT_NUMERICS_PRECONDITIONER_DIAGONAL_PRECONDITIONER_HPP_
|
|
10
|
+
|
|
11
|
+
#include <networkit/algebraic/CSRMatrix.hpp>
|
|
12
|
+
|
|
13
|
+
namespace NetworKit {
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @ingroup numerics
|
|
17
|
+
* Simple preconditioner that approximates the matrix by a
|
|
18
|
+
* diagonal matrix.
|
|
19
|
+
*/
|
|
20
|
+
class DiagonalPreconditioner {
|
|
21
|
+
public:
|
|
22
|
+
/** Default constructor */
|
|
23
|
+
DiagonalPreconditioner() = default;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Constructs a diagonal preconditioner for the matrix @a A.
|
|
27
|
+
* @param A
|
|
28
|
+
*/
|
|
29
|
+
DiagonalPreconditioner(const CSRMatrix &A) : inv_diag(A.numberOfRows()) {
|
|
30
|
+
assert(A.numberOfColumns() == A.numberOfRows());
|
|
31
|
+
|
|
32
|
+
// Diagonal preconditioner just needs to store the inverse diagonal of A
|
|
33
|
+
inv_diag = A.diagonal();
|
|
34
|
+
#pragma omp parallel for
|
|
35
|
+
for (omp_index i = 0; i < static_cast<omp_index>(inv_diag.getDimension()); ++i) {
|
|
36
|
+
if (inv_diag[i] > 0)
|
|
37
|
+
inv_diag[i] = 1.0 / inv_diag[i];
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
virtual ~DiagonalPreconditioner() = default;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Returns the preconditioned right-hand-side \f$P(b) = D(A)^{-1}b\f$.
|
|
45
|
+
*/
|
|
46
|
+
Vector rhs(const Vector &b) const {
|
|
47
|
+
assert(b.getDimension() == inv_diag.getDimension());
|
|
48
|
+
Vector out(b.getDimension());
|
|
49
|
+
for (index i = 0; i < b.getDimension(); ++i) {
|
|
50
|
+
out[i] = inv_diag[i] * b[i];
|
|
51
|
+
}
|
|
52
|
+
return out;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
private:
|
|
56
|
+
Vector inv_diag;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
} /* namespace NetworKit */
|
|
60
|
+
|
|
61
|
+
#endif // NETWORKIT_NUMERICS_PRECONDITIONER_DIAGONAL_PRECONDITIONER_HPP_
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* IdentityPreconditioner.hpp
|
|
3
|
+
*
|
|
4
|
+
* Created on: Apr 23, 2016
|
|
5
|
+
* Author: Michael Wegner (michael.wegner@student.kit.edu)
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#ifndef NETWORKIT_NUMERICS_PRECONDITIONER_IDENTITY_PRECONDITIONER_HPP_
|
|
9
|
+
#define NETWORKIT_NUMERICS_PRECONDITIONER_IDENTITY_PRECONDITIONER_HPP_
|
|
10
|
+
|
|
11
|
+
namespace NetworKit {
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @ingroup numerics
|
|
15
|
+
* Simple preconditioner that returns the given vector unchanged.
|
|
16
|
+
*/
|
|
17
|
+
class IdentityPreconditioner {
|
|
18
|
+
public:
|
|
19
|
+
/** Default constructor */
|
|
20
|
+
IdentityPreconditioner() = default;
|
|
21
|
+
/**
|
|
22
|
+
* Constructs an identity preconditioner for the matrix @a A.
|
|
23
|
+
* @param A
|
|
24
|
+
*/
|
|
25
|
+
IdentityPreconditioner(const CSRMatrix &) {}
|
|
26
|
+
virtual ~IdentityPreconditioner() = default;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Returns the preconditioned right-hand-side \f$P(b) = b\f$.
|
|
30
|
+
*/
|
|
31
|
+
Vector rhs(const Vector &b) const { return b; }
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
} /* namespace NetworKit */
|
|
35
|
+
|
|
36
|
+
#endif // NETWORKIT_NUMERICS_PRECONDITIONER_IDENTITY_PRECONDITIONER_HPP_
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Smoother.hpp
|
|
3
|
+
*
|
|
4
|
+
* Created on: 31.10.2014
|
|
5
|
+
* Author: Michael Wegner (michael.wegner@student.kit.edu)
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#ifndef NETWORKIT_NUMERICS_SMOOTHER_HPP_
|
|
9
|
+
#define NETWORKIT_NUMERICS_SMOOTHER_HPP_
|
|
10
|
+
|
|
11
|
+
#include <networkit/algebraic/CSRMatrix.hpp>
|
|
12
|
+
#include <networkit/algebraic/Vector.hpp>
|
|
13
|
+
|
|
14
|
+
#include <limits>
|
|
15
|
+
#include <networkit/algebraic/DynamicMatrix.hpp>
|
|
16
|
+
|
|
17
|
+
namespace NetworKit {
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @ingroup numerics
|
|
21
|
+
* Abstract base class of a smoother.
|
|
22
|
+
*/
|
|
23
|
+
template <class Matrix>
|
|
24
|
+
class Smoother {
|
|
25
|
+
public:
|
|
26
|
+
Smoother() {}
|
|
27
|
+
virtual ~Smoother() {}
|
|
28
|
+
|
|
29
|
+
virtual Vector relax(const Matrix &A, const Vector &b, const Vector &initialGuess,
|
|
30
|
+
count maxIterations = std::numeric_limits<count>::max()) const = 0;
|
|
31
|
+
virtual Vector relax(const Matrix &A, const Vector &b,
|
|
32
|
+
count maxIterations = std::numeric_limits<count>::max()) const = 0;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
} /* namespace NetworKit */
|
|
36
|
+
|
|
37
|
+
#endif // NETWORKIT_NUMERICS_SMOOTHER_HPP_
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* HashingOverlapper.hpp
|
|
3
|
+
*
|
|
4
|
+
* Created on: 31.01.2013
|
|
5
|
+
* Author: Christian Staudt
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#ifndef NETWORKIT_OVERLAP_HASHING_OVERLAPPER_HPP_
|
|
9
|
+
#define NETWORKIT_OVERLAP_HASHING_OVERLAPPER_HPP_
|
|
10
|
+
|
|
11
|
+
#include <functional>
|
|
12
|
+
|
|
13
|
+
#include <networkit/overlap/Overlapper.hpp>
|
|
14
|
+
|
|
15
|
+
namespace NetworKit {
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* @ingroup overlap
|
|
19
|
+
* Determines the overlap of multiple partitions by hashing partition identifiers.
|
|
20
|
+
*/
|
|
21
|
+
class HashingOverlapper final : public Overlapper {
|
|
22
|
+
|
|
23
|
+
public:
|
|
24
|
+
Partition run(const Graph &G, const std::vector<Partition> &clusterings) override;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
} /* namespace NetworKit */
|
|
28
|
+
#endif // NETWORKIT_OVERLAP_HASHING_OVERLAPPER_HPP_
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Overlapper.hpp
|
|
3
|
+
*
|
|
4
|
+
* Created on: 30.10.2012
|
|
5
|
+
* Author: Christian Staudt
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#ifndef NETWORKIT_OVERLAP_OVERLAPPER_HPP_
|
|
9
|
+
#define NETWORKIT_OVERLAP_OVERLAPPER_HPP_
|
|
10
|
+
|
|
11
|
+
#include <networkit/graph/Graph.hpp>
|
|
12
|
+
#include <networkit/structures/Partition.hpp>
|
|
13
|
+
|
|
14
|
+
namespace NetworKit {
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @ingroup overlap
|
|
18
|
+
* Abstract base class for algorithms which determine the overlap of multiple partitions.
|
|
19
|
+
*/
|
|
20
|
+
class Overlapper {
|
|
21
|
+
|
|
22
|
+
public:
|
|
23
|
+
virtual Partition run(const Graph &G, const std::vector<Partition> &clusterings) = 0;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
} /* namespace NetworKit */
|
|
27
|
+
#endif // NETWORKIT_OVERLAP_OVERLAPPER_HPP_
|