@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,323 @@
1
+ /*
2
+ * GraphBLAS.hpp
3
+ *
4
+ * Created on: May 31, 2016
5
+ * Author: Michael Wegner (michael.wegner@student.kit.edu)
6
+ */
7
+
8
+ #ifndef NETWORKIT_ALGEBRAIC_GRAPH_BLAS_HPP_
9
+ #define NETWORKIT_ALGEBRAIC_GRAPH_BLAS_HPP_
10
+
11
+ #include <limits>
12
+ #include <networkit/algebraic/AlgebraicGlobals.hpp>
13
+ #include <networkit/algebraic/Semirings.hpp>
14
+ #include <networkit/algebraic/SparseAccumulator.hpp>
15
+ #include <networkit/algebraic/Vector.hpp>
16
+
17
+ /**
18
+ * @ingroup algebraic
19
+ * Implements the GraphBLAS interface. For more information visit https://graphblas.org.
20
+ */
21
+ namespace GraphBLAS {
22
+
23
+ // ****************************************************
24
+ // Operations
25
+ // ****************************************************
26
+
27
+ /**
28
+ * Computes binOp(A(i,j), B(i,j)) for all i,j element-wise. Note that the dimensions of
29
+ * @a A and @a B must coincide and that the zero must be the same.
30
+ * @param A
31
+ * @param B
32
+ * @param binOp
33
+ * @return The resulting matrix.
34
+ */
35
+ template <class SemiRing, class Matrix, typename L>
36
+ Matrix eWiseBinOp(const Matrix &A, const Matrix &B, L binOp) {
37
+ assert(A.numberOfRows() == B.numberOfRows() && A.numberOfColumns() == B.numberOfColumns());
38
+ assert(A.getZero() == B.getZero() && A.getZero() == SemiRing::zero());
39
+
40
+ std::vector<int64_t> columnPointer(A.numberOfColumns(), -1);
41
+ std::vector<double> Arow(A.numberOfColumns(), SemiRing::zero());
42
+ std::vector<double> Brow(A.numberOfColumns(), SemiRing::zero());
43
+
44
+ std::vector<NetworKit::Triplet> triplets;
45
+
46
+ for (NetworKit::index i = 0; i < A.numberOfRows(); ++i) {
47
+ NetworKit::index listHead = 0;
48
+ NetworKit::count nnz = 0;
49
+
50
+ // search for nonZeros in matrix A
51
+ A.forNonZeroElementsInRow(i, [&](NetworKit::index j, double value) {
52
+ Arow[j] = value;
53
+
54
+ columnPointer[j] = listHead;
55
+ listHead = j;
56
+ nnz++;
57
+ });
58
+
59
+ // search for nonZeros in matrix B
60
+ B.forNonZeroElementsInRow(i, [&](NetworKit::index j, double value) {
61
+ Brow[j] = value;
62
+
63
+ if (columnPointer[j] == -1) { // matrix A does not have a nonZero entry in column j
64
+ columnPointer[j] = listHead;
65
+ listHead = j;
66
+ nnz++;
67
+ }
68
+ });
69
+
70
+ // apply operator on the found nonZeros in A and B
71
+ for (NetworKit::count k = 0; k < nnz; ++k) {
72
+ double value = binOp(Arow[listHead], Brow[listHead]);
73
+ if (value != SemiRing::zero()) {
74
+ triplets.push_back({i, listHead, value});
75
+ }
76
+
77
+ NetworKit::index temp = listHead;
78
+ listHead = columnPointer[listHead];
79
+
80
+ // reset for next row
81
+ columnPointer[temp] = -1;
82
+ Arow[temp] = SemiRing::zero();
83
+ Brow[temp] = SemiRing::zero();
84
+ }
85
+
86
+ nnz = 0;
87
+ }
88
+
89
+ return Matrix(A.numberOfRows(), A.numberOfColumns(), triplets, A.getZero());
90
+ }
91
+
92
+ /**
93
+ * Computes the matrix-matrix multiplication of @a A and @a B. Note that
94
+ * A.numberOfColumns() must be equal to B.numberOfRows() and the zero elements
95
+ * must be the same. The default Semiring is the ArithmeticSemiring.
96
+ * @param A
97
+ * @param B
98
+ * @return The result of the multiplication A * B.
99
+ */
100
+ template <class SemiRing = ArithmeticSemiring, class Matrix>
101
+ Matrix MxM(const Matrix &A, const Matrix &B) {
102
+ assert(A.numberOfColumns() == B.numberOfRows());
103
+ assert(A.getZero() == SemiRing::zero() && B.getZero() == SemiRing::zero());
104
+
105
+ std::vector<NetworKit::Triplet> triplets;
106
+ NetworKit::SparseAccumulator spa(B.numberOfRows());
107
+ for (NetworKit::index i = 0; i < A.numberOfRows(); ++i) {
108
+ A.forNonZeroElementsInRow(i, [&](NetworKit::index k, double w1) {
109
+ B.forNonZeroElementsInRow(k, [&](NetworKit::index j, double w2) {
110
+ spa.scatter(SemiRing::mult(w1, w2), j, *SemiRing::add);
111
+ });
112
+ });
113
+
114
+ spa.gather([&](NetworKit::index i, NetworKit::index j, double value) {
115
+ triplets.push_back({i, j, value});
116
+ });
117
+
118
+ spa.increaseRow();
119
+ }
120
+
121
+ return Matrix(A.numberOfRows(), B.numberOfColumns(), triplets, A.getZero());
122
+ }
123
+
124
+ /**
125
+ * Computes the matrix-matrix multiplication of @a A and @a B and adds it to @a C where
126
+ * the add operation is that of the specified Semiring (i.e. C(i,j) = SemiRing::add(C(i,j),
127
+ * (A*B)(i,j))). The default Semiring is the ArithmeticSemiring.
128
+ * @param A
129
+ * @param B
130
+ * @param C
131
+ */
132
+ template <class SemiRing = ArithmeticSemiring, class Matrix>
133
+ void MxM(const Matrix &A, const Matrix &B, Matrix &C) {
134
+ assert(A.numberOfColumns() == B.numberOfRows() && A.numberOfRows() == C.numberOfRows()
135
+ && B.numberOfColumns() == C.numberOfColumns());
136
+ assert(A.getZero() == SemiRing::zero() && B.getZero() == SemiRing::zero()
137
+ && C.getZero() == SemiRing::zero());
138
+
139
+ std::vector<NetworKit::Triplet> triplets;
140
+ NetworKit::SparseAccumulator spa(B.numberOfRows());
141
+ for (NetworKit::index i = 0; i < A.numberOfRows(); ++i) {
142
+ A.forNonZeroElementsInRow(i, [&](NetworKit::index k, double w1) {
143
+ B.forNonZeroElementsInRow(k, [&](NetworKit::index j, double w2) {
144
+ spa.scatter(SemiRing::mult(w1, w2), j, *SemiRing::add);
145
+ });
146
+ });
147
+
148
+ spa.gather([&](NetworKit::index i, NetworKit::index j, double value) {
149
+ triplets.push_back({i, j, value});
150
+ });
151
+
152
+ spa.increaseRow();
153
+ }
154
+
155
+ Matrix temp(A.numberOfRows(), B.numberOfRows(), triplets, A.getZero());
156
+ C = eWiseBinOp<SemiRing, Matrix>(C, temp, *SemiRing::add);
157
+ }
158
+
159
+ /**
160
+ * Computes the matrix-matrix multiplication of @a A and @a B and adds it to @a C where
161
+ * the add operation is specified by the binary function @a accum (i.e. C(i,j) = accum(C(i,j),
162
+ * (A*B)(i,j))). The default Semiring is the ArithmeticSemiring.
163
+ * @param A
164
+ * @param B
165
+ * @param C
166
+ * @param accum
167
+ */
168
+ template <class SemiRing = ArithmeticSemiring, typename F, class Matrix>
169
+ void MxM(const Matrix &A, const Matrix &B, Matrix &C, F accum) {
170
+ assert(A.numberOfColumns() == B.numberOfRows() && A.numberOfRows() == C.numberOfRows()
171
+ && B.numberOfColumns() == C.numberOfColumns());
172
+ assert(A.getZero() == SemiRing::zero() && B.getZero() == SemiRing::zero()
173
+ && C.getZero() == SemiRing::zero());
174
+
175
+ std::vector<NetworKit::Triplet> triplets;
176
+ NetworKit::SparseAccumulator spa(B.numberOfRows());
177
+ for (NetworKit::index i = 0; i < A.numberOfRows(); ++i) {
178
+ A.forNonZeroElementsInRow(i, [&](NetworKit::index k, double w1) {
179
+ B.forNonZeroElementsInRow(k, [&](NetworKit::index j, double w2) {
180
+ spa.scatter(SemiRing::mult(w1, w2), j, *SemiRing::add);
181
+ });
182
+ });
183
+
184
+ spa.gather([&](NetworKit::index i, NetworKit::index j, double value) {
185
+ triplets.push_back({i, j, value});
186
+ });
187
+
188
+ spa.increaseRow();
189
+ }
190
+
191
+ Matrix temp(A.numberOfRows(), B.numberOfRows(), triplets, A.getZero());
192
+ C = eWiseBinOp<SemiRing, Matrix>(C, temp, accum);
193
+ }
194
+
195
+ /**
196
+ * Computes the matrix-vector product of matrix @a A and Vector @a v. The default Semiring is the
197
+ * ArithmeticSemiring.
198
+ * @param A
199
+ * @param v
200
+ */
201
+ template <class SemiRing = ArithmeticSemiring, class Matrix>
202
+ NetworKit::Vector MxV(const Matrix &A, const NetworKit::Vector &v) {
203
+ assert(!v.isTransposed());
204
+ assert(A.numberOfColumns() == v.getDimension());
205
+ assert(A.getZero() == SemiRing::zero());
206
+ NetworKit::Vector result(A.numberOfRows(), A.getZero());
207
+
208
+ A.parallelForNonZeroElementsInRowOrder(
209
+ [&](NetworKit::index i, NetworKit::index j, double value) {
210
+ result[i] = SemiRing::add(result[i], SemiRing::mult(value, v[j]));
211
+ });
212
+
213
+ return result;
214
+ }
215
+
216
+ /**
217
+ * Computes the matrix-vector product of matrix @a A and Vector @a v and adds it to @a c where the
218
+ * add operation is that of the specified Semiring (i.e. c[i] = SemiRing::add(c[i], (A*v)[i]). The
219
+ * default Semiring is the ArithmeticSemiring.
220
+ * @param A
221
+ * @param v
222
+ * @param c
223
+ */
224
+ template <class SemiRing = ArithmeticSemiring, class Matrix>
225
+ void MxV(const Matrix &A, const NetworKit::Vector &v, NetworKit::Vector &c) {
226
+ assert(!v.isTransposed());
227
+ assert(A.numberOfColumns() == v.getDimension());
228
+ assert(A.getZero() == SemiRing::zero());
229
+
230
+ A.parallelForNonZeroElementsInRowOrder(
231
+ [&](NetworKit::index i, NetworKit::index j, double value) {
232
+ c[i] = SemiRing::add(c[i], SemiRing::mult(value, v[j]));
233
+ });
234
+ }
235
+
236
+ /**
237
+ * Computes the matrix-vector product of matrix @a A and Vector @a v and adds it to @a c where the
238
+ * add operation is that of the specified binary function @a accum (i.e. c[i] = accum(c[i],
239
+ * (A*v)[i]). The default Semiring is the ArithmeticSemiring.
240
+ * @param A
241
+ * @param v
242
+ * @param c
243
+ */
244
+ template <class SemiRing = ArithmeticSemiring, typename F, class Matrix>
245
+ void MxV(const Matrix &A, const NetworKit::Vector &v, NetworKit::Vector &c, F accum) {
246
+ assert(!v.isTransposed());
247
+ assert(A.numberOfColumns() == v.getDimension());
248
+ assert(A.getZero() == SemiRing::zero());
249
+
250
+ A.parallelForNonZeroElementsInRowOrder(
251
+ [&](NetworKit::index i, NetworKit::index j, double value) {
252
+ c[i] = accum(c[i], SemiRing::mult(value, v[j]));
253
+ });
254
+ }
255
+
256
+ /**
257
+ * Computes SemiRing::add(A(i,j), B(i,j)) for all i,j element-wise and returns the resulting matrix.
258
+ * The default Semiring is the ArithmeticSemiring.
259
+ * @param A
260
+ * @param B
261
+ */
262
+ template <class SemiRing = ArithmeticSemiring, class Matrix>
263
+ Matrix eWiseAdd(const Matrix &A, const Matrix &B) {
264
+ return eWiseBinOp<SemiRing, Matrix>(
265
+ A, B, [](const double a, const double b) { return SemiRing::add(a, b); });
266
+ }
267
+
268
+ /**
269
+ * Computes SemiRing::mult(A(i,j), B(i,j)) for all i,j element-wise and returns the resulting
270
+ * matrix. The default Semiring is the ArithmeticSemiring.
271
+ * @param A
272
+ * @param B
273
+ * @return
274
+ */
275
+ template <class SemiRing = ArithmeticSemiring, class Matrix>
276
+ Matrix eWiseMult(const Matrix &A, const Matrix &B) {
277
+ return eWiseBinOp<SemiRing, Matrix>(
278
+ A, B, [](const double a, const double b) { return SemiRing::mult(a, b); });
279
+ }
280
+
281
+ /**
282
+ * Computes the row-reduction of the @a matrix and returns the result as a vector. That is, the
283
+ * elements of each row are summed up to form the respective entry in the result vector. The add
284
+ * operator is that of the specified Semiring. The default Semiring is the ArithmeticSemiring.
285
+ * @param matrix
286
+ */
287
+ template <class SemiRing = ArithmeticSemiring, class Matrix>
288
+ NetworKit::Vector rowReduce(const Matrix &matrix) {
289
+ assert(matrix.getZero() == SemiRing::zero());
290
+ NetworKit::Vector rowReduction(matrix.numberOfRows(), 0.0);
291
+
292
+ #pragma omp parallel for
293
+ for (NetworKit::omp_index i = 0; i < static_cast<NetworKit::omp_index>(matrix.numberOfRows());
294
+ ++i) {
295
+ matrix.forNonZeroElementsInRow(i, [&](NetworKit::index, double value) {
296
+ rowReduction[i] = SemiRing::add(rowReduction[i], value);
297
+ });
298
+ }
299
+
300
+ return rowReduction;
301
+ }
302
+
303
+ /**
304
+ * Computes the column-reduction of the @a matrix and returns the result as a Vector. That is, the
305
+ * elements of each column are summed up to form the respective entry in the result Vector. The add
306
+ * operator is that of the specified Semiring. The default Semiring is the ArithmeticSemiring.
307
+ * @param matrix
308
+ */
309
+ template <class SemiRing = ArithmeticSemiring, class Matrix>
310
+ NetworKit::Vector columnReduce(const Matrix &matrix) {
311
+ assert(matrix.getZero() == SemiRing::zero());
312
+ NetworKit::Vector columnReduction(matrix.numberOfColumns(), 0.0);
313
+
314
+ matrix.forNonZeroElementsInRowOrder([&](NetworKit::index, NetworKit::index j, double value) {
315
+ columnReduction[j] = SemiRing::add(columnReduction[j], value);
316
+ });
317
+
318
+ return columnReduction;
319
+ }
320
+
321
+ } // namespace GraphBLAS
322
+
323
+ #endif // NETWORKIT_ALGEBRAIC_GRAPH_BLAS_HPP_
@@ -0,0 +1,156 @@
1
+ /*
2
+ * MatrixTools.hpp
3
+ *
4
+ * Created on: May 31, 2016
5
+ * Author: Michael Wegner (michael.wegner@student.kit.edu)
6
+ */
7
+
8
+ #ifndef NETWORKIT_ALGEBRAIC_MATRIX_TOOLS_HPP_
9
+ #define NETWORKIT_ALGEBRAIC_MATRIX_TOOLS_HPP_
10
+
11
+ #include <atomic>
12
+ #include <cmath>
13
+
14
+ #include <networkit/Globals.hpp>
15
+ #include <networkit/algebraic/AlgebraicGlobals.hpp>
16
+ #include <networkit/algebraic/CSRMatrix.hpp>
17
+ #include <networkit/algebraic/DenseMatrix.hpp>
18
+ #include <networkit/algebraic/DynamicMatrix.hpp>
19
+ #include <networkit/graph/Graph.hpp>
20
+ #include <networkit/graph/GraphW.hpp>
21
+
22
+ namespace MatrixTools {
23
+
24
+ /**
25
+ * Checks if @a matrix is symmetric.
26
+ * @param matrix
27
+ * @return True if @a matrix is symmetric, otherwise false.
28
+ */
29
+ template <class Matrix>
30
+ bool isSymmetric(const Matrix &matrix) {
31
+ bool output = true;
32
+ matrix.forNonZeroElementsInRowOrder(
33
+ [&](NetworKit::index i, NetworKit::index j, NetworKit::edgeweight w) {
34
+ if (std::fabs(matrix(j, i) - w) > NetworKit::FLOAT_EPSILON) {
35
+ output = false;
36
+ return;
37
+ }
38
+ });
39
+ return output;
40
+ }
41
+
42
+ /**
43
+ * Checks if @a matrix is symmetric diagonally dominant (SDD).
44
+ * @param matrix
45
+ * @return True if @a matrix is SDD, false otherwise.
46
+ */
47
+ template <class Matrix>
48
+ bool isSDD(const Matrix &matrix) {
49
+ if (!isSymmetric(matrix)) {
50
+ return false;
51
+ }
52
+
53
+ /* Criterion: a_ii >= \sum_{j != i} a_ij */
54
+ std::vector<double> row_sum(matrix.numberOfRows());
55
+ matrix.parallelForNonZeroElementsInRowOrder(
56
+ [&](NetworKit::node i, NetworKit::node j, double value) {
57
+ if (i == j) {
58
+ row_sum[i] += value;
59
+ } else {
60
+ row_sum[i] -= std::fabs(value);
61
+ }
62
+ });
63
+
64
+ return std::all_of(row_sum.begin(), row_sum.end(),
65
+ [](double val) { return val > -NetworKit::FLOAT_EPSILON; });
66
+ }
67
+
68
+ /**
69
+ * Checks if @a matrix is a Laplacian matrix.
70
+ * @param matrix
71
+ * @return True if @a matrix is a Laplacian matrix, false otherwise.
72
+ */
73
+ template <typename Matrix>
74
+ bool isLaplacian(const Matrix &matrix) {
75
+ if (!isSymmetric(matrix)) {
76
+ return false;
77
+ }
78
+
79
+ /* Criterion: \forall_i \sum_j A_ij = 0 */
80
+ std::vector<double> row_sum(matrix.numberOfRows());
81
+ std::atomic<bool> right_sign(true);
82
+ matrix.parallelForNonZeroElementsInRowOrder(
83
+ [&](NetworKit::node i, NetworKit::node j, double value) {
84
+ if (i != j && value > NetworKit::FLOAT_EPSILON) {
85
+ right_sign = false;
86
+ }
87
+ row_sum[i] += value;
88
+ });
89
+
90
+ return right_sign && std::all_of(row_sum.begin(), row_sum.end(), [](double val) {
91
+ return std::fabs(val) < NetworKit::FLOAT_EPSILON;
92
+ });
93
+ }
94
+
95
+ /**
96
+ * Computes a graph having the given @a laplacian.
97
+ * @param laplacian
98
+ * @return The graph having a Laplacian equal to @a laplacian.
99
+ */
100
+ template <class Matrix>
101
+ NetworKit::GraphW laplacianToGraph(const Matrix &laplacian) {
102
+ assert(isLaplacian(laplacian));
103
+ NetworKit::GraphW G(std::max(laplacian.numberOfRows(), laplacian.numberOfColumns()), true,
104
+ false);
105
+ laplacian.forNonZeroElementsInRowOrder(
106
+ [&](NetworKit::node u, NetworKit::node v, NetworKit::edgeweight weight) {
107
+ if (u != v) { // exclude diagonal
108
+ if (u < v) {
109
+ G.addEdge(u, v, -weight);
110
+ }
111
+ }
112
+ });
113
+
114
+ return G;
115
+ }
116
+
117
+ /**
118
+ * Interprets the @a matrix as adjacency matrix of a graph. If @a matrix is non-symmetric, the graph
119
+ * will be directed.
120
+ * @param matrix
121
+ * @return The graph having an adjacency matrix equal to @a matrix.
122
+ */
123
+ template <class Matrix>
124
+ NetworKit::GraphW matrixToGraph(const Matrix &matrix) {
125
+ bool directed = !isSymmetric(matrix);
126
+ NetworKit::GraphW G(std::max(matrix.numberOfRows(), matrix.numberOfColumns()), true, directed);
127
+ matrix.forNonZeroElementsInRowOrder(
128
+ [&](NetworKit::node u, NetworKit::node v, NetworKit::edgeweight weight) {
129
+ if (directed || u <= v) {
130
+ G.addEdge(u, v, weight);
131
+ }
132
+ });
133
+
134
+ return G;
135
+ }
136
+
137
+ /**
138
+ * Converts the @a other matrix into a equivalent matrix of the template parametrized type.
139
+ * @param other The input Matrix.
140
+ * @return Matrix of type DenseMatrix, CSRMatrix or DynamicMatrix.
141
+ */
142
+ template <class ToMatrix, class FromMatrix>
143
+ ToMatrix matrixTo(const FromMatrix &other) {
144
+ int nRows = other.numberOfRows();
145
+ int nCols = other.numberOfColumns();
146
+ ToMatrix ResMat(nRows, nCols, other.getZero());
147
+
148
+ other.forNonZeroElementsInRowOrder(
149
+ [&ResMat](int i, int j, double val) { ResMat.setValue(i, j, val); });
150
+
151
+ return ResMat;
152
+ }
153
+
154
+ } // namespace MatrixTools
155
+
156
+ #endif // NETWORKIT_ALGEBRAIC_MATRIX_TOOLS_HPP_
@@ -0,0 +1,171 @@
1
+ /*
2
+ * Semirings.hpp
3
+ *
4
+ * Created on: May 31, 2016
5
+ * Author: Michael Wegner (michael.wegner@student.kit.edu)
6
+ */
7
+
8
+ #ifndef NETWORKIT_ALGEBRAIC_SEMIRINGS_HPP_
9
+ #define NETWORKIT_ALGEBRAIC_SEMIRINGS_HPP_
10
+
11
+ #include <algorithm>
12
+
13
+ // *****************************************************
14
+ // Semiring Definitions
15
+ // *****************************************************
16
+
17
+ /**
18
+ * @ingroup algebraic
19
+ * add: arithmetic add
20
+ * mult: arithmetic multiplication
21
+ * zero: 0
22
+ * one: 1
23
+ * codomain = (-infty, +infty)
24
+ */
25
+ class ArithmeticSemiring final {
26
+ public:
27
+ ArithmeticSemiring() = default;
28
+ ~ArithmeticSemiring() = default;
29
+
30
+ inline static double add(double a, double b) { return a + b; }
31
+
32
+ inline static double mult(double a, double b) { return a * b; }
33
+
34
+ inline static double zero() { return 0; };
35
+
36
+ inline static double one() { return 1; };
37
+ };
38
+
39
+ /**
40
+ * @ingroup algebraic
41
+ * add: min
42
+ * mult: arithmetic add
43
+ * zero: +infty
44
+ * one: 0
45
+ * codomain = (-infty, +infty]
46
+ */
47
+ class MinPlusSemiring final {
48
+ public:
49
+ MinPlusSemiring() = default;
50
+ ~MinPlusSemiring() = default;
51
+
52
+ inline static double add(double a, double b) { return std::min(a, b); }
53
+
54
+ inline static double mult(double a, double b) { return a + b; }
55
+
56
+ inline static double zero() { return std::numeric_limits<double>::infinity(); };
57
+
58
+ inline static double one() { return 0; };
59
+ };
60
+
61
+ /**
62
+ * @ingroup algebraic
63
+ * add: max
64
+ * mult: arithmetic add
65
+ * zero: -infty
66
+ * one: 0
67
+ * codomain = [-infty, +infty)
68
+ */
69
+ class MaxPlusSemiring final {
70
+ public:
71
+ MaxPlusSemiring() = default;
72
+ ~MaxPlusSemiring() = default;
73
+
74
+ inline static double add(double a, double b) { return std::max(a, b); }
75
+
76
+ inline static double mult(double a, double b) { return a + b; }
77
+
78
+ inline static double zero() { return -std::numeric_limits<double>::infinity(); };
79
+
80
+ inline static double one() { return 0; };
81
+ };
82
+
83
+ /**
84
+ * @ingroup algebraic
85
+ * add: min
86
+ * mult: max
87
+ * zero: +infty
88
+ * one: -infty
89
+ * codomain = [-infty, +infty]
90
+ */
91
+ class MinMaxSemiring final {
92
+ public:
93
+ MinMaxSemiring() = default;
94
+ ~MinMaxSemiring() = default;
95
+
96
+ inline static double add(double a, double b) { return std::min(a, b); }
97
+
98
+ inline static double mult(double a, double b) { return std::max(a, b); }
99
+
100
+ inline static double zero() { return std::numeric_limits<double>::infinity(); };
101
+
102
+ inline static double one() { return -std::numeric_limits<double>::infinity(); };
103
+ };
104
+
105
+ /**
106
+ * @ingroup algebraic
107
+ * add: max
108
+ * mult: min
109
+ * zero: -infty
110
+ * one: +infty
111
+ * codomain = [-infty, +infty]
112
+ */
113
+ class MaxMinSemiring final {
114
+ public:
115
+ MaxMinSemiring() = default;
116
+ ~MaxMinSemiring() = default;
117
+
118
+ inline static double add(double a, double b) { return std::max(a, b); }
119
+
120
+ inline static double mult(double a, double b) { return std::min(a, b); }
121
+
122
+ inline static double zero() { return -std::numeric_limits<double>::infinity(); };
123
+
124
+ inline static double one() { return 0; };
125
+ };
126
+
127
+ /**
128
+ * @ingroup algebraic
129
+ * add: logical or
130
+ * mult: logical and
131
+ * zero: 0
132
+ * one: 1
133
+ * codomain = [-infty, +infty]
134
+ */
135
+ class IntLogicalSemiring final {
136
+ public:
137
+ IntLogicalSemiring() = default;
138
+ ~IntLogicalSemiring() = default;
139
+
140
+ inline static double add(double a, double b) { return (int)a || (int)b; }
141
+
142
+ inline static double mult(double a, double b) { return (int)a && (int)b; }
143
+
144
+ inline static double zero() { return 0; };
145
+
146
+ inline static double one() { return 1; };
147
+ };
148
+
149
+ /**
150
+ * @ingroup algebraic
151
+ * add: xor
152
+ * mult: bitwise and
153
+ * zero: 0
154
+ * one: 1
155
+ * codomain = [0, 1]
156
+ */
157
+ class GaloisFieldSemiring final {
158
+ public:
159
+ GaloisFieldSemiring() = default;
160
+ ~GaloisFieldSemiring() = default;
161
+
162
+ inline static double add(double a, double b) { return (int)a ^ (int)b; }
163
+
164
+ inline static double mult(double a, double b) { return (int)a & (int)b; }
165
+
166
+ inline static double zero() { return 0; };
167
+
168
+ inline static double one() { return 1; };
169
+ };
170
+
171
+ #endif // NETWORKIT_ALGEBRAIC_SEMIRINGS_HPP_