@ladybugmem/icebug 0.1.0 → 0.1.1
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/binding.gyp +32 -10
- package/lib/index.js +23 -11
- package/package.json +8 -13
- package/prebuilds/darwin-arm64/icebug.node +0 -0
- package/{vendor/lib → prebuilds/darwin-arm64}/libnetworkit.dylib +0 -0
- package/prebuilds/linux-x64/icebug.node +0 -0
- package/prebuilds/linux-x64/libnetworkit.so +0 -0
- package/scripts/download-icebug.sh +92 -0
- package/build/Release/.deps/Release/icebug.node.d +0 -1
- package/build/Release/.deps/Release/obj.target/icebug/src/addon.o.d +0 -291
- package/build/Release/icebug.node +0 -0
- package/build/Release/obj.target/icebug/src/addon.o +0 -0
- package/vendor/include/networkit/GlobalState.hpp +0 -86
- package/vendor/include/networkit/Globals.hpp +0 -41
- package/vendor/include/networkit/algebraic/AlgebraicGlobals.hpp +0 -27
- package/vendor/include/networkit/algebraic/CSRGeneralMatrix.hpp +0 -1292
- package/vendor/include/networkit/algebraic/CSRMatrix.hpp +0 -11
- package/vendor/include/networkit/algebraic/DenseMatrix.hpp +0 -537
- package/vendor/include/networkit/algebraic/DynamicMatrix.hpp +0 -514
- package/vendor/include/networkit/algebraic/GraphBLAS.hpp +0 -323
- package/vendor/include/networkit/algebraic/MatrixTools.hpp +0 -156
- package/vendor/include/networkit/algebraic/Semirings.hpp +0 -171
- package/vendor/include/networkit/algebraic/SparseAccumulator.hpp +0 -111
- package/vendor/include/networkit/algebraic/Vector.hpp +0 -371
- package/vendor/include/networkit/algebraic/algorithms/AlgebraicBFS.hpp +0 -72
- package/vendor/include/networkit/algebraic/algorithms/AlgebraicBellmanFord.hpp +0 -88
- package/vendor/include/networkit/algebraic/algorithms/AlgebraicMatchingCoarsening.hpp +0 -96
- package/vendor/include/networkit/algebraic/algorithms/AlgebraicPageRank.hpp +0 -145
- package/vendor/include/networkit/algebraic/algorithms/AlgebraicSpanningEdgeCentrality.hpp +0 -122
- package/vendor/include/networkit/algebraic/algorithms/AlgebraicTriangleCounting.hpp +0 -76
- package/vendor/include/networkit/auxiliary/AlignedAllocator.hpp +0 -113
- package/vendor/include/networkit/auxiliary/ArrayTools.hpp +0 -85
- package/vendor/include/networkit/auxiliary/BloomFilter.hpp +0 -70
- package/vendor/include/networkit/auxiliary/BucketPQ.hpp +0 -142
- package/vendor/include/networkit/auxiliary/Enforce.hpp +0 -117
- package/vendor/include/networkit/auxiliary/FunctionTraits.hpp +0 -74
- package/vendor/include/networkit/auxiliary/HashUtils.hpp +0 -28
- package/vendor/include/networkit/auxiliary/IncrementalUniformRandomSelector.hpp +0 -52
- package/vendor/include/networkit/auxiliary/Log.hpp +0 -119
- package/vendor/include/networkit/auxiliary/MissingMath.hpp +0 -48
- package/vendor/include/networkit/auxiliary/Multiprecision.hpp +0 -17
- package/vendor/include/networkit/auxiliary/NumberParsing.hpp +0 -307
- package/vendor/include/networkit/auxiliary/NumericTools.hpp +0 -57
- package/vendor/include/networkit/auxiliary/Parallel.hpp +0 -56
- package/vendor/include/networkit/auxiliary/Parallelism.hpp +0 -33
- package/vendor/include/networkit/auxiliary/PrioQueue.hpp +0 -252
- package/vendor/include/networkit/auxiliary/Random.hpp +0 -122
- package/vendor/include/networkit/auxiliary/SetIntersector.hpp +0 -72
- package/vendor/include/networkit/auxiliary/SignalHandling.hpp +0 -39
- package/vendor/include/networkit/auxiliary/SortedList.hpp +0 -128
- package/vendor/include/networkit/auxiliary/SparseVector.hpp +0 -215
- package/vendor/include/networkit/auxiliary/SpinLock.hpp +0 -23
- package/vendor/include/networkit/auxiliary/StringBuilder.hpp +0 -322
- package/vendor/include/networkit/auxiliary/StringTools.hpp +0 -76
- package/vendor/include/networkit/auxiliary/TemplateUtils.hpp +0 -76
- package/vendor/include/networkit/auxiliary/Timer.hpp +0 -145
- package/vendor/include/networkit/auxiliary/VectorComparator.hpp +0 -32
- package/vendor/include/networkit/base/Algorithm.hpp +0 -41
- package/vendor/include/networkit/base/DynAlgorithm.hpp +0 -31
- package/vendor/include/networkit/centrality/ApproxBetweenness.hpp +0 -62
- package/vendor/include/networkit/centrality/ApproxCloseness.hpp +0 -136
- package/vendor/include/networkit/centrality/ApproxElectricalCloseness.hpp +0 -156
- package/vendor/include/networkit/centrality/ApproxGroupBetweenness.hpp +0 -124
- package/vendor/include/networkit/centrality/ApproxSpanningEdge.hpp +0 -84
- package/vendor/include/networkit/centrality/Betweenness.hpp +0 -47
- package/vendor/include/networkit/centrality/Centrality.hpp +0 -98
- package/vendor/include/networkit/centrality/Closeness.hpp +0 -107
- package/vendor/include/networkit/centrality/ComplexPaths.hpp +0 -113
- package/vendor/include/networkit/centrality/CoreDecomposition.hpp +0 -161
- package/vendor/include/networkit/centrality/DegreeCentrality.hpp +0 -55
- package/vendor/include/networkit/centrality/DynApproxBetweenness.hpp +0 -95
- package/vendor/include/networkit/centrality/DynBetweenness.hpp +0 -99
- package/vendor/include/networkit/centrality/DynBetweennessOneNode.hpp +0 -98
- package/vendor/include/networkit/centrality/DynKatzCentrality.hpp +0 -115
- package/vendor/include/networkit/centrality/DynTopHarmonicCloseness.hpp +0 -223
- package/vendor/include/networkit/centrality/EigenvectorCentrality.hpp +0 -41
- package/vendor/include/networkit/centrality/EstimateBetweenness.hpp +0 -51
- package/vendor/include/networkit/centrality/ForestCentrality.hpp +0 -112
- package/vendor/include/networkit/centrality/GedWalk.hpp +0 -225
- package/vendor/include/networkit/centrality/GroupCloseness.hpp +0 -115
- package/vendor/include/networkit/centrality/GroupClosenessGrowShrink.hpp +0 -78
- package/vendor/include/networkit/centrality/GroupClosenessLocalSearch.hpp +0 -77
- package/vendor/include/networkit/centrality/GroupClosenessLocalSwaps.hpp +0 -106
- package/vendor/include/networkit/centrality/GroupDegree.hpp +0 -155
- package/vendor/include/networkit/centrality/GroupHarmonicCloseness.hpp +0 -83
- package/vendor/include/networkit/centrality/HarmonicCloseness.hpp +0 -48
- package/vendor/include/networkit/centrality/KPathCentrality.hpp +0 -52
- package/vendor/include/networkit/centrality/KadabraBetweenness.hpp +0 -242
- package/vendor/include/networkit/centrality/KatzCentrality.hpp +0 -62
- package/vendor/include/networkit/centrality/LaplacianCentrality.hpp +0 -44
- package/vendor/include/networkit/centrality/LocalClusteringCoefficient.hpp +0 -60
- package/vendor/include/networkit/centrality/LocalPartitionCoverage.hpp +0 -43
- package/vendor/include/networkit/centrality/LocalSquareClusteringCoefficient.hpp +0 -42
- package/vendor/include/networkit/centrality/PageRank.hpp +0 -101
- package/vendor/include/networkit/centrality/PermanenceCentrality.hpp +0 -48
- package/vendor/include/networkit/centrality/Sfigality.hpp +0 -45
- package/vendor/include/networkit/centrality/SpanningEdgeCentrality.hpp +0 -86
- package/vendor/include/networkit/centrality/TopCloseness.hpp +0 -136
- package/vendor/include/networkit/centrality/TopHarmonicCloseness.hpp +0 -151
- package/vendor/include/networkit/clique/MaximalCliques.hpp +0 -83
- package/vendor/include/networkit/coarsening/ClusteringProjector.hpp +0 -59
- package/vendor/include/networkit/coarsening/CoarsenedGraphView.hpp +0 -156
- package/vendor/include/networkit/coarsening/GraphCoarsening.hpp +0 -57
- package/vendor/include/networkit/coarsening/MatchingCoarsening.hpp +0 -43
- package/vendor/include/networkit/coarsening/ParallelPartitionCoarsening.hpp +0 -33
- package/vendor/include/networkit/coarsening/ParallelPartitionCoarseningView.hpp +0 -62
- package/vendor/include/networkit/community/AdjustedRandMeasure.hpp +0 -31
- package/vendor/include/networkit/community/ClusteringGenerator.hpp +0 -75
- package/vendor/include/networkit/community/CommunityDetectionAlgorithm.hpp +0 -58
- package/vendor/include/networkit/community/Conductance.hpp +0 -32
- package/vendor/include/networkit/community/CoverF1Similarity.hpp +0 -53
- package/vendor/include/networkit/community/CoverHubDominance.hpp +0 -38
- package/vendor/include/networkit/community/Coverage.hpp +0 -25
- package/vendor/include/networkit/community/CutClustering.hpp +0 -62
- package/vendor/include/networkit/community/DissimilarityMeasure.hpp +0 -31
- package/vendor/include/networkit/community/DynamicNMIDistance.hpp +0 -44
- package/vendor/include/networkit/community/EdgeCut.hpp +0 -24
- package/vendor/include/networkit/community/GraphClusteringTools.hpp +0 -103
- package/vendor/include/networkit/community/GraphStructuralRandMeasure.hpp +0 -28
- package/vendor/include/networkit/community/HubDominance.hpp +0 -46
- package/vendor/include/networkit/community/IntrapartitionDensity.hpp +0 -44
- package/vendor/include/networkit/community/IsolatedInterpartitionConductance.hpp +0 -40
- package/vendor/include/networkit/community/IsolatedInterpartitionExpansion.hpp +0 -40
- package/vendor/include/networkit/community/JaccardMeasure.hpp +0 -25
- package/vendor/include/networkit/community/LFM.hpp +0 -49
- package/vendor/include/networkit/community/LPDegreeOrdered.hpp +0 -48
- package/vendor/include/networkit/community/LocalCommunityEvaluation.hpp +0 -100
- package/vendor/include/networkit/community/LocalCoverEvaluation.hpp +0 -31
- package/vendor/include/networkit/community/LocalPartitionEvaluation.hpp +0 -31
- package/vendor/include/networkit/community/LouvainMapEquation.hpp +0 -135
- package/vendor/include/networkit/community/Modularity.hpp +0 -54
- package/vendor/include/networkit/community/NMIDistance.hpp +0 -28
- package/vendor/include/networkit/community/NodeStructuralRandMeasure.hpp +0 -27
- package/vendor/include/networkit/community/OverlappingCommunityDetectionAlgorithm.hpp +0 -51
- package/vendor/include/networkit/community/OverlappingNMIDistance.hpp +0 -175
- package/vendor/include/networkit/community/PLM.hpp +0 -89
- package/vendor/include/networkit/community/PLP.hpp +0 -83
- package/vendor/include/networkit/community/ParallelAgglomerativeClusterer.hpp +0 -37
- package/vendor/include/networkit/community/ParallelLeiden.hpp +0 -96
- package/vendor/include/networkit/community/ParallelLeidenView.hpp +0 -138
- package/vendor/include/networkit/community/PartitionFragmentation.hpp +0 -30
- package/vendor/include/networkit/community/PartitionHubDominance.hpp +0 -37
- package/vendor/include/networkit/community/PartitionIntersection.hpp +0 -25
- package/vendor/include/networkit/community/QualityMeasure.hpp +0 -27
- package/vendor/include/networkit/community/SampledGraphStructuralRandMeasure.hpp +0 -40
- package/vendor/include/networkit/community/SampledNodeStructuralRandMeasure.hpp +0 -40
- package/vendor/include/networkit/community/StablePartitionNodes.hpp +0 -48
- package/vendor/include/networkit/components/BiconnectedComponents.hpp +0 -116
- package/vendor/include/networkit/components/ComponentDecomposition.hpp +0 -72
- package/vendor/include/networkit/components/ConnectedComponents.hpp +0 -55
- package/vendor/include/networkit/components/DynConnectedComponents.hpp +0 -71
- package/vendor/include/networkit/components/DynWeaklyConnectedComponents.hpp +0 -73
- package/vendor/include/networkit/components/ParallelConnectedComponents.hpp +0 -44
- package/vendor/include/networkit/components/RandomSpanningForest.hpp +0 -36
- package/vendor/include/networkit/components/StronglyConnectedComponents.hpp +0 -50
- package/vendor/include/networkit/components/WeaklyConnectedComponents.hpp +0 -59
- package/vendor/include/networkit/correlation/Assortativity.hpp +0 -64
- package/vendor/include/networkit/distance/APSP.hpp +0 -70
- package/vendor/include/networkit/distance/AStar.hpp +0 -68
- package/vendor/include/networkit/distance/AStarGeneral.hpp +0 -110
- package/vendor/include/networkit/distance/AdamicAdarDistance.hpp +0 -52
- package/vendor/include/networkit/distance/AffectedNodes.hpp +0 -130
- package/vendor/include/networkit/distance/AlgebraicDistance.hpp +0 -63
- package/vendor/include/networkit/distance/BFS.hpp +0 -43
- package/vendor/include/networkit/distance/BidirectionalBFS.hpp +0 -51
- package/vendor/include/networkit/distance/BidirectionalDijkstra.hpp +0 -69
- package/vendor/include/networkit/distance/CommuteTimeDistance.hpp +0 -89
- package/vendor/include/networkit/distance/Diameter.hpp +0 -97
- package/vendor/include/networkit/distance/Dijkstra.hpp +0 -50
- package/vendor/include/networkit/distance/DynAPSP.hpp +0 -67
- package/vendor/include/networkit/distance/DynBFS.hpp +0 -56
- package/vendor/include/networkit/distance/DynDijkstra.hpp +0 -57
- package/vendor/include/networkit/distance/DynPrunedLandmarkLabeling.hpp +0 -67
- package/vendor/include/networkit/distance/DynSSSP.hpp +0 -87
- package/vendor/include/networkit/distance/Eccentricity.hpp +0 -32
- package/vendor/include/networkit/distance/EffectiveDiameter.hpp +0 -47
- package/vendor/include/networkit/distance/EffectiveDiameterApproximation.hpp +0 -57
- package/vendor/include/networkit/distance/FloydWarshall.hpp +0 -93
- package/vendor/include/networkit/distance/GraphDistance.hpp +0 -49
- package/vendor/include/networkit/distance/HopPlotApproximation.hpp +0 -62
- package/vendor/include/networkit/distance/IncompleteDijkstra.hpp +0 -66
- package/vendor/include/networkit/distance/IncompleteSSSP.hpp +0 -41
- package/vendor/include/networkit/distance/JaccardDistance.hpp +0 -57
- package/vendor/include/networkit/distance/MultiTargetBFS.hpp +0 -32
- package/vendor/include/networkit/distance/MultiTargetDijkstra.hpp +0 -40
- package/vendor/include/networkit/distance/NeighborhoodFunction.hpp +0 -47
- package/vendor/include/networkit/distance/NeighborhoodFunctionApproximation.hpp +0 -56
- package/vendor/include/networkit/distance/NeighborhoodFunctionHeuristic.hpp +0 -56
- package/vendor/include/networkit/distance/NodeDistance.hpp +0 -54
- package/vendor/include/networkit/distance/PrunedLandmarkLabeling.hpp +0 -76
- package/vendor/include/networkit/distance/ReverseBFS.hpp +0 -46
- package/vendor/include/networkit/distance/SPSP.hpp +0 -143
- package/vendor/include/networkit/distance/SSSP.hpp +0 -216
- package/vendor/include/networkit/distance/STSP.hpp +0 -193
- package/vendor/include/networkit/distance/Volume.hpp +0 -66
- package/vendor/include/networkit/dynamics/DGSStreamParser.hpp +0 -40
- package/vendor/include/networkit/dynamics/DGSWriter.hpp +0 -30
- package/vendor/include/networkit/dynamics/GraphDifference.hpp +0 -110
- package/vendor/include/networkit/dynamics/GraphEvent.hpp +0 -55
- package/vendor/include/networkit/dynamics/GraphEventHandler.hpp +0 -39
- package/vendor/include/networkit/dynamics/GraphEventProxy.hpp +0 -55
- package/vendor/include/networkit/dynamics/GraphUpdater.hpp +0 -38
- package/vendor/include/networkit/edgescores/ChibaNishizekiQuadrangleEdgeScore.hpp +0 -26
- package/vendor/include/networkit/edgescores/ChibaNishizekiTriangleEdgeScore.hpp +0 -33
- package/vendor/include/networkit/edgescores/EdgeScore.hpp +0 -50
- package/vendor/include/networkit/edgescores/EdgeScoreAsWeight.hpp +0 -33
- package/vendor/include/networkit/edgescores/EdgeScoreBlender.hpp +0 -33
- package/vendor/include/networkit/edgescores/EdgeScoreLinearizer.hpp +0 -32
- package/vendor/include/networkit/edgescores/EdgeScoreNormalizer.hpp +0 -35
- package/vendor/include/networkit/edgescores/GeometricMeanScore.hpp +0 -29
- package/vendor/include/networkit/edgescores/PrefixJaccardScore.hpp +0 -23
- package/vendor/include/networkit/edgescores/TriangleEdgeScore.hpp +0 -39
- package/vendor/include/networkit/embedding/Node2Vec.hpp +0 -83
- package/vendor/include/networkit/flow/EdmondsKarp.hpp +0 -112
- package/vendor/include/networkit/generators/BarabasiAlbertGenerator.hpp +0 -87
- package/vendor/include/networkit/generators/ChungLuGenerator.hpp +0 -46
- package/vendor/include/networkit/generators/ChungLuGeneratorAlamEtAl.hpp +0 -63
- package/vendor/include/networkit/generators/ClusteredRandomGraphGenerator.hpp +0 -56
- package/vendor/include/networkit/generators/ConfigurationModel.hpp +0 -36
- package/vendor/include/networkit/generators/DorogovtsevMendesGenerator.hpp +0 -33
- package/vendor/include/networkit/generators/DynamicBarabasiAlbertGenerator.hpp +0 -33
- package/vendor/include/networkit/generators/DynamicDGSParser.hpp +0 -51
- package/vendor/include/networkit/generators/DynamicDorogovtsevMendesGenerator.hpp +0 -34
- package/vendor/include/networkit/generators/DynamicForestFireGenerator.hpp +0 -55
- package/vendor/include/networkit/generators/DynamicGraphGenerator.hpp +0 -40
- package/vendor/include/networkit/generators/DynamicGraphSource.hpp +0 -79
- package/vendor/include/networkit/generators/DynamicHyperbolicGenerator.hpp +0 -143
- package/vendor/include/networkit/generators/DynamicPathGenerator.hpp +0 -26
- package/vendor/include/networkit/generators/DynamicPubWebGenerator.hpp +0 -54
- package/vendor/include/networkit/generators/EdgeSwitchingMarkovChainGenerator.hpp +0 -65
- package/vendor/include/networkit/generators/ErdosRenyiEnumerator.hpp +0 -318
- package/vendor/include/networkit/generators/ErdosRenyiGenerator.hpp +0 -56
- package/vendor/include/networkit/generators/HavelHakimiGenerator.hpp +0 -48
- package/vendor/include/networkit/generators/HyperbolicGenerator.hpp +0 -236
- package/vendor/include/networkit/generators/LFRGenerator.hpp +0 -175
- package/vendor/include/networkit/generators/MocnikGenerator.hpp +0 -147
- package/vendor/include/networkit/generators/MocnikGeneratorBasic.hpp +0 -58
- package/vendor/include/networkit/generators/PowerlawDegreeSequence.hpp +0 -128
- package/vendor/include/networkit/generators/PubWebGenerator.hpp +0 -94
- package/vendor/include/networkit/generators/RegularRingLatticeGenerator.hpp +0 -37
- package/vendor/include/networkit/generators/RmatGenerator.hpp +0 -67
- package/vendor/include/networkit/generators/StaticDegreeSequenceGenerator.hpp +0 -42
- package/vendor/include/networkit/generators/StaticGraphGenerator.hpp +0 -30
- package/vendor/include/networkit/generators/StochasticBlockmodel.hpp +0 -41
- package/vendor/include/networkit/generators/WattsStrogatzGenerator.hpp +0 -43
- package/vendor/include/networkit/generators/quadtree/QuadNode.hpp +0 -857
- package/vendor/include/networkit/generators/quadtree/QuadNodeCartesianEuclid.hpp +0 -587
- package/vendor/include/networkit/generators/quadtree/QuadNodePolarEuclid.hpp +0 -726
- package/vendor/include/networkit/generators/quadtree/Quadtree.hpp +0 -232
- package/vendor/include/networkit/generators/quadtree/QuadtreeCartesianEuclid.hpp +0 -149
- package/vendor/include/networkit/generators/quadtree/QuadtreePolarEuclid.hpp +0 -143
- package/vendor/include/networkit/geometric/HyperbolicSpace.hpp +0 -248
- package/vendor/include/networkit/geometric/Point2DWithIndex.hpp +0 -145
- package/vendor/include/networkit/global/ClusteringCoefficient.hpp +0 -42
- package/vendor/include/networkit/global/GlobalClusteringCoefficient.hpp +0 -24
- package/vendor/include/networkit/graph/Attributes.hpp +0 -568
- package/vendor/include/networkit/graph/BFS.hpp +0 -111
- package/vendor/include/networkit/graph/DFS.hpp +0 -71
- package/vendor/include/networkit/graph/Dijkstra.hpp +0 -83
- package/vendor/include/networkit/graph/EdgeIterators.hpp +0 -171
- package/vendor/include/networkit/graph/Graph.hpp +0 -2083
- package/vendor/include/networkit/graph/GraphBuilder.hpp +0 -289
- package/vendor/include/networkit/graph/GraphR.hpp +0 -133
- package/vendor/include/networkit/graph/GraphTools.hpp +0 -589
- package/vendor/include/networkit/graph/GraphW.hpp +0 -1236
- package/vendor/include/networkit/graph/KruskalMSF.hpp +0 -50
- package/vendor/include/networkit/graph/NeighborIterators.hpp +0 -163
- package/vendor/include/networkit/graph/NodeIterators.hpp +0 -127
- package/vendor/include/networkit/graph/PrimMSF.hpp +0 -66
- package/vendor/include/networkit/graph/RandomMaximumSpanningForest.hpp +0 -133
- package/vendor/include/networkit/graph/SpanningForest.hpp +0 -41
- package/vendor/include/networkit/graph/TopologicalSort.hpp +0 -87
- package/vendor/include/networkit/graph/UnionMaximumSpanningForest.hpp +0 -126
- package/vendor/include/networkit/graph/test/GraphBuilderBenchmark.hpp +0 -68
- package/vendor/include/networkit/independentset/IndependentSetFinder.hpp +0 -44
- package/vendor/include/networkit/independentset/Luby.hpp +0 -27
- package/vendor/include/networkit/io/BinaryEdgeListPartitionReader.hpp +0 -45
- package/vendor/include/networkit/io/BinaryEdgeListPartitionWriter.hpp +0 -47
- package/vendor/include/networkit/io/BinaryPartitionReader.hpp +0 -41
- package/vendor/include/networkit/io/BinaryPartitionWriter.hpp +0 -44
- package/vendor/include/networkit/io/CoverReader.hpp +0 -27
- package/vendor/include/networkit/io/CoverWriter.hpp +0 -21
- package/vendor/include/networkit/io/DGSReader.hpp +0 -39
- package/vendor/include/networkit/io/DibapGraphReader.hpp +0 -43
- package/vendor/include/networkit/io/DotGraphWriter.hpp +0 -39
- package/vendor/include/networkit/io/DotPartitionWriter.hpp +0 -23
- package/vendor/include/networkit/io/DynamicGraphReader.hpp +0 -29
- package/vendor/include/networkit/io/EdgeListCoverReader.hpp +0 -35
- package/vendor/include/networkit/io/EdgeListPartitionReader.hpp +0 -43
- package/vendor/include/networkit/io/EdgeListReader.hpp +0 -61
- package/vendor/include/networkit/io/EdgeListWriter.hpp +0 -48
- package/vendor/include/networkit/io/GMLGraphReader.hpp +0 -33
- package/vendor/include/networkit/io/GMLGraphWriter.hpp +0 -33
- package/vendor/include/networkit/io/GraphIO.hpp +0 -52
- package/vendor/include/networkit/io/GraphReader.hpp +0 -40
- package/vendor/include/networkit/io/GraphToolBinaryReader.hpp +0 -71
- package/vendor/include/networkit/io/GraphToolBinaryWriter.hpp +0 -61
- package/vendor/include/networkit/io/GraphWriter.hpp +0 -27
- package/vendor/include/networkit/io/KONECTGraphReader.hpp +0 -44
- package/vendor/include/networkit/io/LineFileReader.hpp +0 -42
- package/vendor/include/networkit/io/METISGraphReader.hpp +0 -36
- package/vendor/include/networkit/io/METISGraphWriter.hpp +0 -29
- package/vendor/include/networkit/io/METISParser.hpp +0 -63
- package/vendor/include/networkit/io/MTXGraphReader.hpp +0 -31
- package/vendor/include/networkit/io/MTXParser.hpp +0 -87
- package/vendor/include/networkit/io/MatrixMarketReader.hpp +0 -33
- package/vendor/include/networkit/io/MatrixReader.hpp +0 -33
- package/vendor/include/networkit/io/MemoryMappedFile.hpp +0 -80
- package/vendor/include/networkit/io/NetworkitBinaryGraph.hpp +0 -144
- package/vendor/include/networkit/io/NetworkitBinaryReader.hpp +0 -50
- package/vendor/include/networkit/io/NetworkitBinaryWriter.hpp +0 -71
- package/vendor/include/networkit/io/PartitionReader.hpp +0 -34
- package/vendor/include/networkit/io/PartitionWriter.hpp +0 -31
- package/vendor/include/networkit/io/RBGraphReader.hpp +0 -37
- package/vendor/include/networkit/io/RBMatrixReader.hpp +0 -49
- package/vendor/include/networkit/io/RasterReader.hpp +0 -40
- package/vendor/include/networkit/io/SNAPEdgeListPartitionReader.hpp +0 -28
- package/vendor/include/networkit/io/SNAPGraphReader.hpp +0 -53
- package/vendor/include/networkit/io/SNAPGraphWriter.hpp +0 -53
- package/vendor/include/networkit/io/ThrillGraphBinaryReader.hpp +0 -44
- package/vendor/include/networkit/io/ThrillGraphBinaryWriter.hpp +0 -27
- package/vendor/include/networkit/layout/LayoutAlgorithm.hpp +0 -39
- package/vendor/include/networkit/linkprediction/AdamicAdarIndex.hpp +0 -37
- package/vendor/include/networkit/linkprediction/AdjustedRandIndex.hpp +0 -36
- package/vendor/include/networkit/linkprediction/AlgebraicDistanceIndex.hpp +0 -70
- package/vendor/include/networkit/linkprediction/CommonNeighborsIndex.hpp +0 -39
- package/vendor/include/networkit/linkprediction/EvaluationMetric.hpp +0 -135
- package/vendor/include/networkit/linkprediction/JaccardIndex.hpp +0 -44
- package/vendor/include/networkit/linkprediction/KatzIndex.hpp +0 -84
- package/vendor/include/networkit/linkprediction/LinkPredictor.hpp +0 -98
- package/vendor/include/networkit/linkprediction/LinkThresholder.hpp +0 -56
- package/vendor/include/networkit/linkprediction/MissingLinksFinder.hpp +0 -60
- package/vendor/include/networkit/linkprediction/NeighborhoodDistanceIndex.hpp +0 -42
- package/vendor/include/networkit/linkprediction/NeighborhoodUtility.hpp +0 -54
- package/vendor/include/networkit/linkprediction/NeighborsMeasureIndex.hpp +0 -48
- package/vendor/include/networkit/linkprediction/PrecisionRecallMetric.hpp +0 -40
- package/vendor/include/networkit/linkprediction/PredictionsSorter.hpp +0 -66
- package/vendor/include/networkit/linkprediction/PreferentialAttachmentIndex.hpp +0 -37
- package/vendor/include/networkit/linkprediction/ROCMetric.hpp +0 -39
- package/vendor/include/networkit/linkprediction/RandomLinkSampler.hpp +0 -47
- package/vendor/include/networkit/linkprediction/ResourceAllocationIndex.hpp +0 -38
- package/vendor/include/networkit/linkprediction/SameCommunityIndex.hpp +0 -50
- package/vendor/include/networkit/linkprediction/TotalNeighborsIndex.hpp +0 -39
- package/vendor/include/networkit/linkprediction/UDegreeIndex.hpp +0 -35
- package/vendor/include/networkit/linkprediction/VDegreeIndex.hpp +0 -35
- package/vendor/include/networkit/matching/BMatcher.hpp +0 -52
- package/vendor/include/networkit/matching/BMatching.hpp +0 -115
- package/vendor/include/networkit/matching/BSuitorMatcher.hpp +0 -170
- package/vendor/include/networkit/matching/DynamicBSuitorMatcher.hpp +0 -78
- package/vendor/include/networkit/matching/LocalMaxMatcher.hpp +0 -35
- package/vendor/include/networkit/matching/Matcher.hpp +0 -55
- package/vendor/include/networkit/matching/Matching.hpp +0 -111
- package/vendor/include/networkit/matching/PathGrowingMatcher.hpp +0 -46
- package/vendor/include/networkit/matching/SuitorMatcher.hpp +0 -62
- package/vendor/include/networkit/numerics/ConjugateGradient.hpp +0 -163
- package/vendor/include/networkit/numerics/GaussSeidelRelaxation.hpp +0 -99
- package/vendor/include/networkit/numerics/LAMG/LAMGSettings.hpp +0 -70
- package/vendor/include/networkit/numerics/LAMG/Lamg.hpp +0 -460
- package/vendor/include/networkit/numerics/LAMG/Level/EliminationStage.hpp +0 -47
- package/vendor/include/networkit/numerics/LAMG/Level/Level.hpp +0 -56
- package/vendor/include/networkit/numerics/LAMG/Level/LevelAggregation.hpp +0 -52
- package/vendor/include/networkit/numerics/LAMG/Level/LevelElimination.hpp +0 -133
- package/vendor/include/networkit/numerics/LAMG/Level/LevelFinest.hpp +0 -28
- package/vendor/include/networkit/numerics/LAMG/LevelHierarchy.hpp +0 -165
- package/vendor/include/networkit/numerics/LAMG/MultiLevelSetup.hpp +0 -1090
- package/vendor/include/networkit/numerics/LAMG/SolverLamg.hpp +0 -316
- package/vendor/include/networkit/numerics/LinearSolver.hpp +0 -151
- package/vendor/include/networkit/numerics/Preconditioner/DiagonalPreconditioner.hpp +0 -61
- package/vendor/include/networkit/numerics/Preconditioner/IdentityPreconditioner.hpp +0 -36
- package/vendor/include/networkit/numerics/Smoother.hpp +0 -37
- package/vendor/include/networkit/overlap/HashingOverlapper.hpp +0 -28
- package/vendor/include/networkit/overlap/Overlapper.hpp +0 -27
- package/vendor/include/networkit/planarity/LeftRightPlanarityCheck.hpp +0 -113
- package/vendor/include/networkit/randomization/Curveball.hpp +0 -49
- package/vendor/include/networkit/randomization/CurveballGlobalTradeGenerator.hpp +0 -39
- package/vendor/include/networkit/randomization/CurveballUniformTradeGenerator.hpp +0 -39
- package/vendor/include/networkit/randomization/DegreePreservingShuffle.hpp +0 -82
- package/vendor/include/networkit/randomization/EdgeSwitching.hpp +0 -157
- package/vendor/include/networkit/randomization/GlobalCurveball.hpp +0 -69
- package/vendor/include/networkit/randomization/GlobalTradeSequence.hpp +0 -303
- package/vendor/include/networkit/reachability/AllSimplePaths.hpp +0 -122
- package/vendor/include/networkit/reachability/ReachableNodes.hpp +0 -83
- package/vendor/include/networkit/scd/ApproximatePageRank.hpp +0 -51
- package/vendor/include/networkit/scd/CliqueDetect.hpp +0 -55
- package/vendor/include/networkit/scd/CombinedSCD.hpp +0 -51
- package/vendor/include/networkit/scd/GCE.hpp +0 -42
- package/vendor/include/networkit/scd/LFMLocal.hpp +0 -54
- package/vendor/include/networkit/scd/LocalT.hpp +0 -40
- package/vendor/include/networkit/scd/LocalTightnessExpansion.hpp +0 -46
- package/vendor/include/networkit/scd/PageRankNibble.hpp +0 -55
- package/vendor/include/networkit/scd/RandomBFS.hpp +0 -33
- package/vendor/include/networkit/scd/SCDGroundTruthComparison.hpp +0 -121
- package/vendor/include/networkit/scd/SelectiveCommunityDetector.hpp +0 -76
- package/vendor/include/networkit/scd/SetConductance.hpp +0 -47
- package/vendor/include/networkit/scd/TCE.hpp +0 -41
- package/vendor/include/networkit/scd/TwoPhaseL.hpp +0 -40
- package/vendor/include/networkit/scoring/EdgeScoring.hpp +0 -44
- package/vendor/include/networkit/scoring/ModularityScoring.hpp +0 -79
- package/vendor/include/networkit/simulation/EpidemicSimulationSEIR.hpp +0 -59
- package/vendor/include/networkit/sparsification/ChanceCorrectedTriangleScore.hpp +0 -28
- package/vendor/include/networkit/sparsification/ForestFireScore.hpp +0 -34
- package/vendor/include/networkit/sparsification/GlobalThresholdFilter.hpp +0 -40
- package/vendor/include/networkit/sparsification/LocalDegreeScore.hpp +0 -30
- package/vendor/include/networkit/sparsification/LocalFilterScore.hpp +0 -124
- package/vendor/include/networkit/sparsification/LocalSimilarityScore.hpp +0 -63
- package/vendor/include/networkit/sparsification/MultiscaleScore.hpp +0 -38
- package/vendor/include/networkit/sparsification/RandomEdgeScore.hpp +0 -33
- package/vendor/include/networkit/sparsification/RandomNodeEdgeScore.hpp +0 -29
- package/vendor/include/networkit/sparsification/SCANStructuralSimilarityScore.hpp +0 -23
- package/vendor/include/networkit/sparsification/SimmelianOverlapScore.hpp +0 -35
- package/vendor/include/networkit/sparsification/SimmelianScore.hpp +0 -92
- package/vendor/include/networkit/sparsification/Sparsifiers.hpp +0 -166
- package/vendor/include/networkit/structures/Cover.hpp +0 -248
- package/vendor/include/networkit/structures/LocalCommunity.hpp +0 -363
- package/vendor/include/networkit/structures/Partition.hpp +0 -335
- package/vendor/include/networkit/structures/UnionFind.hpp +0 -66
- package/vendor/include/networkit/viz/GraphLayoutAlgorithm.hpp +0 -157
- package/vendor/include/networkit/viz/MaxentStress.hpp +0 -346
- package/vendor/include/networkit/viz/Octree.hpp +0 -428
- package/vendor/include/networkit/viz/PivotMDS.hpp +0 -63
- package/vendor/include/networkit/viz/Point.hpp +0 -415
- package/vendor/include/networkit/viz/PostscriptWriter.hpp +0 -78
- package/vendor/include/tlx/algorithm/exclusive_scan.hpp +0 -56
- package/vendor/include/tlx/algorithm/is_sorted_cmp.hpp +0 -56
- package/vendor/include/tlx/algorithm/merge_advance.hpp +0 -177
- package/vendor/include/tlx/algorithm/merge_combine.hpp +0 -76
- package/vendor/include/tlx/algorithm/multisequence_partition.hpp +0 -346
- package/vendor/include/tlx/algorithm/multisequence_selection.hpp +0 -351
- package/vendor/include/tlx/algorithm/multiway_merge.hpp +0 -1385
- package/vendor/include/tlx/algorithm/multiway_merge_splitting.hpp +0 -257
- package/vendor/include/tlx/algorithm/parallel_multiway_merge.hpp +0 -408
- package/vendor/include/tlx/algorithm/random_bipartition_shuffle.hpp +0 -116
- package/vendor/include/tlx/algorithm.hpp +0 -36
- package/vendor/include/tlx/allocator_base.hpp +0 -100
- package/vendor/include/tlx/backtrace.hpp +0 -54
- package/vendor/include/tlx/cmdline_parser.hpp +0 -498
- package/vendor/include/tlx/container/btree.hpp +0 -3977
- package/vendor/include/tlx/container/btree_map.hpp +0 -634
- package/vendor/include/tlx/container/btree_multimap.hpp +0 -627
- package/vendor/include/tlx/container/btree_multiset.hpp +0 -612
- package/vendor/include/tlx/container/btree_set.hpp +0 -612
- package/vendor/include/tlx/container/d_ary_addressable_int_heap.hpp +0 -416
- package/vendor/include/tlx/container/d_ary_heap.hpp +0 -311
- package/vendor/include/tlx/container/loser_tree.hpp +0 -1009
- package/vendor/include/tlx/container/lru_cache.hpp +0 -319
- package/vendor/include/tlx/container/radix_heap.hpp +0 -735
- package/vendor/include/tlx/container/ring_buffer.hpp +0 -428
- package/vendor/include/tlx/container/simple_vector.hpp +0 -304
- package/vendor/include/tlx/container/splay_tree.hpp +0 -399
- package/vendor/include/tlx/container/string_view.hpp +0 -805
- package/vendor/include/tlx/container.hpp +0 -40
- package/vendor/include/tlx/counting_ptr.hpp +0 -522
- package/vendor/include/tlx/define/attribute_always_inline.hpp +0 -34
- package/vendor/include/tlx/define/attribute_fallthrough.hpp +0 -36
- package/vendor/include/tlx/define/attribute_format_printf.hpp +0 -34
- package/vendor/include/tlx/define/attribute_packed.hpp +0 -34
- package/vendor/include/tlx/define/attribute_warn_unused_result.hpp +0 -34
- package/vendor/include/tlx/define/constexpr.hpp +0 -31
- package/vendor/include/tlx/define/deprecated.hpp +0 -39
- package/vendor/include/tlx/define/endian.hpp +0 -49
- package/vendor/include/tlx/define/likely.hpp +0 -33
- package/vendor/include/tlx/define/visibility_hidden.hpp +0 -34
- package/vendor/include/tlx/define.hpp +0 -36
- package/vendor/include/tlx/delegate.hpp +0 -524
- package/vendor/include/tlx/die/core.hpp +0 -311
- package/vendor/include/tlx/die.hpp +0 -106
- package/vendor/include/tlx/digest/md5.hpp +0 -81
- package/vendor/include/tlx/digest/sha1.hpp +0 -81
- package/vendor/include/tlx/digest/sha256.hpp +0 -81
- package/vendor/include/tlx/digest/sha512.hpp +0 -81
- package/vendor/include/tlx/digest.hpp +0 -30
- package/vendor/include/tlx/logger/all.hpp +0 -33
- package/vendor/include/tlx/logger/array.hpp +0 -43
- package/vendor/include/tlx/logger/core.hpp +0 -287
- package/vendor/include/tlx/logger/deque.hpp +0 -42
- package/vendor/include/tlx/logger/map.hpp +0 -65
- package/vendor/include/tlx/logger/set.hpp +0 -60
- package/vendor/include/tlx/logger/tuple.hpp +0 -66
- package/vendor/include/tlx/logger/unordered_map.hpp +0 -68
- package/vendor/include/tlx/logger/unordered_set.hpp +0 -64
- package/vendor/include/tlx/logger/wrap_unprintable.hpp +0 -75
- package/vendor/include/tlx/logger.hpp +0 -44
- package/vendor/include/tlx/math/abs_diff.hpp +0 -35
- package/vendor/include/tlx/math/aggregate.hpp +0 -231
- package/vendor/include/tlx/math/aggregate_min_max.hpp +0 -116
- package/vendor/include/tlx/math/bswap.hpp +0 -148
- package/vendor/include/tlx/math/bswap_be.hpp +0 -79
- package/vendor/include/tlx/math/bswap_le.hpp +0 -79
- package/vendor/include/tlx/math/clz.hpp +0 -174
- package/vendor/include/tlx/math/ctz.hpp +0 -174
- package/vendor/include/tlx/math/div_ceil.hpp +0 -36
- package/vendor/include/tlx/math/ffs.hpp +0 -123
- package/vendor/include/tlx/math/integer_log2.hpp +0 -189
- package/vendor/include/tlx/math/is_power_of_two.hpp +0 -74
- package/vendor/include/tlx/math/polynomial_regression.hpp +0 -243
- package/vendor/include/tlx/math/popcount.hpp +0 -173
- package/vendor/include/tlx/math/power_to_the.hpp +0 -44
- package/vendor/include/tlx/math/rol.hpp +0 -112
- package/vendor/include/tlx/math/ror.hpp +0 -112
- package/vendor/include/tlx/math/round_to_power_of_two.hpp +0 -121
- package/vendor/include/tlx/math/round_up.hpp +0 -36
- package/vendor/include/tlx/math/sgn.hpp +0 -38
- package/vendor/include/tlx/math.hpp +0 -46
- package/vendor/include/tlx/meta/apply_tuple.hpp +0 -55
- package/vendor/include/tlx/meta/call_for_range.hpp +0 -78
- package/vendor/include/tlx/meta/call_foreach.hpp +0 -60
- package/vendor/include/tlx/meta/call_foreach_tuple.hpp +0 -60
- package/vendor/include/tlx/meta/call_foreach_tuple_with_index.hpp +0 -61
- package/vendor/include/tlx/meta/call_foreach_with_index.hpp +0 -64
- package/vendor/include/tlx/meta/enable_if.hpp +0 -37
- package/vendor/include/tlx/meta/fold_left.hpp +0 -63
- package/vendor/include/tlx/meta/fold_left_tuple.hpp +0 -60
- package/vendor/include/tlx/meta/fold_right.hpp +0 -63
- package/vendor/include/tlx/meta/fold_right_tuple.hpp +0 -60
- package/vendor/include/tlx/meta/function_chain.hpp +0 -197
- package/vendor/include/tlx/meta/function_stack.hpp +0 -189
- package/vendor/include/tlx/meta/has_member.hpp +0 -80
- package/vendor/include/tlx/meta/has_method.hpp +0 -117
- package/vendor/include/tlx/meta/index_sequence.hpp +0 -66
- package/vendor/include/tlx/meta/is_std_array.hpp +0 -40
- package/vendor/include/tlx/meta/is_std_pair.hpp +0 -39
- package/vendor/include/tlx/meta/is_std_tuple.hpp +0 -39
- package/vendor/include/tlx/meta/is_std_vector.hpp +0 -39
- package/vendor/include/tlx/meta/log2.hpp +0 -101
- package/vendor/include/tlx/meta/no_operation.hpp +0 -55
- package/vendor/include/tlx/meta/static_index.hpp +0 -42
- package/vendor/include/tlx/meta/vexpand.hpp +0 -34
- package/vendor/include/tlx/meta/vmap_for_range.hpp +0 -84
- package/vendor/include/tlx/meta/vmap_foreach.hpp +0 -63
- package/vendor/include/tlx/meta/vmap_foreach_tuple.hpp +0 -59
- package/vendor/include/tlx/meta/vmap_foreach_tuple_with_index.hpp +0 -62
- package/vendor/include/tlx/meta/vmap_foreach_with_index.hpp +0 -70
- package/vendor/include/tlx/meta.hpp +0 -55
- package/vendor/include/tlx/multi_timer.hpp +0 -148
- package/vendor/include/tlx/port/setenv.hpp +0 -31
- package/vendor/include/tlx/port.hpp +0 -27
- package/vendor/include/tlx/semaphore.hpp +0 -119
- package/vendor/include/tlx/simple_vector.hpp +0 -20
- package/vendor/include/tlx/siphash.hpp +0 -282
- package/vendor/include/tlx/sort/networks/best.hpp +0 -611
- package/vendor/include/tlx/sort/networks/bose_nelson.hpp +0 -412
- package/vendor/include/tlx/sort/networks/bose_nelson_parameter.hpp +0 -507
- package/vendor/include/tlx/sort/networks/cswap.hpp +0 -60
- package/vendor/include/tlx/sort/parallel_mergesort.hpp +0 -398
- package/vendor/include/tlx/sort/strings/insertion_sort.hpp +0 -232
- package/vendor/include/tlx/sort/strings/multikey_quicksort.hpp +0 -185
- package/vendor/include/tlx/sort/strings/parallel_sample_sort.hpp +0 -1647
- package/vendor/include/tlx/sort/strings/radix_sort.hpp +0 -934
- package/vendor/include/tlx/sort/strings/sample_sort_tools.hpp +0 -756
- package/vendor/include/tlx/sort/strings/string_ptr.hpp +0 -426
- package/vendor/include/tlx/sort/strings/string_set.hpp +0 -800
- package/vendor/include/tlx/sort/strings.hpp +0 -329
- package/vendor/include/tlx/sort/strings_parallel.hpp +0 -325
- package/vendor/include/tlx/sort.hpp +0 -29
- package/vendor/include/tlx/stack_allocator.hpp +0 -226
- package/vendor/include/tlx/string/appendline.hpp +0 -35
- package/vendor/include/tlx/string/base64.hpp +0 -87
- package/vendor/include/tlx/string/bitdump.hpp +0 -139
- package/vendor/include/tlx/string/compare_icase.hpp +0 -42
- package/vendor/include/tlx/string/contains.hpp +0 -36
- package/vendor/include/tlx/string/contains_word.hpp +0 -42
- package/vendor/include/tlx/string/ends_with.hpp +0 -79
- package/vendor/include/tlx/string/equal_icase.hpp +0 -42
- package/vendor/include/tlx/string/erase_all.hpp +0 -70
- package/vendor/include/tlx/string/escape_html.hpp +0 -34
- package/vendor/include/tlx/string/escape_uri.hpp +0 -34
- package/vendor/include/tlx/string/expand_environment_variables.hpp +0 -49
- package/vendor/include/tlx/string/extract_between.hpp +0 -40
- package/vendor/include/tlx/string/format_iec_units.hpp +0 -32
- package/vendor/include/tlx/string/format_si_iec_units.hpp +0 -19
- package/vendor/include/tlx/string/format_si_units.hpp +0 -32
- package/vendor/include/tlx/string/hash_djb2.hpp +0 -87
- package/vendor/include/tlx/string/hash_sdbm.hpp +0 -86
- package/vendor/include/tlx/string/hexdump.hpp +0 -154
- package/vendor/include/tlx/string/index_of.hpp +0 -56
- package/vendor/include/tlx/string/join.hpp +0 -65
- package/vendor/include/tlx/string/join_generic.hpp +0 -89
- package/vendor/include/tlx/string/join_quoted.hpp +0 -46
- package/vendor/include/tlx/string/less_icase.hpp +0 -64
- package/vendor/include/tlx/string/levenshtein.hpp +0 -193
- package/vendor/include/tlx/string/pad.hpp +0 -39
- package/vendor/include/tlx/string/parse_si_iec_units.hpp +0 -46
- package/vendor/include/tlx/string/parse_uri.hpp +0 -66
- package/vendor/include/tlx/string/parse_uri_form_data.hpp +0 -136
- package/vendor/include/tlx/string/replace.hpp +0 -141
- package/vendor/include/tlx/string/split.hpp +0 -170
- package/vendor/include/tlx/string/split_quoted.hpp +0 -49
- package/vendor/include/tlx/string/split_view.hpp +0 -218
- package/vendor/include/tlx/string/split_words.hpp +0 -53
- package/vendor/include/tlx/string/ssprintf.hpp +0 -45
- package/vendor/include/tlx/string/ssprintf_generic.hpp +0 -95
- package/vendor/include/tlx/string/starts_with.hpp +0 -44
- package/vendor/include/tlx/string/to_lower.hpp +0 -47
- package/vendor/include/tlx/string/to_upper.hpp +0 -47
- package/vendor/include/tlx/string/trim.hpp +0 -298
- package/vendor/include/tlx/string/union_words.hpp +0 -33
- package/vendor/include/tlx/string/word_wrap.hpp +0 -35
- package/vendor/include/tlx/string.hpp +0 -68
- package/vendor/include/tlx/thread_barrier_mutex.hpp +0 -109
- package/vendor/include/tlx/thread_barrier_spin.hpp +0 -127
- package/vendor/include/tlx/thread_pool.hpp +0 -151
- package/vendor/include/tlx/timestamp.hpp +0 -23
- package/vendor/include/tlx/unused.hpp +0 -28
- package/vendor/include/tlx/vector_free.hpp +0 -30
- package/vendor/include/tlx/version.hpp +0 -49
- package/vendor/include/ttmath/ttmath.h +0 -2881
- package/vendor/include/ttmath/ttmathbig.h +0 -6111
- package/vendor/include/ttmath/ttmathdec.h +0 -419
- package/vendor/include/ttmath/ttmathint.h +0 -1923
- package/vendor/include/ttmath/ttmathmisc.h +0 -250
- package/vendor/include/ttmath/ttmathobjects.h +0 -812
- package/vendor/include/ttmath/ttmathparser.h +0 -2791
- package/vendor/include/ttmath/ttmaththreads.h +0 -252
- package/vendor/include/ttmath/ttmathtypes.h +0 -707
- package/vendor/include/ttmath/ttmathuint.h +0 -4190
- package/vendor/include/ttmath/ttmathuint_noasm.h +0 -1038
- package/vendor/include/ttmath/ttmathuint_x86.h +0 -1620
- package/vendor/include/ttmath/ttmathuint_x86_64.h +0 -1177
- package/vendor/lib/cmake/tlx/tlx-config.cmake +0 -51
- package/vendor/lib/cmake/tlx/tlx-targets-release.cmake +0 -19
- package/vendor/lib/cmake/tlx/tlx-targets.cmake +0 -106
- package/vendor/lib/cmake/tlx/tlx-version.cmake +0 -11
- package/vendor/lib/libtlx.a +0 -0
- package/vendor/lib/pkgconfig/networkit.pc +0 -11
- package/vendor/lib/pkgconfig/tlx.pc +0 -11
|
@@ -1,857 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* QuadNode.hpp
|
|
3
|
-
*
|
|
4
|
-
* Created on: 21.05.2014
|
|
5
|
-
* Author: Moritz v. Looz
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
#ifndef NETWORKIT_GENERATORS_QUADTREE_QUAD_NODE_HPP_
|
|
9
|
-
#define NETWORKIT_GENERATORS_QUADTREE_QUAD_NODE_HPP_
|
|
10
|
-
|
|
11
|
-
#include <algorithm>
|
|
12
|
-
#include <cassert>
|
|
13
|
-
#include <functional>
|
|
14
|
-
#include <vector>
|
|
15
|
-
|
|
16
|
-
#include <networkit/auxiliary/Log.hpp>
|
|
17
|
-
#include <networkit/auxiliary/Parallel.hpp>
|
|
18
|
-
#include <networkit/geometric/HyperbolicSpace.hpp>
|
|
19
|
-
|
|
20
|
-
using std::cos;
|
|
21
|
-
using std::max;
|
|
22
|
-
using std::min;
|
|
23
|
-
using std::vector;
|
|
24
|
-
|
|
25
|
-
namespace NetworKit {
|
|
26
|
-
|
|
27
|
-
template <class T, bool poincare = true>
|
|
28
|
-
class QuadNode final {
|
|
29
|
-
friend class QuadTreeGTest;
|
|
30
|
-
|
|
31
|
-
double leftAngle;
|
|
32
|
-
double minR;
|
|
33
|
-
double rightAngle;
|
|
34
|
-
double maxR;
|
|
35
|
-
Point2DWithIndex<double> a, b, c, d;
|
|
36
|
-
unsigned capacity;
|
|
37
|
-
static constexpr unsigned coarsenLimit = 4;
|
|
38
|
-
count subTreeSize;
|
|
39
|
-
std::vector<T> content;
|
|
40
|
-
std::vector<Point2DWithIndex<double>> positions;
|
|
41
|
-
std::vector<double> angles;
|
|
42
|
-
std::vector<double> radii;
|
|
43
|
-
bool isLeaf;
|
|
44
|
-
bool splitTheoretical;
|
|
45
|
-
double alpha;
|
|
46
|
-
double balance;
|
|
47
|
-
index ID;
|
|
48
|
-
double lowerBoundR;
|
|
49
|
-
|
|
50
|
-
public:
|
|
51
|
-
std::vector<QuadNode> children;
|
|
52
|
-
|
|
53
|
-
QuadNode() {
|
|
54
|
-
// This should never be called.
|
|
55
|
-
leftAngle = 0;
|
|
56
|
-
rightAngle = 0;
|
|
57
|
-
minR = 0;
|
|
58
|
-
maxR = 0;
|
|
59
|
-
capacity = 20;
|
|
60
|
-
isLeaf = true;
|
|
61
|
-
subTreeSize = 0;
|
|
62
|
-
balance = 0.5;
|
|
63
|
-
splitTheoretical = false;
|
|
64
|
-
alpha = 1;
|
|
65
|
-
lowerBoundR = maxR;
|
|
66
|
-
ID = 0;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Construct a QuadNode for polar coordinates.
|
|
71
|
-
*
|
|
72
|
-
* @param leftAngle Minimal angular coordinate of region, in radians from 0 to 2\pi
|
|
73
|
-
* @param minR Minimal radial coordinate of region, between 0 and 1
|
|
74
|
-
* @param rightAngle Maximal angular coordinate of region, in radians from 0 to 2\pi
|
|
75
|
-
* @param maxR Maximal radial coordinate of region, between 0 and 1
|
|
76
|
-
* @param capacity Number of points a leaf cell can store before splitting
|
|
77
|
-
* @param minDiameter Minimal diameter of a quadtree node. If the node is already smaller, don't
|
|
78
|
-
* split even if over capacity. Default is 0
|
|
79
|
-
* @param splitTheoretical Whether to split in a theoretically optimal way or in a way to
|
|
80
|
-
* decrease measured running times
|
|
81
|
-
* @param alpha dispersion Parameter of the point distribution. Only has an effect if
|
|
82
|
-
* theoretical split is true
|
|
83
|
-
* @param diagnostics Count how many necessary and unnecessary comparisons happen in leaf cells?
|
|
84
|
-
* Will cause race condition and false sharing in parallel use
|
|
85
|
-
*
|
|
86
|
-
*/
|
|
87
|
-
QuadNode(double leftAngle, double minR, double rightAngle, double maxR,
|
|
88
|
-
unsigned capacity = 1000, bool splitTheoretical = false, double alpha = 1,
|
|
89
|
-
double balance = 0.5) {
|
|
90
|
-
if (balance <= 0 || balance >= 1)
|
|
91
|
-
throw std::runtime_error("Quadtree balance parameter must be between 0 and 1.");
|
|
92
|
-
if (poincare && maxR > 1)
|
|
93
|
-
throw std::runtime_error(
|
|
94
|
-
"The Poincare disk has a radius of 1, cannot create quadtree larger than that!");
|
|
95
|
-
this->leftAngle = leftAngle;
|
|
96
|
-
this->minR = minR;
|
|
97
|
-
this->maxR = maxR;
|
|
98
|
-
this->rightAngle = rightAngle;
|
|
99
|
-
this->a = HyperbolicSpace::polarToCartesian(leftAngle, minR);
|
|
100
|
-
this->b = HyperbolicSpace::polarToCartesian(rightAngle, minR);
|
|
101
|
-
this->c = HyperbolicSpace::polarToCartesian(rightAngle, maxR);
|
|
102
|
-
this->d = HyperbolicSpace::polarToCartesian(leftAngle, maxR);
|
|
103
|
-
this->capacity = capacity;
|
|
104
|
-
this->alpha = alpha;
|
|
105
|
-
this->splitTheoretical = splitTheoretical;
|
|
106
|
-
this->balance = balance;
|
|
107
|
-
this->lowerBoundR = maxR;
|
|
108
|
-
this->ID = 0;
|
|
109
|
-
isLeaf = true;
|
|
110
|
-
subTreeSize = 0;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
void split() {
|
|
114
|
-
assert(isLeaf);
|
|
115
|
-
// heavy lifting: split up!
|
|
116
|
-
double middleAngle = (rightAngle - leftAngle) / 2 + leftAngle;
|
|
117
|
-
/**
|
|
118
|
-
* we want to make sure the space is evenly divided to obtain a balanced tree
|
|
119
|
-
* Simply halving the radius will cause a larger space for the outer Quadnode, resulting in
|
|
120
|
-
* an unbalanced tree
|
|
121
|
-
*/
|
|
122
|
-
|
|
123
|
-
double middleR;
|
|
124
|
-
|
|
125
|
-
if (poincare) {
|
|
126
|
-
if (splitTheoretical) {
|
|
127
|
-
double hyperbolicOuter = HyperbolicSpace::EuclideanRadiusToHyperbolic(maxR);
|
|
128
|
-
double hyperbolicInner = HyperbolicSpace::EuclideanRadiusToHyperbolic(minR);
|
|
129
|
-
double hyperbolicMiddle =
|
|
130
|
-
std::acosh((1 - balance) * std::cosh(alpha * hyperbolicOuter)
|
|
131
|
-
+ balance * std::cosh(alpha * hyperbolicInner))
|
|
132
|
-
/ alpha;
|
|
133
|
-
middleR = HyperbolicSpace::hyperbolicRadiusToEuclidean(hyperbolicMiddle);
|
|
134
|
-
} else {
|
|
135
|
-
double nom = maxR - minR;
|
|
136
|
-
double denom = std::pow((1 - maxR * maxR) / (1 - minR * minR), 0.5) + 1;
|
|
137
|
-
middleR = nom / denom + minR;
|
|
138
|
-
}
|
|
139
|
-
} else {
|
|
140
|
-
middleR = std::acosh((1 - balance) * std::cosh(alpha * maxR)
|
|
141
|
-
+ balance * std::cosh(alpha * minR))
|
|
142
|
-
/ alpha;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
assert(middleR < maxR);
|
|
146
|
-
assert(middleR > minR);
|
|
147
|
-
|
|
148
|
-
QuadNode<index, poincare> southwest(leftAngle, minR, middleAngle, middleR, capacity,
|
|
149
|
-
splitTheoretical, alpha, balance);
|
|
150
|
-
QuadNode<index, poincare> southeast(middleAngle, minR, rightAngle, middleR, capacity,
|
|
151
|
-
splitTheoretical, alpha, balance);
|
|
152
|
-
QuadNode<index, poincare> northwest(leftAngle, middleR, middleAngle, maxR, capacity,
|
|
153
|
-
splitTheoretical, alpha, balance);
|
|
154
|
-
QuadNode<index, poincare> northeast(middleAngle, middleR, rightAngle, maxR, capacity,
|
|
155
|
-
splitTheoretical, alpha, balance);
|
|
156
|
-
children = {southwest, southeast, northwest, northeast};
|
|
157
|
-
isLeaf = false;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
/**
|
|
161
|
-
* Add a point at polar coordinates (angle, R) with content input. May split node if capacity is
|
|
162
|
-
* full
|
|
163
|
-
*
|
|
164
|
-
* @param input arbitrary content, in our case an index
|
|
165
|
-
* @param angle angular coordinate of point, between 0 and 2 pi.
|
|
166
|
-
* @param R radial coordinate of point, between 0 and 1.
|
|
167
|
-
*/
|
|
168
|
-
void addContent(T input, double angle, double R) {
|
|
169
|
-
assert(this->responsible(angle, R));
|
|
170
|
-
if (lowerBoundR > R)
|
|
171
|
-
lowerBoundR = R;
|
|
172
|
-
if (isLeaf) {
|
|
173
|
-
if (content.size() + 1 < capacity) {
|
|
174
|
-
content.push_back(input);
|
|
175
|
-
angles.push_back(angle);
|
|
176
|
-
radii.push_back(R);
|
|
177
|
-
Point2DWithIndex<double> pos = HyperbolicSpace::polarToCartesian(angle, R);
|
|
178
|
-
positions.push_back(pos);
|
|
179
|
-
} else {
|
|
180
|
-
|
|
181
|
-
split();
|
|
182
|
-
|
|
183
|
-
for (index i = 0; i < content.size(); i++) {
|
|
184
|
-
this->addContent(content[i], angles[i], radii[i]);
|
|
185
|
-
}
|
|
186
|
-
assert(subTreeSize == content.size()); // we have added everything twice
|
|
187
|
-
subTreeSize = content.size();
|
|
188
|
-
content.clear();
|
|
189
|
-
angles.clear();
|
|
190
|
-
radii.clear();
|
|
191
|
-
positions.clear();
|
|
192
|
-
this->addContent(input, angle, R);
|
|
193
|
-
}
|
|
194
|
-
} else {
|
|
195
|
-
assert(!children.empty());
|
|
196
|
-
for (index i = 0; i < children.size(); i++) {
|
|
197
|
-
if (children[i].responsible(angle, R)) {
|
|
198
|
-
children[i].addContent(input, angle, R);
|
|
199
|
-
break;
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
subTreeSize++;
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
/**
|
|
207
|
-
* Remove content at polar coordinates (angle, R). May cause coarsening of the quadtree
|
|
208
|
-
*
|
|
209
|
-
* @param input Content to be removed
|
|
210
|
-
* @param angle Angular coordinate
|
|
211
|
-
* @param R Radial coordinate
|
|
212
|
-
*
|
|
213
|
-
* @return True if content was found and removed, false otherwise
|
|
214
|
-
*/
|
|
215
|
-
bool removeContent(T input, double angle, double R) {
|
|
216
|
-
if (!responsible(angle, R))
|
|
217
|
-
return false;
|
|
218
|
-
if (isLeaf) {
|
|
219
|
-
index i = 0;
|
|
220
|
-
for (; i < content.size(); i++) {
|
|
221
|
-
if (content[i] == input)
|
|
222
|
-
break;
|
|
223
|
-
}
|
|
224
|
-
if (i < content.size()) {
|
|
225
|
-
assert(angles[i] == angle);
|
|
226
|
-
assert(radii[i] == R);
|
|
227
|
-
// remove element
|
|
228
|
-
content.erase(content.begin() + i);
|
|
229
|
-
positions.erase(positions.begin() + i);
|
|
230
|
-
angles.erase(angles.begin() + i);
|
|
231
|
-
radii.erase(radii.begin() + i);
|
|
232
|
-
return true;
|
|
233
|
-
} else {
|
|
234
|
-
return false;
|
|
235
|
-
}
|
|
236
|
-
} else {
|
|
237
|
-
bool removed = false;
|
|
238
|
-
bool allLeaves = true;
|
|
239
|
-
assert(!children.empty());
|
|
240
|
-
for (index i = 0; i < children.size(); i++) {
|
|
241
|
-
if (!children[i].isLeaf)
|
|
242
|
-
allLeaves = false;
|
|
243
|
-
if (children[i].removeContent(input, angle, R)) {
|
|
244
|
-
assert(!removed);
|
|
245
|
-
removed = true;
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
if (removed)
|
|
249
|
-
subTreeSize--;
|
|
250
|
-
// coarsen?
|
|
251
|
-
if (removed && allLeaves && size() < coarsenLimit) {
|
|
252
|
-
// coarsen!!
|
|
253
|
-
// why not assert empty containers and then insert directly?
|
|
254
|
-
vector<T> allContent;
|
|
255
|
-
vector<Point2DWithIndex<double>> allPositions;
|
|
256
|
-
vector<double> allAngles;
|
|
257
|
-
vector<double> allRadii;
|
|
258
|
-
for (index i = 0; i < children.size(); i++) {
|
|
259
|
-
allContent.insert(allContent.end(), children[i].content.begin(),
|
|
260
|
-
children[i].content.end());
|
|
261
|
-
allPositions.insert(allPositions.end(), children[i].positions.begin(),
|
|
262
|
-
children[i].positions.end());
|
|
263
|
-
allAngles.insert(allAngles.end(), children[i].angles.begin(),
|
|
264
|
-
children[i].angles.end());
|
|
265
|
-
allRadii.insert(allRadii.end(), children[i].radii.begin(),
|
|
266
|
-
children[i].radii.end());
|
|
267
|
-
}
|
|
268
|
-
assert(subTreeSize == allContent.size());
|
|
269
|
-
assert(subTreeSize == allPositions.size());
|
|
270
|
-
assert(subTreeSize == allAngles.size());
|
|
271
|
-
assert(subTreeSize == allRadii.size());
|
|
272
|
-
children.clear();
|
|
273
|
-
content.swap(allContent);
|
|
274
|
-
positions.swap(allPositions);
|
|
275
|
-
angles.swap(allAngles);
|
|
276
|
-
radii.swap(allRadii);
|
|
277
|
-
isLeaf = true;
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
return removed;
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
/**
|
|
285
|
-
* Check whether the region managed by this node lies outside of an Euclidean circle.
|
|
286
|
-
*
|
|
287
|
-
* @param query Center of the Euclidean query circle, given in Cartesian coordinates
|
|
288
|
-
* @param radius Radius of the Euclidean query circle
|
|
289
|
-
*
|
|
290
|
-
* @return True if the region managed by this node lies completely outside of the circle
|
|
291
|
-
*/
|
|
292
|
-
bool outOfReach(Point2DWithIndex<double> query, double radius) const {
|
|
293
|
-
double phi, r;
|
|
294
|
-
HyperbolicSpace::cartesianToPolar(query, phi, r);
|
|
295
|
-
if (responsible(phi, r))
|
|
296
|
-
return false;
|
|
297
|
-
|
|
298
|
-
// if using native coordinates, call distance calculation
|
|
299
|
-
if (!poincare)
|
|
300
|
-
return hyperbolicDistances(phi, r).first > radius;
|
|
301
|
-
|
|
302
|
-
// get four edge points
|
|
303
|
-
double topDistance, bottomDistance, leftDistance, rightDistance;
|
|
304
|
-
|
|
305
|
-
if (phi < leftAngle || phi > rightAngle) {
|
|
306
|
-
topDistance = std::min(c.distance(query), d.distance(query));
|
|
307
|
-
} else {
|
|
308
|
-
topDistance = std::abs(r - maxR);
|
|
309
|
-
}
|
|
310
|
-
if (topDistance <= radius)
|
|
311
|
-
return false;
|
|
312
|
-
if (phi < leftAngle || phi > rightAngle) {
|
|
313
|
-
bottomDistance = std::min(a.distance(query), b.distance(query));
|
|
314
|
-
} else {
|
|
315
|
-
bottomDistance = std::abs(r - minR);
|
|
316
|
-
}
|
|
317
|
-
if (bottomDistance <= radius)
|
|
318
|
-
return false;
|
|
319
|
-
|
|
320
|
-
double minDistanceR = r * std::cos(std::abs(phi - leftAngle));
|
|
321
|
-
if (minDistanceR > minR && minDistanceR < maxR) {
|
|
322
|
-
leftDistance = query.distance(HyperbolicSpace::polarToCartesian(phi, minDistanceR));
|
|
323
|
-
} else {
|
|
324
|
-
leftDistance = std::min(a.distance(query), d.distance(query));
|
|
325
|
-
}
|
|
326
|
-
if (leftDistance <= radius)
|
|
327
|
-
return false;
|
|
328
|
-
|
|
329
|
-
minDistanceR = r * std::cos(std::abs(phi - rightAngle));
|
|
330
|
-
if (minDistanceR > minR && minDistanceR < maxR) {
|
|
331
|
-
rightDistance = query.distance(HyperbolicSpace::polarToCartesian(phi, minDistanceR));
|
|
332
|
-
} else {
|
|
333
|
-
rightDistance = std::min(b.distance(query), c.distance(query));
|
|
334
|
-
}
|
|
335
|
-
if (rightDistance <= radius)
|
|
336
|
-
return false;
|
|
337
|
-
return true;
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
/**
|
|
341
|
-
* Check whether the region managed by this node lies outside of an Euclidean circle.
|
|
342
|
-
* Functionality is the same as in the method above, but it takes polar coordinates instead of
|
|
343
|
-
* Cartesian ones
|
|
344
|
-
*
|
|
345
|
-
* @param angle_c Angular coordinate of the Euclidean query circle's center
|
|
346
|
-
* @param r_c Radial coordinate of the Euclidean query circle's center
|
|
347
|
-
* @param radius Radius of the Euclidean query circle
|
|
348
|
-
*
|
|
349
|
-
* @return True if the region managed by this node lies completely outside of the circle
|
|
350
|
-
*/
|
|
351
|
-
bool outOfReach(double angle_c, double r_c, double radius) const {
|
|
352
|
-
if (responsible(angle_c, r_c))
|
|
353
|
-
return false;
|
|
354
|
-
Point2DWithIndex<double> query = HyperbolicSpace::polarToCartesian(angle_c, r_c);
|
|
355
|
-
return outOfReach(query, radius);
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
/**
|
|
359
|
-
* @param phi Angular coordinate of query point
|
|
360
|
-
* @param r_h radial coordinate of query point in poincare disk
|
|
361
|
-
*/
|
|
362
|
-
std::pair<double, double> hyperbolicDistances(double phi, double r) const {
|
|
363
|
-
double minRHyper, maxRHyper, r_h;
|
|
364
|
-
if (poincare) {
|
|
365
|
-
minRHyper = HyperbolicSpace::EuclideanRadiusToHyperbolic(this->minR);
|
|
366
|
-
maxRHyper = HyperbolicSpace::EuclideanRadiusToHyperbolic(this->maxR);
|
|
367
|
-
r_h = HyperbolicSpace::EuclideanRadiusToHyperbolic(r);
|
|
368
|
-
} else {
|
|
369
|
-
minRHyper = this->minR;
|
|
370
|
-
maxRHyper = this->maxR;
|
|
371
|
-
r_h = r;
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
double coshr = std::cosh(r_h);
|
|
375
|
-
double sinhr = std::sinh(r_h);
|
|
376
|
-
double coshMinR = std::cosh(minRHyper);
|
|
377
|
-
double coshMaxR = std::cosh(maxRHyper);
|
|
378
|
-
double sinhMinR = std::sinh(minRHyper);
|
|
379
|
-
double sinhMaxR = std::sinh(maxRHyper);
|
|
380
|
-
double cosDiffLeft = std::cos(phi - leftAngle);
|
|
381
|
-
double cosDiffRight = std::cos(phi - rightAngle);
|
|
382
|
-
|
|
383
|
-
/**
|
|
384
|
-
* If the query point is not within the quadnode, the distance minimum is on the border.
|
|
385
|
-
* Need to check whether extremum is between corners:
|
|
386
|
-
*/
|
|
387
|
-
|
|
388
|
-
double coshMinDistance, coshMaxDistance;
|
|
389
|
-
|
|
390
|
-
// Left border
|
|
391
|
-
double lowerLeftDistance = coshMinR * coshr - sinhMinR * sinhr * cosDiffLeft;
|
|
392
|
-
double upperLeftDistance = coshMaxR * coshr - sinhMaxR * sinhr * cosDiffLeft;
|
|
393
|
-
if (responsible(phi, r))
|
|
394
|
-
coshMinDistance = 1; // strictly speaking, this is wrong
|
|
395
|
-
else
|
|
396
|
-
coshMinDistance = std::min(lowerLeftDistance, upperLeftDistance);
|
|
397
|
-
|
|
398
|
-
coshMaxDistance = std::max(lowerLeftDistance, upperLeftDistance);
|
|
399
|
-
// double a = std::cosh(r_h);
|
|
400
|
-
double b = sinhr * cosDiffLeft;
|
|
401
|
-
double extremum = std::log((coshr + b) / (coshr - b)) / 2;
|
|
402
|
-
if (extremum < maxRHyper && extremum >= minRHyper) {
|
|
403
|
-
double extremeDistance =
|
|
404
|
-
std::cosh(extremum) * coshr - std::sinh(extremum) * sinhr * cosDiffLeft;
|
|
405
|
-
coshMinDistance = std::min(coshMinDistance, extremeDistance);
|
|
406
|
-
coshMaxDistance = std::max(coshMaxDistance, extremeDistance);
|
|
407
|
-
}
|
|
408
|
-
/**
|
|
409
|
-
* cosh is a function from [0,\infty) to [1, \infty)
|
|
410
|
-
* Variables thus need
|
|
411
|
-
*/
|
|
412
|
-
assert(coshMaxDistance >= 1);
|
|
413
|
-
assert(coshMinDistance >= 1);
|
|
414
|
-
|
|
415
|
-
// Right border
|
|
416
|
-
double lowerRightDistance = coshMinR * coshr - sinhMinR * sinhr * cosDiffRight;
|
|
417
|
-
double upperRightDistance = coshMaxR * coshr - sinhMaxR * sinhr * cosDiffRight;
|
|
418
|
-
coshMinDistance = std::min(coshMinDistance, lowerRightDistance);
|
|
419
|
-
coshMinDistance = std::min(coshMinDistance, upperRightDistance);
|
|
420
|
-
coshMaxDistance = std::max(coshMaxDistance, lowerRightDistance);
|
|
421
|
-
coshMaxDistance = std::max(coshMaxDistance, upperRightDistance);
|
|
422
|
-
|
|
423
|
-
b = sinhr * cosDiffRight;
|
|
424
|
-
extremum = std::log((coshr + b) / (coshr - b)) / 2;
|
|
425
|
-
if (extremum < maxRHyper && extremum >= minRHyper) {
|
|
426
|
-
double extremeDistance =
|
|
427
|
-
std::cosh(extremum) * coshr - std::sinh(extremum) * sinhr * cosDiffRight;
|
|
428
|
-
coshMinDistance = std::min(coshMinDistance, extremeDistance);
|
|
429
|
-
coshMaxDistance = std::max(coshMaxDistance, extremeDistance);
|
|
430
|
-
}
|
|
431
|
-
|
|
432
|
-
assert(coshMaxDistance >= 1);
|
|
433
|
-
assert(coshMinDistance >= 1);
|
|
434
|
-
|
|
435
|
-
// upper and lower borders
|
|
436
|
-
if (phi >= leftAngle && phi < rightAngle) {
|
|
437
|
-
double lower = std::cosh(std::abs(r_h - minRHyper));
|
|
438
|
-
double upper = std::cosh(std::abs(r_h - maxRHyper));
|
|
439
|
-
coshMinDistance = std::min(coshMinDistance, lower);
|
|
440
|
-
coshMinDistance = std::min(coshMinDistance, upper);
|
|
441
|
-
coshMaxDistance = std::max(coshMaxDistance, upper);
|
|
442
|
-
coshMaxDistance = std::max(coshMaxDistance, lower);
|
|
443
|
-
}
|
|
444
|
-
|
|
445
|
-
assert(coshMaxDistance >= 1);
|
|
446
|
-
assert(coshMinDistance >= 1);
|
|
447
|
-
|
|
448
|
-
// again with mirrored phi
|
|
449
|
-
double mirrorphi;
|
|
450
|
-
if (phi >= PI)
|
|
451
|
-
mirrorphi = phi - PI;
|
|
452
|
-
else
|
|
453
|
-
mirrorphi = phi + PI;
|
|
454
|
-
if (mirrorphi >= leftAngle && mirrorphi < rightAngle) {
|
|
455
|
-
double lower = coshMinR * coshr + sinhMinR * sinhr;
|
|
456
|
-
double upper = coshMaxR * coshr + sinhMaxR * sinhr;
|
|
457
|
-
coshMinDistance = std::min(coshMinDistance, lower);
|
|
458
|
-
coshMinDistance = std::min(coshMinDistance, upper);
|
|
459
|
-
coshMaxDistance = std::max(coshMaxDistance, upper);
|
|
460
|
-
coshMaxDistance = std::max(coshMaxDistance, lower);
|
|
461
|
-
}
|
|
462
|
-
|
|
463
|
-
assert(coshMaxDistance >= 1);
|
|
464
|
-
assert(coshMinDistance >= 1);
|
|
465
|
-
|
|
466
|
-
double minDistance, maxDistance;
|
|
467
|
-
minDistance = std::acosh(coshMinDistance);
|
|
468
|
-
maxDistance = std::acosh(coshMaxDistance);
|
|
469
|
-
assert(maxDistance >= 0);
|
|
470
|
-
assert(minDistance >= 0);
|
|
471
|
-
return std::pair<double, double>(minDistance, maxDistance);
|
|
472
|
-
}
|
|
473
|
-
|
|
474
|
-
/**
|
|
475
|
-
* Does the point at (angle, r) fall inside the region managed by this QuadNode?
|
|
476
|
-
*
|
|
477
|
-
* @param angle Angular coordinate of input point
|
|
478
|
-
* @param r Radial coordinate of input points
|
|
479
|
-
*
|
|
480
|
-
* @return True if input point lies within the region of this QuadNode
|
|
481
|
-
*/
|
|
482
|
-
bool responsible(double angle, double r) const {
|
|
483
|
-
return (angle >= leftAngle && angle < rightAngle && r >= minR && r < maxR);
|
|
484
|
-
}
|
|
485
|
-
|
|
486
|
-
/**
|
|
487
|
-
* Get all Elements in this QuadNode or a descendant of it
|
|
488
|
-
*
|
|
489
|
-
* @return vector of content type T
|
|
490
|
-
*/
|
|
491
|
-
std::vector<T> getElements() const {
|
|
492
|
-
if (isLeaf) {
|
|
493
|
-
return content;
|
|
494
|
-
} else {
|
|
495
|
-
assert(content.size() == 0);
|
|
496
|
-
assert(angles.empty());
|
|
497
|
-
assert(radii.empty());
|
|
498
|
-
vector<T> result;
|
|
499
|
-
for (index i = 0; i < children.size(); i++) {
|
|
500
|
-
std::vector<T> subresult = children[i].getElements();
|
|
501
|
-
result.insert(result.end(), subresult.begin(), subresult.end());
|
|
502
|
-
}
|
|
503
|
-
return result;
|
|
504
|
-
}
|
|
505
|
-
}
|
|
506
|
-
|
|
507
|
-
void getCoordinates(vector<double> &anglesContainer, vector<double> &radiiContainer) const {
|
|
508
|
-
assert(angles.size() == radii.size());
|
|
509
|
-
if (isLeaf) {
|
|
510
|
-
anglesContainer.insert(anglesContainer.end(), angles.begin(), angles.end());
|
|
511
|
-
radiiContainer.insert(radiiContainer.end(), radii.begin(), radii.end());
|
|
512
|
-
} else {
|
|
513
|
-
assert(content.size() == 0);
|
|
514
|
-
assert(angles.empty());
|
|
515
|
-
assert(radii.empty());
|
|
516
|
-
for (index i = 0; i < children.size(); i++) {
|
|
517
|
-
children[i].getCoordinates(anglesContainer, radiiContainer);
|
|
518
|
-
}
|
|
519
|
-
}
|
|
520
|
-
}
|
|
521
|
-
|
|
522
|
-
/**
|
|
523
|
-
* Don't use this!
|
|
524
|
-
* Code is still in here for a unit test.
|
|
525
|
-
*
|
|
526
|
-
* Get copy of the leaf cell responsible for a point at (angle, r).
|
|
527
|
-
* Expensive because it copies the whole subtree, causes assertion failure if called with the
|
|
528
|
-
* wrong arguments
|
|
529
|
-
*
|
|
530
|
-
* @param angle Angular coordinate of point
|
|
531
|
-
* @param r Radial coordinate of point
|
|
532
|
-
*
|
|
533
|
-
* @return Copy of leaf cell containing point, or dummy cell not responsible for point
|
|
534
|
-
*
|
|
535
|
-
*/
|
|
536
|
-
QuadNode<T> &getAppropriateLeaf(double angle, double r) {
|
|
537
|
-
assert(this->responsible(angle, r));
|
|
538
|
-
if (isLeaf)
|
|
539
|
-
return *this; // will this return the reference to the subtree itself or to a copy?
|
|
540
|
-
else {
|
|
541
|
-
for (index i = 0; i < children.size(); i++) {
|
|
542
|
-
if (children[i].responsible(angle, r))
|
|
543
|
-
return children[i].getAppropriateLeaf(angle, r);
|
|
544
|
-
}
|
|
545
|
-
throw std::runtime_error("No responsible child found.");
|
|
546
|
-
}
|
|
547
|
-
}
|
|
548
|
-
|
|
549
|
-
/**
|
|
550
|
-
* Main query method, get points lying in a Euclidean circle around the center point.
|
|
551
|
-
* Optional limits can be given to get a different result or to reduce unnecessary comparisons
|
|
552
|
-
*
|
|
553
|
-
* Elements are pushed onto a vector which is a required argument. This is done to reduce
|
|
554
|
-
* copying
|
|
555
|
-
*
|
|
556
|
-
* Safe to call in parallel if diagnostics are disabled
|
|
557
|
-
*
|
|
558
|
-
* @param center Center of the query circle
|
|
559
|
-
* @param radius Radius of the query circle
|
|
560
|
-
* @param result Reference to the vector where the results will be stored
|
|
561
|
-
* @param minAngle Optional value for the minimum angular coordinate of the query region
|
|
562
|
-
* @param maxAngle Optional value for the maximum angular coordinate of the query region
|
|
563
|
-
* @param lowR Optional value for the minimum radial coordinate of the query region
|
|
564
|
-
* @param highR Optional value for the maximum radial coordinate of the query region
|
|
565
|
-
*/
|
|
566
|
-
void getElementsInEuclideanCircle(Point2DWithIndex<double> center, double radius,
|
|
567
|
-
vector<T> &result, double minAngle = 0,
|
|
568
|
-
double maxAngle = 2 * PI, double lowR = 0,
|
|
569
|
-
double highR = 1) const {
|
|
570
|
-
if (!poincare)
|
|
571
|
-
throw std::runtime_error(
|
|
572
|
-
"Euclidean query circles not yet implemented for native hyperbolic coordinates.");
|
|
573
|
-
if (minAngle >= rightAngle || maxAngle <= leftAngle || lowR >= maxR || highR < lowerBoundR)
|
|
574
|
-
return;
|
|
575
|
-
if (outOfReach(center, radius)) {
|
|
576
|
-
return;
|
|
577
|
-
}
|
|
578
|
-
|
|
579
|
-
if (isLeaf) {
|
|
580
|
-
const double rsq = radius * radius;
|
|
581
|
-
const double queryX = center[0];
|
|
582
|
-
const double queryY = center[1];
|
|
583
|
-
const count cSize = content.size();
|
|
584
|
-
|
|
585
|
-
for (index i = 0; i < cSize; i++) {
|
|
586
|
-
const double deltaX = positions[i].getX() - queryX;
|
|
587
|
-
const double deltaY = positions[i].getY() - queryY;
|
|
588
|
-
if (deltaX * deltaX + deltaY * deltaY < rsq) {
|
|
589
|
-
result.push_back(content[i]);
|
|
590
|
-
}
|
|
591
|
-
}
|
|
592
|
-
} else {
|
|
593
|
-
for (index i = 0; i < children.size(); i++) {
|
|
594
|
-
children[i].getElementsInEuclideanCircle(center, radius, result, minAngle, maxAngle,
|
|
595
|
-
lowR, highR);
|
|
596
|
-
}
|
|
597
|
-
}
|
|
598
|
-
}
|
|
599
|
-
|
|
600
|
-
count getElementsProbabilistically(Point2DWithIndex<double> euQuery,
|
|
601
|
-
std::function<double(double)> prob, bool suppressLeft,
|
|
602
|
-
vector<T> &result) const {
|
|
603
|
-
double phi_q, r_q;
|
|
604
|
-
HyperbolicSpace::cartesianToPolar(euQuery, phi_q, r_q);
|
|
605
|
-
if (suppressLeft && phi_q > rightAngle)
|
|
606
|
-
return 0;
|
|
607
|
-
TRACE("Getting hyperbolic distances");
|
|
608
|
-
auto distancePair = hyperbolicDistances(phi_q, r_q);
|
|
609
|
-
double probUB = prob(distancePair.first);
|
|
610
|
-
double probLB = prob(distancePair.second);
|
|
611
|
-
#ifndef NDEBUG
|
|
612
|
-
assert(probLB <= probUB);
|
|
613
|
-
#else
|
|
614
|
-
((void)(probLB));
|
|
615
|
-
#endif // NDEBUG
|
|
616
|
-
if (probUB > 0.5)
|
|
617
|
-
// if we are going to take every second element anyway, no use in calculating expensive
|
|
618
|
-
// jumps
|
|
619
|
-
probUB = 1;
|
|
620
|
-
if (probUB == 0)
|
|
621
|
-
return 0;
|
|
622
|
-
// TODO: return whole if probLB == 1
|
|
623
|
-
double probdenom = std::log(1 - probUB);
|
|
624
|
-
if (probdenom == 0) {
|
|
625
|
-
DEBUG(probUB, " not zero, but too small too process. Ignoring.");
|
|
626
|
-
return 0;
|
|
627
|
-
}
|
|
628
|
-
TRACE("probUB: ", probUB, ", probdenom: ", probdenom);
|
|
629
|
-
|
|
630
|
-
count expectedNeighbours = probUB * size();
|
|
631
|
-
count candidatesTested = 0;
|
|
632
|
-
|
|
633
|
-
if (isLeaf) {
|
|
634
|
-
const count lsize = content.size();
|
|
635
|
-
TRACE("Leaf of size ", lsize);
|
|
636
|
-
for (index i = 0; i < lsize; i++) {
|
|
637
|
-
// jump!
|
|
638
|
-
if (probUB < 1) {
|
|
639
|
-
double random = Aux::Random::real();
|
|
640
|
-
double delta = std::log(random) / probdenom;
|
|
641
|
-
assert(delta == delta);
|
|
642
|
-
assert(delta >= 0);
|
|
643
|
-
i += delta;
|
|
644
|
-
if (i >= lsize)
|
|
645
|
-
break;
|
|
646
|
-
TRACE("Jumped with delta ", delta, " arrived at ", i);
|
|
647
|
-
}
|
|
648
|
-
|
|
649
|
-
// see where we've arrived
|
|
650
|
-
candidatesTested++;
|
|
651
|
-
double distance;
|
|
652
|
-
if (poincare) {
|
|
653
|
-
distance = HyperbolicSpace::poincareMetric(positions[i], euQuery);
|
|
654
|
-
} else {
|
|
655
|
-
distance = HyperbolicSpace::nativeDistance(angles[i], radii[i], phi_q, r_q);
|
|
656
|
-
}
|
|
657
|
-
assert(distance >= distancePair.first);
|
|
658
|
-
|
|
659
|
-
double q = prob(distance);
|
|
660
|
-
// since the candidate was selected by the jumping process, we have to adjust the
|
|
661
|
-
// probabilities
|
|
662
|
-
q = q / probUB;
|
|
663
|
-
|
|
664
|
-
assert(q <= 1);
|
|
665
|
-
assert(q >= 0);
|
|
666
|
-
|
|
667
|
-
// accept?
|
|
668
|
-
double acc = Aux::Random::real();
|
|
669
|
-
if (acc < q) {
|
|
670
|
-
TRACE("Accepted node ", i, " with probability ", q, ".");
|
|
671
|
-
result.push_back(content[i]);
|
|
672
|
-
}
|
|
673
|
-
}
|
|
674
|
-
} else {
|
|
675
|
-
if (expectedNeighbours
|
|
676
|
-
< 1) { // select candidates directly instead of calling recursively
|
|
677
|
-
TRACE("probUB = ", probUB, ", switching to direct candidate selection.");
|
|
678
|
-
assert(probUB < 1);
|
|
679
|
-
const count stsize = size();
|
|
680
|
-
for (index i = 0; i < stsize; i++) {
|
|
681
|
-
double delta = std::log(Aux::Random::real()) / probdenom;
|
|
682
|
-
assert(delta >= 0);
|
|
683
|
-
i += delta;
|
|
684
|
-
TRACE("Jumped with delta ", delta, " arrived at ", i,
|
|
685
|
-
". Calling maybeGetKthElement.");
|
|
686
|
-
if (i < size())
|
|
687
|
-
// this could be optimized. As of now, the offset is subtracted separately
|
|
688
|
-
// for each point
|
|
689
|
-
maybeGetKthElement(probUB, euQuery, prob, i, result);
|
|
690
|
-
|
|
691
|
-
else
|
|
692
|
-
break;
|
|
693
|
-
candidatesTested++;
|
|
694
|
-
}
|
|
695
|
-
} else { // carry on as normal
|
|
696
|
-
for (index i = 0; i < children.size(); i++) {
|
|
697
|
-
TRACE("Recursively calling child ", i);
|
|
698
|
-
candidatesTested += children[i].getElementsProbabilistically(
|
|
699
|
-
euQuery, prob, suppressLeft, result);
|
|
700
|
-
}
|
|
701
|
-
}
|
|
702
|
-
}
|
|
703
|
-
return candidatesTested;
|
|
704
|
-
}
|
|
705
|
-
|
|
706
|
-
void maybeGetKthElement(double upperBound, Point2DWithIndex<double> euQuery,
|
|
707
|
-
std::function<double(double)> prob, index k,
|
|
708
|
-
vector<T> &circleDenizens) const {
|
|
709
|
-
TRACE("Maybe get element ", k, " with upper Bound ", upperBound);
|
|
710
|
-
assert(k < size());
|
|
711
|
-
if (isLeaf) {
|
|
712
|
-
double distance;
|
|
713
|
-
if (poincare) {
|
|
714
|
-
distance = HyperbolicSpace::poincareMetric(positions[k], euQuery);
|
|
715
|
-
} else {
|
|
716
|
-
double phi_q, r_q;
|
|
717
|
-
HyperbolicSpace::cartesianToPolar(euQuery, phi_q, r_q);
|
|
718
|
-
distance = HyperbolicSpace::nativeDistance(angles[k], radii[k], phi_q, r_q);
|
|
719
|
-
}
|
|
720
|
-
double acceptance = prob(distance) / upperBound;
|
|
721
|
-
TRACE("Is leaf, accept with ", acceptance);
|
|
722
|
-
if (Aux::Random::real() < acceptance)
|
|
723
|
-
circleDenizens.push_back(content[k]);
|
|
724
|
-
} else {
|
|
725
|
-
TRACE("Call recursively.");
|
|
726
|
-
index offset = 0;
|
|
727
|
-
for (index i = 0; i < children.size(); i++) {
|
|
728
|
-
count childsize = children[i].size();
|
|
729
|
-
if (k - offset < childsize) {
|
|
730
|
-
children[i].maybeGetKthElement(upperBound, euQuery, prob, k - offset,
|
|
731
|
-
circleDenizens);
|
|
732
|
-
break;
|
|
733
|
-
}
|
|
734
|
-
offset += childsize;
|
|
735
|
-
}
|
|
736
|
-
}
|
|
737
|
-
}
|
|
738
|
-
|
|
739
|
-
/**
|
|
740
|
-
* Shrink all vectors in this subtree to fit the content.
|
|
741
|
-
* Call after quadtree construction is complete, causes better memory usage and cache efficiency
|
|
742
|
-
*/
|
|
743
|
-
void trim() {
|
|
744
|
-
content.shrink_to_fit();
|
|
745
|
-
positions.shrink_to_fit();
|
|
746
|
-
angles.shrink_to_fit();
|
|
747
|
-
radii.shrink_to_fit();
|
|
748
|
-
if (!isLeaf) {
|
|
749
|
-
for (index i = 0; i < children.size(); i++) {
|
|
750
|
-
children[i].trim();
|
|
751
|
-
}
|
|
752
|
-
}
|
|
753
|
-
}
|
|
754
|
-
|
|
755
|
-
/**
|
|
756
|
-
* Number of points lying in the region managed by this QuadNode
|
|
757
|
-
*/
|
|
758
|
-
count size() const { return isLeaf ? content.size() : subTreeSize; }
|
|
759
|
-
|
|
760
|
-
void recount() {
|
|
761
|
-
subTreeSize = 0;
|
|
762
|
-
for (index i = 0; i < children.size(); i++) {
|
|
763
|
-
children[i].recount();
|
|
764
|
-
subTreeSize += children[i].size();
|
|
765
|
-
}
|
|
766
|
-
}
|
|
767
|
-
|
|
768
|
-
/**
|
|
769
|
-
* Height of subtree hanging from this QuadNode
|
|
770
|
-
*/
|
|
771
|
-
count height() const {
|
|
772
|
-
count result = 1; // if leaf node, the children loop will not execute
|
|
773
|
-
for (auto child : children)
|
|
774
|
-
result = std::max(result, child.height() + 1);
|
|
775
|
-
return result;
|
|
776
|
-
}
|
|
777
|
-
|
|
778
|
-
/**
|
|
779
|
-
* Leaf cells in the subtree hanging from this QuadNode
|
|
780
|
-
*/
|
|
781
|
-
count countLeaves() const {
|
|
782
|
-
if (isLeaf)
|
|
783
|
-
return 1;
|
|
784
|
-
return std::accumulate(
|
|
785
|
-
children.begin(), children.end(), count{0},
|
|
786
|
-
[](count result, const auto &child) -> count { return result + child.countLeaves(); });
|
|
787
|
-
}
|
|
788
|
-
|
|
789
|
-
double getLeftAngle() const { return leftAngle; }
|
|
790
|
-
|
|
791
|
-
double getRightAngle() const { return rightAngle; }
|
|
792
|
-
|
|
793
|
-
double getMinR() const { return minR; }
|
|
794
|
-
|
|
795
|
-
double getMaxR() const { return maxR; }
|
|
796
|
-
|
|
797
|
-
index getID() const { return ID; }
|
|
798
|
-
|
|
799
|
-
index indexSubtree(index nextID) {
|
|
800
|
-
index result = nextID;
|
|
801
|
-
assert(children.size() == 4 || children.size() == 0);
|
|
802
|
-
for (index i = 0; i < children.size(); i++) {
|
|
803
|
-
result = children[i].indexSubtree(result);
|
|
804
|
-
}
|
|
805
|
-
this->ID = result;
|
|
806
|
-
return result + 1;
|
|
807
|
-
}
|
|
808
|
-
|
|
809
|
-
index getCellID(double phi, double r) const {
|
|
810
|
-
if (!responsible(phi, r))
|
|
811
|
-
return none;
|
|
812
|
-
if (isLeaf)
|
|
813
|
-
return getID();
|
|
814
|
-
else {
|
|
815
|
-
for (index i = 0; i < children.size(); i++) {
|
|
816
|
-
index childresult = children[i].getCellID(phi, r);
|
|
817
|
-
if (childresult != none)
|
|
818
|
-
return childresult;
|
|
819
|
-
}
|
|
820
|
-
throw std::runtime_error(
|
|
821
|
-
"No responsible child node found even though this node is responsible.");
|
|
822
|
-
}
|
|
823
|
-
}
|
|
824
|
-
|
|
825
|
-
index getMaxIDInSubtree() const {
|
|
826
|
-
if (isLeaf)
|
|
827
|
-
return getID();
|
|
828
|
-
else {
|
|
829
|
-
index result = -1;
|
|
830
|
-
for (int i = 0; i < 4; i++) {
|
|
831
|
-
result = std::max(children[i].getMaxIDInSubtree(), result);
|
|
832
|
-
}
|
|
833
|
-
return std::max(result, getID());
|
|
834
|
-
}
|
|
835
|
-
}
|
|
836
|
-
|
|
837
|
-
count reindex(count offset) {
|
|
838
|
-
if (isLeaf) {
|
|
839
|
-
#ifndef NETWORKIT_OMP2
|
|
840
|
-
#pragma omp task
|
|
841
|
-
#endif // NETWORKIT_OMP2
|
|
842
|
-
{
|
|
843
|
-
index p = offset;
|
|
844
|
-
std::generate(content.begin(), content.end(), [&p]() { return p++; });
|
|
845
|
-
}
|
|
846
|
-
offset += size();
|
|
847
|
-
} else {
|
|
848
|
-
for (int i = 0; i < 4; i++) {
|
|
849
|
-
offset = children[i].reindex(offset);
|
|
850
|
-
}
|
|
851
|
-
}
|
|
852
|
-
return offset;
|
|
853
|
-
}
|
|
854
|
-
};
|
|
855
|
-
} // namespace NetworKit
|
|
856
|
-
|
|
857
|
-
#endif // NETWORKIT_GENERATORS_QUADTREE_QUAD_NODE_HPP_
|