@ladybugmem/icebug 0.1.0

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